it-swarm.com.de

laufendes gnome-terminal ohne fensterrahmen beim starten in xubuntu 12.10

Ich habe ein Skript erstellt, um eine Sitzung von gnome-terminal zu starten, wenn ich mich bei xubuntu anmelde. Ich wollte es speziell an einer bestimmten Position im Fenster und ohne Fensterrahmen haben (überraschenderweise gibt es dafür im gnome-terminal keine einfache Option, im Gegensatz zu xfce4-terminal).

Nachdem ich ein paar Mal gegoogelt und 10 Methoden ausprobiert hatte, die nicht funktionierten, wurden die folgenden Skripte in Bash und Python erstellt.

Mein ausführbares Bash-Skript, das ich in $ HOME/bin abgelegt habe:

#!/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'

Das entsprechende ausführbare python Skript im selben Verzeichnis:

#!/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()

Ich habe die Flags in ein Array im Bash-Skript eingefügt, damit ich leicht erkennen kann, was los ist, wenn ich das Arrangement später bearbeiten muss. Hinweis: Ich mache das in python 2.7.3. Ich habe es nicht in python 3.x getestet

Der Grund für den größten Teil der Verrücktheit in der letzten Zeile des Bashskripts ist, dass es mir sehr schwer gefallen ist, einen Befehl in einem neuen Gnome-Terminal-Fenster auszuführen und ihn offen zu halten, nachdem der Befehl ausgeführt wurde.

Das zweite große Problem ist, dass beim Start ohne Ausführen des Befehls sleep mein Skript python ausgeführt wird, bevor das Fenster formal erstellt wird (glaube ich ...), und zwar irgendwo im Skript python Ich fange an, NoneTypes anstelle der realen Fensterobjekte usw. zu erhalten, und das pyscript dekoriert das Fenster nie erfolgreich.

Was ich also frage, ist, ob sich jemand eine weniger hackige Art vorstellen kann, dies zu tun. Ich würde wirklich gerne nur Python verwenden, aber ich konnte weder im os- noch im gtk-Modul einen einfachen Weg finden, dies zu tun. Ich habe einige andere Lösungen gelesen, die Dinge wie Compiz oder Openbox beinhalteten, aber ich wollte einen Weg, dies zu tun, ohne etwas Neues zu installieren. Ich bin mir nicht mal sicher, ob dies in anderen Umgebungen funktioniert.

Vielen Dank! Tut mir leid, wenn diese Frage lang ist, wollte ich zuerst meine Hausaufgaben machen.

(Beachten Sie auch, dass Sie für xubuntu-Benutzer sicherstellen müssen, dass Sie die GNOME-Dienste beim Start starten.)

4
lxvk

Du kannst das Zeug mit Devilspie machen. Installieren Sie das devilspie-Paket und schreiben Sie die folgende Konfigurationsdatei (speichern Sie sie als ~/.devilspie/gnome-terminal.ds)

(if (is (window_role) "borderless") 
  (begin
    (geometry "+0+0")
    (maximize_vertically)
    (undecorate)
  )
)

Jetzt führen Sie nur devilspie aus, wenn Sie sich anmelden (z. B. indem Sie es zu Startanwendungen hinzufügen). Wenn ein Fenster mit der Rolle "randlos" angezeigt wird, wird es in die Position (0,0) verschoben und vertikal maximiert. und Dekorationen entfernt.

Sie geben die Rolle des Gnome-Terminals mit der Option --role an.

gnome-terminal --role=borderless
7
geirha