Como faço para abrir um conjunto de programas em um espaço de trabalho específico?

32

Eu olhei em volta por um tempo e não consegui descobrir a resposta para o seguinte problema:

Eu tenho uma configuração de seis desktops no Ubuntu 12.04 com o Unity. No início, todas as manhãs, faço uma rotina de abrir os mesmos cinco ou seis programas. Eu abro cada um em um espaço de trabalho específico. Eu gostaria de ter isso automatizado. Existe uma maneira de criar scripts ou configurar isso?

Pergunta adicional : Para complicar ainda mais o problema, estou executando duas telas no modo de visualização dupla. Eu realmente preciso iniciar cada programa em uma tela específica, de preferência em tela cheia.

    
por Jahn 26.10.2012 / 09:46

3 respostas

19

A idéia do jdp407 de usar o compizconfig associará uma aplicação específica a uma área de trabalho específica, de modo que CADA VEZ que a aplicação seja aberta, ela será colocada na área de trabalho correspondente. Se isso não for desejado, você pode fazer o seguinte:

1) Instale wmctrl

sudo apt-get install wmctrl

2) Crie um arquivo com o seguinte conteúdo e torne-o executável

#!/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) Chame esse script de .xsessionrc no seu diretório pessoal [se você tiver que criar este arquivo] para automatizar o processo em cada login. Ou você pode apenas chamá-lo de um terminal quando necessário. EDIT: colocá-lo em "aplicativos de inicialização", não .xsessionrc. O .xsessionrc será executado mesmo antes do carregamento do ambiente de área de trabalho.

Você pode querer criar um xsession customizado como sugerido por jdp407, para que você tenha duas sessões para escolher, uma que abra esses aplicativos automaticamente e outra que não seja. Mas isso parece desnecessário para mim.

Se você acha que mudar para um espaço de trabalho, abrir aplicativos apropriados e alternar para o próximo consome tempo, é possível abrir todos os aplicativos de uma só vez e, em seguida, mover as janelas usando wmctrl . Por exemplo

wmctrl -r 'Firefox' -t 1

mudará uma janela com o Firefox em seu título para o espaço de trabalho 1. Se houver mais de uma janela, a primeira na lista de janelas gerenciadas por wmctrl será movida. Você precisará saber o título das janelas que serão criadas pelos aplicativos para usar isso. É por isso que não sugeri isso como a principal opção. Se os títulos não forem ambíguos, como é o caso dos aplicativos mais usados, esse é o caminho a seguir.

Abertura de aplicativos em tela cheia:

Alguns aplicativos, como o gnome-terminal, possuem argumentos de linha de comando para abrir uma janela no estado maximizado ou no modo de tela cheia. Se tais opções existem, use-as. Caso contrário, use wmctrl da seguinte forma

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

Isso maximiza minha janela de terminal (já existente).

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

Isso envia a janela para o modo de tela cheia.

Acesse a página de manual do wmctrl . Você pode usar para mais de sua funcionalidade.

    
por S Prasanth 02.01.2013 / 06:32
10

Existem dois "problemas" aqui: o primeiro envolve a abertura de um conjunto específico de programas quando você efetua login; o segundo envolve torná-los abertos em espaços de trabalho específicos. Eu vou lidar com os dois separadamente:

  1. Criando uma sessão X personalizada

    Isso é bem fácil de fazer. Você simplesmente precisa criar um Script de Sessão X e informar ao LightDM para usá-lo. Você precisará conhecer os comandos para iniciar os programas que deseja no terminal.

    1. Abra o terminal.
    2. Digite touch ~/.customxsession e pressione Enter.
    3. Digite gedit ~/.customxsession e pressione Enter.
    4. Agora você terá um editor de texto aberto com um arquivo em branco.
    5. Você precisa definir uma sessão X nesse arquivo. Eu criei um arquivo de amostra 'preencha os espaços em branco' na parte inferior da resposta. Eu acho que o Ubuntu usa o gnome-session como gerenciador de janelas, mas estou possivelmente errado. Eu não posso testá-lo no momento (laptop quebrado) por isso, se não funcionar como esperado (por exemplo: carrega o Gnome em vez de Unity), você pode precisar fazer alguma pesquisa.
    6. Salve o arquivo e feche o Gedit.
    7. Digite touch /usr/share/xsessions/multi.desktop e pressione Enter.
    8. Digite gedit /usr/share/xsessions/multi.desktop e pressione Enter.
    9. Agora você terá um editor de texto aberto com um arquivo em branco.
    10. Copie e cole o código na parte inferior da resposta (rotulado '/usr/share/xsessions/multi.desktop:') no Gedit.
    11. Salve o arquivo e feche o Gedit.
    12. Reinicie. Quando você chegar na tela de login, se você olhar as sessões disponíveis (clique no pequeno logo do Ubuntu próximo ao seu nome de usuário), você deve ver uma chamada Multi-Session. Se você fizer login, os programas que você colocar no Script de Sessão X deverão ser abertos automaticamente.
  2. Atribuindo programas a espaços de trabalho

    Isso também é muito fácil, mas é necessário algum software extra não instalado no Ubuntu por padrão.

    1. Instale o compizconfig-settings-manager (você pode usar o Centro de Software ou simplesmente executar sudo apt-get install compizconfig-settings-manager no Terminal).
    2. Abra as configurações do CompizConfig no Dash.
    3. Abra o plug-in "Place Windows" (está na seção "Gerenciamento de janelas").
    4. Clique em "Novo" na seção "Janelas com viewport fixo".
    5. Clique no ícone "Mais".
    6. Defina 'Tipo' como 'Título da janela' e insira o título da janela de um dos programas na caixa 'Valor'. Certifique-se de que 'Relation' está definido como 'AND' e clique em 'Add'.
    7. Defina a área de trabalho inserindo números nas caixas 'X' e 'Y'. Quando você tem 4 espaços de trabalho para 'X', '1' é deixado e '2' é certo, e para 'Y', '1' é superior e '2' é inferior. Como você tem 6 espaços de trabalho, dependendo de como as coisas estão configuradas, a configuração de 'Y' a '3' selecionaria a linha inferior e a definição de 'X' para '3' selecionaria a terceira coluna.
    8. Repita as etapas de 4 a 7 para os programas restantes aos quais você deseja atribuir um espaço de trabalho.
    9. Fechar as configurações do CompizConfig.
  3. Login

    Quando você faz login, você precisa dizer ao Ubuntu que deseja usar sua sessão X personalizada.

    1. Reinicie.
    2. Quando você chegar na tela de login, se você olhar para as sessões disponíveis (clique no pequeno logo do Ubuntu ao lado do seu nome de usuário), você deverá ver uma chamada Multi-Session. Se você fizer login, os programas que você colocar no Script da Sessão X deverão abrir automaticamente e ser atribuídos aos espaços de trabalho que você escolheu.
  4. Problemas

    Muito poderia ter dado errado com isso, ou se você cometer um pequeno erro, ou se eu cometer um erro ao escrever esta resposta. Se algo der errado, verifique se você seguiu as instruções ao pé da letra e corrija qualquer coisa, se você não o fez. Se você ainda tiver algum problema, deixe um comentário.

~ / .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
    
por p0llard 01.01.2013 / 20:40
1

Adicione os aplicativos necessários no Programa StarupApplications E adicione esse script também. Este é o meu 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

// foco no terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Mas não tenho ideia sobre como lidar com 2 monitores.

    
por jkuruvila 03.01.2013 / 15:44