対象
Linux Mintでデスクトップ環境はCinnamonです。
例えばUbuntu, Gnome環境でも同じように設定は出来るかと思います。
※2026/1/19追記:この記事で利用しているdevilspie2はx11環境でしか動かせないようです。Waylandだと無理でした。
やりたいこと概要
私は普段Macbookを利用していて、仮想デスクトップを10個作ってそれぞれにアプリを割り当てて使っています。
上記のような感じで
- デスクトップ1:ブラウザ
- デスクトップ5:XCode
- デスクトップ6:ターミナル
というような割当をしています。
また、仮想デスクトップの切り替えにCtrl + 数字キーのショートカットを設定しています。
Ctrl + 1〜Ctrl + 0がそれぞれデスクトップ1〜デスクトップ10に割当たっています。
ターミナルを操作したい時はCtrl + 6。ブラウザを見たいときはCtrl + 1。という感じでアプリと数字が頭の中で結びついていて切り替えが素早く出来てとても気に入っています。
ちなみにMacではキーボードショートカットの設定のMission Controlのところでこの設定が出来ます。

アプリの仮想デスクトップへの割当は、アプリを割り当てたいデスクトップへ手動で移動しておいてDockで右クリックしてオプションの割当先を設定します。

私の場合メインモニタ(ディスプレイ1)の仮想デスクトップ6にターミナルを移動してから、上記の設定をします。
一度設定すると次からはアプリを起動したら、自動で割当先のデスクトップで起動してくれます。
というのをLinuxマシンを使っているときも同じようにしたいので設定してきます。
ワークスペースを10個にする
システム設定のワークスペースを開いてエキスポを表示をonにします。

Ctrl + Alt + Upキーでエキスポ画面というのが出ます。ワークスペース一覧画面です。
ここでワークスペースを10個にします。右端の+ボタンで増やせます。

キーボードショートカットでワークスペースの移動設定
これもシステム設定のキーボードショートカットで可能です。

ワークスペース1〜10に設定していきます。
アプリをワークスペースに割り当てる
このやり方が長らくわからなくて諦めていたんですが、devilspie2を使うと出来るようになります。
aptでインストールできます。
sudo apt install devilspie2
設定ファイルを書きます。ホームディレクトリの.config下に置きます。
例えばブラウザ(Chrome)をワークスペース1、ターミナルをワークスペース6に置くには以下のようにします。
if (get_window_class() == "Google-chrome") then
set_window_workspace(1);
change_workspace(1);
focus_window();
end
if (get_window_class() == "Gnome-terminal") then
set_window_workspace(6);
maximize();
change_workspace(6);
focus_window();
end
この設定でアプリを指定のワークスペースへ移動させて(set_window_workspace)、そのワークスペースに表示を切り替える(change_workspace)ことが出来るので上述したMacの設定とほぼ同じ挙動にできます。
またターミナルは最大化したいのでmaximizeも呼んでいます。
get_window_classで取れる名前のとり方ですが
ターミナルで以下のコマンドを実行すると、マウスカーソルが+の形になります。この状態で調べたいアプリのWindowをクリックすると名前が出てきます。
Chromeだと以下のような表示になります。
% xprop | grep WM_CLASS
WM_CLASS(STRING) = "google-chrome", "Google-chrome"
この2つ目に出ている名前をさきほどのconfig.luaに書けばOKです。
上記の例では "Google-chrome"の方です。
devilspie2を自動起動させる
設定を書いたらdevilspie2コマンドを起動させればいいので、ログイン時に自動起動するようにします。
システム設定の自動起動するアプリを以下のように登録します。

開始遅延時間5秒が重要です。あまり早く起動するとGUI関連の読み込みなどが間に合わず起動に失敗する時があります。今のところ5秒で私の環境では問題起きていません。
(最初はserviceとして起動するように設定したのですが、起動のタイミングが早すぎると失敗するのでログイン時の自動起動で動かすことにしました)
