2016-09-07 2 views
5

でフルスクリーンに行くために、特定のモニターを選択します。 これは、プロジェクタを接続したときに特に興味深いものです。私はフルスクリーンウィンドウを表示するモニターを変更するつもりGTK

私はfullscreen_on_monitorを使用しようとしたが、それは目に見える変化を生成しません。

#!/usr/bin/env python 
import sys 

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 
from gi.repository import Gdk 

w = Gtk.Window() 

screen = Gdk.Screen.get_default() 
print ("Montors: %d" % screen.get_n_monitors()) 
if len(sys.argv) > 1: 
    n = int(sys.argv[1]) 
else: 
    n = 0 

l = Gtk.Button(label="Hello, %d monitors!" % screen.get_n_monitors()) 
w.add(l) 
w.show_all() 

w.fullscreen_on_monitor(screen, n) 
l.connect("clicked", Gtk.main_quit) 
w.connect("destroy", Gtk.main_quit) 
Gtk.main() 

私は(3のうち)非常に同じモニター上のウィンドウを見ることが、値に関係なく、私が提供しています。ここ

は非実施例です。

私の質問は:どのように私はフルスクリーンウィンドウが別のモニタ上に表示させるのですか?

答えて

3

問題はGtkのがちょうどモニター番号を無視し、それは常にウィンドウが現在位置しているモニタ上のウィンドウをフルスクリーンになることのようです。これはうんざりですが、私たちはそれを使って私たちが望むように動作させることができます。

しかし、複数のモニタについての最初のいくつかの理論、彼らは実際にあなたのPCのための別々のモニターではありません。同じグローバルな起点を共有する1つの画面を総称して構成すると考えています。このグローバル画面では、各モニターはウィンドウと同様に、グローバル起点を基準とした起点を持ちます。

Gtkは、ウィンドウが表示されているモニタで常にフルスクリーン表示されることがわかっているので、window.move(x,y)を使用してウィンドウをモニタの原点に移動してからwindow.fullscreen()を呼び出してください。

move関数はそれに(x,y)相対メインウィンドウの場合にはグローバル画面で、親、だ位置にウィンドウを移動します。)

完璧に働く、私たちはこれを取得、このすべてを組み合わせますWindowsの10:

def fullscreen_at_monitor(window, n): 
    screen = Gdk.Screen.get_default() 

    monitor_n_geo = screen.get_monitor_geometry(n) 
    x = monitor_n_geo.x 
    y = monitor_n_geo.y 

    window.move(x,y) 

    window.fullscreen() 
+0

「Gtkはコードを無視してモニタ番号を無視する」ことができますか? https://git.gnome.org/browse/gtk+/tree/gtk/gtkwindow.c#n10502最終的にここで定義された 'gdk_window_fullscreen_on_monitor'を呼び出します:ここで定義のように' gtk_window_fullscreen_on_monitor' https://git.gnome.org/browse/ gtk +/tree/gdk/gdkwindow.c?id = ea1295c9ab40ab8c1b5b80ccf1575710c5ff6b86#n10820その後、私はさらにどのように従うべきかわかりません。 –

+0

ソースコードを見ると、すべて実際にうまく表示されます。したがって、問題の根はGTK Python BindingsまたはWindow Managerのいずれかにある可能性が最も高いです。このステートメントをバックアップするために、独自のコードですでに表示されていますが、別のモニター番号を設定しても動作は異なりません。しかし、下部のコードは動作します:) – B8vrede

+1

私はそれが動作することを確認します。ありがとう! FTR:私はUbuntu 16.04でGNOME 3.18を実行しています。 –

関連する問題