स्क्रीन लॉक / अनलॉक पर कमांड या स्क्रिप्ट कैसे चलाएं?


19

मैं लॉक / अनलॉक स्क्रीन बार स्टोर करने का एक तरीका ढूंढ रहा हूं।

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

मैंने क्या प्रयास किया:

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

फिर मैंने स्क्रीन को लॉक किया और जाँच की कि क्या फ़ाइल दिखाई दी और यह हर बार विफल हो जाती है। मैं समय की जांच कैसे कर सकता हूं?


जैसा कि मैंने इस प्रश्न को पढ़ा, मुझे लगा कि आप एक एक्स सर्वर नहीं चला रहे हैं। आपके द्वारा चुना गया जवाब एक्स सर्वर चलाते समय विशुद्ध रूप से काम कर रहा है। हो सकता है कि आप अपनी स्थिति का बेहतर वर्णन कर सकें ...
एक्सप्लोवरे

एफडब्ल्यूआईडब्ल्यू, यह सवाल यूनिक्स / लिनक्स स्टैकएक्सचेंज पर भी पूछा गया था ।
joeytwield

जवाबों:


20

निम्न स्क्रिप्ट time_xprofileआपके घर में एक फ़ाइल में लॉक / अनलॉक समय लिखेगा ।

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

स्क्रिप्ट को बचाओ। इसे निष्पादन की अनुमति दें।

chmod +x script.sh

कैसे चलाना है?

./script.sh &

नोट स्क्रिप्ट को बैक ग्राउंड में चलना चाहिए। इसे मत मारो। यदि आप अपना स्क्रीन लॉक / अनलॉक चालू करते हैं, जबकि स्क्रिप्ट पृष्ठभूमि में चल रही है, तो आपके लॉक / अनलॉक का समय time_xprofileआपके घर पर फ़ाइल में दर्ज किया जाएगा । स्क्रीन लॉक / अनलॉक में कुछ कमांड या स्क्रिप्ट चलाने के लिए इसका उपयोग किया जा सकता है।

मन करें कि यदि आप वर्तमान टर्मिनल को बंद करते हैं तो आपकी स्क्रिप्ट मार दी जाएगी। आप उपयोग कर सकते हैं

nohup ./script.sh &

फिर टर्मिनल को बंद करने के बाद भी यह चालू रहेगा।

स्क्रिप्ट को कैसे मारना है

प्रक्रिया को मारने के लिए, टर्मिनल में उपयोग करें

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

ऊपर की स्क्रिप्ट इस उत्तर से प्रेरित है


क्या यह अभी भी xererver के साथ ubuntu 17.10 में काम कर रहा है? मुझे नहीं पता कि मेरे लिए काम क्यों नहीं हो रहा है ..
eddieferetro

इससे अधिक: यह केवल कुछ ही बार काम करता है ...
eddieferetro

1
@eddieferetro मैं अभी भी 16.04 पर हूं यह आपके लिए परीक्षण नहीं कर सकता। आप अपने मुद्दों को निर्दिष्ट करते हुए एक नया प्रश्न क्यों नहीं पूछते हैं? स्क्रीन लॉक के लिए Dbus की घटना 17.10 में बदल सकती है
souravc

6

Ubuntu 14.04 में स्क्रीन लॉक अनलॉक के लिए DBus घटना बदल गई है और स्क्रीन लॉक और अनलॉक घटनाओं के लिए बाइंडिंग के लिए नई स्क्रिप्ट निम्न की तरह लगती है

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
)

SCREEN_LOCKED और SCREEN_UNLOCKED को बदलें जो आपको करने की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.