Sıcak Köşeleri gerçekten seviyorum. :-)
Aşağıda gösterildiği gibi sıcak köşede özel bir komut çalıştırmak bir şekilde mümkün mü?
Sıcak Köşeleri gerçekten seviyorum. :-)
Aşağıda gösterildiği gibi sıcak köşede özel bir komut çalıştırmak bir şekilde mümkün mü?
Yanıtlar:
CompizConfig Ayarlar Yöneticisi'ni (CCSM) yükleyin. Terminalde çalıştır:
sudo apt-get install compizconfig-settings-manager
CCSM'yi açın.
Yuvalardan birine istediğiniz komutu girin. Örneğin:
"Kenar Bağlamaları" sekmesine gidin
"Hiçbiri" ni tıklayın ve yeni ayarladığınız komuta karşılık gelen istediğiniz sıcak köşeyi (veya kenarı) ayarlayın
Farenizi köşeye getirin
Şimdi komutunuz çalıştırıldı!
14.04 tarihinde çalıştığı onaylandı.
Unity kullanıyorsanız ve ccsm yüklüyse, wjandrea'nın cevabı elbette cevabınızdır. Değilse veya diğer dağıtımlarda kullanmak için hafif bir alternatif faydalı olabilir.
Aşağıdaki komut dosyasıyla, hotcorner'larınızın her birine özgü herhangi bir komutu ayarlayabilirsiniz .
Örnek olarak, aşağıdaki kurulumu yaptım:
Elbette komutların harici komut dosyalarını çalıştırmasını da sağlayabilirsiniz.
Ayrıca, satırdaki sıcak köşenin boyutunu ayarlayabilirsiniz :
cornersize = 10
Sadece değeri (piksel) değiştirin. Komut dosyası, komutlarınızı tetiklemek için (kare) alanları ayarlar:
#!/usr/bin/env python3
import subprocess
import time
cornersize = 20
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
match1 = None
while True:
time.sleep(1)
xy = get_pos()
x = xy[0]; y = xy[1]
test = [
[x < cornersize, y < cornersize],
[x > res[0]-cornersize, y < cornersize],
[x < cornersize, y > res[1]-cornersize],
[x > res[0]-cornersize, y > res[1]-cornersize],
]
match2 = [i for i, p in enumerate(test) if all(p)]
if match2 != match1:
if match2:
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
Betiğin ihtiyacı var xdotool
sudo apt install xdotool
hotcorners2.py
Komut dosyasının başında komutlarınızı ayarlayın (tırnaklara dikkat edin)
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
(daha sonra sol üst / sağ, sol alt / sağ)
Komut dosyasını test edin:
python3 /path/to/hotcorners2.py
Tümü iyi çalışıyorsa Başlangıç Uygulamaları'na ekleyin: Çizgi> Başlangıç Uygulamaları> Ekle. Komutu ekleyin:
/bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"
Biraz daha gelişmiş bilgi işlem kullanırsak , komutları tetiklemek için kare alan yerine yarıçap kullanabiliriz (iyi eski @pythagoras sayesinde):
Küçük fark, ama sadece eğlence için:
#!/usr/bin/env python3
import subprocess
import math
import time
# set distance (hotcorner sensitivity)
radius = 20
# top-left, top-right, bottom-left, bottom-right
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
# get the resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
# list the corners, could be more elegant no doubt
corners = [[0, 0], [res[0], 0], [0, res[1]], [res[0], res[1]]]
match1 = None
while True:
time.sleep(1)
pos = get_pos()
# get the current difference from the mousepointer to each of the corner (radius)
diff = [int(math.sqrt(sum([(c[i]-pos[i])**2 for i, n in enumerate(res)])))\
for c in corners]
# see if any of the corners is "approached" within the radius
match2 = [diff.index(n) for n in diff if n < radius]
# if so, and the corresponding command is not set to None, run it.
if all([match2 != match1, match2]):
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
Hemen hemen aynı. Komutlarınızı ve tetiklenecek yarıçapı komut dosyasının baş bölümünde ayarlayın.
wjandrea'nın cevabı , varsayılan Ubuntu veya Ubuntu Kylin kullanan (veya ekran yöneticisi olarak compiz olan) biri için en uygun cevaptır, bu yüzden benim oyumu ve saygımı alır. Aşağıda verilen cevap Birlik üzerinde de kullanılabilir, ancak muhtemelen biraz gereksiz olacaktır. Ancak, compiz olmayan masaüstü ortamlarında, aşağıda sunulan gösterge kullanılabilir. Kısaca Lubuntu 16.04 VM'de test ettim, bu yüzden orada çalıştığını biliyorum ve Kylin 14.04 ile de uyumlu hale getirdi. GNOME ve MATE masaüstü bilgisayarlar için, herhangi bir göstergeyi kullanabilmek için önce AppIndicators'ı etkinleştirmeniz gerekir.
indicator-edger
Ekranın 4 kenarı boyunca herhangi bir yerde fare konumuna göre kullanıcı tanımlı komutları tetiklemeye izin veren uyguladım . Orijinal versiyon bir gün içinde, yaklaşık 7 saat içinde yapıldı, bu yüzden oldukça minimalist ama işi yapıyor.
Gösterge ~/.edger-commands.json
, açıkça json
formatta dosya üzerinden kontrol edilir . Kullanıcı tarafından manuel olarak yazılabilir veya göstergenin DEFINE COMMANDS
seçeneği ile ayarlanabilir . Tetiklemeyi etkinleştirme / devre dışı bırakma seçeneği hatırlanır ve kullanıcının rahatlığı için otomatik olarak dosyaya yazılır. Örnek yapılandırma dosyası şöyle olacaktır:
{
"right": "gnome-terminal",
"top": "firefox",
"left": "",
"bottom": "gnome-screenshot",
"enabled": true
}
"left"
Dosyadaki girişi not edin . Bu kenar ayarlanmamıştır, ancak json
sözdizimi nedeniyle orada boş bir dize, yani tırnak işareti olması gerekir ""
.
Gösterge, kullanıcının fareyi kenarlardan herhangi birine (~ 3 piksel kenar boşluğu ile) yerleştirdiğini algıladığında, gösterge bir kabarcık bildirimi gönderir ve uygun komutu (tanımlanmışsa) çalıştırır. Kullanıcı fareyi kenardan uzaklaştırmadıkça tetiğin etkinleştirilmesi tekrarlanmaz.
Yukarıdaki ekran görüntüsünde görebileceğiniz gibi, göstergede ayrıca komut satırında hata ayıklama çıkışı vardır. Herhangi bir hata bulursanız, terminalden çalıştırmaktan çekinmeyin, hatanın ne olduğunu öğrenin ve projenin GitHub'ının sorunlar sayfasında uygun hata raporu gönderin .
Şu anda köşeler için destek yok (sadece kenarlar) ve tek monitör kurulumu için üretildi (açıkçası, oluşturulduktan sonraki 7 saat içinde tüm tabanları kapatamaz), ancak bu özellikler gelecekte kullanılabilir.
Kaynak kodu Projeler GitHub sayfasında veya Launchpad'de bulunabilir . Kurulum terminalde aşağıdaki komutlarla gerçekleştirilir:
sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-edger