A. Opsi konfigurasi
Jika blok dimaksudkan untuk memblokir pengguna yang tidak berpengalaman menggunakan aplikasi tertentu, mengedit (salinan lokal) file desktop aplikasi (seperti dijelaskan dalam [1]
) mungkin merupakan cara tercepat dan termudah.
Beberapa hal tambahan dapat dilakukan untuk membuat penghalang tambahan dan / atau untuk mencegah fakta bahwa pengguna mengetahui terlalu mudah apa yang telah kami lakukan untuk memblokir aplikasi ( [2]
dan [3]
).
Pengaturan tidak cocok untuk situasi tanpa pengawasan dengan pengguna berpengalaman. Dalam situasi "rumah" dengan rata-rata pengguna akan cukup dalam banyak kasus.
1.Contoh untuk memblokir gedit dengan mengedit (versi lokal) file .desktop
Salin file desktop aplikasi /usr/share/applications
ke ~/.local/share/applications
:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
Edit file: buka dengan gedit (selagi masih bisa :)) dengan menyeretnya ke jendela gedit yang terbuka.
ganti salurannya
Exec=gedit %U
oleh:
Exec=zenity --info --text 'You are not allowed to use this application'
hapus (mungkin) jalan pintas, untuk mencegah memulai aplikasi dari salah satu jalan pintas:
hapus baris (untuk contoh gedit):
Actions=Window;Document;
dan bagian seperti:
[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;
Sejak saat itu (setelah keluar / masuk) pengguna akan melihat pesan ini jika ia mencoba membuka gedit dari Dash, atau mencoba membuka file yang ditautkan ke aplikasi:
Menyembunyikan aplikasi dari Dash (ukuran opsional)
Setelah kami membuat perubahan di atas, setelah gedit.desktop
file masih terbuka, kami dapat menambahkan baris tambahan:
NoDisplay=true
Dengan menambahkan baris ini, gedit
bahkan tidak akan muncul di Dash.
Batalkan
Untuk membatalkan, cukup hapus .desktop
file lokal dari~/.local/share/applications
2.Membuatnya sedikit lebih sulit untuk diketahui
Sementara, setelah mengedit .desktop
file, aplikasi tidak akan muncul di Dash lagi, pencarian Dash masih akan menampilkan gedit.desktop
file kami yang baru dibuat , yang mungkin secara tidak sengaja memberi petunjuk bagaimana cara keluar dari blok aplikasi.
Untuk menghindarinya, kita harus mengecualikan direktori ~/.local/share/applications
dari pencarian Dash dan menghapus histori pencarian.
Buka Pengaturan Sistem> "Keamanan & Privasi"> "File & Aplikasi" (tab). Tambahkan direktori ~/.local/share/applications
ke daftar untuk dikecualikan dari pencarian.
3. (Tidak) menggunakan terminal / baris perintah
Mengarahkan gedit
perintah(1)
Mengedit .desktop
file mencegah menggunakan aplikasi dari Dash, tetapi jika pengguna tahu AltF2kombinasi dan perintah untuk menjalankan aplikasi, ia masih dapat memulai aplikasi, seperti halnya dengan terminal. Ukuran ekstra yang bagus dan mudah diatur adalah membuat (jika belum ada) direktori ~/bin
dan membuat skrip kecil di direktori:
#!/bin/bash
zenity --info --text 'You are not allowed to use this application'
Jadikan itu dapat dieksekusi dan beri nama setelah aplikasi; gedit
pada kasus ini.
Karena ~/bin
sudah dalam PATH
, menjalankan perintah akan memanggil skrip alih-alih aplikasi "nyata" gedit
. Akibatnya, pesan yang sama You are not allowed to use this application
akan muncul
Mengarahkan gedit
perintah(2)
Cara lain (dengan efek lebih terbatas, lihat catatan) untuk mengarahkan ulang perintah aplikasi adalah menambahkan alias ke .bashrc
file:
gedit ~/.bashrc
tambahkan baris (contoh gedit):
alias gedit='zenity --info --text "You are not allowed to use this application"'
Catatan : ini hanya untuk digunakan sebagai tindakan tambahan, karena hanya mencegah aplikasi dipanggil dari terminal secara langsung. Mengklik dua kali pada file (misalnya) .txt
masih akan membuka aplikasi.
Jadikan penggunaan terminal sulit atau tidak mungkin sama sekali
Untuk mencegah penggunaan terminal, Anda juga dapat melakukan trik yang sama pada gnome-terminal.desktop
file - seperti di [1]
, dan / atau mengubah kombinasi tombol pintas default untuk menjalankan terminal (Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pemula" )
4. Alat kecil untuk secara otomatis membuat (atau membatalkan) versi .desktop
file yang diedit (seperti pada 1.)
Jika Anda menjalankan skrip di bawah ini dengan argumen block
atau unblock
(Anda harus menjalankannya dengan salah satu), Anda akan disajikan daftar dengan file desktop (global), yang mewakili aplikasi yang diinstal:
Pilih satu, dan aplikasi Anda diblokir atau diblokir, tergantung pada argumen Anda menjalankannya.
Catatan
Anda mungkin harus keluar / masuk untuk membuatnya berfungsi.
Naskah
#!/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)
Salin skrip ke file kosong, simpan sebagai block_apps.py
dan jalankan dengan:
python3 /path/to/block_apps.py block
atau
python3 /path/to/block_apps.py unblock
B. Opsi skrip
Memblokir aplikasi tertentu juga bisa dilakukan dengan menjalankan skrip di latar belakang. Script harus mengambil tindakan tertentu jika salah satu aplikasi "terlarang" dijalankan.
1. Skrip untuk memanipulasi layar saat aplikasi terlarang digunakan.
Skrip di bawah ini menawarkan cara yang fleksibel untuk memblokir aplikasi yang ditentukan pengguna. Ini berjalan dengan perintah sederhana, dengan aplikasi terlarang sebagai argumen, misalnya (dengan asumsi Anda membuat skrip dapat dieksekusi):
/path/to/block_apps.py firefox gedit gnome-terminal
Keuntungan memblokir aplikasi seperti ini adalah fleksibel; bahkan dalam satu akun, pengaturan yang berbeda dapat digunakan, cukup dengan menggunakan aplikasi lain sebagai argumen.
Apa yang dilakukannya
Dengan mengomentari salah satu kalimat:
# action = "xrandr --output "+screen+" --brightness 0"
atau
# action = "xrandr --output "+screen+" --rotate inverted"
Naskahnya juga:
hitam layar ( action = "xrandr --output "+screen+" --brightness 0"
):
atau membalikkannya ( action = "xrandr --output "+screen+" --rotate inverted"
):
( siapa bilang Unity tidak mengizinkan peluncur di sebelah kanan? )
Naskah
#!/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)
Cara Penggunaan
- Salin skrip ke file kosong, simpan sebagai
block_apps.py
, buat itu dapat dieksekusi
jalankan dengan perintah:
/path/to/block_apps.py <application_1> <application_2> <application_3> etc...
Penting
Untuk membunuh para block_apps.py
naskah dan mengembalikan pengaturan "normal", menggunakan script di bawah ini (membuatnya tersedia di bawah kombinasi tombol shortcut):
#!/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])
Seperti biasa dengan skrip, salin ke file kosong, simpan sebagai kill_blockapps.py
, buat itu dapat dieksekusi dan jalankan dengan:
/path/to/kill_blockapps.py
Anda mungkin ingin memilikinya di bawah tombol pintas: Pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah seperti di atas.