Запустить скрипт при разблокировке?

Привет, я бы хотел, чтобы скрипт оболочки запускался каждый раз, когда я разблокирую свой компьютер в KDE 4. Я узнал, что могу запустить его, переписав /usr/lib/kde4/libexec/krunner_lock с помощью скрипта оболочки, выполняющего свою функцию, затем исходный двоичный файл krunner_lock, и я бы хотел сделать наоборот: запустить скрипт, который "отменяет" действия скрипта блокировки. Я нахожусь на 64-битной Kubuntu 9.04, но я ценю ответы для любой операционной системы, на случай, если я когда-нибудь захочу сделать то же самое в этой системе.

3 ответа

Решение

Разобрался на форумах KDE здесь. Решение Поргеса довольно близко к ответу, но пока не совсем. Вы должны передать аргументы, которые получает скрипт, реальному krunner_lock, вот так: krunner_lock_bin $@

Читая с этой страницы, похоже, krunner_lock будет работать до тех пор, пока экран заблокирован, поэтому вы сможете размещать команды после строки, в которой он запущен, и они будут выполняться после разблокировки экрана.

например

#!/bin/bash
...
# do stuff
...
real_krunner_lock # exits once screen unlocks...
...
# undo stuff

Версия на 2015 год, работающая под Kubuntu 14.10 с использованием блокировщика виджетов рабочего стола:

#!/bin/bash

lockpidname="/usr/bin/plasma-overlay --nofork"

$lockpidname

check_slock () {
if [[ $(pgrep -fla $lockpidname) ]]; then 
SLOCKED=1
else
SLOCKED=0
fi
}

while true; do
  sleep 5
  check_slock
  case $SLOCKED  in 
  0) 
  echo "System unlocked run something here"
  break
  ;; 
  esac

done

Это для ситуации, когда вы хотите назначить комбинацию CTRL+ATL+L в разделе Custom в глобальных сочетаниях клавиш.

Другие вопросы по тегам