Como faço para criar um script para abrir um conjunto de programas em cada área de trabalho específica?

35

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

Eu tenho uma instalação de seis desktops no Ubuntu 12.04 com Unity. Na partida, todas as manhãs, faço uma rotina de abertura dos mesmos cinco ou seis programas. Abro cada um em um espaço de trabalho específico. Eu gostaria de ter isso automatizado. Existe uma maneira de script ou configurar isso?

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

Jahn
fonte
1
Você pode achar isso útil. Aponta para o wmctrl, mas não o usei: movingtofreedom.org/2010/08/10/…
RobotHumans
isso pode ser útil. askubuntu.com/questions/87002/...
Suhaib
1
Chegando a isso de uma visão muito simples, existe alguma razão para você não deixar sua máquina no modo de suspensão ao sair? Eu acho que seria uma solução rápida para você enquanto você está encontrando uma solução mais permanente ...
Adeyfk
Quando você diz área de trabalho, você quer dizer uma área de trabalho?
P1llard
As atividades do KDE podem fazer isso.
Caracol mecânico

Respostas:

20

A idéia de jdp407 de usar o compizconfig associará um aplicativo em particular a um espaço de trabalho em particular, para que, toda vez que esse aplicativo seja aberto, ele seja colocado no espaço 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 .xsessionrcno diretório inicial [se precisar criar esse arquivo] para automatizar o processo a cada login. Ou você pode simplesmente chamá-lo de um terminal quando necessário. EDIT: Coloque-o em "Aplicativos de Inicialização", não em .xsessionrc. .xsessionrc será executado mesmo antes do carregamento do ambiente de área de trabalho.


Você pode criar uma xsession personalizada, conforme sugerido por jdp407, para ter duas sessões para escolher, uma que abra esses aplicativos automaticamente e outra que não. Mas isso me parece desnecessário.


Se você acha que mudar para um espaço de trabalho, abrir aplicativos apropriados e depois mudar para o próximo é demorado, você pode abrir todos os aplicativos de uma só vez e mover as janelas usando wmctrl. Por exemplo

wmctrl -r 'Firefox' -t 1

mudará uma janela com o Firefox em seu título para a área de trabalho 1. Se houver mais de uma janela, a primeira na lista de janelas gerenciadas por wmctrlserá movida. Você precisará saber o título das janelas que serão criadas pelos aplicativos para usar isso. Por isso 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.


Abrindo 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 essas opções existirem, use-as. Caso contrário, use da wmctrlseguinte maneira

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.


Vá até wmctrla página do manual. Você pode encontrar uso para mais funcionalidades.

S Prasanth
fonte
1
Aparentemente, usar wmctrl para selecionar o espaço de trabalho não funciona nas distribuições pós-Lynx. A opção '-s' só pode ser definida como '0', ou gera um erro ou não faz absolutamente nada. Fonte: movingtofreedom.org/2010/08/10/…
p0llard
Eu uso o 12.04 com o unity2d (sem efeitos visuais) e funciona para mim. Parece que não funcionará com os efeitos visuais ativados.
precisa saber é o seguinte
wmctrlfunciona bem aqui (LXDE e XFCE, composição via xcompgr ativado)
Glutanimate
Funciona para mim na Casa da Moeda 14 com canela, obrigado!
K102 29/07
No Ubuntu 14.04, use wmctrl -o X,Ypara mover para uma viewport específica. Se você tiver vários monitores, poderá mover aplicativos para o outro monitor usando wmctrl -r "App name" -e G,X,Y,W,H. Funciona bem com efeitos visuais de unidade.
Nate
10

Existem dois 'problemas' aqui: o primeiro envolve a abertura de um conjunto específico de programas quando você faz login; o segundo envolve abri-los em áreas de trabalho específicas. 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 depois instruir o LightDM a usá-lo. Você precisará conhecer os comandos para iniciar os programas que deseja do terminal.

    1. Terminal aberto.
    2. Digite touch ~/.customxsessione pressione enter.
    3. Digite gedit ~/.customxsessione pressione enter.
    4. Agora você terá um editor de texto aberto com um arquivo em branco.
    5. Você precisa definir uma sessão X neste arquivo. Eu criei um exemplo de arquivo '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 possivelmente estou errado. Eu não posso testá-lo no momento (laptop quebrado); portanto, se não funcionar como o esperado (por exemplo: carrega o Gnome em vez do Unity), você pode precisar fazer alguma pesquisa.
    6. Salve o arquivo e feche o Gedit.
    7. Digite touch /usr/share/xsessions/multi.desktope pressione enter.
    8. Digite gedit /usr/share/xsessions/multi.desktope 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 observar as sessões disponíveis (clique no pequeno logotipo do Ubuntu ao lado do seu nome de usuário), deverá ver uma chamada Multi-Session. Se você fizer login, os programas que você coloca no X Session Script devem abrir automaticamente.
  2. Atribuindo programas a áreas de trabalho

    Isso também é bastante fácil, mas ele precisa de algum software extra não instalado no Ubuntu por padrão.

    1. Instale o compizconfig-settings-manager (você pode usar o Software Center ou simplesmente executar sudo apt-get install compizconfig-settings-managerno 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 'Windows com viewport fixo'.
    5. Clique no ícone 'Mais'.
    6. Defina 'Type' como 'Window Title' e digite o título da janela de um dos programas na caixa 'Value'. Verifique se 'Relação' está definido como 'AND' e clique em 'Adicionar'.
    7. Defina a área de trabalho inserindo números nas caixas 'X' e 'Y'. Quando você tem 4 áreas de trabalho para 'X', '1' fica à esquerda e '2' à direita, e para 'Y', '1' fica no topo e '2' está no fundo. Como você possui 6 áreas de trabalho, dependendo de como as coisas são configuradas, a configuração de 'Y' para '3' selecionaria a linha inferior e a configuração de 'X' para '3' selecionaria a terceira coluna.
    8. Repita as etapas 4 a 7 para os demais programas aos quais deseja atribuir uma área de trabalho.
    9. Feche as configurações do CompizConfig.
  3. Iniciar sessão

    Ao fazer login, você precisa dizer ao Ubuntu que deseja usar sua X Session personalizada.

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

    Muita coisa poderia ter dado errado com isso, se você cometer um pequeno erro ou se eu cometi um erro ao escrever esta resposta. Se algo der errado, verifique se você seguiu as instruções da carta e corrija qualquer coisa, se não tiver. Se você ainda tiver um 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
p0llard
fonte
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 eu não tenho idéia sobre como lidar com 2 monitores.

jkuruvila
fonte
Oi Jeril! Bem-vindo ao Ask Ubuntu! Sua solução não funciona para mim. Se eu executar wmctrl -d, só tenho uma "área de trabalho". Você testou isso no Unity no Ubuntu 12.10?
Flimm
Olá Flimm, estou usando wmctrl -r, tenho 4 espaços de trabalho. Minha versão Ubuntu é 12,04
jkuruvila