この質問の答えを試した後: 「常に最上位」を設定してアプリを起動する方法 、特に@MichaelTunnellによる コメント の1つ:
このコマンドを使用してbashスクリプトまたはキーボードショートカット(作成したもの)を作成でき、必要なときに使用できますが、不要な場合は使用できないため、これは私にとって最良のオプションです。私は変更を加えましたが、アクティブウィンドウのショートカットを常にオンにして、必要な場合にのみオンにしたいので、ここにコマンドがあります。
wmctrl -r :ACTIVE: -b toggle,above
私はUbuntu 16.10以下で常に上に切り替えることができましたが、今インストールしたUbuntu 17.10では同じショートカットを使用したいと思いません
私はこの投稿も試しましたが、これは基本的にMichael Tunnellのコメントのより詳細な投稿です 常にトップのUbuntuのキーボードショートカット
ショートカットは下の画像で確認でき、ウィンドウのAlways-on-topをTrueに設定するために機能しますが、同じコマンドを再度使用して「オフにする」場合でも、アクティブなアプリケーションを削除できませんそのプロパティ。
これはGNOME Ubuntu 17.10のバグですか?または、この特定のバージョンで追加の構成が不足していますか?
wmctrl
は、Ubuntu 17.10のデフォルトセッションであるWaylandと完全には互換性がありません。
回避策として、このQ&Aの後にXorgセッションに切り替えます: Ubuntu 17.10でWaylandからXorgに切り替えるにはどうすればよいですか?
多くの調査とbashで適切なコードを記述する方法を検討した後、ロジックのレイヤー内でwmctrlコマンドを使用して、現在のGNOMEデスクトップで「常に最上位」の状態を効果的に切り替える単一のコマンドを作成しました。見よ:
bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'
xprops
を使用してアクティブなウィンドウの状態のプロパティ「_NET_WM_STATE」をチェックし、「常に上」オプションがアクティブであることを示す「ABOVE」というテキストが含まれている場合。次に、必要に応じて、wmctrl
コマンドをパラメーターadd
またはremove
を指定して実行します。
コマンドの内訳(各コマンドは次に挿入され、_■
_プレースホルダーを置き換えます):
アクティブウィンドウIDを取得:
_xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
_
Idを使用してxpropからウィンドウの状態を取得します。
xprop -id $(■) _NET_WM_STATE
状態に「ABOVE」が含まれているかどうかを確認します。これは、ウィンドウが「常に手前」に設定されていることを示しています。
[[ $(■) =~ "ABOVE" ]]
Trueの場合は「削除」を返し、そうでない場合は「追加」を返します。
_■ && echo "remove" || echo "add"
_
戻り値をパラメーターとして使用してwmctrlコマンドを実行する
wmctrl -r :ACTIVE: -b $(■),above
すべてをbash
に送信して、コマンド置換_${ ... }
_、bashブール評価_[[ ... ]]
_、および正規表現一致演算子_=~
_を使用できるようにします。
_bash -c '■'
_
特にこの最後のステップでは、理解するのに非常に長い時間がかかりました。キーボードショートカットがデフォルトでbashで実行されていないことに気づくまで、コマンドをテストしているときにコンソールでコマンドが機能する理由がわかりませんでしたが、キーボードショートカットとして直接実行すると、静かに失敗しました。それは私を何年も壁に駆り立てました!
注:bashに送信するコマンドを引用符で囲む必要があるため、コマンドを作成するときは、(二重引用符を使用して)1レベル以上深くならないように注意する必要がありました。引用符で文字列をさらにネストするには、引用符をエスケープするために多くの混乱するバックスラッシュが必要になります。