Eu criei um script para iniciar uma sessão do gnome-terminal quando eu logar no xubuntu. Eu queria especificamente em uma posição específica na janela, e sem bordas de janela (surpreendentemente, não há uma opção fácil para isso no gnome-terminal, ao contrário do xfce4-terminal).
Depois de um bocado de pesquisando e testando 10 métodos que não funcionaram, acabei com os seguintes scripts, no bash e no python.
Meu script bash executável, que coloquei em $ HOME / bin:
#!/bin/bash
flags[0]="--hide-menubar"
flags[1]="--geometry=80x54+0-0"
flags[2]="--window-with-profile=default2"
flags[3]="--working-directory={$HOME}"
gnome-terminal ${flags[@]} -x bash -c 'sleep 5 ;{$HOME}/bin/undecor.py ;bash'
O script python executável correspondente, no mesmo diretório:
#!/usr/bin/python
import gtk.gdk
root_window = gtk.gdk.get_default_root_window()
root_xid = root_window.property_get("_NET_ACTIVE_WINDOW")[2][0]
w = gtk.gdk.window_foreign_new(root_xid)
w.set_decorations(False)
gtk.gdk.window_process_all_updates()
Eu coloquei os sinalizadores em uma matriz no script bash apenas para que eu pudesse dizer facilmente o que estava acontecendo se eu precisasse editar o arranjo particular mais tarde. Nota: Estou fazendo isso no python 2.7.3. Eu não testei em python 3.x
O motivo da maior parte da estranheza na última linha do bashscript é que achei muito difícil executar um comando em uma nova janela do gnome-terminal e mantê-lo aberto após o término da execução do comando.
O segundo grande problema é que na inicialização, sem executar o comando sleep, meu script python é executado antes que a janela seja formalmente criada (eu acho ...) e em algum lugar no script python eu começo a obter NoneTypes em vez da janela real objetos, etc., e o pyscript nunca define com sucesso a janela.
Então, o que eu estou perguntando é se alguém pode pensar em uma maneira menos hacky de fazer isso. Eu realmente gostaria de usar apenas python, mas não consegui encontrar uma maneira fácil de fazer no módulo os ou gtk. Eu li algumas outras soluções que envolviam coisas como compiz ou openbox, mas eu queria uma maneira de fazer isso sem instalar nada de novo. Eu nem tenho certeza se isso funciona em outros ambientes.
Obrigado! Desculpe se esta pergunta é longa, eu queria fazer minha lição de casa primeiro.
(Além disso, observe os usuários do xubuntu, você precisa ter certeza de que está iniciando os serviços do GNOME na inicialização)