i3wm: inicia aplicaciones en espacios de trabajo específicos cuando se inicia i3

56

¿Cómo puedo iniciar aplicaciones en espacios de trabajo específicos en i3 cuando se inicia?

¿Por qué esto no funciona en mi archivo de configuración? :

workspace 1; exec firefox; workspace 2; exec chromium; workspace 1
Gradiente
fuente

Respuestas:

61

De acuerdo con la página Arch Wiki i3 , para iniciar automáticamente una aplicación en un espacio de trabajo específico, utiliza i3-msg:

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
jasonwryan
fuente
44
Sí, una línea como exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'funciona. Sin embargo, creo que es un poco extraño para usar execen i3-msgque es un comando destinado a ejecutar comandos i3. ¿Por qué no puedo escribir directamente workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1en mi archivo de configuración?
Gradiente
3
Esto simplemente abre todo en Workspace 1 para mí.
cmc
44
Funciona para la mayoría de las aplicaciones. Sin embargo, google-chrome-stablesiempre se abre en el último espacio de trabajo en mi configuración. Por ejemplo, con esta configuración , Chrome se abre en el espacio de trabajo 4 al lado de htop.
danijar
3
Tenga en cuenta que i3 ahora proporciona funciones de almacenamiento / restauración de diseño que hacen innecesario llamar a i3-msg en la mayoría de los casos.
Wieland
1
@ El diseño / restauración del diseño de Wieland es diferente del inicio automático ; el primero solo trata de configurar trampas de golondrina para ventanas de programa, mientras que el segundo inicia una instancia de una aplicación como lo solicitó el OP.
Antony Thomas
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
disparo a la cabeza
fuente
Esto funciona para algunas aplicaciones, pero no para otras. Sospecho que podría estar relacionado con la cadena utilizada en el classargumento. ¿Hay alguna manera de saber exactamente a qué clase está asociada una aplicación?
Luís de Sousa
@ LuísdeSousa xprop | grep CLASSen la terminal, el puntero del mouse se convierte en una cruz, hace clic en el programa del que desea obtener la clase y utiliza la segunda variable que aparece en su terminal. Ejemplo de resultado para Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry
@kittenparry. Gracias por la sugerencia, pero aún usando la cadena del xpropcomando, las ventanas no están asignadas al espacio de trabajo deseado.
Luís de Sousa
1
@ LuísdeSousa, algunos programas no funcionan como Spotify. Para ellos, puede escribir algo similar a esto, for_window [class="Spotify"] move to workspace $ws10donde $ws10está la variable de su espacio de trabajo.
kittenparry
10

Es un inicio automático solo en el inicio del espacio de trabajo, no un inicio automático cuando se inicia i3, pero pensé que podría ser útil.

Por ejemplo, para iniciar mi navegador web en el segundo espacio de trabajo llamado "web", esto es lo que hice en mi configuración:

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

Cuando presiono la tecla 2, mi navegador web se inicia pero cuando ya está abierto no lo relanzó, simplemente cambió al espacio de trabajo web.

Nota: la parte del diseño puede ser molesta en algún momento, no es un requisito.

Para más detalles ver mi conf

tyjak
fuente
1
Puede hacerlo fácilmente asignando espacio de trabajo . Por ejemplo, para pasar pidginal 3er espacio de trabajo en cada lanzamiento, tengo en la configuración assign [class="Pidgin"] $tag3.
Hi-Angel
Asignar a un espacio de trabajo es diferente. La solución de @ tyjak hará que se inicie una aplicación cuando abra un espacio de trabajo en particular. Asignar una aplicación a un espacio de trabajo hará que esa aplicación se mueva a un espacio de trabajo cada vez que la abra.
Mike
5

Acabo de hacerlo trabajando con esto al final de mi ~/.config/i3/configarchivo:

for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox
robru
fuente
De acuerdo con Arch Linux i3 Ejemplo para Firefox: primero configure su variable set $ws1 "Firefox"y luego inserte la siguiente líneafor_window [class="Firefox"] move to workspace $ws1
Markus Weber,
0

Solo úsalo assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. Me esta funcionando.

Tanmoy Nandi
fuente