Ubuntu Raring Ringtail(13.04)の新規インストール。
メイン:ユーザーログアウト時にスクリプトでgsetting(デスクトップの壁紙)を変更します。
私は内部に回避策を置いたさまざまな( これ )という名前のアプリケーションをログアウトで停止しようとしています。 Varietyは自動起動アプリなので、ログインするたびに起動します。Varietyには、アプリのプロセスが停止したときに呼び出される関数on_quit()
とforce_quit_thread()
があります。そこで、実際のスクリプト(normalize
)を実行するpythonスクリプト行を内部に追加しました。さまざまなものを正常に終了しようとすると、必要な処理が実行されます。システムがログアウトすると、開始したプロセスも停止する必要がありますが、停止していないことに気づきました。そのため、この方法を使用できませんでした。
これにより、ログアウト時にさまざまなプロセスを手動で強制終了する別の方法を使用できるようになりました。私は~/.bash_logout
を試しました(自動起動がbashで実行されないことがわかっているので、私はそれを疑います)。 ~/etc/gdm/PostSession/Default
(しかし、私はgdmを使用していません); ~/etc/lightdm/lightdm.conf
(これも機能しません!どうしてですか?); pam_script/pam-script(操作方法がわかりません。本当に違います。)
しかし、アカウントからログアウトしようとすると問題が発生します。 on_quit()もforce_quit_thread()も実行しません。そして、私が~/Nohup.out
からキャプチャしたログは、最後の行を参照してください。
.... bla-bla ... [only see last line]
IOError: [Errno socket error] [Errno 2] No such file or directory
(variety:15627): Gdk-WARNING **: variety: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
彼らは利用可能なリソースを失いましたよね? 通常は終了しませんその場合、gsettingは変更されません。
1)quit functions
内にスクリプトを追加
/opt/extras.ubuntu.com/variety/variety/VarietyWindow.py
にあります:
<pre>bashCommand = "/home/abdillah/Toolbox/command/normalize"
os.system(bashCommand)</pre>
2)正規化内のスクリプト
目的:バラエティが終了したときに壁紙を変更する。
<pre>echo $(cat "${HOME}"/.self-log)"| normalize" > "${HOME}"/.self-log #append log
wallpaper=$(cat /home/abdillah/.wallpaper)
filename="file://"$wallpaper
configname=${filename/'#'/"%23"}
gsettings set org.gnome.desktop.background picture-uri $configname #the most important</pre>
3)LightDM構成ファイル
私を混乱させるのは、それが documentation であり、session-cleanup-script
について言及されたステートメントがないことです。非推奨ですか?
[SeatDefaults] user-session = ubuntu greeter-session = unity-greeter autologin-user = session-cleanup-script =/home/abdillah /ツールボックス/コマンド/ログオフ
4)ログオフファイルに含まれるもの:
.self-logファイルはまだ空です=>失敗
#!/ bin/bash echo $(cat "$ {HOME}"/。self-log) "| fail?(OnScript)"> "$ {HOME}" /。self-log#append log killall Variety /opt/extras.ubuntu.com/variety/bin/variety -q echo $(cat "$ {HOME}" /。self-log) " |成功?(OnScript) ">" $ {HOME} "/。self-log #log exit 0
上記の条件が非常に具体的であると誰かが考えるときは、次の質問に答えてください。 1.ログアウト時に直接スクリプトを実行する方法([〜#〜] cmiw [〜#〜]上記の方法。そうでない場合は、何か提案をお願いします)または2.どうすればログアウトしたときにバラエティを適切に停止しますか? (したがって、on_quit()が呼び出されます)
in bash
で各種を開始し、〜/ .bash_logoutスクリプトを使用して停止します。しかし、どのように?OK。それは長い。しかし、私はできるだけ明確にするようにしています。なぜなら、私が読んだこれに関連する質問がたくさんあるからです。本当に誰かの助けが必要です。ありがとうございました。
解決策は簡単ではありません。 Xログイン時にスクリプトを開始し、Xセッションが終了するまで待機する必要があります。幸いなことに、gnome-sessionのinotifyとpidがあります。
スクリプトの実行時に、さまざまなプロセスがすでに適切に強制終了されているはずです。
inotify-tools
パッケージ。〜/ .xprofileスクリプトを作成または変更し、次の行に追加します
sh .xlogout &
次のコンテンツで〜/ .xlogoutを作成します
FILE=/tmp/.ICE-unix/$PPID # pid of parent = gnome-session
sleep 10s # wait for $FILE creation
inotifywait -qe delete_self $FILE # wait for $FILE deletion = logout
# your code goes here # = on_quit
# gsettings reset org.gnome.desktop.background picture-uri