web-dev-qa-db-ja.com

ウィンドウを閉じることを無効にする方法

ばかげているように聞こえるかもしれませんが、Ubuntuでウィンドウを閉じないようにします。 1つのウィンドウを開くだけのデスクトップ環境を使用せずに、非常に安全な環境をユーザーに提供したいと考えています。次に、ユーザーがそのウィンドウを閉じられないようにします。ユーザーがウィンドウを閉じることができないように、compizでハックする方法はありますか。閉じるボタンを押すのではなく、Alt + f4などを押すのではありませんか?

12.04で利用可能なウィンドウマネージャのうち、任意のウィンドウマネージャを使用できます。 compiz、メタシティ、その他のいずれか。また、必要に応じてソースコードをハッキングすることもできます。

編集:OSでAlt + F4を無効にしても、問題は解決しません。これは、一部のアプリケーションは、イベントがOSにバブルされる前であっても、ALT + F4を押すと閉じるコマンドを発行するためです。ウィンドウを閉じる機能をアプリケーション自体から削除する方法が必要です。

5
Juzer Ali

Compizは、ウィンドウルールプラグインを使用してこの機能を提供します。一致するウィンドウを(名前、タイプ、IDなどで)指定し、それらのウィンドウにルールを適用できます。ルールの1つは、ウィンドウが閉じないようにすることです。私はこれを長い間使用し、それがうまく機能し、キーボードショートカット、閉じるボタン、および右クリックしてタスクバーを閉じるのを防ぐことができることを確認できました。ウィンドウが閉じないようにするためのかなり低レベルの方法。

xpropを使用してこれを行うこともできます(Compizは不要です)。例:

xprop -format _NET_WM_ALLOWED_ACTIONS 32a -set _NET_WM_ALLOWED_ACTIONS "_NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW"

使用するウィンドウIDの特定と組み合わせる:

window_id=`wmctrl -l | grep Insert_Name_of_Window | head -n1 | cut -d" " -f1`
xprop -id "$window_id" -format _NET_WM_ALLOWED_ACTIONS 32a -set _NET_WM_ALLOWED_ACTIONS "_NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW"

ここでxpropが変更しているのは、ウィンドウの状態ではなく、ウィンドウの許可されたアクションであることに注意してください。したがって、ウィンドウが最小化されないようにするには、_NET_WM_ACTION_MINIMIZEアクションなどを削除します。実際にウィンドウの状態を変更する場合は、wmctrlを使用すると簡単に使用できます。

許可されるアクションのデフォルトリストはすべてのウィンドウマネージャーで同じである可能性がありますが、以前に存在していた他のすべてのアクションを確実に再設定するために、ウィンドウでxprop | grep _NET_WM_ALLOWED_ACTIONSを実行することをお勧めします。 xpropを使用して単一の許可されたアクションを削除する方法はないようで、プロパティ全体を削除するだけです。

これがいかに確実で安全かという点では、おそらく単一のウィンドウで得られるのと同じくらい良いでしょう。 _NET_WM_ACTION_CLOSEまたは許可されている別のアクションを削除することは、ウィンドウがそのアクションを受信することを許可されていないことを意味します。ユーザーがどの方法でウィンドウを閉じようとしても、ウィンドウはそのアクションを受け取りません。安全なデスクトップを作成するためのコンポーネントはもちろんありますが、これはウィンドウが閉じないようにする最良の方法です。

ただし、アプリケーションがそれ自体を閉じる方法を提供している場合(例:File > Quit)、それがトリガーされると閉じます。 _NET_WM_ACTION_CLOSEを削除すると、ウィンドウの外側からアクションを受信できなくなりますが、ウィンドウがアクション自体をトリガーするのを防ぐことはできません。

4
Animism

私が知っているように、そしてあなたが言ったように、ウィンドウが閉じないようにする2つの方法があります。閉じるボタンとalt + f4を無効にする

Gnomeで閉じる、最小化、最大化ボタンを無効にするには:Alt + F2 Enter:gconf-editorアプリ>メタシティ>全般に移動しますボタンレイアウトをダブルクリックすると、メニューが表示されます:

gnome Tweakツールを使用して、ここで利用可能なメニューとボタンのアイコンを無効にすることもできます https://live.gnome.org/GnomeTweakTool

不要なものはそこから削除できると思います。

Atl + f4を無効にするには:メニューで[システム]-[設定]-[個人]-[キーボードショートカット]を選択し、必要なショートカットを無効にします。

0
krupal6022