18.04 (gnome) ワークスペース - ワークスペースを操作 (例: 任意の順序変更) するにはどうすればいいですか?

18.04 (gnome) ワークスペース - ワークスペースを操作 (例: 任意の順序変更) するにはどうすればいいですか?

Gnome ワークスペースは非常に便利ですが、管理が非常に難しいと感じています。たとえば、次のようになります。

  • ワークスペース内の最後のウィンドウを閉じると、そのワークスペースは閉じられます(すぐに閉じない場合でも、すぐに閉じます)。
  • 新しいウィンドウは、常に下部にある空のワークスペースにのみ挿入できます。
  • ワークスペースを移動するには、各ウィンドウを個別に移動する必要があり、その意図したプロセス中にワークスペースが空になると、ワークスペースは閉じられます。

存在すると思っていたが見つけられない機能は次のとおりです:

  • ワークスペースの自動クローズを抑制し、close-(empty)-workspace コマンドに置き換える機能。
  • ワークスペースを回転する機能(空のワークスペースをどこにでも配置可能)
  • 任意のワークスペースをその下位のワークスペースと交換する機能

おそらく私は、よく知られている事実について知らないだけでしょう。あるいは、Gnome がこの動作をプログラミングするための API を提供しているのかもしれません。あるいは、不可能なのかもしれません。

お知らせください。


追記:この質問の回答を選択してから数日後、私は比較的簡単に目標を達成できるAPIを見つけました。その情報は以下にあります。下に新しい答えとして。

答え1

注: 私自身の質問に答える-受け入れられた回答は Gnome のステータスを正確に反映しているため、そのまま残します。


プロジェクトがありますxdoツールこれは、Ubuntu 18.04 の管理パッケージとして便利に提供されています。デスクトップ、ウィンドウ、およびそれらの関係に対する読み取りおよび書き込みアクセスを提供します。(他にも使用しなかった機能がたくさんあります。)

このパッケージを使用すると、必要な機能を簡単にコーディングできました。直接 CLI を使用するのは便利ではありませんが、Ubuntu のカスタム ショートカットにリンクすることで、たとえば、Gnomes の標準の鳥瞰図ですべてのデスクトップを見ながら、キーを使用して個々のデスクトップを上下に移動したり選択したりできるようになりました。

Gnome 標準の鳥瞰図は、「Super+a、Super+a」を押してからマウスを画面の右側に移動すると利用でき、すべてのデスクトップが垂直に配列されて表示されます。

Gnomeとの干渉を避けるために、Gnomeのダイナミックデスクトップそして、静的デスクトップ代わりに設定してください。静的デスクトップ選択された回答で提案されました。

私の完全なコードはgistとして提供されています

例として、次のコード抜粋はデスクトップを交換するためのものです。

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。このプロジェクトはノーム、むしろ並行して動作するノーム同じものにアクセスするバツプリミティブ。WM と xdotool 間の相互干渉を回避するように注意すれば、おそらくさまざまなウィンドウ マネージャーで使用できます (例: Gnome で動的デスクトップをオフにする)。

答え2

GNOME Shell では、デフォルトでは、ワークスペース全体をそこに含まれるアプリケーションとともに移動することはできません。これは強力な機能ですが、この機能を備えた Linux デスクトップ環境は知りません。

API に関して言えば、GNOME Shell には拡張機能のメカニズムがあります。これは実際には API ではありません。本質的には、開発者が独自の JavaScript コードを挿入して Shell の動作を変更できる、システム内の「(潜在的な) セキュリティ ホール」です。GNOME Shell の拡張機能は数多く存在し、多くの場合、大きな成功を収めて何ができるかを示しています。

期待する機能に関しては、状況は以下のとおりです。

ワークスペースの自動クローズを抑制し、close-(empty)-workspace コマンドに置き換える機能。
デフォルトでは、GNOME Shell には動的なワークスペースが付属しています。ただし、これをオフにして、固定ワークスペースの数を設定することもできます。これを実現するには、(GNOME) Tweaks をインストールし、[ワークスペース] タブで [静的ワークスペース] を選択します。ここで示されているように

ワークスペースを回転する機能(空のワークスペースをどこにでも配置可能)
残念ながら、ワークスペース (およびそのコンテンツ) の順序を変更することはできません。アプリケーションを移動することしかできません。もちろん、静的ワークスペースでは、空のワークスペースは空のままです。

任意のワークスペースをその下位のワークスペースと交換する機能
これは何を意味するかによって異なります。ワークスペースの順序を変更することを意味する場合は、上記の点を参照してください。ワークスペースをすばやく切り替えることを意味する場合は、ショートカット キーCtrl+ Alt+ Up/DownまたはSuper+ PgDn/で簡単に実行できますPgUp

静的ワークスペースに切り替えると、ワークスペース全体を移動できないという制限はあるものの、どこに何があるのか​​をより細かく制御できるようになります。

静的ワークスペースでワークフローを強化するためのヒント

  • インストールできますワークスペースインジケーター現在使用しているワークスペースのインジケーターを提供する GNOME Shell 拡張機能。この拡張機能を使用すると、必要に応じてワークスペースの名前を変更できます (例: 「1」ではなく「1 - ブラウジング」)。

  • ホットキーを設定すると、特定のワークスペースにすばやく切り替えたり、アプリケーションを移動したりできます。次に例を示します。

    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']"
    

これらのコマンドは、すぐに WS 4 に移動するホットキーSuper+と、アプリケーションを WS 4 に移動するホットキー+ +を設定します(タイル ウィンドウ マネージャー i3 での動作とよく似ています)。4SuperShift4

答え3

任意のワークスペースをその下位のワークスペースと交換する機能

Gnome 3.38 と互換性のあるワークスペースを並べ替えることができる拡張機能があります。Reorder Workspaces

https://extensions.gnome.org/extension/3685/reorder-workspaces/

ショートカットはワークスペースの概要でのみ機能することに注意してください。ウィンドウ ビューからショートカットを使用できるようにするための問題を報告しました。https://github.com/jeremiahmegel/gnome-reorder-workspaces/issues/5

関連情報