A. Konfigürasyon seçenekleri
Blok, çok deneyimli olmayan kullanıcıların belirli uygulamaları kullanmasını engellemek istiyorsa, uygulamanın masaüstü dosyasını (açıklandığı gibi [1]) düzenlemek (yerel bir kopyası ) muhtemelen en hızlı ve en kolay yoldur.
Ek bir engel oluşturmak ve / veya kullanıcının uygulamayı ( [2]ve [3]) engellemek için ne yaptığımızı çok kolay öğrenmesini önlemek için bazı ek şeyler yapılabilir .
Kurulum, deneyimli kullanıcılarla katılımsız durumlar için uygun değildir. Ortalama kullanıcılı "ev" durumlarında, birçok durumda yeterli olacaktır.
1. .desktop dosyasını düzenleyerek (yerel sürümü) gedit engelleme örneği
Uygulamanın masaüstü dosyasını kopyalayın /usr/share/applicationsiçin ~/.local/share/applications:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
Dosyayı düzenleyin: açık bir gedit penceresinin üzerine sürükleyerek gedit ile açın (hala yapabilirsiniz :)).
hattı değiştir
Exec=gedit %U
tarafından:
Exec=zenity --info --text 'You are not allowed to use this application'
Uygulamanın kısayollardan birinden başlatılmasını önlemek için (olası) kısayolları kaldırın:
çizgiyi kaldırın (gedit örneği için):
Actions=Window;Document;
ve bölüm (ler) gibi:
[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;
O andan itibaren (oturumu kapattıktan / oturum açtıktan sonra) kullanıcı Dash'ten gedit'i açmaya çalışır veya uygulamaya bağlı bir dosyayı açmaya çalışırsa bu mesajı görür:

Uygulamayı Dash'ten gizleme (isteğe bağlı hesaplama)
Yukarıdaki değişiklikleri yaptıktan sonra gedit.desktopdosyayı hala açık tutarak ek bir satır ekleyebiliriz:
NoDisplay=true
Bu satırı eklediğinizde gedit, Dash'te bile görünmez.
Geri alma
Geri almak için yerel .desktopdosyayı~/.local/share/applications
2. bulmak biraz daha zor hale getirmek
.desktopDosyayı düzenledikten sonra , uygulama Dash'te artık görünmezken, Dash arama yeni oluşturulan gedit.desktopdosyamızı göstermeye devam eder , bu da istemeden uygulama bloğundan nasıl kaçacağına dair bir ipucu verebilir.

Bundan kaçınmak için dizini ~/.local/share/applicationsDash aramasından hariç tutmalı ve arama geçmişini temizlemeliyiz.
Sistem Ayarları> "Güvenlik ve Gizlilik"> "Dosyalar ve Uygulamalar" ı açın (sekme). Dizini ~/.local/share/applicationsarama dışında bırakmak için listeye ekleyin .

3. (Not) terminal / komut satırını kullanma
geditKomutu yeniden yönlendirme(1)
.desktopDosyayı düzenlemek uygulamayı Dash'ten kullanmayı engeller, ancak kullanıcı AltF2kombinasyonu ve uygulamayı çalıştırma komutunu biliyorsa , tıpkı terminalde olduğu gibi uygulamayı başlatabilir. Güzel ve kolay bir ekstra önlem ayarlamak (henüz yoksa) dizini ~/binoluşturmak ve dizinde küçük bir komut dosyası oluşturmaktır:
#!/bin/bash
zenity --info --text 'You are not allowed to use this application'
Yürütülebilir hale getirin ve uygulamadan sonra adlandırın; geditbu durumda.
İçinde ~/binolduğundan PATH, komutu çalıştırmak "gerçek" gedituygulama yerine komut dosyasını çağırır . Sonuç olarak, aynı You are not allowed to use this applicationmesaj
geditKomutu yeniden yönlendirme(2)
Uygulamanın komutunu yeniden yönlendirmenin başka bir yolu da (notu daha fazladır) .bashrcdosyaya bir takma ad eklemektir :
gedit ~/.bashrc
satırı ekleyin (gedit örneği):
alias gedit='zenity --info --text "You are not allowed to use this application"'
Not : Bu sadece ekstra bir önlem olarak kullanılmalıdır, çünkü sadece uygulamanın doğrudan terminalden çağrılmasını önler. .txtAncak (örn.) Bir dosyaya çift tıklamak yine de uygulamayı açacaktır.
Terminal kullanımını zor veya imkansız hale getirin
Terminalin kullanımını önlemek için, gnome-terminal.desktop- dosyasında olduğu gibi aynı numarayı yapabilir [1]ve / veya terminali çalıştırmak için varsayılan kısayol tuşu bileşimini değiştirebilirsiniz (Sistem Ayarları> "Klavye"> "Kısayollar"> "Başlangıçlar" )
4. .desktopDosyanın düzenlenmiş bir sürümünü otomatik olarak oluşturmak (veya geri almak) için küçük bir araç (1.'de olduğu gibi)
Aşağıdaki betiği bağımsız değişkenle blockveya unblock( ikisinden biriyle çalıştırmanız gerekir) çalıştırırsanız, yüklü uygulamalarınızı temsil eden (genel) masaüstü dosyaları içeren bir liste sunulur:

Birini seçtiğinizde, uyguladığınız bağımsız değişkene bağlı olarak uygulamanız engellenir veya engellenmez.
Not
Çalışması için oturumu kapatmanız / oturum açmanız gerekebilir.
Senaryo
#!/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)
Komut dosyasını boş bir dosyaya kopyalayın, farklı kaydedin block_apps.pyve şunlardan birini kullanarak çalıştırın:
python3 /path/to/block_apps.py block
veya
python3 /path/to/block_apps.py unblock
B. Komut dosyasıyla yazılmış seçenekler
Belirli uygulamaları engelleme, arka planda bir komut dosyası çalıştırılarak da yapılabilir. "Yasak" uygulamalardan biri çalıştırılırsa, komut dosyasının belirli eylemleri gerçekleştirmesi gerekir.
1. Yasaklanmış uygulamalar kullanıldığında ekranı değiştirmek için kullanılan komut dosyası.
Aşağıdaki komut dosyası, kullanıcı tanımlı uygulamaları engellemek için esnek bir yol sunar. Basit bir komutla çalışır, yasak uygulamalar argüman olarak, örneğin (betiği çalıştırılabilir yaptığınızı varsayarak):
/path/to/block_apps.py firefox gedit gnome-terminal
Bunun gibi uygulamaları engellemenin avantajı esnek olmasıdır; tek bir hesapta bile, diğer ayarlar bağımsız değişken olarak kullanılarak farklı ayarlar kullanılabilir.
Bu ne yapar
Satırlardan birinin yorumunu kaldırarak:
# action = "xrandr --output "+screen+" --brightness 0"
veya
# action = "xrandr --output "+screen+" --rotate inverted"
Senaryo ya:
ekranı karartır ( action = "xrandr --output "+screen+" --brightness 0"):

veya baş aşağı çevirir ( action = "xrandr --output "+screen+" --rotate inverted"):
( Unity'nin fırlatıcıyı sağa koymasına izin vermediğini kim söyledi? )

Senaryo
#!/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)
Nasıl kullanılır
- Komut dosyasını boş bir dosyaya kopyalayın, farklı kaydedin
block_apps.py, yürütülebilir yapın
komut ile çalıştırın:
/path/to/block_apps.py <application_1> <application_2> <application_3> etc...
Önemli
To öldürmekblock_apps.py (kısayol tuş kombinasyonunu altında kullanılabilir hale) aşağıdaki komut dosyasını kullanmak, komut ve "normal" ayarlarını geri:
#!/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])
Her zaman olduğu gibi komut dosyalarında boş bir dosyaya kopyalayın, farklı kaydedin kill_blockapps.py, yürütülebilir yapın ve şu şekilde çalıştırın:
/path/to/kill_blockapps.py
Muhtemelen bunu bir kısayol tuşu altında kullanmak isteyeceksiniz: Seçin: Sistem Ayarları> "Klavye"> "Kısayollar"> "Özel Kısayollar". "+" İşaretini tıklayın ve komutu yukarıdaki gibi ekleyin.