Spořič obrazovky
Napsal: 19 kvě 2025, 11:24
Zdravím, jak docílím toho, aby se mi v Mint 21.1 MATE při nečinnosti zobrazily obrázky ze složky Obrázky a taky videa, která bych chtěl taky nechávat přehrávat? Byly by ve stejné složce, popř.by v ní byl odkaz na umístění na jiný HDD.
Celé dopo to řeším s ChatGPT(ta zdarma verze) a navrhl mi skripty a mpv přehrávač. Protože se v tom moc nevyznám, nedaří se nám to uspokojivě rozjet.
Požadavky: Pokud jsem nečinný déle jak jednu minutu, spustí se spořič, kde se přehrávají fotky a videa. Oboje má v horním levém rohu název souboru bez cesty a přípony. Fotky se střídají co 2s. Při pohnutí myší, nebo klávesnice, se spořič vypne/zastaví a zapamatuje si, kde skončil. Pokud se přeruší uprostřed videa, při další nečinnosti se rozběhne od toho místa. Pokud u fotky, bude pokračovat další fotkou. Fotky a videa jdou ideálně za sebou dle data pořízení(vzít z exif, nebo vlastností souborů), nebo by eventuélně mohly jít abecedně. Ale určitě ne v náhodném pořadí.
Tento spořič mi navrhla přes mpv přehrávač, neboť xscreensaver to asi neumožňuje. Už nám funguje při testovacím spuštění přes terminál tady toto, ale když mi vytvořil skript na spouštění v autostartu po spuštění pc, tak se mi spuštění pc zablokovalo. Najela mi login obrazovka, zadám heslo, enter, najela černá obrazovka, uprostřed šipka a jinak nic. A takto to zamrzlo. Tak mi navrhla, že mi vytvoří spouštění přes smdcmd(nevím jak se to píše, bo mi při restartu půlka chatu s ní zmizela a už to nemůžu najít). Zkoušíme to tedy přes toto a furt to není ono. Skripty, které fungují. Některé časové parametry jsou pro testování, tak jsou kratší jak 1min.
mpv-sporic.sh
#!/bin/bash
MEDIA_DIR="$HOME/Obrázky"
STATE_FILE="$HOME/.config/mpv-sporic/state"
mkdir -p "$(dirname "$STATE_FILE")"
mapfile -t files < <(find "$MEDIA_DIR" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' -o -iname '*.mp4' -o -iname '*.mkv' -o -iname '*.webm' \) | sort)
total_files=${#files[@]}
if (( total_files == 0 )); then
echo "Ve složce nejsou žádné podporované soubory."
exit 1
fi
if [[ -f "$STATE_FILE" ]]; then
read -r current_index current_pos < "$STATE_FILE"
else
current_index=0
current_pos=0
fi
# Připrav playlist od posledního souboru
playlist=("${files[@]:current_index}")
# Spustit mpv s playlistem, s parametrem --image-display-duration=2 pro obrázky,
# aby se obrázky přehrály 2 sekundy a plynule pokračovalo další
mpv --fs --really-quiet --no-osc --image-display-duration=2 --script="$HOME/.config/mpv/scripts/show_filename_no_ext.lua" --loop-playlist=inf "${playlist[@]}"
a ve složce /home/uzivatel/.config/mpv/scripts je show_filename_no_ext.lua
function remove_extension(filename)
return filename:match("(.+)%..+$") or filename
end
function basename(path)
return path:match("^.+/(.+)$") or path
end
function show_filename()
local path = mp.get_property("path")
if not path then return end
local filename = basename(path)
local name_no_ext = remove_extension(filename)
mp.osd_message(name_no_ext, 5)
end
mp.register_event("file-loaded", show_filename)
Při testování v terminálu tyto 2 fungují.
Celé dopo to řeším s ChatGPT(ta zdarma verze) a navrhl mi skripty a mpv přehrávač. Protože se v tom moc nevyznám, nedaří se nám to uspokojivě rozjet.
Požadavky: Pokud jsem nečinný déle jak jednu minutu, spustí se spořič, kde se přehrávají fotky a videa. Oboje má v horním levém rohu název souboru bez cesty a přípony. Fotky se střídají co 2s. Při pohnutí myší, nebo klávesnice, se spořič vypne/zastaví a zapamatuje si, kde skončil. Pokud se přeruší uprostřed videa, při další nečinnosti se rozběhne od toho místa. Pokud u fotky, bude pokračovat další fotkou. Fotky a videa jdou ideálně za sebou dle data pořízení(vzít z exif, nebo vlastností souborů), nebo by eventuélně mohly jít abecedně. Ale určitě ne v náhodném pořadí.
Tento spořič mi navrhla přes mpv přehrávač, neboť xscreensaver to asi neumožňuje. Už nám funguje při testovacím spuštění přes terminál tady toto, ale když mi vytvořil skript na spouštění v autostartu po spuštění pc, tak se mi spuštění pc zablokovalo. Najela mi login obrazovka, zadám heslo, enter, najela černá obrazovka, uprostřed šipka a jinak nic. A takto to zamrzlo. Tak mi navrhla, že mi vytvoří spouštění přes smdcmd(nevím jak se to píše, bo mi při restartu půlka chatu s ní zmizela a už to nemůžu najít). Zkoušíme to tedy přes toto a furt to není ono. Skripty, které fungují. Některé časové parametry jsou pro testování, tak jsou kratší jak 1min.
mpv-sporic.sh
#!/bin/bash
MEDIA_DIR="$HOME/Obrázky"
STATE_FILE="$HOME/.config/mpv-sporic/state"
mkdir -p "$(dirname "$STATE_FILE")"
mapfile -t files < <(find "$MEDIA_DIR" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' -o -iname '*.mp4' -o -iname '*.mkv' -o -iname '*.webm' \) | sort)
total_files=${#files[@]}
if (( total_files == 0 )); then
echo "Ve složce nejsou žádné podporované soubory."
exit 1
fi
if [[ -f "$STATE_FILE" ]]; then
read -r current_index current_pos < "$STATE_FILE"
else
current_index=0
current_pos=0
fi
# Připrav playlist od posledního souboru
playlist=("${files[@]:current_index}")
# Spustit mpv s playlistem, s parametrem --image-display-duration=2 pro obrázky,
# aby se obrázky přehrály 2 sekundy a plynule pokračovalo další
mpv --fs --really-quiet --no-osc --image-display-duration=2 --script="$HOME/.config/mpv/scripts/show_filename_no_ext.lua" --loop-playlist=inf "${playlist[@]}"
a ve složce /home/uzivatel/.config/mpv/scripts je show_filename_no_ext.lua
function remove_extension(filename)
return filename:match("(.+)%..+$") or filename
end
function basename(path)
return path:match("^.+/(.+)$") or path
end
function show_filename()
local path = mp.get_property("path")
if not path then return end
local filename = basename(path)
local name_no_ext = remove_extension(filename)
mp.osd_message(name_no_ext, 5)
end
mp.register_event("file-loaded", show_filename)
Při testování v terminálu tyto 2 fungují.