Anzeige über Konsolen-TTY aktivieren?

Anzeige über Konsolen-TTY aktivieren?

Ich habe ein benutzerdefiniertes xrandr-Skript, das meine externen Monitore aktiviert und den Monitor meines Laptops deaktiviert. Wenn ich meinen externen Monitor trenne, kann ich den Monitor nicht aktivieren, da mein Bildschirm leer ist.

Ich würde gerne auf mein Konsolen-TTY zugreifen können (Strg-Alt-F1) und xrandr auslösen, um fortzufahren (z. B. xrandr --output eDP1 --auto). Wenn ich das auf meinem TTY ausführe, wird „Anzeige kann nicht geöffnet werden“ angezeigt. Irgendwelche Tipps, wie ich das machen kann?

Antwort1

Sie müssen nicht in die Konsole gehen. Sie können dasselbe erreichen, indem Sie eine benutzerdefinierte Tastenkombination hinzufügen, um Ihren internen Bildschirm wieder zu aktivieren.

Wählen Sie „Systemeinstellungen“ > „Tastatur“ > „Kurzbefehle“ > „Benutzerdefinierte Kurzbefehle“, klicken Sie auf das „+“ und fügen Sie den Befehl einem Kurzbefehl Ihrer Wahl hinzu:

xrandr --output <screenname> --auto

Habe es gerade auf meinem System (Laptop, 15.10) getestet; habe meinen Bildschirm ausgeschaltet und ihn mit der Tastenkombination, durch Ausführen des Befehls, erfolgreich wieder aktiviert :)

Alternative

Sie können eine bearbeitete Version vondieses SkriptDie folgende Version (kleines Hintergrundskript, prüft alle vier Sekunden, ob ein externer Bildschirm angeschlossen ist) stellt sicher, dass Ihr interner Bildschirm eingeschaltet ist

#!/usr/bin/env python3
import subprocess
import time
# --- set your internal screen below (the example is my primary screen)
internal = "DVI-I-1"
#---

# don't change anything below
scr_info1 = 0

while True:
    time.sleep(4)
    # read the current screen setup from xrandr
    get_screens = subprocess.check_output("xrandr").decode("utf-8").splitlines()
    scr_data = [l for l in get_screens if " connected " in l]
    # count the number of connected screens
    scr_info2  = len(scr_data)
    # if the number of connected screens changes, 
    # switch off the internal one if there are two screens
    if scr_info2 != scr_info1:
        if scr_info2 == 2:
            ext = [s.split()[0] for s in scr_data if not internal in s][0]
            subprocess.Popen(["xrandr", "--output", internal, "--off", "--output", ext, "--auto"])
        else:
            subprocess.Popen(["xrandr", "--output", internal, "--auto"])

    scr_info1 = scr_info2

Wie stellt man das ein

  1. Kopieren Sie das obige Skript in eine leere Datei und speichern Sie es unterswitch_screens.py
  2. Geben Sie im Kopfbereich Ihres Skripts den Namen IhresinternBildschirm. Um das herauszufinden, öffnen Sie ein Terminalfenster und führen Sie den Befehl aus xrandr(kein externer Bildschirm angeschlossen). Die Zeile mit „verbunden“ zeigt den Namen Ihres Bildschirms in der ersten Zeichenfolge und sieht so aus: VGA-1oder so ähnlich.
  3. Führen Sie einen Testlauf durch, indem Sie ein Terminalfenster öffnen und den folgenden Befehl eingeben:

    python3 /path/to/switch_screens.py
    

    Während das Skript ausgeführt wird, verbinden Sie Ihren externen Bildschirm, warten Sie, bis Ihr interner Bildschirm ausgeschaltet wird, und trennen Sie die Verbindung erneut.

  4. Wenn alles gut funktioniert, fügen Sie den folgenden Befehl zu den Startanwendungen hinzu: Öffnen Sie Dash > Startanwendungen > Hinzufügen. Fügen Sie den Befehl hinzu:

    /bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
    

Melden Sie sich ab und wieder an. Jetzt wird Ihr interner Bildschirm automatisch ausgeschaltet, wenn ein externer Bildschirm angeschlossen ist, und wieder aktiviert, wenn Sie die Verbindung trennen.

Das Skript belastet Ihr System in keiner Weise merklich.

verwandte Informationen