i3wm:i3の起動時に特定のワークスペースでアプリケーションを起動します


56

i3の起動時に特定のワークスペースでアプリケーションを起動するにはどうすればよいですか?

構成ファイルでこれが機能しないのはなぜですか?:

workspace 1; exec firefox; workspace 2; exec chromium; workspace 1

回答:


61

Arch Wiki i3ページによると、特定のワークスペースでアプリケーションを自動起動するには、次を使用しますi3-msg

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'

4
はい、機能するようなラインexec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'。しかし、私はそれは少し奇妙使用することを見つけるexecにはi3-msgどのi3のコマンドを実行することを意図コマンドです。構成workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1ファイルに直接書き込めないのはなぜですか?
グラデーション

3
これにより、Workspace 1のすべてが開かれます。
cmc 14年

4
ほとんどのアプリで動作します。ただし、google-chrome-stable常にセットアップの最後のワークスペースで開きます。たとえば、この構成では、Chromeはhtopの隣のワークスペース4で開きます。
ダニジャー

3
i3には、ほとんどの場合にi3-msgを呼び出す必要のないレイアウトの保存/復元機能が用意されていることに注意してください。
ウィーランド

1
@Wielandレイアウトの保存/復元は、自動起動とは異なります。前者はプログラムウィンドウのツバメトラップの設定のみを処理し、後者はOPの要求に応じてアプリケーションのインスタンスを起動します。
アントニートーマス

12
# This is what I use in ie config
# custom variables for workspaces
set $ws1 "1< txt >"
set $ws2 "2> fm "
set $ws3 "3< Web >"
set $ws4 4
set $ws5 5
set $ws6 6
set $ws7 7
set $ws8 8
set $ws9 9


##==================================================##
#                         *** Workspace specific settings ***                     #
##=================================================##
# Assign Workspaces:
assign [class="Firefox"] $ws3
assign [class="Chromium"] $ws3
assign [class="Google-chrome-beta"] $ws3
assign [class="^Geany"] $ws1

これは一部のアプリケーションでは機能しますが、他のアプリケーションでは機能しません。class引数で使用されている文字列に関連していると思われます。アプリケーションが関連付けられているクラスを正確に知る方法はありますか?
ルイスデスーサ

@LuísdeSousa xprop | grep CLASSターミナルで、マウスポインターが十字線に変わり、クラスを取得するプログラムをクリックして、ターミナルに表示される2番目の変数を使用します。Chromeの結果の例:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry

@kittenparry。提案していただきありがとうございますが、xpropコマンドの文字列を使用しても、ウィンドウは目的のワークスペースに割り当てられません。
ルイスデスーサ

1
@LuísdeSousa一部のプログラムはSpotifyのように動作しません。彼らのために、あなたはあなたのワークスペース変数for_window [class="Spotify"] move to workspace $ws10$ws10あるこれに似た何かを書くかもしれません。
子猫

10

これはワークスペースの起動時の自動起動のみであり、i3の起動時の自動起動ではありませんが、役に立つと思いました。

たとえば、名前付きの2番目のワークスペース「web」でWebブラウザーを起動するには、これがconfigで行いました。

bindsym $mod+2 workspace 2:web; layout tabbed; exec [ $(ps h -C vimb | wc -l) = 0 ] && /usr/bin/vimb -s

キー2を押すと、Webブラウザーが起動しますが、既に開いている場合は再起動せず、Webワークスペースに切り替えます。

注:レイアウトパーツはいつか迷惑になることがありますが、必須ではありません。

詳細については、私のconfを参照してください


1
ワークスペースを割り当てることで簡単にできます。たとえばpidgin、起動ごとに3番目のワークスペースに移動するには、configを使用しassign [class="Pidgin"] $tag3ます。
ハイエンジェル

ワークスペースへの割り当ては異なります。@tyjakのソリューションでは、特定のワークスペースを開くとアプリケーションが起動します。アプリケーションをワークスペースに割り当てると、アプリケーションを開くたびにそのアプリケーションがワークスペースに移動します。
マイク

5

私は~/.config/i3/configファイルの最後でこれで動作するようになりました:

for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox

FirefoxのArch Linux i3の例によると:最初に変数set $ws1 "Firefox"を設定してから、次の行を挿入しますfor_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

使用するだけassign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>です。それは私のために働いています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.