Bagaimana cara menjalankan perintah atau skrip di kunci layar / membuka kunci?

19

Saya mencari cara untuk menyimpan waktu kunci / membuka kunci layar.

A=$(date)
echo $A >> $HOME/time_xprofile

Apa yang saya coba:

$HOME/.bashrc
$HOME/.bash_logout
$HOME/.bash_prompt
$HOME/.xprofile

Kemudian saya mengunci layar dan memeriksa apakah file muncul dan gagal setiap saat. Bagaimana saya bisa mengecek waktu?

Benjamin
sumber
Ketika saya membaca pertanyaan ini, saya pikir Anda tidak menjalankan X server. Jawaban yang Anda pilih adalah murni berfungsi saat menjalankan server X. Mungkin Anda bisa menggambarkan situasi Anda dengan lebih baik ...
ExploWare
FWIW, pertanyaan ini juga ditanyakan pada Unix / Linux stackexchange .
joeytwiddle

Jawaban:

20

Skrip berikut akan menulis waktu kunci / buka kunci dalam file time_xprofiledi rumah Anda.

#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
( while true
    do read X
    if echo $X | grep "boolean true" &> /dev/null; then
        echo "locking at $(date)" >> $HOME/time_xprofile
    elif echo $X | grep "boolean false" &> /dev/null; then
        echo "unlocking at $(date)" >> $HOME/time_xprofile
    fi
    done )

simpan skrip. Berikan izin eksekusi.

chmod +x script.sh

Bagaimana cara menjalankannya

./script.sh &

Catatan Skrip harus dijalankan di tanah belakang. Jangan bunuh itu. Jika Anda memutar kunci layar / membuka kunci saat skrip berjalan di latar belakang, waktu kunci / buka kunci Anda akan dicatat dalam time_xprofilefile di rumah Anda. Seseorang dapat menggunakannya untuk menjalankan beberapa perintah atau skrip di kunci layar / membuka kunci.

Harap diingat bahwa jika Anda menutup terminal saat ini, skrip Anda akan terbunuh. Anda dapat gunakan

nohup ./script.sh &

Kemudian akan terus berjalan bahkan setelah menutup terminal.

Cara membunuh skrip

Untuk mematikan proses, gunakan di terminal

ps ax| grep "[s]cript.sh" | cut -d' ' -f2 | xargs kill

Skrip di atas terinspirasi oleh jawaban ini

souravc
sumber
Apakah masih berfungsi di ubuntu 17.10 dengan XServer? Saya tidak tahu mengapa tidak bekerja untuk saya ..
eddieferetro
Lebih dari itu: ini hanya berfungsi beberapa kali ...
eddieferetro
1
@eddieferetro Saya masih di 16,04 tidak dapat mengujinya untuk Anda. Mengapa Anda tidak mengajukan pertanyaan baru yang menjelaskan masalah Anda? Acara Dbus untuk penguncian layar dapat diubah di 17.10
souravc
6

Di ubuntu 14.04 acara DBus untuk membuka kunci layar telah berubah dan skrip baru untuk mengikat ke kunci layar dan membuka kunci acara tampak seperti berikut

dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
  while true; do
    read X
    if echo $X | grep "desktop-lock" &> /dev/null; then
      SCREEN_LOCKED;
    elif echo $X | grep "desktop-unlock" &> /dev/null; then
      SCREEN_UNLOCKED;
    fi
  done
)

Ganti SCREEN_LOCKED dan SCREEN_UNLOCKED dengan apa yang perlu Anda lakukan.

Luv Agarwal
sumber