Wie Sie eine Anwendung ausführen, die in der bash, und wählen Sie, welcher monitor es läuft auf?
Ich habe eine Frage, die ist schwer, die Antwort zu suchen (ich habe immer am Ende mit Antworten für monitor-manipulation). Ich Schreibe ein bash shell-Skript, um mir zu helfen mit meinem code, dev und ich habe zwei Monitore.
Wenn ich meine ausführbare Datei, die ich zusammengestellt haben, möchte ich sagen, dass es für die Ausführung auf einem bestimmten monitor (d.h. einen anderen auf den monitor, dass ich mein terminal öffnen auf, so kann ich die anzeigen des debug auf einem Bildschirm und haben die app auf einem anderen).
Wie würde ich gehen über das tun dies? So etwas wie:
./myProject > but run on monitor 2
Wo myProject
ist mein ausführbare Binärdatei.
Danke an alle.
- Bitte geben Sie an, ob dies ist eine grafische Anwendung, die eine einfache console aplication, und ob diese verwendet jedes toolkit wie ncurses.
- Dies hängt davon ab, Ihre Fenster-manager und wie Sie es wählt, wo ein neues Fenster angezeigt.
- Wenn Sie sagen, laufen meine ausführbare Datei auf einem anderen monitor. Verstehe ich richtig, die app-GUI-basierten Anwendung? bash hat nichts zu tun mit der Positionierung in diesem Fall. Die Bibliothek, die Sie verwenden, um das Fenster zu erstellen, können einige Methoden zum sperren der position des Fensters.
- Es ist ein GUI (Qt) app. Wenn ich die app starte in der bash immer startet die app auf dem gleichen monitor. Wenn ich den terminal auf einen anderen monitor, dann die app startet auf diesem monitor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie separate Bildschirme auf jedem monitor (weniger wahrscheinlich heutzutage), die
DISPLAY
environment-variable ist, was Sie wollen.Wenn Sie mit Xinerama (Verbreitung eine logische Anzeige auf mehrere Monitore), aber:
DISPLAY
Kennung; dies nennt sich Xinerama. DieDISPLAY
format ist host:
display-Anzahl.
Bildschirm-id, so z.B. auf meine Xinerama set-up beide Monitore sind Teil des Bildschirms0
auf eine display-Nummer, die hochgezählt wird von0
mit jedem angemeldeten Benutzer auf dem gleichen host. "Plätze" sind logische Gruppen von monitor+Eingabe, die mit unterschiedlichen hardware; mehrere "displays" können auftreten, mit einer "virtuellen Konsole" wechseln, das ist wie Gnome und KDE ermöglichen, mehrere Benutzer für die Anmeldung auf eine einzige "Sitz" - Maschine.Meisten GUI-toolkits können Sie angeben, die Fenster, die geometrie mit der
--geometry
oder-geometry
wechseln.Qt verwendet den älteren MIT-Stil
-geometry
form. GTK+/Gnome verwendet den GNU-Stil--geometry
.Davon ausgegangen, dass Sie sind, so dass die Qt-post-Prozess Ihren Befehl-Linie, z.B. die Weitergabe
argv
inQtApplication
oder ähnliches.Den "logischen display" eine Auflösung haben, die die Summe der Auflösungen in jede Richtung der Anordnung Ihrer Monitore. Ich habe zum Beispiel 2 × 1920×1080-displays richtig angeschlossen, jetzt.
xrandr
Berichte:Um ein Fenster anzuzeigen, die auf dem rechten monitor, den ich geben kann ein geometrie-string, der hat seine
x
Koordinaten zwischen 1920...3839 (inklusive).Üblichen format ist: Breite
x
Höhe±
x-offset±
y-offset — aber die Breite und Höhe sind optional, wenn Sie es vorziehen, die Standardeinstellungen übernehmen. Die±
sind+
zu zählen, die relativ zu dem oberen/linken oder-
zu zählen, die relativ zu den unteren/rechten.So, zum Beispiel:
Leider die einzige programmatische Möglichkeit, die ich kenne, um zu bestimmen, den Bereich für die Anzeige auf jedem Bildschirm von der shell Parsen der Ausgabe von
xrandr
; z.B.(Sie würde in der Regel wollen, um zu vermeiden Aufspaltung des Perl-one-liner über zwei Zeilen in der shell, aber die
'\
...'
trick gibt es, um es lesbar auf SO.)-e
zugnome-terminal
zum starten eines bestimmten Programms, oder selbst ein Profil erstellen, die speziell auf Lauf, die es bei bestimmten Einstellungen (z.B. laufentail
mit verschiedenen Farben als Ihre Standard-shell)Den
--geometry
Antwort oben gegeben und akzeptiert einfach nicht, in vielen Fällen...Gibt es eine Menge in der Nähe-identisch sind Fragen wie diese schwimmende rund um die verschiedenen StackExchange-Seiten & AskUbuntu, die Antwort habe ich schließlich gefunden (auf einem Linux-Mint-Distribution basiert auf Ubuntu 14.04) ist die Verwendung
wmctrl
. Ich gehe eine Antwort, nur da Sie sonst niemand hat erwähnt das es in diesem thread.(Es ist ein anderes genannt
Devil's Pie
genanntCompiz
wenn Sie suchen, für diejenigen, die zu finden Sie das Q&A ich Rede)wmctrl
ist ein einfaches unix-Werkzeug, das Sie sind wahrscheinlich auf der Suche für, wenn Sie das schreiben von Bash-Skripten. Ich sah auch jemanden vorschlagen, mitxdotool
, hängt davon ab, was das konkrete Ziel ist.wmctrl
bietet Fenster matching mit Fenster Titel oderpid
(nicht kompatibel mit allen Arten von X-windows verwaltet)Einige hilfreiche Ressourcen:
wmctrl
man-pagewmctrl
undxdotool
funktionieren, wenn Sie ein Fenster maximiert."Schließe ich einen zweiten monitor auf der linken oder auf der rechten Seite, je nachdem, wo ich arbeite jeden Tag, und ich glaube, die Lösung für mich bedeuten wird
xrandr
(wie gezeigt in BRPocock's Antwort),Verlassen, meine Notizen und [schließlich] einige code produziert hier in Fall ist es nützlich, um jemand anderes.
Verwenden
fifo
öffnen Sie ein terminal-Fenster auf dem monitor, den Sie möchten, dass die Ausgabe zu erscheinen und tun
dann auf die source-terminal zu tun
Dieser meint es ist eine Konsolenanwendung. Wenn es grafische, dann müssen Sie einen anderen Ansatz, der davon abhängig sein, was windowing-manager + - toolkit, die Sie verwenden.
DISPLAY
z.B.export DISPLAY=:0.1;./myProject
(brauchen, um zu spielen mit den zahlen), aber das kann auch nicht arbeiten mit multi-monitor-in diesen Tagen.Alles, was Sie tun müssen, ist, legen Sie die
DISPLAY
Umgebungsvariable vor dem ausführen Ihrer Anwendung.Finden Sie heraus, was Sie brauchen, um es zu, führen Sie den folgenden auf dem monitor, den Sie möchten, es zu zeigen, bis auf:
Sollten Sie sehen, zum Beispiel
:0.1
oder:0.0
.Dann können Sie angeben, dass Sie möchten, dass Ihre app für die Ausführung auf, dass die Anzeige etwa so:
Als Ihre Anwendung verwendet QT, sind Sie wahrscheinlich mit KDE. In
System Settings > Window Behavior > Advanced
legenPlacement
zuUnder Mouse
. Klicken Sie auf den gewünschten monitor, der Tastenkombination ALT+Tab wechseln Sie zum terminal und starten Sie das Programm.