¿Cómo hago un script para abrir un conjunto de programas cada uno en un espacio de trabajo específico?


35

Miré a mi alrededor por un momento y no pude encontrar la respuesta a mi siguiente problema:

Tengo una configuración de seis escritorios en Ubuntu 12.04 con Unity. Al inicio, todas las mañanas, sigo una rutina de abrir los mismos cinco o seis programas. Abro cada uno en un espacio de trabajo específico. Me gustaría tener esto automatizado. ¿Hay alguna forma de script o configurar esto?

Pregunta adicional : Para complicar aún más el asunto, estoy ejecutando dos pantallas en modo de vista doble. De hecho, necesito iniciar cada programa en una pantalla específica, preferiblemente en pantalla completa.


1
Puede encontrar esto útil. Apunta a wmctrl, pero no lo he usado: movingtofreedom.org/2010/08/10/…
RobotHumans


1
En vista de esto desde una vista muy simple, ¿hay alguna razón por la que no puede dejar su máquina en modo de suspensión cuando se va? Creo que sería una solución rápida para usted mientras encuentra una solución más permanente ...
Adeyfk

Cuando dices escritorio, ¿te refieres a un espacio de trabajo?
p0llard

Las actividades de KDE podrían hacer esto.
Caracol mecánico el

Respuestas:


20

La idea de jdp407 de usar compizconfig asociará una aplicación particular con un espacio de trabajo particular de modo que CADA VEZ que la aplicación se abra, se coloque en el espacio de trabajo correspondiente. Si esto no se desea, puede hacer lo siguiente:

1) Instalar wmctrl

sudo apt-get install wmctrl

2) Cree un archivo con el siguiente contenido y hágalo ejecutable

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3) Llame a este script desde .xsessionrcsu directorio de inicio [si tiene que crear este archivo] para automatizar el proceso en cada inicio de sesión. O simplemente puede llamarlo desde una terminal cuando sea necesario. EDITAR: Póngalo en "Aplicaciones de inicio", no en .xsessionrc. .xsessionrc se ejecutará incluso antes de que el entorno de escritorio haya terminado de cargarse.


Es posible que desee crear una sesión x personalizada como lo sugiere jdp407, de modo que tenga dos sesiones para elegir, una que abra estas aplicaciones automáticamente y otra que no. Pero eso me parece innecesario.


Si siente que cambiar a un espacio de trabajo, abrir las aplicaciones apropiadas y luego pasar al siguiente requiere mucho tiempo, puede abrir todas las aplicaciones de una sola vez y luego mover las ventanas usando wmctrl. Por ejemplo

wmctrl -r 'Firefox' -t 1

cambiará una ventana con Firefox en su título al espacio de trabajo 1. Si existe más de una ventana, se wmctrlmoverá la primera en la lista de ventanas administradas por . Necesitará saber el título de las ventanas que serán creadas por las aplicaciones para usar esto. Es por eso que no sugerí esto como la opción principal. Si los títulos no serán ambiguos, como es el caso de las aplicaciones más utilizadas, este es el camino a seguir.


Abrir aplicaciones en pantalla completa:

Algunas aplicaciones como gnome-terminal tienen argumentos de línea de comandos para abrir una ventana en estado maximizado o en modo de pantalla completa. Si existen tales opciones, úselas. De lo contrario, use de la wmctrlsiguiente manera

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

Esto maximiza mi ventana de terminal (ya existente).

wmctrl -r 'prasanth@nb37' -b add,fullscreen

Esto envía la ventana al modo de pantalla completa.


Ir a wmctrlla página de manual de. Puede encontrar uso para más de su funcionalidad.


1
Aparentemente, usar wmctrl para seleccionar el espacio de trabajo no funciona en distribuciones posteriores a Lynx. La opción '-s' solo se puede establecer en '0', o arrojará un error o no hará nada. Fuente: movingtofreedom.org/2010/08/10/…
p0llard

Uso 12.04 con unity2d (sin efectos visuales) y funciona para mí. Parece que no funcionará con los efectos visuales habilitados.
S Prasanth

wmctrlfunciona bien aquí (LXDE y XFCE, composición a través de xcompgr habilitado)
Glutanimate

Funciona para mí en Mint 14 con Cinnamon, ¡gracias!
k102

En Ubuntu 14.04, use wmctrl -o X,Ypara moverse a una ventana gráfica específica. Si tiene varios monitores, puede mover aplicaciones al otro monitor usando wmctrl -r "App name" -e G,X,Y,W,H. Funciona bien con efectos visuales unitarios.
Nate

10

