A. विन्यास विकल्प
यदि ब्लॉक का मतलब कुछ अनुप्रयोगों के उपयोग से नहीं-अनुभवी उपयोगकर्ताओं को ब्लॉक करना है, तो एप्लिकेशन की डेस्कटॉप फ़ाइल (जैसा कि वर्णित है [1]
) की संपादन (एक स्थानीय प्रतिलिपि ) संभवतः सबसे तेज़ और सबसे आसान तरीका है।
अतिरिक्त बाधा और / या इस तथ्य को रोकने के लिए कुछ अतिरिक्त चीजें की जा सकती हैं कि उपयोगकर्ता यह आसानी से पता लगा ले कि हमने एप्लिकेशन ( [2]
और [3]
) को ब्लॉक करने के लिए क्या किया है ।
अनुभवी उपयोगकर्ताओं के साथ अनअटेंडेड स्थितियों के लिए सेट अप फिट नहीं है। औसत उपयोगकर्ताओं के साथ "घर" स्थितियों में यह कई मामलों में पर्याप्त होगा।
1. संपादन के लिए gedit (एक स्थानीय संस्करण) .desktop फ़ाइल को अवरुद्ध करने के लिए नमूना
में आवेदन के डेस्कटॉप फाइल कॉपी /usr/share/applications
करने के लिए ~/.local/share/applications
:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
फाइल को एडिट करें: इसे एक खुले गैडिट विंडो के ऊपर खींचकर इसे गेडिट (जब आप अभी भी :) कर सकते हैं) के साथ खोलें।
लाइन की जगह
Exec=gedit %U
द्वारा:
Exec=zenity --info --text 'You are not allowed to use this application'
शॉर्टकट में से किसी एक को शुरू करने से रोकने के लिए (संभव) शॉर्टकटों को हटा दें:
लाइन को हटाएं (gedit उदाहरण के लिए):
Actions=Window;Document;
और अनुभाग: जैसे:
[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;
तब से (लॉग आउट / लॉग इन करने के बाद) उपयोगकर्ता इस संदेश को देखेगा कि क्या वह डैश से गेडिट खोलने की कोशिश करता है, या एप्लिकेशन से जुड़ी एक फ़ाइल खोलने की कोशिश करता है:
डैश से एप्लिकेशन को छिपाना (वैकल्पिक उपाय)
उपरोक्त परिवर्तन करने के बाद, gedit.desktop
फ़ाइल अभी भी खुली हुई है, हम एक अतिरिक्त पंक्ति जोड़ सकते हैं:
NoDisplay=true
इस लाइन को जोड़ने से, gedit
डैश में दिखाई भी नहीं देगा।
पूर्ववत करें
पूर्ववत करने के लिए, बस स्थानीय .desktop
फ़ाइल को हटा दें~/.local/share/applications
2. यह पता लगाने के लिए थोड़ा और अधिक कठिन है
हालांकि, .desktop
फ़ाइल को संपादित करने के बाद , एप्लिकेशन डैश में दिखाई नहीं देगा, डैश खोज अभी भी हमारी नई बनाई गई gedit.desktop
फ़ाइल दिखाएगी , जो अनजाने में एक संकेत दे सकती है कि आवेदन ब्लॉक से कैसे बचा जाए।
इससे बचने के लिए, हमें ~/.local/share/applications
डैश खोज से निर्देशिका को बाहर करना चाहिए और खोज इतिहास को साफ़ करना चाहिए ।
सिस्टम सेटिंग्स खोलें> "सुरक्षा और गोपनीयता"> "फ़ाइलें और अनुप्रयोग" (टैब)। निर्देशिका ~/.local/share/applications
को खोज से बाहर करने के लिए सूची में जोड़ें ।
3. (Not) टर्मिनल / कमांड लाइन का उपयोग करना
gedit
आदेश को पुनर्निर्देशित करना(1)
.desktop
फ़ाइल को संपादित करने से डैश से एप्लिकेशन का उपयोग करने से रोकता है, लेकिन यदि उपयोगकर्ता को AltF2एप्लिकेशन को चलाने के लिए संयोजन और कमांड पता है, तो वह टर्मिनल के साथ ही, अभी भी एप्लिकेशन को शुरू करने में सक्षम होगा। अतिरिक्त उपाय स्थापित करने के लिए एक अच्छा और आसान तरीका है (यदि यह अभी तक मौजूद नहीं है) तो निर्देशिका ~/bin
बनाने और निर्देशिका में एक छोटी स्क्रिप्ट बनाने के लिए है:
#!/bin/bash
zenity --info --text 'You are not allowed to use this application'
इसे निष्पादन योग्य बनाएं और आवेदन के बाद इसे नाम दें; gedit
इस मामले में।
चूंकि ~/bin
में है PATH
, कमांड चलाने से "वास्तविक" gedit
एप्लिकेशन के बजाय स्क्रिप्ट को कॉल किया जाएगा । परिणामस्वरूप, वही You are not allowed to use this application
-message दिखाई देगा
gedit
आदेश को पुनर्निर्देशित करना(2)
एप्लिकेशन के आदेश को पुनर्निर्देशित करने का एक और तरीका (अधिक सीमित प्रभाव के साथ, नोट देखें) .bashrc
फ़ाइल में एक उपनाम जोड़ना है :
gedit ~/.bashrc
लाइन जोड़ें (उदाहरण उदाहरण):
alias gedit='zenity --info --text "You are not allowed to use this application"'
नोट : यह केवल एक अतिरिक्त उपाय के रूप में उपयोग किया जाना है, क्योंकि यह केवल एप्लिकेशन को टर्मिनल से सीधे कॉल करने से रोकता है। .txt
हालाँकि (अभी ) फ़ाइल पर डबल क्लिक करने पर भी एप्लिकेशन खुल जाएगा।
टर्मिनल का उपयोग कठिन या असंभव सब पर करें
टर्मिनल के उपयोग को रोकने के लिए, आप उसी तरह की ट्रिक को भी कर सकते हैं gnome-terminal.desktop
- जैसे कि फ़ाइल में [1]
और / या टर्मिनल को चलाने के लिए डिफ़ॉल्ट शॉर्टकट कुंजी संयोजन को बदल दें (सिस्टम सेटिंग्स> "कीबोर्ड"> "शॉर्टकट"> "स्टार्टर्स" )
4. .desktop
फ़ाइल का एक संपादित संस्करण स्वचालित रूप से बनाने (या पूर्ववत करने का छोटा उपकरण) (जैसा कि 1. में है)
यदि आप नीचे दिए गए स्क्रिप्ट को तर्क के साथ चलाते हैं block
या unblock
(आपको इसे या तो एक के साथ चलाना होगा ), तो आपको (वैश्विक) डेस्कटॉप फ़ाइलों के साथ एक सूची प्रस्तुत की जाएगी, जो आपके इंस्टॉल किए गए अनुप्रयोगों का प्रतिनिधित्व करेंगे:
आप जिस तर्क से इसे चलाते हैं, उसके आधार पर एक को चुनें, और आपका एप्लिकेशन ब्लॉक या अनब्लॉक हो गया है।
ध्यान दें
इसे काम करने के लिए आपको लॉग आउट / लॉग इन करना पड़ सकता है।
लिपी
#!/usr/bin/env python3
import os
import shutil
import sys
mode = sys.argv[1]
home = os.environ["HOME"]
global_dir = "/usr/share/applications/"
files = [file for file in os.listdir(global_dir) if file.endswith(".desktop")]
relevant = []
for i in range(len(files)):
file = files[i]
with open(global_dir+file) as src:
text = src.read()
if not "NoDisplay=true" in text:
relevant.append((file))
for i in range (len(relevant)):
print(str(i+1)+".", relevant[i])
choice = int(input("\nplease enter the number of the corresponding .desktop file: "))
filename = relevant[choice-1]
local_file = home+"/"+".local/share/applications/"+filename
global_file = global_dir+filename
def block_application(filename):
if not os.path.exists(local_file):
shutil.copyfile(global_file, local_file)
with open(local_file) as src:
lines = src.readlines()
shortcuts_section = [i for i in range(len(lines)) if lines[i].startswith("Actions=")]
if len(shortcuts_section) != 0:
lines = lines[:shortcuts_section[0]]
command = [i for i in range(len(lines)) if lines[i].startswith("Exec=")]
if len(command) != 0:
lines[command[0]] = 'Exec=zenity --info --text "You are not allowed to use this application"\n'
with open(local_file, "wt") as out:
for line in lines:
out.write(line)
if mode == "block":
block_application(filename)
elif mode == "unblock":
os.remove(local_file)
स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे सहेजें block_apps.py
और इसे या तो चलाएं:
python3 /path/to/block_apps.py block
या
python3 /path/to/block_apps.py unblock
बी स्क्रिप्टेड विकल्प
पृष्ठभूमि में स्क्रिप्ट चलाकर कुछ अनुप्रयोगों को अवरुद्ध भी किया जा सकता है। यदि "निषिद्ध" एप्लिकेशन चलाया जाता है तो स्क्रिप्ट को कुछ क्रियाएं करनी होंगी।
1. निषिद्ध अनुप्रयोगों का उपयोग किए जाने पर स्क्रीन में हेरफेर करने के लिए स्क्रिप्ट।
नीचे दी गई स्क्रिप्ट उपयोगकर्ता परिभाषित अनुप्रयोगों को अवरुद्ध करने का एक लचीला तरीका प्रदान करती है। यह एक साधारण आदेश के साथ चलता है, एक तर्क के रूप में निषिद्ध अनुप्रयोगों के साथ, जैसे (यह मानते हुए कि आपने स्क्रिप्ट को निष्पादन योग्य बनाया है):
/path/to/block_apps.py firefox gedit gnome-terminal
इस तरह से अनुप्रयोगों को अवरुद्ध करने का लाभ यह है कि यह लचीला है; यहां तक कि एक खाते के भीतर, विभिन्न सेटिंग्स का उपयोग किया जा सकता है, बस अन्य अनुप्रयोगों को तर्क के रूप में उपयोग करके।
यह क्या करता है
अन-लाइन्स में से किसी एक पर टिप्पणी करके:
# action = "xrandr --output "+screen+" --brightness 0"
या
# action = "xrandr --output "+screen+" --rotate inverted"
स्क्रिप्ट या तो:
स्क्रीन को काला करता है ( action = "xrandr --output "+screen+" --brightness 0"
):
या इसे उल्टा कर देता है ( action = "xrandr --output "+screen+" --rotate inverted"
):
( किसने कहा कि एकता सही पर लॉन्चर लगाने की अनुमति नहीं देती है? )
लिपी
#!/usr/bin/env python3
import subprocess
import getpass
import sys
import time
applications = []
i = 1
while True:
try:
applications.append(sys.argv[i])
i = i+1
except IndexError:
break
cmd1 = "xrandr"
get = subprocess.check_output(["/bin/bash", "-c", cmd1]).decode("utf-8").split()
screen = [get[i-1] for i in range(len(get)) if get[i] == "connected"][0]
#-- uncomment (only) one of the options below
# action = "xrandr --output "+screen+" --brightness 0"
action = "xrandr --output "+screen+" --rotate inverted"
#--
while True:
cmd2 = "ps -u "+getpass.getuser()
applist = subprocess.check_output(["/bin/bash", "-c", cmd2]).decode("utf-8")
for application in applications:
if application in applist:
subprocess.Popen(["/bin/bash", "-c", action])
time.sleep(5)
कैसे इस्तेमाल करे
- स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे सहेजें
block_apps.py
, इसे निष्पादन योग्य बनाएं
इसे कमांड द्वारा चलाएं:
/path/to/block_apps.py <application_1> <application_2> <application_3> etc...
महत्वपूर्ण
करने के लिए मारनेblock_apps.py
स्क्रिप्ट और बहाल "सामान्य" सेटिंग्स, नीचे (यह एक शॉर्टकट कुंजी संयोजन के तहत उपलब्ध बनाने) स्क्रिप्ट का उपयोग करें:
#!/usr/bin/env python3
import subprocess
cmd = "ps -ef | grep block_apps.py"
run = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").split("\n")
match = [line for line in run if "block_apps.py" in line]
command = "kill "+match[0].split()[1]
subprocess.Popen(["/bin/bash", "-c", command])
cmd1 = "xrandr"
get = subprocess.check_output(["/bin/bash", "-c", cmd1]).decode("utf-8").split()
screen = [get[i-1] for i in range(len(get)) if get[i] == "connected"][0]
restore_1 = "xrandr --output "+screen+" --brightness 1"
restore_2 = "xrandr --output "+screen+" --rotate normal"
for item in [restore_1, restore_2]:
subprocess.Popen(["/bin/bash", "-c", item])
हमेशा स्क्रिप्ट की तरह, इसे एक खाली फ़ाइल में कॉपी करें, इसे इस रूप में सहेजें kill_blockapps.py
, इसे निष्पादन योग्य बनाएं और इसे इसके द्वारा चलाएं:
/path/to/kill_blockapps.py
आप शायद इसे एक शॉर्टकट कुंजी के तहत रखना चाहेंगे: चुनें: सिस्टम सेटिंग्स> "कीबोर्ड"> "शॉर्टकट"> "कस्टम शॉर्टकट"। "+" पर क्लिक करें और ऊपर के रूप में कमांड जोड़ें।