Xautolock-Status abrufen


7

Ich bin derzeit mit xautolock automatisch die LCD - Display mit sperren Slock . Wenn ich mir jedoch einen Film ansehe , möchte ich sicher nicht, dass mein Bildschirm plötzlich schwarz wird. Ich las die Manpage und sah, dass xautolock -toggleeine Tastaturkürzel mir die Kontrolle über das Ganze geben sollte.

Aber ich möchte den aktuellen Status sehen. Oder ich werde verwirrt sein. Kennt jemand eine Möglichkeit, den xautolock-Status zu ermitteln, oder sollte ich beispielsweise eine Datei mit dem aktuellen Status erstellen und -enable / -disable verwenden, die Datei überprüfen und notify-sendetwas eingeben ?


Ich habe nach einer Möglichkeit gesucht, dies einmal zu tun, um ein Skript zu debuggen, aber nie herausgefunden, wie. Ich vermute, es ist nicht möglich. Wenn Sie eine Datei machen sind den aktuellen Status enthält, ist es wahrscheinlich einfacher (und ausfallsicher) nur pkill xautolock, und pgrep xautolockzu testen , ob es läuft.
Sparhawk

Eine andere mögliche Lösung wäre die Verwendung caffeine, die jedoch leider nicht unterstützt wird xautolock.
Sparhawk

@Sparhawk Ja, ich verwende immer noch Koffein auf meinem Desktop, auf dem Zimt und Xscreensaver ausgeführt werden.
MadTux

Antworten:


2

Sie können die in den meisten Mediaplayern integrierten Funktionen verwenden, um dies zu verwalten. es funktioniert effektiv mit xautolockund es ist Schließfächer.

mpv und mplayer haben beide Bildschirmschoner-Optionen:

--stop-Bildschirmschoner, --no-stop-Bildschirmschoner Schaltet den Bildschirmschoner (oder Screen Blanker und ähnliche Mechanismen) beim Start aus und aus beim Beenden wieder einschalten (Standard: ja). Der Bildschirmschoner wird beim Player immer wieder aktiviert ist angehalten. Dies wird nicht auf allen Videoausgängen oder Plattformen unterstützt. Manchmal ist es implementiert, funktioniert aber nicht (passiert oft bei GNOME). Möglicherweise können Sie dies mit umgehen --heartbeat-cmd stattdessen.

Sie können diese Funktion aktivieren, indem Sie die Zeile in Ihre ~/.mpv/config:

stop-screensaver=yes

und genießen Sie die ununterbrochene Wiedergabe Ihrer Videos.

Wenn Sie einen Media Player verwenden, der diese grundlegende Funktionalität nicht bietet, können Sie mit einem einfachen Wrapper den gleichen Effekt erzielen:

#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos

usage() {
    printf "%s\n" "Usage: ${0##*/} /path/to/file"
    exit 1
}

case $# in
    1)  if [[ $1 =~ Videos ]]; then
            xset dpms 0 0 0
            xautolock -disable
            vlc "$1"
            xautolock -enable
            xset dpms 900 900 900
        else
            usage
        fi
        ;;
    *) usage
        ;;
esac

Ich dachte darüber nach und beschloss, stattdessen eine Liste mit "blockierenden" Anwendungen für Slock zu erstellen. Aber danke. Speziell für die Mplayer-Option. Ich nehme an, gnome-mplayer unterstützt es auch?
MadTux

@ MadTux Ich würde mir das vorstellen: Überprüfen Sie das Handbuch, um zu bestätigen, ich bin nicht sicher, wie sich Gnome-Mplayer vom Mplayer selbst unterscheidet.
Jasonwryan

Konnte es nicht in der Manpage finden und das Ausprobieren gab mir einen Fehler: / Das ist seltsam. Na ja, Ihre Antwort (und meine Lösung) lösen es trotzdem.
MadTux

4

Eine schnelle Überprüfung des Quellcodes der aktuellen Version xautolock 2.2zeigt, dass diese Funktion nicht unterstützt wird, obwohl es nicht allzu schwierig wäre, sie selbst zu implementieren, wenn Sie ein wenig über Cdas Schreiben von XProgrammen wissen .

Der Grund ist wahrscheinlich folgender: Wann immer Sie den Status von wissen möchten, wissen xautolockSie auch, in welchem ​​Status Sie ihn haben möchten. Geben Sie also einfach aus, xautolock -disableob er deaktiviert sein soll, und xautolock -enableim gegenteiligen Fall. Beachten Sie, dass alle anderen xautolockEinstellungen davon nicht betroffen sind.

Es ist auch möglich, den Status selbst so zu verfolgen, wie Sie es vorschlagen, aber wahrscheinlich etwas unzuverlässig und fehleranfällig.


1
Ich habe gerade ein Skript mit erstellt pgrep mplayer || slockund xautolock angewiesen, das zu verwenden. Vielleicht binde ich separate Tastaturkürzel an -disable und -enable ...
MadTux

Es ist eine sehr grundlegende Anforderung und es gibt wirklich keine Entschuldigung, es nicht in xautolock...
Yan King Yin

1

Ich habe es geschafft, genau das zu tun, was OP verlangt hat, und alles ist in meiner i3-Konfiguration enthalten, die an eine Verknüpfung gebunden ist (siehe unten). Also sperre ich meinen Bildschirm mit Mod + o und schalte die automatische Bildschirmsperre mit Mod + Shift + o um, wo eine Benachrichtigung angezeigt wird, die mir je nach "Status" von xautolock entweder "LOCK on" oder "LOCK OFF" sagt. Ich habe es genutzt, xautlock -exitum herauszufinden, ob es ausgeführt wird oder nicht, ohne den Status in einer zusätzlichen Datei verwalten zu müssen.

Das Skript, das sich allein um den umgeschalteten Status kümmert, sieht folgendermaßen aus

if xautolock -exit
    then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
    else
        notify-send -u normal -t 100 -- 'LOCK on'
        xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi

Je nachdem, wo Sie dieses Skript aufrufen, müssen Sie sicherstellen, dass es xautolock -time ...im Hintergrund ausgeführt wird (z &. B. durch Hinzufügen ).

Aus meiner .i3/configDatei:

exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"

bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.