新しいアプリを開くたびに新しいワークスペースを開く方法はありますか?
たとえば、ワークスペース1に端末があり、spotifyを開きたいが、ワークスペース2にあり、spotifyを開いたときに自動的にワークスペース2に移動したい。
これは可能ですか?
私はこの特定のアプリケーションを実装していませんが、xdotool
があなたが望むことをするようです。
次のようなラッパースクリプトを使用してアプリケーションを起動してみてください。
desktops=$(xdotool get_num_desktops)
desktops="$desktops"+1
xdotool set_num_desktops "$desktops"
xdotool set_desktop "$desktops"
run-my-application
これをより堅牢にするために必要ないくつかの詳細を省きましたが、それはあなたが何をしているかによって多少異なり、主なアイデアを曖昧にするからです。
各xdotool
コマンドは、確認する必要があるステータスを返します。ステップが失敗した場合、盲目的に続行する必要はありません。
スクリプトで作成できるデスクトップの最大数を設定できます。
xdotool
は、ウィンドウが既に存在するかどうか、および現在どのデスクトップにあるかを確認できます。また、ウィンドウを別のデスクトップに移動することもできます。また、ウィンドウをアクティブにして、フォアグラウンドに移動してフォーカスを合わせることができます。
特定の操作の後にsleep
コマンドを追加して、次のステップを実行する前にデスクトップおよび特にアプリケーションにそれらの操作を行う時間を与える必要がある場合があります。
スクリプトは(ターミナルからだけでなく)デスクトップから実行される可能性があるため、デバッグを容易にするためにスクリプトが行ったことを示すメッセージをファイルに記録することもできます。
少し注意が必要なのは、アプリケーションで複数のウィンドウを開いている場合です。次に、インスタンスのスタックを処理し、何らかの形で適切なインスタンスを見つけるか、すべてのインスタンスで作業する必要があります。たとえば、私のThunderbird
は起動時にマスターパスワードを要求するため、2つのウィンドウが開きます。
xdotool
は、1つのxdotool
コマンドから複数のアクションを実行できるコマンドチェーンも提供します。現在のアクションの結果は、コマンド内の次のアクションによって読み取られるスタックにプッシュされます。これを視覚化してデバッグするのは難しいと感じましたが、機能させることができれば非常に強力です。
xdotool
はこの特定の問題に最適ですが、キープレスとマウスを発行することにより、あらゆる種類のデスクトップ/ GUIアクションを自動化するのに役立つ AutoKey もご覧ください。手動で行っているように見えるイベントは、ほとんどのアプリケーションおよびデスクトップ機能で動作します。