Wenn ich meinen Computer starte, möchte ich, dass sich meine Anwendungen daran erinnern, die vor dem Schließen der letzten Sitzung geöffnet wurden, z. B. Ubuntu, und andere Distributionen tun dies normalerweise.
Beim Googeln sehe ich, dass ich Apps ausführen kann, wenn ich die Sitzung starte, die Autostart-Datei konfiguriere, aber ich möchte nicht immer die gleichen Programme beim Start ausführen, sondern die vor dem Schließen der letzten Sitzung geöffneten Programme erneut öffnen.
Ich verwende Fedora Spin mit LXDE.
Akzeptierte Antwort:
Anscheinend hat LXDE keinen richtigen Sitzungsmanager. Wie Sie jedoch erwähnt haben, können wir die Autostart-Datei verwenden. Wir müssen lediglich eine dynamische Liste der Programme erstellen, die wir ausführen, bevor wir den Desktop verlassen.
Hier ist ein kleines Bash-Skript, das ich erstellt habe, das die untergeordneten Elemente des Root-X11-Fensters analysiert und nach Apps sucht, die der Autostart-Datei hinzugefügt werden können. Es verfügt über optionale schwarze und weiße Listen. Verwenden Sie die Blacklist für Dinge wie den Fenstermanager oder alles, was Sie niemals ausführen möchten. Verwenden Sie umgekehrt die Whitelist für etwas, das Sie immer ausführen möchten.
Versuchen Sie, es in einer Shell auszuführen, um zu sehen, wie die Ausgabe aussieht, dann können Sie sehen, ob Sie etwas zur schwarzen Liste hinzufügen müssen.
Sie müssen dies irgendwie verdrahten, damit es läuft, bevor Sie LXDE beenden. Wahrscheinlich durch Hinzufügen eines neuen Eintrags in einem Menü.
Beispiel:scriptnamehere.bash > ~/.config/lxsession/LXDE/autostart
Wie Sie sehen können, wird die Autostart-Datei jedes Mal neu geschrieben, wenn sie ausgeführt wird, daher die Notwendigkeit für die 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