get le statut xautolock

J'utilise actuellement xautolock pour verrouiller automatiquement mon écran avec slock . Cependant, lorsque je regarde un film, je ne veux certainement pas que mon écran devienne noir soudainement. J'ai lu la page de xautolock -toggle et j'ai vu que xautolock -toggle lié à un raccourci keyboard devrait me donner le contrôle sur l'set.

Mais, je veux voir l'état actuel. Ou je vais devenir confus. Est-ce que quelqu'un sait comment find le statut xautolock, ou devrais-je faire quelque chose comme créer un file contenant le statut actuel et utiliser -enable / -disable, vérifier le file, et notify-send quelque chose?

Vous pouvez utiliser la fonctionnalité embeddede dans la plupart des lecteurs multimédias pour gérer cela; il fonctionne efficacement avec xautolock et c'est des casiers.

mpv et mplayer ont tous deux des options d'économiseur d'écran:

--stop-screensaver, --no-stop-screensaver Désactive l'économiseur d'écran (ou l'écran blanc et les mécanismes similaires) au démarrage et le tourne à nouveau à la sortie (par défaut: oui). L'économiseur d'écran est toujours réactivé lorsque le lecteur est suspendu. Cela n'est pas pris en charge sur toutes les sorties ou plates-forms video. Parfois, il est mis en œuvre, mais ne fonctionne pas (arrive souvent sur GNOME). Vous pourriez être en mesure de travailler cela en utilisant --heartbeat-cmd à la place.

Vous pouvez activer cette fonctionnalité en incluant la ligne dans votre ~/.mpv/config :

 stop-screensaver=yes 

et profitez de la lecture ininterrompue de vos videos.

Si vous utilisez un lecteur multimédia qui n'a pas cette fonctionnalité de base, vous pouvez utiliser un wrapper simple pour get le même effet:

 #!/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 

Une vérification rapide du code source de la version actuelle, xautolock 2.2 , montre qu'elle ne prend pas en charge cette fonctionnalité, bien qu'il ne soit pas trop difficile à implémenter vous-même si vous connaissez un peu C et comment écrire X programmes.

La raison est probablement ceci: chaque fois que vous voulez connaître l'état de xautolock , vous savez aussi quel statut vous aimeriez qu'il soit xautolock -disable Alors, xautolock -disable simplement xautolock -disable si vous voulez qu'il soit désactivé, et xautolock -enable dans le cas contraire. Notez que tous vos autres parameters xautolock ne seront pas affectés en faisant cela.

Garder la trace du statut vous-même, comme vous le suggérez, est également possible, mais probablement peu fiable et sujet aux erreurs.

J'ai réussi à faire ce que l'OP a demandé et tout est contenu dans ma configuration i3, liée à un raccourci (voir ci-dessous). Donc, je verrouille mon écran avec Mod + o et je bascule le locking automatique de l'écran avec Mod + Shift + o où apparaît un message qui me dit "LOCK on" ou "LOCK OFF", selon le statut de xautolock. J'ai utilisé xautlock -exit pour déterminer s'il fonctionne sans avoir à gérer le statut dans un file supplémentaire.

Le script qui prend soin de basculer le statut par lui-même ressemble à ceci

 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 

Selon l'endroit où vous appelez ce script, vous devez vous assurer que xautolock -time ... s'exécute en arrière-plan (par exemple en ajoutant & ).

De mon file .i3/config :

 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"