web-dev-qa-db-ja.com

xubuntu 12.10で起動時にウィンドウ枠なしでgnome-terminalを実行

Xubuntuにログインしたときにgnome-terminalのセッションを起動するスクリプトを作成しました。私は特にウィンドウ上の特定の位置にそれを望み、ウィンドウの境界はありません(驚いたことに、xfce4-terminalとは異なり、gnome-terminalにはこのための簡単なオプションはありません)。

たくさんのグーグルをして、機能しなかった10個のメソッドを試した後、bashとpythonで次のスクリプトを作成しました。

$ HOME/binに配置した実行可能なbashスクリプト:

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

同じディレクトリにある、対応する実行可能pythonスクリプト:

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

後で特定の配置を編集する必要がある場合に何が起こっているかを簡単に判断できるように、bashスクリプトの配列にフラグを配置しました。注:python 2.7.3でこれを実行しています。 python 3.xでテストしませんでした

Bashscriptの最後の行にあるほとんどの奇妙な理由は、新しいgnome-terminalウィンドウでコマンドを実行し、コマンドの実行が終了した後も開いたままにするのが本当に難しいことだと思ったからです。

2番目の大きな問題は、起動時に、sleepコマンドを実行せずに、pythonスクリプトがウィンドウが正式に作成される前に(...と思われる)、pythonスクリプトのどこかに実行されることです。実際のウィンドウオブジェクトなどの代わりにNoneTypesを取得し始め、pyscriptはウィンドウの装飾を正常に解除しません。

だから、私は誰もがこれを行うにはあまりハックのない方法を考えることができるかどうかを尋ねています。 pythonのみを使用したいのですが、osまたはgtkモジュールで簡単な方法を見つけることができませんでした。 compizやopenboxのようなものを含む他のいくつかのソリューションを読みましたが、新しいものをインストールせずにそれを行う方法が必要でした。これが他の環境で機能するかどうかさえわかりません。

ありがとう!この質問が長い場合は申し訳ありませんが、最初に宿題をやりたいと思いました。

(また、xubuntuユーザーに注意してください。起動時にGNOMEサービスを起動していることを確認する必要があります)

4
lxvk

あなたはdevilspieでそれを行うことができます。 devilspieパッケージをインストールし、次の構成ファイルを作成します(~/.devilspie/gnome-terminal.dsとして保存)

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

これで、ログイン時にdevilspieを実行するだけで(起動アプリケーションに追加するなど)、「ボーダーレス」ロールのウィンドウが表示されるたびに、位置(0,0)に移動し、垂直方向に最大化されます。と装飾が削除されました。

--roleオプションでgnome-terminalの役割を指定します。

gnome-terminal --role=borderless
7
geirha