photoframe: Start photo slide show on idle
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
All checks were successful
dustin/photoframe2/pipeline/pr-main This commit looks good
The `photoframe` script was based on the one used by the original Buildroot-based photo frame system. I've split it into two processes, though: one to listen to the URL stream and download new photos as instructed by the server, and another to actually display the photos. Getting `feh` and Firefox to both be fullscreen at the same time was difficult, and only works if they are on separate Sway workspaces. Thus, "activating" the slide show means switching to the workspace where `feh` is and "deactivating" it means switching back to Firefox's workspace.
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
gui-apps/swayidle
|
||||
gui-wm/sway
|
||||
net-wireless/wpa_supplicant
|
||||
media-gfx/feh
|
||||
media-video/pipewire
|
||||
net-misc/curl
|
||||
net-wireless/wpa_supplicant
|
||||
|
||||
@@ -7,5 +7,13 @@ input * {
|
||||
}
|
||||
|
||||
exec /usr/lib64/firefox/firefox
|
||||
exec /usr/bin/photoframe stream
|
||||
|
||||
exec swayidle -w \
|
||||
timeout 120 'photoframe show' resume 'photoframe hide'
|
||||
|
||||
for_window [title="Mozilla Firefox"] fullscreen
|
||||
for_window [class="photoframe"] fullscreen
|
||||
|
||||
assign [title="Mozilla Firefox"] 1
|
||||
assign [class="photoframe"] 2
|
||||
|
||||
46
overlay/usr/bin/photoframe
Executable file
46
overlay/usr/bin/photoframe
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
photoframe_hide() {
|
||||
swaymsg 'workspace 1'
|
||||
}
|
||||
|
||||
photoframe_show() {
|
||||
# Run on a separate workspace so Firefox can stay fullscreen, too
|
||||
swaymsg 'workspace 2'
|
||||
if [ -f /tmp/photoframe.pid ]; then
|
||||
# feh is already running
|
||||
return 0
|
||||
fi
|
||||
if [ ! -f /tmp/photoframe-current ]; then
|
||||
cp /usr/share/feh/images/feh.png /tmp/photoframe-current
|
||||
fi
|
||||
feh -FZ --draw-exif --class photoframe /tmp/photoframe-current &
|
||||
# Wait for the feh window to actually appear ...
|
||||
swaymsg -t subscribe '["window"]'
|
||||
# Sometimes, Sway's `for_window ... fullscreen` doesn't work?
|
||||
swaymsg fullscreen
|
||||
echo $! > /tmp/photoframe.pid
|
||||
}
|
||||
|
||||
photoframe_stream() {
|
||||
while :; do
|
||||
curl -NsS https://photos.pyrocufflink.blue/stream |
|
||||
while read url; do
|
||||
curl -fsL -o /tmp/photoframe-next "${url}" || continue
|
||||
mv /tmp/photoframe-next /tmp/photoframe-current
|
||||
done
|
||||
sleep 30
|
||||
done
|
||||
}
|
||||
|
||||
case $1 in
|
||||
show)
|
||||
photoframe_show
|
||||
;;
|
||||
hide)
|
||||
photoframe_hide
|
||||
;;
|
||||
stream)
|
||||
photoframe_stream
|
||||
;;
|
||||
esac
|
||||
5
portage/package.use/photoframe
Normal file
5
portage/package.use/photoframe
Normal file
@@ -0,0 +1,5 @@
|
||||
gui-apps/swayidle -systemd
|
||||
gui-libs/wlroots X
|
||||
gui-wm/sway X
|
||||
media-gfx/feh exif inotify
|
||||
net-misc/curl -alt-svc -ftp -hsts -http3 -imap -pop3 -progress-meter -psl -quic -smtp -tftp -websockets -adns -http2 CURL_QUIC: -*
|
||||
Reference in New Issue
Block a user