Bei mehreren Monitoren habe ich bisher Fenster manuell verschoben. Gibt es eine Möglichkeit, ein Fenster auf einem bestimmten Bildschirm in einem Dual-Head-Setup zu öffnen? (Nicht zu verwechseln mit mehreren X-Server-Anzeigen.)
So etwas wie: SCREEN=2 firefox
oder open-in-screen 2 firefox
.
Wenn es darauf ankommt, ist meine Umgebung KDE mit dem KWin-Fenstermanager. KWin-Fensterregeln können nur mit einigen Eigenschaften wie title übereinstimmen, aber ich konnte keine Umgebungsvariable als Filter finden.
Die sekundäre Anzeige erweitert den primären Bildschirm:
$ xrandr -q
Screen 0: minimum 320 x 200, current 3520 x 1080, maximum 32767 x 32767
LVDS1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
1600x900 60.1*+
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+1600+0 (normal left inverted right x axis y axis) 477mm x 268mm
1920x1080 60.0* 50.0 59.9
1920x1080i 60.1 50.0 60.0
1680x1050 59.9
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1280x720 60.0 50.0 59.9
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
720x576 50.0
720x480 60.0 59.9
640x480 75.0 72.8 66.7 60.0 59.9
720x400 70.1
DP1 disconnected (normal left inverted right x axis y axis)
kde
desktop
multi-monitor
kwin
virtual-desktop
Lekensteyn
quelle
quelle
kstart
dies zu verwenden, aber es scheintkstart
nur die Definition eines bestimmten Desktops zu unterstützen, nicht jedoch einen Bildschirm, auf dem die Anwendung gestartet werden soll. Wahrscheinlich einen WISHLIST-Bugreport auf bugs.kde.org wert .kstart
, das wollte ich auch wissen. Der Befehl lautet:kstart --desktop $N firefox
Dabei$N
steht eine Zahl zwischen 1 und der Gesamtzahl der virtuellen Desktops.Antworten:
Nein, das kannst du nicht direkt machen. In der X-Architektur sind die beiden angezeigten physischen Monitore für Anwendungen nicht erkennbar. Sie können sich nur um diese Abstraktion herumarbeiten, indem Sie bestimmen, welche Bereiche des sichtbaren Arbeitsbereichs welchem Monitor entsprechen, und dann die Fenster im richtigen Versatz platzieren.
Sinnvolle Toolkits unterstützen eine
-geometry
Option, mit der Ihre Anwendung die Platzierung an einer bestimmten Position anfordern kann. Wenn Sie diese Option nicht zur Verfügung haben, können Sie sie verwenden,wmctrl
wenn Sie über einen EWMH / NetWM-kompatiblen X Window Manager verfügen, um bereits vorhandene Fenster zu verschieben und ihre Größe zu ändern (siehe wmctrl (1), Sie benötigen Optionen-r
und-e
). Ichdevilspie
erzwinge das Platzieren einiger Fenster, und natürlich kann Ihr bevorzugter Fenstermanager über eine eigene Funktion verfügen, um das Platzieren von Fenstern zu erzwingen.devilspie
Ermöglicht das Anwenden bestimmter Aktionen auf X-Fenster und das Verwenden von X-Fenstereigenschaften, um verschiedene Fenster und Anwendungen zu erkennen. Die Schlüsselregel für Sie wäregeometry "<width>x<height>+<xoffset>+<yoffset>"
.Sie müssen jedoch immer berechnen, wann und wo ein anderer physischer Monitor selbst beginnt. Dies ist jedoch nicht allzu schwierig und
xrandr
zeigt Ihnen, wie und wo Monitore in Form von"<width>x<height>+<xoffset>+<yoffset>
Zeilen verwendet werden, die mit einem Ausgabenamen versehen sind.Es gibt keine narrensichere Methode, da die Implementierungen variieren können (und funktionieren!).
wmctrl
Arbeitet normalerweise am Fenstertitel, um das Ziel zu identifizieren.devilspie
kann sich auch auf seine Klasse beziehen, mir ist jedoch kein Toolkit bekannt, mit dem Sie eine X-Windows-Klasse angeben können, jedoch nicht deren Geometrie.Natürlich können Sie immer zwei
xephyr
Instanzen starten und eine Ihren linken und die andere Ihren rechten Bildschirm ausfüllen und dann die Bildschirme über dieDISPLAY
Umgebungsvariable adressieren , aber diese Lösung hat andere Nachteile.Theoretisch ist der Fenstermanager die Autorität zur Steuerung der Fensterplatzierung. Wenn Sie also Dinge möchten, die Ihr Fenstermanager nicht kann, wird dies hackig und es ist auch der Grund, warum es keinen generischen Weg gibt, dies zu erreichen.
Wenn Ihr konkreter Anwendungsfall jedoch Ihr Android-Emulator ist ... was sich stark von der Frage nach der Option unterscheidet, die
SCREEN=n fooapp
auf der Shell angegeben werden soll, ist diesdevilspie
möglicherweise das, wonach Sie suchen. Hinweis: Ich fand es am besten, Anwendungen anhand ihrer Fensterklasse zu identifizieren.quelle
SCREEN=x app
, ist es möglich, eine Fenstereigenschaft auf diese Weise hinzuzufügen, damit sie von KWin gefiltert werden kann?Dies ist eine Fenstermanager-spezifische Lösung. So geht's mit kwin, dem Standard-Fenstermanager von KDE.
Wenn Sie mit der rechten Maustaste auf die Titelleiste der Anwendung klicken und weitere Einstellungen auswählen -> spezielle Anwendungseinstellungen.
Gehen Sie zur Registerkarte Fensteranpassung. Klicken Sie auf die Schaltfläche Fenstereigenschaften erkennen. Klicken Sie dann mit dem Mauszeiger auf das Hauptfenster der Anwendung. Es wählt die Fensterklasse usw. aus und erhält auch Informationen zur Fensterpositionierung usw.
Klicken Sie dann auf die Registerkarte Größe und Position. Klicken Sie auf das Feld und die Größe des Felds und das Dropdown-Feld rechts neben beiden und legen Sie fest, dass es gespeichert werden soll.
Klicken Sie dann auf OK.
Wenn Sie die App das nächste Mal ausführen, sollte sie dieselbe Größe und denselben Monitor haben.
Ich verwende dies in KDE, um mein uRxvt-Terminal auf meinem linken Monitor in einem 3-Monitor-Setup zu öffnen, und es funktioniert jedes Mal.
Viel Glück.
quelle
Dies hängt davon ab, wie Ihre Dual-Monitore eingerichtet sind.
Wenn Sie XINERAMA verwenden, um beide Anzeigen für X wie eins anzuzeigen, können Sie die
-geometry
Option verwenden, um Anwendungen aufzufordern, an einem bestimmten Ort angezeigt zu werden . Wenn Sie die Anzeigen als unterschiedliche Bildschirme eingerichtet haben, verwenden Sie dieDISPLAY
, um dies zu erreichen.Probieren Sie diese aus:
Wenn Ihre Monitore Bildschirm 0 und 1 sind, sollte dies auf jedem Monitor ein xterm erzeugen.
quelle
-geometry
nicht immer richtig funktioniert.emulator
, basierend auf QEMU). Das Programm wird dort geöffnet, wo sich mein Mauszeiger befindet.Ich habe über diese Methode kommen die Verwendung macht
xdotool
,xprop
uwmctrl
.Das folgende Skript bewirkt Folgendes:
Skript
Dadurch wird das aktive Fenster auf den anderen Monitor verschoben. Es kann nur eine Seite an Seite behandeln, auch bekannt als. horizontal, Konfiguration von Monitoren.
Quelle: Xubuntu - Fenster zwischen Monitoren verschieben
quelle
SCREEN=2 appX
Konzept, außer es istappX; sleep 1; moveWindow.sh
.app & sleep 1; moveWindow.sh
als würden sich die Programme nicht lösen. Ich halte dies jedoch nicht für eine Verbesserung gegenüber der Verwendung von KWin-Fensterregeln. +1 für deine Bemühungen.Hatte ein ähnliches Problem. Folgendes gefunden:
Wenn keine anderen Standardeinstellungen angegeben sind, werden Fenster auf dem aktuell aktiven Bildschirm angezeigt. Bei dem oben beschriebenen Verfahren definiert die Mausposition diesen aktiven Bildschirm.
quelle