Když spustím svůj počítač, chci, aby si pamatoval, že se moje aplikace otevřely před ukončením poslední relace, jako je Ubuntu a ostatní distribuce normálně.
Google, vidím, že mohu spouštět aplikace, když začnu relaci, konfiguruji soubor automatického spuštění, ale nechci vždy spouštět stejné programy při startu, místo toho chci znovu otevřít programy otevřené před ukončením poslední relace.
Používám Fedora spin s LXDE.
Přijatá odpověď:
LXDE zjevně nemá správného správce relací. Jak jste však zmínili, můžeme použít soubor automatického spuštění. Vše, co musíme udělat, je vytvořit dynamický seznam programů, které spouštíme, než opustíme plochu.
Zde je malý bash skript, který jsem vytvořil a který bude analyzovat děti kořenového okna X11 hledající aplikace, které lze přidat do souboru automatického spuštění. Má volitelné černé a bílé seznamy. Použijte černou listinu pro věci, jako je správce oken nebo cokoli, co nikdy nechcete spouštět. Naopak použijte whitelist pro něco, co chcete vždy spustit.
Zkuste to spustit v prostředí Shell, abyste viděli, jak vypadá výstup, a pak uvidíte, zda je potřeba něco přidat na černou listinu.
Než LXDE ukončíte, budete to muset zapojit, aby to nějak běželo. Pravděpodobně přidáním nové položky do nabídky.
Například:scriptnamehere.bash > ~/.config/lxsession/LXDE/autostart
Jak můžete vidět, toto přepíše automaticky spouštěný soubor při každém jeho spuštění, proto je potřeba vytvořit whitelist.
#!/bin/bash
WINDOWS=($(xwininfo -root -children | \
egrep \"[a-zA-Z]*\" | \
cut -d' ' -f7 | \
sed 's/":\?//g' | \
sort -du))
BLACKLIST=()
WHITELIST=()
for window in ${WINDOWS[@]}; do
# test to see if element in array is an executable
WHICH=$(which $window 2>/dev/null)
# is it in the blacklist?
# if so, move to the next window
for app in ${BLACKLIST[@]}; do
if [[ $app == $window ]]; then
continue 2
fi
done
# otherwise add it to the autostart list
if [[ -f $WHICH ]]; then
APPS[${#APPS[*]}]="$window"
fi
done
# add whitelisted apps
for app in ${WHITELIST[@]}; do
APPS[${#APPS[*]}]="$app"
done
for app in ${APPS[@]}; do
printf "@%s\n" "$app"
done