Spořič obrazovky

Problémy a zkušenosti s programy, softwarovými nástroji nebo balíčkovacími systémy pro jejich instalaci
Odpovědět
Zpráva
Autor
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Spořič obrazovky

#1 Příspěvek od orel »

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í.
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#2 Příspěvek od orel »

Co už ale moc nefunguje je autostart(blokuje spuštění prostředí).
Skript je uložen v uzivatel/.config idle-mpv-sporic.desktop

[Desktop Entry]
Type=Application
Exec=/home/uzivatel/.scripts/idle-mpv-sporic.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=MPV Spořič (Idle Monitor)
Comment=Spouští spořič videí a obrázků po nečinnosti
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#3 Příspěvek od orel »

Tak mi navrhla v /home/uzivatel/.config/mpv-sporic idle-mpv-sporic.sh Jenže u tohoto se mi zobrazí na půl sekundy první obrázek, zhasne, ukáže se prostředí, zase čeká zkušebních 10s a zase se ukáže ten první obrázek. Pokud pracuju, spořič se neaktivuje(to je v pořádku). Nedaří se nám překonat, aby při nečinnosti se to spustilo a běželo jedno po druhém. A už vůbec se nedaří dosáhnout, že když pohnu myší, že se běh přeruší. Pokud máte někdo zkušenost, nebo radu, díky za ně.

#!/bin/bash

IDLE_THRESHOLD=$((10 * 1000)) # 10 sekund v ms
MEDIA_DIR="$HOME/Obrázky"
LOGDIR="$HOME/.config/mpv-sporic"
LOGFILE="$LOGDIR/idle-mpv-sporic.log"
MPV_LOG="$LOGDIR/mpv.log"

mkdir -p "$LOGDIR"

log() {
echo "$(date '+%F %T'): $*" >> "$LOGFILE"
}

MPV_PID=""

while true; do
idle_time=$(xprintidle)
log "idle_time=$idle_time"

if (( idle_time >= IDLE_THRESHOLD )); then
if [ -z "$MPV_PID" ] || ! kill -0 "$MPV_PID" 2>/dev/null; then
log "Spouštím spořič..."

mapfile -t images < <(find "$MEDIA_DIR" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.bmp' -o -iname '*.mp4' \) | sort)

if [ "${#images[@]}" -eq 0 ]; then
log "Nenašel jsem žádné obrázky nebo videa ve složce $MEDIA_DIR"
else
mpv --fs --loop-playlist --image-display-duration=10 --osd-level=3 --osd-duration=10000 "${images[@]}" > "$MPV_LOG" 2>&1 &
MPV_PID=$!
log "mpv spuštěno s PID=$MPV_PID s ${#images[@]} soubory"
fi
fi
else
if [ -n "$MPV_PID" ] && kill -0 "$MPV_PID" 2>/dev/null; then
log "Uživatel aktivní, ukončuji spořič (mpv)..."
kill "$MPV_PID"
wait "$MPV_PID" 2>/dev/null
MPV_PID=""
log "mpv ukončeno"
else
log "Uživatel aktivní, spořič neběží."
fi
fi

sleep 2
done
Livan
Příspěvky: 339
Registrován: 16 kvě 2014, 21:15

Re: Spořič obrazovky

#4 Příspěvek od Livan »

Je až neuvěřitelné, jakými hovadinami se lidé zabývají. K čemu je dobrý šetřič obrazovky, který neustále vykresluje obrázky nebo videa? Ten neušetří vúbec nic, navíc pokud předpokládám, že v době kdy počítač spustí šetřič, jsem si od pc odběhl.
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#5 Příspěvek od orel »

Šetřič obrazovky není aby šetřil elektřinu, ale šetřil stínitko obrazovky, aby se nevypalovaly "loga". LCD už na to netrpí, ale název zůstal stejný. Šetřit elektřinu taky není k ničemu. Co utratím za elektřinu, neutratím třeba za nový mobajl.
Mám to tedy tak, že mi běží PC celý den a jak u něho nejsem, bo jsem v jídelně a jím, mohu se dívat na běžící fotky. Ale chtěl bych to podle jiného klíče, než dokáže xscreensaver. I na ty videa bych se rád díval. A nechci to spouštět ručně, bo to pak zase ručně několikrát za den musím vypnout. Od toho ta automatika je, aby dělala rutinní práci za nás,ne? :)
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#6 Příspěvek od orel »

A ještě dodám, svého času byla hovadina i počítačová myš.... Vynálezce stála, mám dojem, místo...
Livan
Příspěvky: 339
Registrován: 16 kvě 2014, 21:15

Re: Spořič obrazovky

#7 Příspěvek od Livan »

orel píše: 19 kvě 2025, 12:56 Mám to tedy tak, že mi běží PC celý den a jak u něho nejsem, bo jsem v jídelně a jím, mohu se dívat na běžící fotky.
Ty když jsi v jídelně, tak se díváš na běžící fotky? To jsem jaksi nepobral. A kolik času jsi už tomuhle nesmyslu věnoval?
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#8 Příspěvek od orel »

Jídelnu mám v podstatě jako součást obýváku, kde běží PC. Takže se na něho dívám z 5m? odhadem. Někdy jsem vyvalený na gauču a čumím na ty běžící fotky. Xscreensaver je házel na přeskáčku. Neumí však videa a neumí jen čistý název. A taky doba zobrazení jedné fotky je 10s a déle. Fotek mám 20000, chci, ať to odsejpá.
Tvorbě řešení s ChatemGPT mi zabralo od rána. Skriptovat neumím, byť už mě stihla dost přiučit. Mnohem déle mi zabralo fotky protřídit(přibližně z 350 000 dle číslování na fotkách), upravit jas, ořez, vymačkat jebaky :D ,a popsat. Fotím přes 20let, točím 30. Videí mám 1500. Zestřihané, otitulkované... Jasne že to nejsou vše hodinové videa.... Většina je do 1min.
orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#9 Příspěvek od orel »

Většinu věcí jsem už vyřešil.
Když zapnu pc, skript se načte(spustí se přes autostart). Po nastavené době nečinnosti se spořič aktivuje a jede jak má. Když pohnu myší, spořič se přeruší. Když nechám pc v nečinnosti, měl by se spořič znovu rozběhnout. Ale k tomu už nedojde. Nicméně, když kdekoliv napíšu alespoň 2 písmena na klávesnici, tak se ten spořič po další době nečinnosti rozjede. S AI to řeším od rána. Dává mi různé varianty, ale nezabírají. Uměl by někdo najít ve skriptu problém, popř.ho opravit? Budu vděčný jak za darovanou ledvinu.

Kód: Vybrat vše

#!/bin/bash

SPORIC_SCRIPT="/home/.sporic/mpv-sporic.sh"

restart_sporic() {
    pkill -f "$SPORIC_SCRIPT"
    sleep 2
}

while true; do
    idle_time=$(xprintidle)

    if [ "$idle_time" -ge 5000 ]; then
        "$SPORIC_SCRIPT" &
        MPV_PID=$!

        # Souběžné sledování vstupů myši přes X události
        (
            xev -root | while read -r line; do
                if echo "$line" | grep -q "MotionNotify\|KeyPress"; then
                    restart_sporic
                    break
                fi
            done
        ) &

        wait $MPV_PID
    fi

    sleep 1
done

orel
Příspěvky: 36
Registrován: 07 úno 2024, 08:10

Re: Spořič obrazovky

#10 Příspěvek od orel »

tak už mám vyřešeno i toto.
Odpovědět