Ich verwende Ubuntu 14.04 auf meinem Laptop an meinem Schreibtisch mit einem zweiten Monitor. Wenn ich mich vom zweiten Monitor trenne - ohne Fehler -, verschiebt sich mein Fenster für Emacs vom Bildschirm.
Ich kann Alt-TAB verwenden, um Emacs zum aktiven Fenster zu machen, und Emacs blind stoppen, damit ich es neu starten kann, wodurch es wieder auf dem Bildschirm angezeigt wird. Aber es scheint mir, dass es in Ubuntu eine Möglichkeit geben sollte, ein Off-Screen-Fenster wieder auf den Bildschirm zu bringen. Gibt es?
Eine bessere Lösung wäre natürlich, zu verhindern, dass die Fenster als Reaktion auf die Unterbrechung des Monitors vom Bildschirm verschwinden, und ich würde eine Lösung für dieses Problem akzeptieren .
AKTUALISIEREN:
Die Ausgabe von, xrandr
während an einen zweiten Monitor angeschlossen:
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+1280+0 (normal left inverted right x axis y axis) 382mm x 215mm
1920x1080 60.0*+ 59.9
1680x1050 60.0 59.9
1600x1024 60.2
1400x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1360x768 59.8 60.0
1152x864 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0*+ 75.0
1280x960 60.0
1152x864 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
HDMI1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Der Ausgang xrandr
nach dem Trennen vom zweiten Monitor:
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
1920x1080 60.0*+ 59.9
1680x1050 60.0 59.9
1600x1024 60.2
1400x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1360x768 59.8 60.0
1152x864 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Außerdem habe ich versucht, die Links-Rechts-Positionen meines Terminalfensters und meines Emacs-Fensters zu vertauschen und dann die Verbindung zu trennen. Dadurch bleibt das Emacs-Fenster nach dem Trennen vom zweiten Monitor auf dem Bildschirm. Und das Terminalfenster bleibt in der Position erhalten, in der Emacs eliminiert wurde. Es scheint also, als ob die Anwendung etwas damit zu tun hat.
quelle
Antworten:
Bewegen Sie alle Fenster in den sichtbaren Bereich
Wie in einem Kommentar vorgeschlagen / angefordert, verschiebt das folgende Skript alle "normalen" Fenster in den sichtbaren Bereich des aktuellen Arbeitsbereichs.
Die Lösung ist eine Problemumgehung. Die Bildschirminformationen werden korrekt aktualisiert, da sich die Ausgabe
xrandr
vor, nach und nach dem Trennen unterscheidet. Der Grund, warum sich die Fenster nicht von selbst bewegen, ist (derzeit) unbekannt, es sei denn, eine andere Antwort löst das Problem.Das Skript
Wie benutzt man
Das Skript benötigt
wmctrl
:Kopieren Sie das Skript in eine leere Datei und sichern Sie es als
move_windows.py
Testen Sie es: Öffnen Sie eine Reihe von Fenstern, platzieren Sie sie in verschiedenen Arbeitsbereichen usw. oder trennen Sie den zweiten Monitor. Führen Sie dann den folgenden Befehl aus:
Alle "normalen" Fenster sollten in den sichtbaren Bereich des aktuellen Arbeitsbereichs verschoben werden.
Wenn alles einwandfrei funktioniert, fügen Sie es einer Tastenkombination hinzu: Wählen Sie: Systemeinstellungen> "Tastatur"> "Tastenkombinationen"> "Benutzerdefinierte Tastenkombinationen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:
Jetzt sollten Sie in der Lage sein, alle Fenster mit Ihrer Tastenkombination in den sichtbaren Bereich des aktuellen Arbeitsbereichs zu verschieben.
quelle
while xpos > 3840*2: xpos -= 3840
subprocess.Popen(["wmctrl", "-ir", w[0], "-e", ",".join([w[1], str(xpos), w[3], w[4], w[5]])])
(sollte natürlich geändert werden, um die entsprechende Bildschirmbreite zu berücksichtigen)xrandr
auf pastebin.com veröffentlichen , und was ist genau die Fehlermeldung?Eine einfache Lösung, die für mich bei der Wiederherstellung von Fenstern funktioniert hat, die auf "Bildschirmen" von nicht verbundenen Monitoren verbleiben (nicht ganz das gleiche Problem wie beim OP, aber verwandt), ist die Verwendung der Tastenkombination, um das Fenster zu maximieren:
Ctrl
+Super
+ ↑.[NB
Super
ist der Schlüssel mit dem "Windows" -Symbol, normalerweise zwischenFn
undAlt
. Auf einem Mac entspricht diesCommand
= ⌘. In älteren Versionen von Ubuntu als meiner (16.04) müssen Sie diese möglicherweise nicht einschließenCtrl
.]quelle