コンピュータを起動するとき、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