LXDEからログアウトするときのアプリケーションの記憶

LXDEからログアウトするときのアプリケーションの記憶

コンピュータを起動するとき、Ubuntuのように最後のセッションを閉じる前に私のアプリケーションが開いていることを覚えておきたいです。一方、他のディストリビューションでは通常これを行います。

インターネット検索では、起動セッションでアプリケーションを実行して自動起動ファイルを設定できますが、起動時に常に同じプログラムを実行したくないので、以前のセッションを閉じる前に開いていたプログラムを再度開くことを確認しました。

私はFedoraスピンとLXDEを使用しています。

答え1

明らかに、LXDEには適切なセッションマネージャがありません。ただし、前述のように自動起動ファイルを使用できます。私たちがしなければならないのは、デスクトップを終了する前に実行中のプログラムの動的リストを作成することだけです。

以下は、自動起動ファイルに追加するアプリケーションを探すルートX11ウィンドウのサブウィンドウを解析する小さなbashスクリプトです。オプションのブラックリストとホワイトリストがあります。ウィンドウマネージャまたは実行したくない項目にブラックリストを使用します。代わりに、常に実行したい項目にホワイトリストを使用してください。

出力がどのように見えるかを確認するためにシェルで実行すると、ブラックリストに追加する必要があるものがあるかどうかを確認できます。

LXDEを終了する前に、何らかの方法で実行するには接続する必要があります。おそらくメニューに新しい項目を追加することもできます。

たとえば、scriptnamehere.bash > ~/.config/lxsession/LXDE/autostart

ご覧のとおり、実行されるたびに自動起動ファイルが再作成されるため、ホワイトリストが必要です。

#!/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

関連情報