
これは馬鹿げたアイデアのように聞こえるかもしれませんが、私は透明なトップパネルが欲しいのですが、これはCompiz Config Settings Managerで設定できますが、サスペンドから再開すると透明ではなくなり、ダッシュを呼び出すときにグラフィックの不具合が発生します。これは、コマンド「unity」を実行してUnityを再起動すると解消されます。それで、これを実現できるかどうか疑問に思いました。/etc/pm/sleep.d/
次のようにスクリプトを設定してみました。サスペンドから再開した後にコマンドを実行するにはどうすればいいですか?しかし、うまくいきませんでした。再度ログインして Unity が再開される前に実行されるものと思われます。
私が望むことを達成する方法はあるのでしょうか、それとも諦めるべきでしょうか?
答え1
へ移動システム設定 > キーボード > ショートカット > カスタムショートカット
新しいものを作成します:
Alt次に、 +などの簡単なキーボード ショートカットを設定して、R一時停止後に Unity を簡単に再起動できるようにします。
私はあなたのバグに悩まされていませんが、Unity は新しいセッションのエッジ バインディングを記憶しないため、新しいセッションごとにこのコマンドを実行する必要があります。
答え2
直接systemd-suspend.service のマニュアル:
Immediately before entering system suspend and/or hibernation systemd-suspend.service (and the other mentioned units, respectively) will run all executables in /usr/lib/systemd/system-sleep/ and pass two arguments to them. The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action. Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post". All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.
私はいくつかテストをしてみましたが、スクリプト(誰でも実行可能とマークされ、 で実現できるchmod a+x
)を/lib/systemd/system-sleep
、/usrなし、記載通り実行されます。
しかし、それが機能していないと思わせる欠点が1つあります。環境が異なるのです。グラフィカルコマンド動作しないおそらくこれを回避する方法はあるだろうが、デフォルトでは、unity --replace
失敗するX サーバーに接続できないためです (したがって、CTRL-ALT-F1 を押して改ざんせずに実際のコンソールに移動した場合に機能しないコマンドは機能しません)。
さて、ちょっと調べるためにタイピングを中断しました。基本的な chroot ウィキ(chrootでも同じ問題があったので)、手動で呼び出すとxhost +
前に中断すると、グラフィカルコマンド(私の場合)は正常に機能します。ただし、スクリプトからzenity --info --text "1:$1 2:$1"
呼び出すことはできません。xhost +
できるxhost +
ログイン時に自動的に呼び出されるプログラムを「スタートアップ アプリケーション」に追加します(そこに追加し、.bashrc
追加すると.bashrc
ターミナル エミュレーターを開くたびに実行されるため、追加しないでください)。Unity では異なる可能性がありますが、Ubuntu MATE では、System → Preferences → Personal → Startup Applications
[追加] をクリックしてこれを行うことができます。
/lib/systemd/system-sleep/restart-unity
次に、次の内容のファイルを作成します。
#!/bin/bash
export DISPLAY=:0
if [[ "$1" == "post" && "$2" == "suspend" ]]
then
sleep 5
unity --replace
fi
実行しますsudo chmod a+x /lib/systemd/system-sleep/restart-unity
(ファイルが root によって所有され、root によってのみ書き込み可能であることを確認してください)。
注意してくださいしなければならないを使用しますbash
。これは、「if」ステートメントのためです。 でステートメントを手動で試したところsh
、部分からさまざまなエラーが発生しました&&
。
がsleep
存在するのは、これがないと、unity --replace
X サーバーに接続できないためです (そう思われます)。
Zesty での私の独自のテストに基づくと、これは機能するはずです。
なぜ機能しないのかを 15 分かけて考えてみたところ、結局、そのexport DISPLAY=:0
行を忘れていたことに気付きました。