Gnomeワークスペースは使用するのに非常に便利ですが、管理が非常に難しいと感じています。例えば:
私は存在するが見つからない機能は次のとおりです。
たぶん、私は一般に知られている事実を知らないだけなのかもしれません。あるいは、Gnomeがこの動作でプログラミングするためのAPIを提供しているのかもしれません。または多分それは不可能です。
知らせてください。
補遺:この質問の回答を選択してから数日後、指定された目標を達成するための比較的簡単なAPIが見つかりました。その情報は、新しい回答として提供されます---(下
GNOME Shellでは、デフォルトでは、含まれているアプリケーションを含むワークスペース全体を移動することはできません。これは強力な機能ですが、この機能を備えたLinuxデスクトップ環境は知りません。
APIに関しては、GNOMEシェルには拡張機能のメカニズムがあります。これは実際にはAPIではありません。これは本質的に、システムの「(潜在的なセキュリティ)ホール」であり、開発者が独自のJavaScriptコードを挿入してシェルの動作を変更できます。多くのGNOME Shell拡張機能が存在し、何ができるかを示しています。多くの場合、大きな成功を収めています。
期待する機能に関して、状況は次のとおりです。
ワークスペースの自動クローズを抑制し、おそらくclose empty)-workspaceコマンドで置き換える機能。
デフォルトでは、GNOMEシェルには動的ワークスペースが付属しています。ただし、これはオフにすることができ、多数の固定ワークスペースを設定できます。これを実現するには、(GNOME)Tweaksをインストールし、[ワークスペース]タブで[静的ワークスペース]を選択します---(ここに示すように 。
ワークスペースを回転する機能(空のワークスペースはどこにでも配置できます)
残念ながら、ワークスペース(およびそのコンテンツ)の順序を変更することはできません。アプリケーションの移動のみが可能です。もちろん、静的ワークスペースでは、空のワークスペースは空のままです。
下位のネイバーとワークスペースを交換する機能
これは、これが何を意味するかによって異なります。ワークスペースの順序を再度変更する場合は、上記のポイントを参照してください。ワークスペースをすばやく切り替えることを意味している場合、これはショートカットキーで簡単に実行できます。 Ctrl+Alt+Up/Down または Super+PgDn/PgUp。
静的ワークスペースに切り替えると、ワークスペース全体を移動できないという制限があるため、どこにあるかをより詳細に制御できます。
静的ワークスペースでワークフローを強化するためのいくつかのヒント
ホットキーを構成して、特定のワークスペースにすばやく切り替えたり、アプリケーションを移動したりできます。次に例を示します。
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Super>4']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Super><Shift>4']"
これらのコマンドはホットキーを設定します Super+4 すぐにWS 4に移動し、ホットキー Super+Shift+4 これにより、アプリケーションがWS 4に移動します(タイルウィンドウマネージャーi3で機能するのと同じです)。
注:自分の質問に答えます-Gnomeステータスを正確に反映しているため、受け入れられた回答をそのままにします。
Ubuntu 18.04管理パッケージとして便利に提供されるプロジェクト xdotool があります。デスクトップ、ウィンドウ、およびそれらの関係への読み取りおよび書き込みアクセスを提供します。 (私が使用しなかった他の多くの機能も。)
このパッケージを使用すると、必要な関数を簡単にコーディングできます。ダイレクトCLIは役に立ちませんが、Ubuntuカスタムショートカットにリンクすると、たとえば、Gnomesの標準的な鳥瞰図ですべてのデスクトップを確認しながら、選択して個々のデスクトップをキーで上下に移動できました。
Gnomeの標準的な鳥瞰図は、「Super + a、Super + a」を介して利用でき、次にマウスを画面の右側に移動すると、すべてのデスクトップが垂直配列で表示されます。
Gnomeとの干渉を回避するには、Gnomeの動的デスクトップをオフにし、代わりに静的デスクトップ設定を使用する必要がありました。選択した回答では、静的デスクトップの使用が提案されました。
私の 完全なコードは要旨として提供されています 。
例として、このコードの抜粋はデスクトップを交換するためのものです:
swaprelative(){
nbr=$1
ndt=$(xdotool get_num_desktops)
if [[ $ndt -lt 2 ]] ; then return 0 ; fi
adt=$(xdotool get_desktop)
bdt=$((( adt + ndt + nbr) % ndt ))
if [[ $bdt == $adt ]] ; then return 0; fi
if [[ $bdt -lt 0 ]] ; then
echo "relative neighbor value $nbr is out of bounds"
return 1;
fi
xdotool search '.*' | while read w ; do
if ! window_has_desktop $w ; then continue; fi
wdt=$(xdotool get_desktop_for_window $w)
if [[ $wdt -eq $adt ]] ; then
xdotool set_desktop_for_window $w $bdt
Elif [[ $wdt -eq $bdt ]] ; then
xdotool set_desktop_for_window $w $adt
fi
done
xdotool set_desktop $bdt
}
コーディングが非常にシンプルだったのは、xdotool
プロジェクトの力によるものであることを強調しておく必要があります。そのプロジェクトはGnomeに依存せず、Gnomeと並行して動作し、同じ[〜#〜] x [〜#〜]にアクセスしますプリミティブ。 WMとxdotoolの間の相互干渉(たとえば、Gnomeで動的デスクトップをオフにする)を回避するように注意が払われている場合は、多くの異なるウィンドウマネージャーで使用できる可能性があります。