Lembre-se de aplicativos no logout do LXDE

4

Quando eu inicio meu computador, quero lembrar que meus aplicativos abertos antes de fechar a última sessão, como o Ubuntu, e outras distros normalmente.

pesquisando, vejo que posso executar aplicativos quando inicio a sessão, configurando o arquivo de autostart, mas não quero sempre executar os mesmos programas no início, em vez disso, quero reabrir os programas abertos antes de fechar a última sessão.

Eu uso o Fedora Spin com o LXDE.

    
por Bruce_Warrior 07.08.2011 / 20:49

1 resposta

2

Aparentemente, o LXDE não possui um gerenciador de sessão adequado. No entanto, como você mencionou, podemos usar o arquivo de autostart. Tudo o que precisamos fazer é criar uma lista dinâmica dos programas que estamos executando antes de sairmos da área de trabalho.

Aqui está um pequeno script que eu analisei os filhos da janela raiz do X11 procurando por aplicativos para adicionar ao arquivo de auto-inicialização. Tem listas pretas e brancas opcionais. Use a lista negra para coisas como o gerenciador de janelas ou qualquer coisa que você nunca queira executar. Por outro lado, use a lista de permissões para algo que você sempre deseja executar.

Tente executá-lo em um shell para ver a aparência da saída, então você pode ver se precisa adicionar algo à lista negra.

Você precisará conectar isso para executar de alguma forma antes de sair do LXDE. Provavelmente adicionando uma nova entrada em um menu.

Por exemplo: scriptnamehere.bash > ~/.config/lxsession/LXDE/autostart

Como você pode ver, o arquivo de autostart será reescrito toda vez que for executado, daí a necessidade da lista de permissões.

#!/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
    
por 09.08.2011 / 05:56