Ich habe eine Frage, bei der es schwierig ist, nach der Antwort zu suchen (ich bekomme immer Antworten auf Monitormanipulationen). Ich schreibe ein Bash-Shell-Skript, um mir mit meinem Code-Entwickler zu helfen, und ich habe zwei Monitore.
Wenn ich meine ausführbare Datei ausführe, die ich kompiliert habe, möchte ich sagen, dass sie auf einem bestimmten Monitor läuft (anders als der Monitor, auf dem ich mein Terminal geöffnet habe, damit ich das Debug auf einem Bildschirm sehen kann und die App aktiviert ist ein anderes).
Wie würde ich das machen? Etwas wie:
%Vor% Wo myProject
meine binäre ausführbare Datei ist.
Danke allen.
Wenn Sie auf jedem Monitor separate Anzeigen ausführen (in diesen Tagen weniger wahrscheinlich), ist die Umgebungsvariable DISPLAY
das, was Sie wollen.
Wenn Sie Xinerama verwenden (indem Sie eine logische Anzeige über mehrere Monitore verteilen):
DISPLAY
Identifier; Dies wird Xinerama genannt. Das Format DISPLAY
ist host :
Anzeige-Nummer .
Bildschirm-ID , also z. Auf meinem Xinerama-Setup sind beide Monitore Teil des Bildschirms 0
auf einer Display-Nummer, die von 0
mit jedem angemeldeten Benutzer auf demselben Host hochzählt. "Sitze" sind logische Gruppen von Monitor + Eingang, die unterschiedliche Hardware verwenden; Mehrere "Anzeigen" können durch den Wechsel der "virtuellen Konsole" erfolgen, so dass Gnome und KDE mehreren Benutzern erlauben, sich auf einer einzelnen "Sitz" -Maschine anzumelden. Bei den meisten GUI-Toolkits können Sie die Geometrie des Fensters mit dem Schalter --geometry
oder -geometry
angeben.
Qt verwendet das ältere MIT-Format -geometry
form. GTK + / Gnome verwendet den GNU-Stil --geometry
.
Dies setzt voraus, dass Sie Qt erlauben, Ihre Befehlszeile, z. Übergeben von argv
in QtApplication
oder ähnlich.
Die "logische Anzeige" hat eine Auflösung, die die Summe der Auflösungen in jeder Richtung der Anordnung Ihrer Monitore ist. Zum Beispiel habe ich jetzt 2 × 1920 × 1080-Displays angeschlossen. xrandr
meldet:
Um ein Fenster auf dem rechten Monitor anzuzeigen, kann ich einen Geometrie-String angeben, dessen x
-Koordinaten zwischen 1920 ... 3839 (einschließlich) liegen.
Das übliche Format ist: width x
Höhe ±
x-Verschiebung ±
y-Verschiebung - aber die Breite und Höhe sind optional, wenn Sie die Standardeinstellungen bevorzugen. Die ±
sind +
, um relativ zum oberen / linken Wert zu zählen, oder -
, um relativ zum unteren / rechten Wert zu zählen.
Also zum Beispiel:
%Vor% Leider ist der einzige programmatische Weg, den ich kenne, um den Bereich der Anzeige auf jedem Monitor von der Shell aus zu bestimmen, die Ausgabe von xrandr
; z.B.
(Normalerweise möchten Sie den Perl-Einzeiler nicht über zwei Zeilen in der Shell teilen, aber der '\
... '
-Trick ist, um ihn auf SO lesbar zu machen.)
Verwende ein fifo
Öffnen Sie ein Terminalfenster auf dem Monitor, auf dem die Ausgabe angezeigt werden soll, und führen Sie
aus %Vor%dann auf dem Quell-Terminal do
%Vor%Dies setzt voraus, dass es sich um eine Konsolenanwendung handelt. Wenn es grafisch ist, benötigen Sie einen anderen Ansatz, der davon abhängt, welchen Windowing Manager + Toolkit Sie verwenden.
Sie müssen lediglich die Umgebungsvariable DISPLAY
vor dem Ausführen Ihrer Anwendung festlegen.
Um herauszufinden, wofür Sie es einrichten müssen, führen Sie Folgendes auf dem Monitor aus, auf dem es angezeigt werden soll:
%Vor% Sie sollten beispielsweise :0.1
oder :0.0
sehen.
Dann können Sie angeben, dass Ihre App auf diesem Bildschirm wie folgt ausgeführt werden soll:
%Vor% Die oben angegebene und akzeptierte Antwort --geometry
wird in vielen Fällen nicht funktionieren ...
Es gibt viele fast identische Fragen wie diese, die sich um die verschiedenen StackExchange-Sites & amp; AskUbuntu, die Antwort, die ich schließlich gefunden habe (auf einer Linux Mint-Distribution basierend auf Ubuntu 14.04), ist wmctrl
. Ich lasse eine Antwort, nur weil niemand es in diesem Thread erwähnt hat.
(Es gibt ein anderes namens Devil's Pie
und ein anderes namens Compiz
Wenn du auch nach diesen suchst, findest du die Q & A's, von denen ich rede)
wmctrl
ist die Art von einfachem Unix-Tool, das Sie wahrscheinlich suchen, wenn Sie Bash-Skripte schreiben. Ich sah auch jemanden vorschlagen, xdotool
zu verwenden, hängt davon ab, was das spezifische Ziel ist.
wmctrl
bietet Fensteranpassung nach Fenstertitel oder pid
(nicht kompatibel mit allen Arten von X-verwalteten Fenstern)
Einige hilfreiche Ressourcen:
wmctrl
man-Seite wmctrl
als auch xdotool
funktionieren einwandfrei, wenn Sie ein Fenster maximiert . " Ich verbinde einen zweiten Monitor auf der linken oder rechten Seite, je nachdem, wo ich jeden Tag arbeite, und ich denke, die Lösung für mich beinhaltet
xrandr
finden (wie in der Antwort von BRPocock gezeigt), Nachdem ich meine Notizen und [eventuell] einen Code erstellt habe, hier , falls es nützlich ist an jemand anderen.
Da Ihre Anwendung QT verwendet, verwenden Sie wahrscheinlich KDE. In System Settings > Window Behavior > Advanced
, setze Placement
auf Under Mouse
. Klicken Sie auf den gewünschten Monitor, ALT + Tab, um zu Ihrem Terminal zu wechseln, und starten Sie das Programm.