A. 구성 옵션
이 블록이 경험이없는 사용자가 특정 응용 프로그램을 사용하지 못하도록하려면 응용 프로그램의 데스크톱 파일 (에 설명 된대로)의 편집 (로컬 복사본 [1]
)이 가장 빠르고 쉬운 방법 일 것입니다.
추가 장벽을 만들거나 사용자가 응용 프로그램을 차단하기 위해 수행 한 작업 ( [2]
및 [3]
) 을 너무 쉽게 발견한다는 사실을 방지하기 위해 몇 가지 추가 작업을 수행 할 수 있습니다 .
이 설정은 숙련 된 사용자가있는 무인 상황에 적합하지 않습니다. 일반 사용자가있는 "집"상황에서는 많은 경우 충분합니다.
1. .desktop 파일 (로컬 버전)을 편집하여 gedit를 차단하는 예
응용 프로그램의 데스크탑 파일 /usr/share/applications
을 ~/.local/share/applications
다음 위치 에 복사하십시오 .
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
파일 편집 : 열린 gedit 창 위로 드래그하여 gedit로 파일을여십시오 (여전히 : :)).
줄을 바꾸다
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를 열려고하거나 응용 프로그램에 연결된 파일을 열려고하면이 메시지를 보게됩니다.
대시에서 애플리케이션 숨기기 (선택적 측정 값)
위와 같이 변경 한 후 gedit.desktop
파일을 열어 둔 상태에서 다음 줄을 추가 할 수 있습니다.
NoDisplay=true
이 줄을 추가하면 gedit
대시에도 표시되지 않습니다.
실행 취소
실행 취소하려면 간단히 로컬 .desktop
파일을~/.local/share/applications
찾기가 좀 더 어려워 짐
.desktop
파일 을 편집 한 후에 는 응용 프로그램이 더 이상 Dash에 표시되지 않지만 Dash 검색 은 새로 생성 된 gedit.desktop
파일을 계속 표시 하므로 의도하지 않게 응용 프로그램 블록을 이스케이프하는 방법에 대한 힌트를 줄 수 있습니다.
이를 피하려면 ~/.local/share/applications
Dash 검색 에서 디렉토리 를 제외 하고 검색 기록을 지워야합니다.
시스템 설정> "보안 및 개인 정보"> "파일 및 응용 프로그램"(탭)을여십시오. ~/.local/share/applications
검색에서 제외 할 디렉토리 를 목록에 추가하십시오 .
3. 터미널 / 명령 줄 사용
gedit
명령 재 지정(1)
.desktop
파일을 편집하면 Dash에서 응용 프로그램을 사용할 수 없지만 사용자가 AltF2응용 프로그램을 실행하는 조합과 명령을 알고 있으면 터미널과 마찬가지로 응용 프로그램을 계속 시작할 수 있습니다. 추가 측정 값을 설정하는 것이 쉽고 쉬운 방법은 디렉토리를 만들고 (아직 존재하지 않는 경우) 디렉토리 ~/bin
에 작은 스크립트를 만드는 것입니다.
#!/bin/bash
zenity --info --text 'You are not allowed to use this application'
실행 가능하게 만들고 응용 프로그램 이름을 따서 지정하십시오. gedit
이 경우
~/bin
is에 있기 때문에 PATH
명령을 실행하면 "실제" gedit
응용 프로그램 대신 스크립트가 호출 됩니다. 결과적으로You are not allowed to use this application
메시지가 나타납니다.
gedit
명령 재 지정(2)
응용 프로그램 명령을 재지 정하는 다른 방법 (보다 제한적인 효과는 참고 참조)은 .bashrc
파일에 별명을 추가하는 것입니다 .
gedit ~/.bashrc
줄을 추가하십시오 (gedit 예제) :
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
B. 스크립트 옵션
백그라운드에서 스크립트를 실행하여 특정 응용 프로그램을 차단할 수도 있습니다. "금지 된"응용 프로그램 중 하나가 실행되면 스크립트는 특정 작업을 수행해야합니다.
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
이 설정을 바로 가기 키 아래에 둘 수도 있습니다. 시스템 설정> "키보드"> "바로 가기"> "사용자 정의 바로 가기"를 선택하십시오. "+"를 클릭하고 위와 같이 명령을 추가하십시오.