Skip to content

Commit 15db163

Browse files
committed
merge feature: support for screensaver media
add screensaver images to media/README add search term `screensaver` make it default in config files include media/screensaver/* in releases tweak config files PC config file: use --quiet option to mpv comment: video scaler script only for RasPi docs: add changelog update install/ dir README README: add Discord link to help section update tested hardware & Recalbox versions manual install docs: add step to remove ZIP file improve configuration docs include all docs in releases init script: start program with python3 -m dynquee
1 parent 012742f commit 15db163

19 files changed

+128
-11
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ The logs should provide some clues as to what is wrong.
133133
134134
If you are having trouble getting *dynquee* to start on PC, also check the file `/tmp/dynquee_start.log`.
135135
136-
If you still can't get it working, post on the [Recalbox forum][recalbox-forum-commproj] and I will try to help.
136+
If you still can't get it working, post on the [Recalbox forum][recalbox-forum-dynquee] or [message me on Discord][discord-poppadum] and I will try to help.
137137
Please paste your config file and debug log file on [pastebin][pastebin] and provide a link when reporting issues.
138138

139139
---
@@ -165,6 +165,7 @@ This project is released under the [MIT Licence][licence].
165165
[artwork-readme]: artwork/README.md
166166
[config-guide]: doc/config.md
167167
[dinky-definition]: https://dictionary.cambridge.org/dictionary/english/dinky
168+
[discord-poppadum]: https://discord.com/users/1086033618532565032
168169
[DV190FBM]: https://www.panelook.com/DV190FBM-NB0_BOE_19.1_LCM_overview_32860.html
169170
[emulationstation]: https://wiki.recalbox.com/en/basic-usage/getting-started/emulationstation
170171
[install-different-device]: doc/Running_on_separate_device.md
@@ -182,7 +183,7 @@ This project is released under the [MIT Licence][licence].
182183
[pimarquee2]: https://github.com/losernator/PieMarquee2
183184
[project-image]: dynquee.png
184185
[recalbox]: https://www.recalbox.com
185-
[recalbox-forum-commproj]: https://forum.recalbox.com/category/13/community-projects
186+
[recalbox-forum-dynquee]: https://forum.recalbox.com/topic/29921/
186187
[recalbox-mqtt]: https://wiki.recalbox.com/en/advanced-usage/scripts-on-emulationstation-events#mqtt
187188
[recalbox-ssh]: https://wiki.recalbox.com/en/tutorials/system/access/root-access-terminal-cli
188189
[retropie]: https://retropie.org.uk/
94 KB
Binary file not shown.
179 KB
Binary file not shown.

build/MANIFEST

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ clear_framebuffer.sh
66
play_video_scaled.sh
77
LICENSE.txt
88
README.md
9+
changelog.md
910
media/generic/
1011
media/publisher/*
1112
media/startup/*
1213
media/system/*
14+
media/screensaver/*
1315
media/default.png
1416
media/README.md
1517
logs/

doc/Running_on_separate_device.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,17 @@ sudo apt install python3 python3-paho-mqtt fbi ffmpeg
106106
cd /opt/dynquee
107107
```
108108

109-
1. Download the latest *dynquee* release and unzip it:
109+
1. Download the latest *dynquee* release, unzip it and tidy up:
110110
```sh
111111
sudo wget -O dynquee.zip https://github.com/poppadum/dynquee/releases/latest/download/dynquee.zip
112112
sudo unzip dynquee.zip
113+
sudo rm dynquee.zip
113114
```
114115

115116

116117
### Configure
117118

118-
1. Copy the config file for remote running:
119+
1. Copy the config file for running on a separate machine:
119120
```sh
120121
sudo cp -f install/dynquee-remote.ini ./dynquee.ini
121122
```

doc/changelog.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Change Log
2+
3+
## v0.9.7
4+
New feature: can now show media files while screensaver active (configurable)
5+
6+
7+
### Changes
8+
- PC config file uses `--quiet` option to `mpv` to reduce log noise
9+
10+
#### Documentation improvements
11+
- add Changelog
12+
- add Discord link to help section of README
13+
- manual install instructions: add step to remove release ZIP file
14+
- update `install/README.md` and `media/README.md`
15+
16+
17+
## v0.9.6
18+
Add support for Recalbox on PC
19+
20+
### PC Support
21+
- README applies to RasPi & PC
22+
- update install script to detect if we're installing on Raspberry Pi or PC
23+
- add manual install guide for PC
24+
- add script to assist user finding video outputs
25+
- add PC-specific config file
26+
- update 'after upgrade' instructions
27+
28+
### Changes
29+
- include all docs in releases
30+
- init script: start program with python3 -m dynquee
31+
- make scaled video play script executable
32+
33+
34+
## v0.9.5 pre-release
35+
### Additions
36+
- add support for running on a non-Recalbox machine
37+
- add support for compound search rules
38+
- add console images from recalbox-next theme
39+
- add startup images
40+
- add config file entry to control time between files in slideshow
41+
42+
43+
### Fixes
44+
- install script: add link to latest release
45+
- interpolation in config files was broken
46+
47+
- event handling
48+
- now stores ES state before sleep, restores on wakeup
49+
- event after 'endgame' now always changes state
50+
- was not seeing a state change when a game exited and
51+
`gamelistbrowsing` change rule was `system/game`
52+
53+
- slideshow fixes:
54+
- now clears marquee screen when a video exits
55+
- was starting next slideshow before current slideshow had exited
56+
- now moves to next file when video finishes
57+
- uses `WaitableEvent` class by [Radek Lát](https://lat.sk)
58+
- single image slideshow was calling viewer many times per second
59+
60+
### Changes
61+
- make default marquee size 1280x360
62+
- config file now defines one media change rule per action
63+
- add bash helper script to play videos scaled to marquee size
64+
- artwork:
65+
- fix incorrect system name: `oric` -> `oricatmos`
66+
- add BUILD file to release archive to identify installed version
67+
- improve log output
68+
- move install & init scripts to `install/`
69+
- exits with non-zero return code on uncaught exception
70+
71+
#### Documentation improvements
72+
- add local & remote install script URLs to README.md
73+
- much more detailed comments in config file
74+
- document how to restore init script after Recalbox upgrade
75+
- add explanation of media scaling to configuration guide
76+
77+
78+
## v0.9.4 pre-release
79+
80+
## v0.9.3 pre-release

doc/config.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ A search rules consists of one or more of the following search terms:
5858
* `genre`: media relating to genre of game e.g. shooters, platform games
5959
* `system`: media relating to game system e.g. Sinclair Spectrum or SNES banner
6060
* `generic`: generic media unrelated to a game, system or publisher
61+
* `screensaver`: media to be shown when EmulationStation goes to sleep
62+
and the screensaver is active
6163
* `blank`: blank the display e.g. when EmulationStation goes to sleep
6264

6365
Search terms can be combined at the same precedence level with the `+` character
@@ -117,6 +119,8 @@ the file name must start with Emulation Station's internal system name (use the
117119
If you have designed custom artwork for your Recalbox, place it here.
118120
Filename does not matter, but use the appropriate file extension e.g. `generic/my_games_machine.mkv`
119121

122+
- `screensaver/` is for files to show when EmulationStation goes to sleep and activates the screensaver
123+
120124
Feel free to delete any of the included media files you don't want, but I recommend you leave `media/default.png` (or replace it with your own custom image) as a file of last resort.
121125

122126

doc/manual_install_pc.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ If you're installing on a separate machine, see [the guide for running on a sepa
4545
cd /recalbox/share/dynquee
4646
```
4747

48-
1. Download the latest *dynquee* release and unzip it:
48+
1. Download the latest *dynquee* release, unzip it and tidy up:
4949
```sh
5050
wget -O dynquee.zip https://github.com/poppadum/dynquee/releases/latest/download/dynquee.zip
5151
unzip dynquee.zip
52+
rm dynquee.zip
5253
```
5354

5455
## Identify Video Outputs

doc/manual_install_rpi.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ If you're installing on a separate machine, see [the guide for running on a sepa
2323
cd /recalbox/share/dynquee
2424
```
2525

26-
1. Download the latest *dynquee* release and unzip it:
26+
1. Download the latest *dynquee* release, unzip it and tidy up:
2727
```sh
2828
wget -O dynquee.zip https://github.com/poppadum/dynquee/releases/latest/download/dynquee.zip
2929
unzip dynquee.zip
30+
rm dynquee.zip
3031
```
3132

3233

dynquee.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ default_image = default.png
7575
# * genre: media relating to genre of game e.g. shooters, platform games
7676
# * system: media relating to game system e.g. Sinclair Spectrum or SNES banner
7777
# * generic: generic media unrelated to a game, system or publisher
78+
# * screensaver: media to be shown when the screensaver is active
7879
# * blank: blank the display e.g. when EmulationStation goes to sleep
7980
# (note: `blank` causes dynquee to stop processing a precedence rule)
8081
#
@@ -91,7 +92,9 @@ default_image = default.png
9192
rungame = rom publisher system genre scraped generic
9293
gamelistbrowsing = system generic
9394
systembrowsing = generic
94-
sleep = blank
95+
sleep = screensaver
96+
# If you want to blank the marquee when the screensaver is active use:
97+
#sleep = blank
9598
# default precedence to use if action does not match one of those above
9699
default = generic
97100

dynquee.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ class MediaManager(object):
230230
'genre': "genre/{genre}.*",
231231
'system': "system/{systemId}.*",
232232
'generic': "generic/*",
233+
'screensaver': "screensaver/*",
233234
'startup': "startup/*" # files to show on startup
234235
}
235236
"glob patterns to find media files for each search term"

install/README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33
Contains install scripts and helper files.
44

55
- `install.sh` installs *dynquee* on Recalbox
6+
- `dynquee-pc.ini`: config file for Recalbox PC
7+
- `S32dynquee`: init script for Recalbox RasPi
8+
- `startup_pc.sh`: startup script for Recalbox PC
9+
610
- `install-remote.sh` installs *dynquee* on a non-Recalbox machine
711
- `dynquee-remote.ini`: config file for non-Recalbox machines
8-
- `S32dynquee`: init script for Recalbox
912
- `dynquee.service`: systemd unit file for non-Recalbox machines
13+
14+
- `find_marquee_output.sh`: helps user discover video outputs on Recalbox PC
15+
- `after_recalbox_upgrade.sh`: run this after a Recalbox upgrade to restore dynquee
16+
- `install_common.sh`: library functions for install/upgrade scripts

install/dynquee-pc.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ default_image = default.png
7575
# * genre: media relating to genre of game e.g. shooters, platform games
7676
# * system: media relating to game system e.g. Sinclair Spectrum or SNES banner
7777
# * generic: generic media unrelated to a game, system or publisher
78+
# * screensaver: media to be shown when the screensaver is active
7879
# * blank: blank the display e.g. when EmulationStation goes to sleep
7980
# (note: `blank` causes dynquee to stop processing a precedence rule)
8081
#
@@ -91,7 +92,9 @@ default_image = default.png
9192
rungame = rom publisher system genre scraped generic
9293
gamelistbrowsing = system generic
9394
systembrowsing = generic
94-
sleep = blank
95+
sleep = screensaver
96+
# If you want to blank the marquee when the screensaver is active use:
97+
#sleep = blank
9598
# default precedence to use if action does not match one of those above
9699
default = generic
97100

install/dynquee-remote.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ default_image = default.png
7575
# * genre: media relating to genre of game e.g. shooters, platform games
7676
# * system: media relating to game system e.g. Sinclair Spectrum or SNES banner
7777
# * generic: generic media unrelated to a game, system or publisher
78+
# * screensaver: media to be shown when the screensaver is active
7879
# * blank: blank the display e.g. when EmulationStation goes to sleep
7980
# (note: `blank` causes dynquee to stop processing a precedence rule)
8081
#
@@ -91,7 +92,9 @@ default_image = default.png
9192
rungame = rom publisher system genre scraped generic
9293
gamelistbrowsing = system generic
9394
systembrowsing = generic
94-
sleep = blank
95+
sleep = screensaver
96+
# If you want to blank the marquee when the screensaver is active use:
97+
#sleep = blank
9598
# default precedence to use if action does not match one of those above
9699
default = generic
97100

media/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
- `startup/startup.0[12].png`: default startup images which reuse elements of Recalbox startup screen
88

9+
- `screensaver/screensaver.0[12].png`: default images shown when screensaver is active
10+
911
- `system/*.png`: system logos and banners. Includes
1012
- system logos from [`recalbox-next`](https://gitlab.com/recalbox/recalbox-themes/-/tree/master/themes/recalbox-next) theme
1113
- platform logos from [Dan Patrick's v2 Platform Logos](https://archive.org/details/console-logos-professionally-redrawn-plus-official-versions)

tests/media/screensaver/screensaver.01.png

Loading

tests/media/screensaver/screensaver.02.png

Loading

tests/test_dynquee.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ default_image = default.png
7575
# * genre: media relating to genre of game e.g. shooters, platform games
7676
# * system: media relating to game system e.g. Sinclair Spectrum or SNES banner
7777
# * generic: generic media unrelated to a game, system or publisher
78+
# * screensaver: media to be shown when the screensaver is active
7879
# * blank: blank the display e.g. when EmulationStation goes to sleep
7980
# (note: `blank` causes dynquee to stop processing a precedence rule)
8081
#
@@ -91,7 +92,9 @@ default_image = default.png
9192
rungame = rom publisher system genre scraped generic
9293
gamelistbrowsing = system generic
9394
systembrowsing = generic
94-
sleep = blank
95+
sleep = screensaver
96+
# If you want to blank the marquee when the screensaver is active use:
97+
#sleep = blank
9598
# default precedence to use if action does not match one of those above
9699
default = generic
97100

tests/test_dynquee.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ def test_getStartupMedia(self):
204204
startupMedia.sort()
205205
self.assertEqual(startupMedia, ['./tests/media/startup/startup01.png', './tests/media/startup/welcome.mp4'])
206206

207+
def test_getScreensaverMedia(self):
208+
self.assertEqual(
209+
self.mm.getMedia({'Action': 'sleep'}),
210+
['./tests/media/screensaver/screensaver.01.png', './tests/media/screensaver/screensaver.02.png']
211+
)
207212

208213

209214
class TestSlideshow(unittest.TestCase):

0 commit comments

Comments
 (0)