Skip to content

Commit 5b9c9fd

Browse files
authored
Merge pull request #22 from anthonycaccese/main
Theme, Collection and gitignore updates
2 parents a75f4f5 + b7d9c54 commit 5b9c9fd

14 files changed

+344
-3
lines changed

.gitignore

+172-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,172 @@
1-
/.project
2-
/Pipfile.lock
3-
/*.bat
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
share/python-wheels/
24+
*.egg-info/
25+
.installed.cfg
26+
*.egg
27+
MANIFEST
28+
29+
# PyInstaller
30+
# Usually these files are written by a python script from a template
31+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32+
*.manifest
33+
*.spec
34+
35+
# Installer logs
36+
pip-log.txt
37+
pip-delete-this-directory.txt
38+
39+
# Unit test / coverage reports
40+
htmlcov/
41+
.tox/
42+
.nox/
43+
.coverage
44+
.coverage.*
45+
.cache
46+
nosetests.xml
47+
coverage.xml
48+
*.cover
49+
*.py,cover
50+
.hypothesis/
51+
.pytest_cache/
52+
cover/
53+
54+
# Translations
55+
*.mo
56+
*.pot
57+
58+
# Django stuff:
59+
*.log
60+
local_settings.py
61+
db.sqlite3
62+
db.sqlite3-journal
63+
64+
# Flask stuff:
65+
instance/
66+
.webassets-cache
67+
68+
# Scrapy stuff:
69+
.scrapy
70+
71+
# Sphinx documentation
72+
docs/_build/
73+
74+
# PyBuilder
75+
.pybuilder/
76+
target/
77+
78+
# Jupyter Notebook
79+
.ipynb_checkpoints
80+
81+
# IPython
82+
profile_default/
83+
ipython_config.py
84+
85+
# pyenv
86+
# For a library or package, you might want to ignore these files since the code is
87+
# intended to run in multiple environments; otherwise, check them in:
88+
# .python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94+
# install all needed dependencies.
95+
#Pipfile.lock
96+
97+
# poetry
98+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99+
# This is especially recommended for binary packages to ensure reproducibility, and is more
100+
# commonly ignored for libraries.
101+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102+
#poetry.lock
103+
104+
# pdm
105+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106+
#pdm.lock
107+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108+
# in version control.
109+
# https://pdm.fming.dev/#use-with-ide
110+
.pdm.toml
111+
112+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113+
__pypackages__/
114+
115+
# Celery stuff
116+
celerybeat-schedule
117+
celerybeat.pid
118+
119+
# SageMath parsed files
120+
*.sage.py
121+
122+
# Environments
123+
.env
124+
.venv
125+
env/
126+
venv/
127+
ENV/
128+
env.bak/
129+
venv.bak/
130+
131+
# Spyder project settings
132+
.spyderproject
133+
.spyproject
134+
135+
# Rope project settings
136+
.ropeproject
137+
138+
# mkdocs documentation
139+
/site
140+
141+
# mypy
142+
.mypy_cache/
143+
.dmypy.json
144+
dmypy.json
145+
146+
# Pyre type checker
147+
.pyre/
148+
149+
# pytype static type analyzer
150+
.pytype/
151+
152+
# Cython debug symbols
153+
cython_debug/
154+
155+
# PyCharm
156+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158+
# and can be added to the global gitignore or merged into this file. For a more nuclear
159+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
160+
#.idea/
161+
162+
# OS generated files #
163+
######################
164+
.DS_Store
165+
.DS_Store?
166+
._*
167+
.Spotlight-V100
168+
.Trashes
169+
Icon?
170+
ehthumbs.db
171+
Thumbs.db
172+
docs/.DS_Store
414 KB
Loading
297 KB
Loading
250 KB
Loading
243 KB
Loading
413 KB
Loading
450 KB
Loading
402 KB
Loading
Loading
Loading

docs/_inc/images/screenshots/menu.png

274 KB
Loading
115 KB
Loading

docs/configure/collections.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# :material-collage: Collections
2+
3+
In addition to the systems displayed; EmulationStation (ES) has functionality to create custom collections that you can use to group and organize your game library in different ways. For example; if you wanted to create a view that automatically grouped all of your Role Playing Games or one that only lists the games you are currently playing you can use ES collections to do that.
4+
5+
All of the options described below can be managed by pressing ++"START"++ anywhere in ES to open the Main Menu and then opening ++"Game Collection Settings"++
6+
7+
![Game Collection Settings Menu](../../_inc/images/collections-main-menu.png)
8+
9+
## Managing Your Backlog
10+
11+
Knulli includes a `Now Playing` collection that can be used to curate and play through your backlog. You can turn this on by going to `Game Collection Settings` > `Create New Custom Collection from Theme` while using our default system-theme.
12+
13+
<table>
14+
<tr>
15+
<td><img src="../../_inc/images/collections-from-theme-1.png"></td>
16+
<td><img src="../../_inc/images/collections-from-theme-2.png"></td>
17+
</tr>
18+
</table>
19+
20+
Once its turned on; you can add to it by pressing ++"X(NORTH)"++ on any game while in ES. In the menu that opens you'll see `Now Playing` listed under the collections header. Simply highlight it and press the confirm button.
21+
22+
You can also set Knulli to boot directly into the Now Playing collection by setting the `Start on System` value in the `Game Collection Settings` menu. Change that value to `Now Playing` and also turn on `Start on Gamelist`.
23+
24+
With the above settings you can create a very simple view of the games you are trying to finish that displays directly when Knulli launches.
25+
26+
## Collection Types
27+
28+
There are 3 collection types in ES so let's walk through each to help you decide which makes sense to use for your use cases.
29+
30+
### Automated Collections
31+
32+
EmulationStation has a set of built-in automated collections to easily view your last played games, favorites and all the games in your library. You can turn these on or off in the ++"Automated Game Collections"++ menu.
33+
34+
### Editable Collections
35+
36+
An editable collection is one that you can specifically curate by hand. Simply give it a name and then as you are browing your gamelists you can press ++"X(NORTH)"++ on any game and add it to the collection you created. As an example, you could use this functionality to create a collection for all of your Final Fantasy games and then manually add each FF game to the list.
37+
38+
### Dynamic Collections
39+
40+
A dynamic collection enables you to create a set of filters that will automatically group your games. For example if you wanted to create a collection that automatically grouped all of your Role Playing Games into a single view; you could create a dynamic collection called RPGs, select a genre filter of Role Playing Games and then save the filter. Then any time you add a new game with the Role Playing genre it will automatically show up in this collection.
41+
42+
<table>
43+
<tr>
44+
<td><img src="../../_inc/images/collections-dynamic-1.png"></td>
45+
<td><img src="../../_inc/images/collections-dynamic-2.png"></td>
46+
</tr>
47+
<tr>
48+
<td><img src="../../_inc/images/collections-dynamic-3.png"></td>
49+
<td><img src="../../_inc/images/collections-dynamic-4.png"></td>
50+
</tr>
51+
</table>
52+
53+
---
54+
55+
## Additional Notes
56+
57+
You can also use the ++"Game Collection Settings"++ menu to manage which systems are displayed. Press ++"START"++ anywhere in ES to open the Main Menu and then go to ++"Game Collection Settings"++ > ++"Systems Displayed"++. In this menu; uncheck the systems you would like to hide and then exit the menu. ES will then refresh and those systems will be hidden.

docs/configure/themes.md

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# :material-page-next-outline: Themes
2+
3+
Knulli's default frontend is EmulationStation and default theme is [Art Book Next](https://github.com/anthonycaccese/art-book-next-es). Also included by default is the [Carbon](https://github.com/fabricecaruso/es-theme-carbon) theme from Batocera. Both are updated automatically as part of each release.
4+
5+
## Preview
6+
7+
<table>
8+
<tr>
9+
<td><img src="../../_inc/images/screenshots/system-view.png"/></td>
10+
<td><img src="../../_inc/images/screenshots/menu.png"/></td>
11+
</tr>
12+
<tr>
13+
<td><img src="../../_inc/images/screenshots/gamelist-view-metadata-immersive.png"/></td>
14+
<td><img src="../../_inc/images/screenshots/gamelist-view-no-metadata-immersive.png"/></td>
15+
</tr>
16+
</table>
17+
18+
## Configuration
19+
20+
The following options can be changed directly from the main menu under `User Interface Settings > Theme Configuration`
21+
22+
| Setting | Description | Options |
23+
| -- | -- | -- |
24+
| Distribution | Used to define which folder to look in for Theme Customization files. | `Batocera/Knulli`, `RetroBat` |
25+
| Aspect Ratio | Enables you to select the correct aspect ratio for your screen. This will automatically set itself so you should not need to change it but if the theme layout looks odd or spacing looks incorrect you can use this setting to make sure the aspect ratio matches your screen. | `16:9`, `16:10`, `4:3`, `3:2`, `1:1` |
26+
| System Artwork | Defines the set of artwork that is displayed on the system view | `Default`, `Noir`, `Custom`, `Custom (Fullscreen)` |
27+
| System Logos | Defines the logo set used on all views | `Default`, `Custom` |
28+
| Game Artwork | Defines the type of artwork used to represent a game. These are sourced from the the selections you make in the scraper menu. Image will display the image you selected to scrape for `Image Source`. Image (Cropped) will display that same image zoomed in to fill the screen. Boxart will display the image you selected to scrape for `Box Source` | `Image`, `Image (Cropped)`, `Boxart` |
29+
| Game Metadata | Sets if metadata (e.g. description, release date, etc...) should be displayed for a game | `On`, `Off` |
30+
| Font Size | Set the size for text elements throughout the theme. | `Default`, `Small`, `Large` |
31+
| Color Scheme | Sets the color scheme that is used for the theme. There is a set of prebuilt color schemes that you can select and an option to supply your custom color scheme (selected by choosing `custom`). You can see details on customizations below under [Theme Customizations](#theme-customizations). | `Default`, `Light`, `Steam OS`, `SNES`, `Famicom`, `DMG`, `OLED`, `Custom` |
32+
33+
### Additional UI Settings
34+
35+
The following EmulationStation settings can also be changed and will update the look of the theme accordingly:
36+
37+
* `User Interface Settings > Show Clock` - This will allow you to turn the system clock on or off
38+
* `User Interface Settings > On-Screen Help` - This will turn the display of EmulationStation's help system on or off (the theme's layout will automatically adapt to the available space)
39+
* `User Interface Settings > Show Battery Status` - This will allow you to change what is displayed for the battery status.
40+
41+
## Customization
42+
43+
Art Book Next allows customizations to system artwork and color schemes without the need to edit the source XML. This enables you to change the look of the theme and still retain your changes when the theme is updated.
44+
45+
### Start Here
46+
- Make sure the `Distribution` setting is set to `Batocera/Knulli` (This value determines the folder where you will add your customizations)
47+
- Batocera/Knulli folder is = `/userdata/theme-customizations/art-book-next/`
48+
- Create this folder and then move on to the options below...
49+
50+
### Background Art
51+
52+
The artwork used on the system view can be customized with your own images.
53+
54+
#### For angled artwork:
55+
56+
* Create your custom artwork using one of the masks i've supplied in this theme's resources directory [here](https://github.com/anthonycaccese/art-book-next-es/tree/main/resources/customizations). I've included a set of masks that should work in all major image editing programs.
57+
* Export your final images as transparent pngs
58+
* Create a folder in the path you created above called `artwork`
59+
* Upload your images to that folder
60+
* They can be named:
61+
* `_default.png`
62+
* `${system.theme}.png`
63+
* The theme will look them them up in that order. If a given image is not found in your folder then the the images from the theme will be used as a fallback. This allows you to customize only the images you want and still have images displayed for all systems.
64+
* `_default.png` can be used for creating a single image that is used for all systems OR a fallback for systems that you did not create a custom image for (if you don't want to use the fallback that already exists in the theme)
65+
* `${system.theme}.png` should be named for the system you are looking to override. For example if you wanted to override the artwork for `snes` you would create an image called `snes.png` in the artwork folder.
66+
* Once your images are in place you turn on custom images by changing the `System Artwork` setting to `Custom`
67+
68+
#### For fullscreen artwork:
69+
70+
* Create a folder in the path you created above called `artwork-fullscreen`
71+
* Upload your images to that folder
72+
* They can be named:
73+
* `_default.png`
74+
* `_default.jpg`
75+
* `${system.theme}.png`
76+
* `${system.theme}.jpg`
77+
* The theme will look them them up in that order.
78+
* `_default.png/jpg` can be used for creating a single image that is used for all systems OR a fallback for systems that you did not create a custom image for (if you don't want to use the fallback that already exists in the theme)
79+
* `${system.theme}.png/jpg` should be named for the system you are looking to override. For example if you wanted to override the artwork for `snes` you would create an image called `snes.png` or `snes.jpg` in the artwork folder.
80+
* Once your images are in place you turn on custom images by changing the `System Artwork` setting to `Custom (Fullscreen)`
81+
82+
### Color Schemes
83+
84+
You can create your own custom color scheme to use for the theme
85+
86+
* Download [this template](https://github.com/anthonycaccese/art-book-next-es/blob/main/resources/customizations/colors.xml)
87+
* Upload it in the path you created above and make sure its called `colors.xml`
88+
* Change any values in the template to the colors you prefer.
89+
* I tried to make the values as self explanatory as possible but if you have questions regarding which property does what please don't hesitate to ask.
90+
* After your colors are defined; in theme configuration change `Color Scheme` to `Custom`
91+
92+
### Logos
93+
94+
System logos can be customized by adding your own images
95+
96+
* Create a folder in the path you created above called `logos`
97+
* Upload your images to that folder
98+
* They can be named:
99+
* `${system.theme}.svg`
100+
* `${system.theme}.png`
101+
* The theme will look them them up in that order. If a given image is not found in your folder then the the images from the theme will be used as a fallback. This allows you to customize only the images you want and still have images displayed for all systems.
102+
* `${system.theme}.svg/png` should be named for the system you are looking to override. For example if you wanted to override the logo for `snes` you would create an image called `snes.svg` or `snes.png` in the logos folder.
103+
* Once your images are in place you turn on custom images by changing the `System Logos` setting to `Custom`
104+
105+
## Adding Additional Themes
106+
107+
- Knulli's version of EmulationStation is sourced from the same version used in Batocera so you can also use themes that were created for Batocera directly
108+
- You can download themes directly using the built-in theme downloader (which includes nice previews of each theme)
109+
- You can also find a list of Batocera themes here: [https://batocera.org/themes.php](https://batocera.org/themes.php) if you would prefer to download them manually
110+
111+
!!! note "There are no guarantees that themes from the above list will support the aspect ratio of your device or all of the systems we support. Because of that; some themes may look odd, not display all systems or have layouts that do not match well to your screen."
112+
113+
## Creating Your Own Theme
114+
115+
An exhaustive tutorial is out of scope for this wiki. That said; please see Batocera's theme documention @ [https://wiki.batocera.org/write_themes_for_emulationstation](https://wiki.batocera.org/write_themes_for_emulationstation). Its a great starter guide for understanding the fundamentals of creating themes for the version of EmulationStation used by Knulli.

0 commit comments

Comments
 (0)