A. Tùy chọn cấu hình
Nếu khối này có nghĩa là chặn người dùng không có kinh nghiệm sử dụng một số ứng dụng nhất định, chỉnh sửa (bản sao cục bộ) tệp máy tính để bàn của ứng dụng (như được mô tả trong [1]
) có lẽ là cách nhanh nhất và dễ dàng nhất.
Một số điều bổ sung có thể được thực hiện để tạo thêm một rào cản và / hoặc để ngăn chặn việc người dùng phát hiện quá dễ dàng những gì chúng tôi đã làm để chặn ứng dụng ( [2]
và [3]
).
Việc thiết lập không phù hợp với các tình huống không giám sát với người dùng có kinh nghiệm. Trong các tình huống "nhà" với người dùng trung bình, nó sẽ đủ trong nhiều trường hợp.
1.Ví dụ để chặn gedit bằng cách chỉnh sửa (phiên bản cục bộ) của tệp .desktop
Sao chép tập tin máy tính để bàn của ứng dụng trong /usr/share/applications
để ~/.local/share/applications
:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
Chỉnh sửa tệp: mở tệp bằng gedit (trong khi bạn vẫn có thể :)) bằng cách kéo tệp qua cửa sổ mở.
thay thế dòng
Exec=gedit %U
bởi:
Exec=zenity --info --text 'You are not allowed to use this application'
xóa các phím tắt (có thể) để ngăn khởi động ứng dụng từ một trong các phím tắt:
xóa dòng (ví dụ gedit):
Actions=Window;Document;
và các phần như:
[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;
Từ đó trở đi (sau khi đăng xuất / đăng nhập), người dùng sẽ thấy thông báo này nếu họ cố mở gedit từ Dash hoặc cố gắng mở tệp được liên kết với ứng dụng:
Ẩn ứng dụng khỏi Dash (biện pháp tùy chọn)
Sau khi chúng tôi thực hiện các thay đổi ở trên, khi gedit.desktop
tệp vẫn mở, chúng tôi có thể thêm một dòng bổ sung:
NoDisplay=true
Bằng cách thêm dòng này, gedit
thậm chí sẽ không hiển thị trong Dash.
Hoàn tác
Để hoàn tác, chỉ cần xóa .desktop
tệp cục bộ khỏi~/.local/share/applications
2. Làm cho nó khó khăn hơn một chút để tìm hiểu
Mặc dù, sau khi chỉnh sửa .desktop
tệp, ứng dụng sẽ không hiển thị trong Dash nữa, tìm kiếm Dash vẫn sẽ hiển thị gedit.desktop
tệp mới được tạo của chúng tôi , điều này có thể vô tình đưa ra gợi ý về cách thoát khỏi khối ứng dụng.
Để tránh điều đó, chúng ta nên loại trừ thư mục ~/.local/share/applications
khỏi tìm kiếm Dash và xóa lịch sử tìm kiếm.
Mở Cài đặt hệ thống> "Bảo mật & quyền riêng tư"> "Tệp & ứng dụng" (tab). Thêm thư ~/.local/share/applications
mục vào danh sách để loại trừ khỏi tìm kiếm.
3. (Không) sử dụng thiết bị đầu cuối / dòng lệnh
Chuyển hướng gedit
lệnh(1)
Chỉnh sửa .desktop
tệp sẽ ngăn việc sử dụng ứng dụng từ Dash, nhưng nếu người dùng biết AltF2kết hợp và lệnh để chạy ứng dụng, họ vẫn có thể khởi động ứng dụng, giống như với thiết bị đầu cuối. Một cách dễ dàng và dễ dàng để thiết lập biện pháp bổ sung là tạo (nếu nó chưa tồn tại) thư mục ~/bin
và tạo một tập lệnh nhỏ trong thư mục:
#!/bin/bash
zenity --info --text 'You are not allowed to use this application'
Làm cho nó thực thi và đặt tên theo ứng dụng; gedit
trong trường hợp này.
Kể từ khi ~/bin
vào PATH
, chạy lệnh sẽ gọi tập lệnh thay vì gedit
ứng dụng "thực" . Kết quả là, cùng một You are not allowed to use this application
điều sẽ xuất hiện
Chuyển hướng gedit
lệnh(2)
Một cách khác (với hiệu ứng hạn chế hơn, xem ghi chú) về việc chuyển hướng lệnh của ứng dụng là thêm bí danh vào .bashrc
tệp:
gedit ~/.bashrc
thêm dòng (ví dụ gedit):
alias gedit='zenity --info --text "You are not allowed to use this application"'
Lưu ý : điều này chỉ được sử dụng như một biện pháp bổ sung, vì nó chỉ ngăn ứng dụng được gọi trực tiếp từ thiết bị đầu cuối. .txt
Tuy nhiên, nhấp đúp vào tệp (ví dụ) sẽ vẫn mở ứng dụng.
Làm cho việc sử dụng thiết bị đầu cuối khó khăn hoặc không thể
Để ngăn việc sử dụng thiết bị đầu cuối, bạn cũng có thể thực hiện thủ thuật tương tự trên gnome-terminal.desktop
tệp - như trong [1]
và / hoặc thay đổi tổ hợp phím tắt mặc định để chạy thiết bị đầu cuối (Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Khởi động" )
4. Một công cụ nhỏ để tự động tạo (hoặc hoàn tác) phiên bản đã chỉnh sửa của .desktop
tệp (như trong 1.)
Nếu bạn chạy tập lệnh bên dưới với đối số block
hoặc unblock
(bạn phải chạy tập lệnh này với một trong hai), bạn sẽ được cung cấp một danh sách với các tệp máy tính để bàn (toàn cầu), đại diện cho các ứng dụng đã cài đặt của bạn:
Chọn một và ứng dụng của bạn bị chặn hoặc bỏ chặn, tùy thuộc vào đối số bạn chạy với nó.
Ghi chú
Bạn có thể phải đăng xuất / đăng nhập để làm cho nó hoạt động.
Kịch bản
#!/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)
Sao chép tập lệnh vào một tệp trống, lưu nó dưới dạng block_apps.py
và chạy nó bằng cách:
python3 /path/to/block_apps.py block
hoặc là
python3 /path/to/block_apps.py unblock
B. Tùy chọn kịch bản
Việc chặn một số ứng dụng cũng có thể được thực hiện bằng cách chạy tập lệnh ở chế độ nền. Kịch bản sẽ phải thực hiện một số hành động nhất định nếu một trong những ứng dụng "bị cấm" được chạy.
1. Tập lệnh để thao tác trên màn hình khi các ứng dụng bị cấm được sử dụng.
Kịch bản dưới đây cung cấp một cách linh hoạt để chặn các ứng dụng do người dùng xác định. Nó chạy với một lệnh đơn giản, với các ứng dụng bị cấm làm đối số, ví dụ (giả sử bạn đã tạo tập lệnh thực thi):
/path/to/block_apps.py firefox gedit gnome-terminal
Ưu điểm của việc chặn các ứng dụng như thế này là nó linh hoạt; ngay cả trong một tài khoản, các cài đặt khác nhau có thể được sử dụng, chỉ bằng cách sử dụng các ứng dụng khác làm đối số.
Những gì nó làm
Bằng cách bỏ bình luận một trong những dòng:
# action = "xrandr --output "+screen+" --brightness 0"
hoặc là
# action = "xrandr --output "+screen+" --rotate inverted"
Kịch bản:
làm đen màn hình ( action = "xrandr --output "+screen+" --brightness 0"
):
hoặc lật ngược nó lại ( action = "xrandr --output "+screen+" --rotate inverted"
):
( ai nói Unity không cho phép đặt launcher ở bên phải? )
Kịch bản
#!/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)
Cách sử dụng
- Sao chép tập lệnh vào một tập tin trống, lưu nó dưới dạng
block_apps.py
, làm cho nó có thể thực thi được
chạy nó bằng lệnh:
/path/to/block_apps.py <application_1> <application_2> <application_3> etc...
Quan trọng
Để giết các block_apps.py
kịch bản và khôi phục "bình thường" Cài đặt, sử dụng kịch bản dưới đây (làm cho nó có sẵn dưới một tổ hợp phím tắt):
#!/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])
Như mọi khi với các tập lệnh, sao chép nó vào một tập tin trống, lưu nó dưới dạng kill_blockapps.py
, làm cho nó có thể thực thi được và chạy nó bằng cách:
/path/to/kill_blockapps.py
Bạn có thể sẽ muốn có cái này dưới phím tắt: Chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh như trên.