GNU/Linux >> Znalost Linux >  >> Linux

Pamatujete si aplikace při odhlášení z Lxde?

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

Linux
  1. Linux – Spouštět aplikace Mac OS X na Linuxu?

  2. Linux – Jak spustit bootloader z Linuxu?

  3. Odkud se spouští skript Shell?

  1. Jak spouštět skripty Pythonu ze shellu

  2. Spusťte příkaz na více linuxových serverech z Windows

  3. Jak spustit soubor sh z jiného souboru sh

  1. Spusťte shell skript v novém terminálu z aktuálního terminálu

  2. Jak spustit příkaz Vim z shellu?

  3. Android – Je možné spouštět aplikace pro Android na (normálním) Linuxu?