Batocera Wiki Code Snippets/Templates

A cheat-sheet can be found on the DokuWiki syntax page.

In-links refer to linking to another page on this wiki. When doing so, you don't need to include the "https://wiki.batocera.org/" at the start, just the namespace, followed by a colon (:), and then the page name. For example:

Here's a link to the syntax page in the "wiki" namespace.

which is coded as:

[[wiki:syntax|Here's a link to the syntax page in the "wiki" namespace.]]

If you're referring to a page that doesn't belong to a namespace, remember to use a lone colon at the start so it will work no matter which page the user is looking at it from. For example:

This in-link won't work from particular other pages as there's no colon. But this one will always work.

which is coded as:

[[access_the_batocera_via_ssh|This in-link won't work from particular other pages as there's no colon.]] [[:access_the_batocera_via_ssh|But this one will always work]].

You are encouraged to use in-links over hard-coded links, as that will allow the wiki to automatically update the link should the page name ever change in the future.

If you'd like to link to a particular section in the page, add a hash (#) followed by the name of the section in all lower-case and with under-scores replacing spaces (special characters are usually just completely omitted). For example:

This links to the "links" section of the syntax page.

which is coded as:

[[wiki:syntax#links|This links to the "links" section of the syntax page.]]

For links that simply refer to another section in the same page that you're current on, you only need to specify the header name preceded by a hash:

[[#in-links|section in the same page that you're current on]]

Sections are identified by their name alone, irrelevant of how nested they are inside of other headers. If there are multiple sections with the same name in the same page, they are identified by having a digit added to the end of them.

You can always click the little “linking” icon that appears when you hover your mouse over the header for that section.

Let's face it, Wikipedia is a great source of information for technical aspects at times. If you ever need to link to a Wikipedia page specifically, you should use the "wp>(title of Wikipedia page)" format for its link. For example:

Here's their page on home video-game console generations.

which is invoked by

[[wp>Home_video_game_console_generations|Here's their page on home video-game console generations.]]

Note that you don't need to include the full URL, just the Wikipedia page title. It also appears with the Wikipedia icon, isn't that neat?

This also works for embedding Youtube videos using only their video ID, like so:

which is invoked by

{{youtube>ssluTgfkdlg?medium}}

Currently, embedding Youtube links is bugged. When the mouse hovers over the “Edit” button while viewing the page, the thumbnail reloads, causing the page to jump up. This is unusable and thus Youtube embeds should be avoided entirely until this is fixed. Use direct links instead.

Images can be added to a page if needed. Keep in mind that visuals should be in addition to the written explanation, not a replacement. The syntax is the following:

{{:image-name?Size|Alternative Text}}

For example, the “north button” image is located at https://wiki.batocera.org/_media/wiki:north.png (wiki:north.png is the name), it is the North button on a controller, which corresponds to the X Button on a SNES pad, and if we want to display this image at a 20 width pixel size, we need to put {{:wiki:north.png?nolink&20|North button (X SNES)}} and the wiki will show North button (X SNES) instead. Also if the image fails to load, or if we use the mouse cursor on it, it'll display “North button (X SNES)”; this is important for accessibility too.

Symbol Code Note
On/Off Settings {{:switch-button.png?20|On/Off Settings}} The ON/OFF switch used for some options in EmulationStation.
{{:switch-slider.png?30|}} The slider used for some options in EmulationStation.
{{::switch-multioption.png?20|}} Indicates that the menu item is used to show the user information.
{{:switch-az.png?20|}} A sorting type used by EmulationStation.
North button (X SNES) {{:wiki:north.png?nolink&20|North button (X SNES)}} The “X” button on a SNES layout, also referred to as the North button.
West button (Y SNES) {{:wiki:west.png?nolink&20|West button (Y SNES)}} The “Y” button on a SNES layout, also referred to as the West button.
South button (B SNES) {{:wiki:south.png?nolink&20|South button (B SNES)}} The “B” button on a SNES layout, also referred to as the South button.
East button (A SNES) {{:wiki:east.png?nolink&20|East button (A SNES)}} The “A” button on a SNES layout, also referred to as the East button.

Icons can be created and distributed for free with: https://logomakr.com/

Scalable Vector Graphics (SVG) files are also good for creating/editing iconography. These can be edited with Illustrator or the freely distributed Inkscape.

Sample SVG file:


The wiki's media manager can actually accept SVG files even though it doesn't show it on the compatible file formats list. SVG files that contain text are discouraged due to fonts not being available on all systems (and thus appearing inconsistently or not at all). You can avoid this by converting the text into shapes in Inkscape using Path > Object to Path.

However, by using the official DokuWiki imagebox plugin (which is installed additionally on this DokuWiki server), you can also put a frame around an image and make the image title text show up within the image frame instead of showing up as a tooltip (the image's filename will be shown as a tooltip instead). If you decide to resize your image like the image example below (75% of the image's original size in this example), the plugin also includes a nice extra feature of showing automatically an extra mini icon on the right lower corner of your imagebox you can click on to enlarge the image to its original size.

This is the image title


[{{ wiki:dokuwiki-128.png?75 |This is the image title}}] 

It is recommended to convert the video to a WEBM with a resolution of 655×368 to prepare it for embedding into the wiki page and not have interruptions during playback. With that said, the wiki supports many video formats (check what you can upload in the media uploading tool) and the resolution will always be downscaled to whatever size you specify in the embed code itself. For example:

{{URL-to-video?655x368|Alt text}}

This would result in the video looking similar to this:

A quick way to record videos from Batocera itself is to sign in via SSH and run the batocera-record command.

Code can be displayed by using the <code>print (“Hello World”)</code> but it will lead to a grey box. So for some one liners you can try to use

%%print ("Hello World")%%

You can create downloadable files by specifying its file-name as a parameter in the <code> header along with its syntax. eg.

<code java script.js>
Here is my Javascript code.
</code>

would become

script.js
Here is my Javascript code.

If you just want a raw text file without syntax highlighting, use a hyphen (-) as your syntax.

It is also possible to ask the wiki to not apply formatting to a specific element by surrounding it by %%, or by using <nowiki></nowiki>

For example, writing down the following:

echo 'jambon' >> sandwich.txt

will display as

echo 'jambon' » sandwich.txt

transforming the >> into a », however writing

%%echo 'jambon' >> sandwich.txt%% or <nowiki>echo 'jambon' >> sandwich.txt</nowiki> will display it correctly.

The more common way of displaying tables in this wiki is through the use of vertical bars (|) and carats (^). These keys are available with [Shift]+[\] and [Shift]+[6] on standard QWERTY ASCII keyboards.

Headers are identified by beginning with a carat. Regular elements begin with vertical bars. Elements that aren't closed with another carat or bar will be discarded. For example:

^ Header 1 ^ Attribute 2 ^ Notes ^
| Emulator 1 | ''.zip'' ''.nes'' | Is pretty cool. |
| Emulator 2 | ''.nes'' | Is cooler, but less compatible. |
| Emulator 3 |
| Emulator 4

would appear as

Header 1 Attribute 2 Notes
Emulator 1 .zip .nes Is pretty cool.
Emulator 2 .nes Is cooler, but less compatible.
Emulator 3

Alignment is handled by using double white spaces on the side of the element you want it to align to. For example:

|  This element at the top isn't a header, and is right aligned. | An empty element is below this one. |
^ But this one is. Headers don't have to only be at the top, but should in most cases.  ^ |
^ Any element can be closed with either a bar or a carat, it doesn't matter which. |  But they will decide the element type for the next element. |

would appear as

This element at the top isn't a header, and is right aligned. An empty element is below this one.
But this one is. Headers don't have to only be at the top, but should in most cases.
Any element can be closed with either a bar or a carat, it doesn't matter which. But they will decide the element type for the next element.

One easy way to display a table is to use a comma separated values (csv) structure. Think of it like a 2-D spreadsheet, but in a pure text format where the separator of the columns is a Comma, and the separator for the lines is a newline, and the first line serves as a header.

Putting a CSV structure inside the <csv></csv> elements will display it, so for instance, if you have

Emulator name, Emulated system, Original manufacturer
Picodrive, Master system/Genesis, Sega
Genesis plus GX, Master system/Genesis, Sega

and add the <csv></csv> like this :

<csv>
Emulator name, Emulated system, Original manufacturer
Picodrive, Master system/Genesis, Sega
Genesis plus GX, Master system/Genesis, Sega
</csv>

it will then display as this

Emulator nameEmulated systemOriginal manufacturer
PicodriveMaster system/GenesisSega
Genesis plus GXMaster system/GenesisSega

With the addition of the collapsible sidebar via the outliner plugin now collapsible sections can be used anywhere in the wiki.

The beginning of a section has to be marked with --> Title[FLAGS]. [FLAGS] is optional and can be:

  • # for no preview (this is recommended)
  • ^ to be opened by default (not recommended, defies the point)
  • @ for to indicate that there's an internal wiki link in title (otherwise it would just show the link syntax as if it were the title)

Sections can be closed by using <-- on a new line. Sections can also be nested. Example:

--> Section 1 without preview (recommended)#

First level content. This can be pretty much anything.
  * If ending with an list such as a bullet list, remember to add one space after the list so as to avoid syntax errors, like so:

--> Second level nested section#

Second level content. It's also just good practice to use a spare extra line when closing a section, though it's not always necessary.

<--

First level content continues.

<--

--> [[:batocera_wiki_code_snippets|Internal link in a section header.]]@#

If the user clicks the blue text, they will both simultaneously open the section and be taken to the linked page. If the instead click only the box around the text, they will just open the text instead. This is really only useful for the sidebar. Does not work with section-specific in-links (ones that require a %%#%%), as that conflicts with the ''[FLAGS]''.

--> [[:batocera_wiki_code_snippets|Internal link in a section header without the correct flag, opened by default.]]#^

Notice how it instead shows the syntax instead of actually linking?

<--

<--

--> Section with a preview on hover. Not recommended for general use.

  Here's a bunch of text in some code.

<--

which would appear like so:

Section 1 without preview (recommended)
First level content. This can be pretty much anything.
  • If ending with an list such as a bullet list, remember to add one space after the list so as to avoid syntax errors, like so:
Second level nested section
Second level content. It's also just good practice to use a spare extra line when closing a section, though it's not always necessary.

First level content continues.

Internal link in a section header.
If the user clicks the blue text, they will both simultaneously open the section and be taken to the linked page. If the instead click only the box around the text, they will just open the text instead. This is really only useful for the sidebar. Does not work with section-specific in-links (ones that require a #), as that conflicts with the [FLAGS].
[[:batocera_wiki_code_snippets|Internal link in a section header without the correct flag, opened by default.]]

Notice how it instead shows the syntax instead of actually linking?

Section with a preview on hover. Not recommended for general use.
Here's a bunch of text in some code.

When you need to display a folder's structure, the best way to do so is via an ASCII tree in a code block like so:

roms/
├─ psx/
│  ├─ Final Fantasy VII (Disc 1).bin
│  └─ Final Fantasy VII (Disc 1).cue
└─ Final Fantasy VII (Disc 1).m3u

Although it may be fun to write these out yourself, an automatic tool to create them is available at https://ascii-tree-generator.com/

<csv file=https://docs.google.com/spreadsheets/URL/pub?output=csv>
</csv>

To link to a Google spreadsheet:

  1. Open your spreadsheet in Google Docs.
  2. Click the “Share” botton in the toolbar, and choose “Anyone with the link” for Visibility.
  3. Open your spreadsheet in Google Docs.
  4. From the spreadsheet menu select: File | Publish as a Web Page
  5. Sheets to Publish: “All Sheets”, and check the box “Automatically republish when changes are made” to ensure your data is auto updated.
  6. Click “Start Publishing”. This will activate the options in the box “Get a link to the published data”, below.
  7. Change the export type from “Web Page” to “CSV (comma-separated values)”.
  8. Change “All sheets” to “Sheet1” (or select the sheet you want to export)
  9. Change “All Cells” to the specific range you want to export, beginning with the header row. Use Excel-style notation, like A1:C6 for the first 3 columns and the first 6 rows.
  10. Click “Republish now”
  11. Copy the link (check it ends with output=csv) and paste it into your dokuwiki CSV table using the file= attribute described above.

Batocera wiki supports iframes, showing another web page inside of the article. Simple example:

{{url>http://www.example.com/somepage.html}}

Full syntax:

{{url>someurl width,height noscroll noborder alignment|alternate-text}}

Javascript URLs are not supported. More info at https://www.dokuwiki.org/plugin:iframe

|..THEMENAME..|..AUTHORNAME..|..{{ :themes:THEMNAME_system.png?300 |}}..
{{ :themes:minimal_system.png?300 |}}            --> will view in media manager
{{ :themes:minimal_grid.png?nolink&300 |}}       --> no link to the original image
{{ :themes:minimal_list.png?direct&300 |}}       --> links to the full resolution

Can't decide? Used the first option.

Authorname [[ https://github.com/repro/project|AUTHORNAME ]]

Some suggestions

  • Themename
  • Authorname
  • Link to author? (needed?)
  • System List View → themename_system
  • ROM List View → themename_list
  • GRID List View → themename_grid
  • Resolution 1920×1080
  • batocera_wiki_code_snippets.txt
  • Last modified: 5 months ago
  • by ssokolow