Aquí hay dos 'problemas': el primero implica abrir un conjunto específico de programas cuando inicia sesión; el segundo implica abrirlos en espacios de trabajo específicos. Me ocuparé de ambos por separado:

  1. Crear una sesión X personalizada

    Esto es bastante fácil de hacer. Simplemente necesita crear un script de sesión X y luego indicarle a LightDM que lo use. Necesitará conocer los comandos para iniciar los programas que desea desde el terminal.

    1. Terminal abierta
    2. Escriba touch ~/.customxsessiony presione enter.
    3. Escriba gedit ~/.customxsessiony presione enter.
    4. Ahora tendrá un editor de texto abierto con un archivo en blanco.
    5. Debe definir una sesión X en este archivo. He creado un archivo de muestra para 'completar los espacios en blanco' al final de la respuesta. Creo que Ubuntu usa gnome-session como administrador de ventanas, pero posiblemente me equivoque. No puedo probarlo en este momento (computadora portátil rota), por lo que si no funciona como se esperaba (por ejemplo: carga Gnome en lugar de Unity), es posible que deba investigar un poco.
    6. Guarde el archivo y cierre Gedit.
    7. Escriba touch /usr/share/xsessions/multi.desktopy presione enter.
    8. Escriba gedit /usr/share/xsessions/multi.desktopy presione enter.
    9. Ahora tendrá un editor de texto abierto con un archivo en blanco.
    10. Copie y pegue el código en la parte inferior de la respuesta (etiquetado '/usr/share/xsessions/multi.desktop:') en Gedit.
    11. Guarde el archivo y cierre Gedit.
    12. Reiniciar. Cuando llegue a la pantalla de inicio de sesión, si mira las sesiones disponibles (haga clic en el pequeño logotipo de Ubuntu junto a su nombre de usuario), debería ver uno llamado Multi-Session. Si inicia sesión con él, los programas que coloque en el Script de sesión X deberían abrirse automáticamente.
  2. Asignación de programas a espacios de trabajo

    Esto también es bastante fácil, pero necesita un software adicional no instalado en Ubuntu por defecto.

    1. Instale compizconfig-settings-manager (puede usar el Centro de software o simplemente ejecutarlo sudo apt-get install compizconfig-settings-manageren la Terminal).
    2. Abra la configuración de CompizConfig desde el tablero.
    3. Abra el complemento 'Colocar ventanas' (está en la sección 'Administración de ventanas').
    4. Haga clic en 'Nuevo' en la sección 'Windows con vista fija'.
    5. Haz clic en el ícono 'Más'.
    6. Establezca 'Tipo' como 'Título de ventana' e ingrese el título de ventana de uno de los programas en el cuadro 'Valor'. Asegúrese de que 'Relación' esté configurado en 'Y' y haga clic en 'Agregar'.
    7. Establezca el espacio de trabajo ingresando números en los cuadros 'X' e 'Y'. Cuando tiene 4 espacios de trabajo para 'X', '1' está a la izquierda y '2' está a la derecha, y para 'Y', '1' está arriba y '2' está abajo. Como tiene 6 espacios de trabajo, dependiendo de cómo estén configuradas las cosas, establecer 'Y' en '3' seleccionaría la fila inferior y establecer 'X' en '3' seleccionaría la 3ra columna.
    8. Repita los pasos 4-7 para los programas restantes a los que desea asignar un espacio de trabajo.
    9. Cierre la configuración de CompizConfig.
  3. Iniciar sesión

    Cuando inicie sesión, debe decirle a Ubuntu que desea usar su Sesión X personalizada.

    1. Reiniciar.
    2. Cuando llegue a la pantalla de inicio de sesión, si mira las sesiones disponibles (haga clic en el pequeño logotipo de Ubuntu junto a su nombre de usuario), debería ver uno llamado Multi-Session. Si inicia sesión con él, los programas que coloque en el Script de sesión X se abrirán automáticamente y se asignarán a los espacios de trabajo que elija.
  4. Problemas

    Muchas cosas podrían haber salido mal con esto, ya sea si comete un pequeño error o si cometí un error al escribir esta respuesta. Si algo sale mal, asegúrese de haber seguido las instrucciones al pie de la letra y corrija todo si no lo ha hecho. Si todavía tiene un problema, deje un comentario.

~ / .customxsession:

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsessions/multi.desktop:

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession

1

Agregue las aplicaciones requeridas en StarupApplications Program y luego agregue este script también. Este es mi script: ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

// centrarse en la terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Pero no tengo idea de manejar 2 pantallas.


Hola jeril Bienvenido a Ask Ubuntu! Tu solución no funciona para mí. Si corro wmctrl -d, solo tengo un "escritorio". ¿Probaste esto en Unity en Ubuntu 12.10?
Flimm

Hola Flimm, estoy usando wmctrl -r, tengo 4 espacios de trabajo. Mi versión de Ubuntu es 12.04
jkuruvila
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.