Saya sangat suka Hot Corner. :-)
Apakah mungkin menjalankan perintah khusus di sudut panas seperti yang ditunjukkan di bawah ini?
Saya sangat suka Hot Corner. :-)
Apakah mungkin menjalankan perintah khusus di sudut panas seperti yang ditunjukkan di bawah ini?
Jawaban:
Instal CompizConfig Settings Manager (CCSM). Jalankan di terminal:
sudo apt-get install compizconfig-settings-manager
Buka CCSM.
Masukkan perintah yang Anda inginkan di salah satu slot. Misalnya:
Buka tab "Edge Bindings"
Klik "Tidak Ada" dan atur sudut panas yang Anda inginkan (atau tepi), yang sesuai dengan perintah yang baru saja Anda atur
Gerakkan mouse Anda ke sudut
Sekarang perintahmu dijalankan!
Dikonfirmasi bekerja pada 14.04.
Jika Anda menggunakan Unity dan sudah menginstal ccsm, tentu saja jawaban wjandrea adalah jawaban Anda. Jika tidak , atau untuk digunakan pada distro lain, alternatif yang ringan mungkin berguna.
Dengan skrip di bawah ini, Anda dapat mengatur perintah apa pun , khusus untuk masing-masing hotcorner Anda.
Sebagai contoh, saya membuat pengaturan berikut:
Tentu saja Anda juga dapat membuat perintah menjalankan skrip eksternal.
Selanjutnya, Anda dapat mengatur ukuran sudut panas di baris:
cornersize = 10
Cukup ubah nilainya (piksel). Script menetapkan area (kotak) untuk memicu perintah Anda:
#!/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
Kebutuhan skrip xdotool
sudo apt install xdotool
hotcorners2.py
Di bagian atas skrip, tetapkan perintah Anda (ingat tanda kutip)
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
(selanjutnya kiri atas / kanan, kiri bawah / kanan)
Tes-jalankan skrip:
python3 /path/to/hotcorners2.py
Jika semua berfungsi dengan baik, tambahkan ke Aplikasi Startup: Dash> Startup Applications> Add. Tambahkan perintah:
/bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"
Jika kita menggunakan komputasi yang sedikit lebih maju, kita bisa menggunakan radius alih-alih area kuadrat untuk memicu perintah (terima kasih kepada @pythagoras yang baik):
Perbedaan kecil, tetapi hanya untuk bersenang-senang:
#!/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
Hampir sama. Atur perintah Anda, dan radius untuk memicu, di bagian kepala skrip.
Jawaban wjandrea adalah jawaban yang paling cocok untuk seseorang yang menggunakan Ubuntu default atau Ubuntu Kylin (atau memiliki compiz sebagai manajer tampilan mereka), sehingga mendapat upvote dan rasa hormat saya. Jawaban yang diberikan di bawah ini, dapat digunakan pada Unity juga, tetapi mungkin akan sedikit berlebihan. Namun, pada lingkungan desktop yang tidak memiliki compiz, seseorang dapat menggunakan indikator yang disajikan di bawah ini. Saya sudah mengujinya secara singkat di Lubuntu 16.04 VM, jadi saya tahu ini berfungsi di sana, dan membuatnya kompatibel dengan Kylin 14.04 juga. Untuk desktop GNOME dan MATE, Anda harus memiliki dukungan untuk AppIndikator diaktifkan terlebih dahulu untuk menggunakan indikator apa pun.
Saya telah menerapkan indicator-edger
yang memungkinkan memicu perintah yang ditentukan pengguna berdasarkan posisi mouse di mana saja di sepanjang 4 tepi layar. Versi asli dilakukan dalam satu hari, dalam waktu sekitar 7 jam, sehingga cukup minimalis tetapi melakukan pekerjaan.
Indikator dikontrol melalui ~/.edger-commands.json
file, jelas dalam json
format. Itu dapat ditulis secara manual oleh pengguna, atau diatur melalui DEFINE COMMANDS
opsi indikator . Opsi aktifkan / nonaktifkan dipicu diingat dan ditulis secara otomatis ke file untuk kenyamanan pengguna. Contoh file konfigurasi akan seperti ini:
{
"right": "gnome-terminal",
"top": "firefox",
"left": "",
"bottom": "gnome-screenshot",
"enabled": true
}
Perhatikan "left"
entri dalam file. Tepi itu tidak disetel, tetapi karena json
sintaksis memerlukan string kosong di sana, yaitu kutipan ""
.
Setelah indikator mendeteksi bahwa pengguna telah menempatkan mouse di sepanjang salah satu sisi (dengan ~ 3 piksel margin), indikator akan mengirim pemberitahuan gelembung dan menjalankan perintah yang sesuai (jika ditentukan). Aktivasi pemicu tidak akan terulang kecuali jika pengguna menggerakkan mouse menjauh dari tepi.
Seperti yang dapat Anda lihat dari tangkapan layar di atas, indikator juga memiliki keluaran debug pada baris perintah. Jika Anda menemukan bug, silakan jalankan dari terminal, cari tahu kesalahan apa yang terjadi, dan kirimkan laporan bug yang sesuai pada halaman masalah GitHub proyek .
Saat ini tidak ada dukungan untuk sudut (hanya tepi) dan itu dibangun untuk pengaturan satu monitor (jelas, seseorang tidak dapat mencakup semua pangkalan dalam waktu 7 jam penciptaan), tetapi fitur-fitur itu mungkin akan tersedia pada akhirnya di masa depan.
Kode sumber tersedia di halaman proyek GitHub atau melalui Launchpad . Instalasi dilakukan melalui perintah-perintah berikut di terminal:
sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-edger