Launcher über Edge-Binding anzeigen

Launcher über Edge-Binding anzeigen

Ich verwende zwei Monitore (der rechte ist in Pixeln und physikalischen Maßen kleiner als der linke) und möchte im Launcher, der automatisch ausgeblendet ist, häufig etwas auf dem rechten Monitor öffnen. (In den Anzeigeeinstellungen sind die klebrigen Ränder deaktiviert, sodass sich das Bewegen des Cursors zwischen den Bildschirmen natürlicher anfühlt.) Dazu muss ich den Cursor langsam an den linken Rand des rechten Monitors bewegen, denn wenn ich ihn so schnell wie üblich bewege, bewegt sich der Cursor zum linken Monitor.

Mir wäre es lieber, wenn ich den Cursor an den unteren Rand bewegen könnte, um den Launcher einzublenden. Ich konnte jedoch keinen Befehl dafür finden.

Wenn es einen Befehl zum Einblenden des Launchers oder eine andere Möglichkeit hierfür gibt, lassen Sie es mich bitte wissen.

Antwort1

Zeigen Sie den Launcher an, wenn die Maus einen „Trigger“-Bereich betritt

Das folgende Skript aktiviert den (automatisch ausgeblendeten) Launcher, wenn der Mauszeiger einen bestimmten Bereich betritt (Aktivierungsbereichim Bild).

Da es nicht bequem wäre, einegenau gerade Liniein Richtung des anvisierten Launcher-Symbols, nachdem der Launcher aktiviert wurde, habe ich einen Bereich von 200px von der linken Seite des (rechten) Bildschirms erstellt, in dem Sie sich frei bewegen können, ohne den Launcher erneut auszublenden (dasBereich verschieben).

Bildbeschreibung hier eingeben

Wie benutzt man

  1. xdotoolUm die Mausposition zu ermitteln, verwendet das Skript :

    sudo apt-get install xdotool
    
  2. Kopieren Sie das Skript in eine leere Datei und speichern Sie es untertrigger_launcher.py

  3. Im Kopfbereich des Skripts habe ich die Werte so eingestellt, dass sie zu Deiner Bildschirmkombination passen und oben ausgerichtet sind. Wenn Du das Skript jedoch mit anderen Bildschirm(größen) verwenden möchtest oder die (Trigger-)Ränder verändern möchtest, kannst Du dies im Kopfbereich des Skripts ändern:

    # the script assumes the two screens are top-alligned (!)
    
    #-- set the area to trigger the launcher (from left bottom of second screen) below:
    vert_marge = 50
    hor_marge = 200
    #-- set the width of the left screen below:
    width_screen1 = 1680
    #-- set the height of the right screen below:
    height_screen2 = 900
    #---
    
  4. Testen Sie das Skript mit dem folgenden Befehl:

    python3 /path/to/trigger_launcher.py
    
  5. Wenn alles gut funktioniert, fügen Sie es zu Ihren Startanwendungen hinzu: Dash > Startanwendungen > Hinzufügen. Fügen Sie den Befehl hinzu:

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

Das Drehbuch

#!/usr/bin/env python3
import subprocess
import time

# the script assumes the two screens are top-alligned (!)

#-- set the area to trigger the launcher (from left bottom of second screen) below:
vert_marge = 50
hor_marge = 200
#-- set the with of the left screen below:
width_screen1 = 1680
#-- set the height of the right screen below:
height_screen2 = 900
#--


vert_line = height_screen2-vert_marge
hor_line2 = width_screen1+hor_marge
k = [" org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ ",
    "gsettings set ", "launcher-hide-mode 1", "launcher-hide-mode 0"]

hide = k[1]+k[0]+k[2]; show = k[1]+k[0]+k[3]

def set_launcher(command):
    subprocess.Popen(["/bin/bash", "-c", command])

def get_mousepos():
    curr = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [int(it.split(":")[1]) for it in curr.split()[:2]]

current1 = get_mousepos()
while True:
    time.sleep(0.3)
    current2 = get_mousepos()
    if not current1 == current2:
        test1 = [int(current1[1]) > vert_line, width_screen1 < int(current1[0]) < hor_line2]
        test2 = [int(current2[1]) > vert_line, width_screen1 < int(current2[0]) < hor_line2]
        test3 = any([int(current2[0]) > hor_line2, int(current2[0]) < width_screen1])
        if (all(test1), all(test2)) == (False, True):
            set_launcher(show)
        elif test3 == True:
            set_launcher(hide)
    current1 = current2

Bearbeiten

Nachfolgend eine Version mit einer Zeitpause von 3 Sekunden, statt einem „Bewegungsbereich“, wie von Dir in einem Kommentar erwähnt.

#!/usr/bin/env python3
import subprocess
import time

# the script assumes the two screens are top-alligned (!)

#-- set the area to trigger the launcher (from left bottom of second screen) below:
vert_marge = 50
hor_marge = 200
#-- set the with of the left screen below:
width_screen1 = 1680
#-- set the height of the right screen below:
height_screen2 = 900
#--

vert_line = height_screen2-vert_marge
hor_line2 = width_screen1+hor_marge
k = [" org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ ",
    "gsettings set ", "launcher-hide-mode 1", "launcher-hide-mode 0"]

hide = k[1]+k[0]+k[2]; show = k[1]+k[0]+k[3]

def set_launcher(command):
    subprocess.Popen(["/bin/bash", "-c", command])

def get_mousepos():
    curr = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [int(it.split(":")[1]) for it in curr.split()[:2]]

current1 = get_mousepos()
while True:
    time.sleep(0.3)
    current2 = get_mousepos()
    if not current1 == current2:
        test1 = [int(current1[1]) > vert_line, width_screen1 < int(current1[0]) < hor_line2]
        test2 = [int(current2[1]) > vert_line, width_screen1 < int(current2[0]) < hor_line2]
        if (all(test1), all(test2)) == (False, True):
            set_launcher(show)
            time.sleep(3)
            set_launcher(hide)
    current1 = current2

verwandte Informationen