Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:redwil:15.4
xss-lock
synergylock
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File synergylock of Package xss-lock
#!/bin/bash shopt -q extglob sshprompt='-qo NumberOfPasswordPrompts=0' remote () { local lpid=$(ps x -o comm,pid= | sed -rn '/synergys/{ s/.*[[:blank:]]([[:digit:]]*)/\1/p; }') local tcp recv send src dest info test -n "$lpid" || return while read recv send src dest info do echo [${dest%:*}]=${dest#*:} done < <(ss -Htnp state established 2>/dev/null|grep ",pid=$lpid,") } if test -d ${XDG_RUNTIME_DIR=/run/user/${UID}} then plock=$(readlink ${XDG_RUNTIME_DIR}/lockscreen) if test -n "$plock" then xss=$(readlink /proc/${plock}/exe) fi case "$xss" in (*/xss-lock) ;; (*) echo No xss-lock process found 1>&2 exit 1 ;; esac fi eval declare -A ports=($(remote)) declare -A displays xauths for ip in "${!ports[@]}" do pid=$(ssh $sshprompt -fax $USER@$ip -- exec lsof -ti tcp:${ports[$ip]} 2> /dev/null) env=($(ssh -fax $USER@$ip -- exec exec ps -p 21727 eh | tr ' ' '\n' | grep -E '^(DISPLAY|XAUTHORITY)')) for e in ${env[@]} do case "$e" in DISPLAY=*) displays[$ip]=${e#*=} ;; XAUTHORITY=*) xauths[$ip]=${e#*=} ;; esac done done xsslock=$(pidof lockscreen) while read status do case "$status" in (clone*=*) active=${status#*= } for ip in "${!ports[@]}" do ssh $sshprompt -fax $USER@$ip -- pidof xsecurelock '||' env ${xauths[$ip]:+"XAUTHORITY=${xauths[$ip]}"} ${displays[$ip]:+DISPLAY=${displays[$ip]}} exec xset s activate done inotifywait -q -q -e close /proc/${active}/exe ;; (*SIGCHLD*) for ip in "${!ports[@]}" do ssh $sshprompt -fax $USER@$ip -- env ${xauths[$ip]:+"XAUTHORITY=${xauths[$ip]}"} ${displays[$ip]:+DISPLAY=${displays[$ip]}} xset s reset '&&' exec killall -q -u $USER -TERM xsecurelock done ;; esac done < <(exec -a "watch lockscreen" strace -qq -e clone -p $xsslock 2>&1)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor