How can I start applications on specific workspaces in i3 when it starts?
Why is this not working in my config file? :
workspace 1; exec firefox; workspace 2; exec chromium; workspace 1
How can I start applications on specific workspaces in i3 when it starts?
Why is this not working in my config file? :
workspace 1; exec firefox; workspace 2; exec chromium; workspace 1
According to the Arch Wiki i3 page, to autostart an application on a specific workspace, you use i3-msg
:
exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
# 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
NOTE: to apply config, you can use:
i3-msg reload
class
argument. Is there any way to know exactly to which class is an application associated?
– Luís de Sousa
Mar 25 '19 at 07:29
xprop | grep CLASS
in terminal, your mouse pointer changes into a crosshair, you click on the program you want to get the class of and use the second variable that comes up in your terminal. Example result for Chrome: WM_CLASS(STRING) = "google-chrome", "Google-chrome"
– kittenparry
Mar 27 '19 at 03:34
xprop
command the windows are not assigned to the desired workspace.
– Luís de Sousa
Mar 28 '19 at 09:33
for_window [class="Spotify"] move to workspace $ws10
where $ws10
is your workspace variable.
– kittenparry
Mar 28 '19 at 09:35
It's an autostart on workspace launch only, not an autostart when i3 starts but I thought it could be useful.
For example, to launch my web browser in the named second workspace "web" this is what I did in my config :
bindsym $mod+2 workspace 2:web; layout tabbed; exec [ $(ps h -C vimb | wc -l) = 0 ] && /usr/bin/vimb -s
When I hit key 2, my web browser starts but when it's already opened it didn't relaunch it, it just switch to the web workspace.
Note: the layout part can be annoying sometime, it's not a requirement.
For more details see my conf
pidgin
to 3-rd workspace on its every launch, I have in the config assign [class="Pidgin"] $tag3
.
– Hi-Angel
Oct 23 '16 at 02:34
I just got it working with this at the end of my ~/.config/i3/config
file:
for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox
Example for Firefox: First set your variable set $ws1 "Firefox"
and then insert following line for_window [class="Firefox"] move to workspace $ws1
Just use assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>
.
It is working for me.
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'
works. But, I find it a little odd to useexec
oni3-msg
which is a command meant to execute i3 commands. Why can't I directly writeworkspace 1; exec firefox; workspace 2; exec urxvt; workspace 1
in my config file? – Gradient Oct 24 '13 at 05:05google-chrome-stable
always opens on the last workspace in my setup. For example, with this configuration, Chrome opens on workspace 4 next to htop. – danijar Jun 23 '15 at 20:05&& sleep 3
and I'd bet Chrome opens in workspace 3. May need to go as high as 5 depending on # of extensions. – dragon788 Jun 19 '17 at 22:23i3-msg
command in the config file. This might have functioned in older versions of i3, but seems no longer valid. – Luís de Sousa Mar 22 '19 at 07:15new-window
fixed it:i3-msg 'workspace 2; exec google-chrome --new-window https://example.com'
– Eric Eskildsen Jan 10 '20 at 12:59