Mengatur Peluncur Persatuan yang berbeda per ruang kerja:
1. 2. 3. 4.
Solusi di bawah ini memudahkan untuk memiliki satu set ikon peluncur yang berbeda per ruang kerja, tidak peduli berapa banyak ruang kerja yang Anda miliki.
Penyiapan mencakup dua bagian:
Kombinasi tombol pintas (satu) untuk "mengingat" sekumpulan ikon peluncur untuk ruang kerja saat ini.
Script untuk dijalankan di latar belakang, melacak apa ruang kerja saat ini dan mengatur Unity Launcher yang sesuai. Kerjanya setiap kali pengguna beralih ruang kerja.
Bagaimana itu bekerja
Dua skrip kecil terlibat:
The pertama Script melakukan satu hal sederhana: menulis isi dari peluncur saat ini menjadi (tersembunyi) file dalam direktori home Anda, bernama (nomor) setelah ruang kerja Anda saat ini.
The kedua naskah mengawasi apa ruang kerja saat ini. Jika ada perubahan ruang kerja , skrip melihat apakah datafile (launcher-) yang sesuai ada (dibuat oleh skrip pertama). Jika demikian, itu membaca file dan mengubah Unity Launcher, seperti yang diingat dalam file.
Itu dia.
Cara mengatur
Skrip perlu wmctrl
diinstal:
sudo apt-get install wmctrl
Buat direktori tempat kedua skrip akan disimpan. Penting bahwa kedua skrip disimpan bersama dalam satu direktori, karena mereka berbagi fungsionalitas dan satu impor dari yang lain. Untuk alasan yang sama, Anda harus memberi nama persis seperti yang ditunjukkan di bawah ini.
Salin setiap skrip di bawah ini ke dalam file kosong (berbeda), simpan ke dalam direktori (dibuat dalam 2.
), dengan nama yang persis sama:
set_workspace.py
#!/usr/bin/env python3
import subprocess
import os
workspace_data = os.environ["HOME"]+"/.launcher_data_"
key = ["gsettings get ", "gsettings set ", "com.canonical.Unity.Launcher favorites"]
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the current viewport
res = get_res()
vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
def remember_current():
currlauncher = subprocess.check_output(["/bin/bash", "-c", key[0]+key[2]]).decode("utf-8").strip()
f = workspace_data+current()
open(f, "w").write(currlauncher)
if __name__ == "__main__":
remember_current()
launcher_perworkspace.py
#!/usr/bin/env python3
import subprocess
import set_workspace
import time
workspace_data = set_workspace.workspace_data
key = set_workspace.key
def check_datafile(desktop):
f = workspace_data+str(desktop)
try:
new_launcher = open(f).read()
command = key[1]+key[2]+' "'+str(new_launcher)+'"'
subprocess.Popen(["/bin/bash", "-c", command])
except FileNotFoundError:
pass
curr_dt1 = set_workspace.current()
check_datafile(curr_dt1)
while True:
time.sleep(1)
curr_dt2 = set_workspace.current()
if curr_dt2 != curr_dt1:
check_datafile(curr_dt2)
curr_dt1 = curr_dt2
Tambahkan skrip pertama ( set_workspace.py
) ke kombinasi tombol pintas pilihan Anda: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:
python3 /path/to/set_workspace.py
Jalankan kombinasi tombol dan lihat apakah file, seperti: .launcher_data_3
dibuat di direktori home Anda. Anda mungkin perlu menekan Ctrl+ Huntuk membuat file terlihat (file, dimulai dengan yang .
tidak terlihat secara default).
Menavigasi melalui ruang kerja Anda dan ulangi prosedur: mengatur kombinasi ikon peluncur, dan tekan kombinasi tombol Anda untuk "mengingat" set untuk ruang kerja tertentu.
Anda praktis sudah selesai sekarang. Tes-jalankan skrip latar belakang dengan perintah (dari jendela terminal, terus jalankan):
python3 /path/to/launcher_perworkspace.py
Jika semua berfungsi dengan baik, dan peluncur Anda berpindah per ruang kerja, tambahkan perintah berikut ke aplikasi Startup Anda: Dash> Startup Applications> Add:
/bin/bash -c "sleep 15&&python3 /path/to/launcher_perworkspace.py"
Catatan
- Jika Anda ingin mengubah set ikon peluncur untuk ruang kerja tertentu, cukup navigasikan ke ruang kerja, tambahkan / hapus ikon sesuka Anda dan tekan kombinasi tombol Anda (tidak perlu memulai ulang skrip latar belakang).
- Dari komentar (s) saya merasa ada beberapa kesalahpahaman pada jalan pintas untuk mengingat Peluncur saat ini untuk ruang kerja saat ini. Anda hanya perlu satu pintasan keyboard untuk "menyimpan" peluncur saat ini untuk ruang kerja saat ini. Ini akan bekerja persis sama, tidak peduli di ruang kerja apa Anda berada. Script itu sendiri akan menentukan apa yang ruang kerja saat ini.
Edit
Dari komentar Anda, saya mengerti bahwa Anda tidak yakin untuk menjalankan skrip dan Anda takut Anda akan mengacaukan peluncur Anda saat ini.
Saya cukup yakin bahwa terlalu banyak (atau terlalu sedikit :)) menghormati apa yang dilakukan skrip. Namun, Anda dapat mencadangkan Unity Launcher saat ini dengan perintah:
printf 'gsettings set com.canonical.Unity.Launcher favorites "' > ~/launcher_output&&printf "$(gsettings get com.canonical.Unity.Launcher favorites)">>~/launcher_output&&printf '"'>>~/launcher_output
Ini akan membuat file ~/launcher_output
, berisi perintah lengkap untuk mengembalikan Peluncur Persatuan Anda ke situasi awal. Dalam keadaan darurat, cukup salin konten file dan rekatkan di terminal.
Tetapi sekali lagi, sangat tidak mungkin Anda akan mengacaukan peluncur Anda, kecuali jika Anda mengubah skrip secara manual.
EDIT PENTING (2)
Seperti yang diminta dalam komentar, dengan ini versi yang berjalan tanpa harus menggunakan kombinasi jalan pintas apa pun ; jalankan saja skrip dan mulailah mengatur peluncur Anda di ruang kerja tertentu. Script akan membuat file (tidak terlihat) di direktori home Anda, untuk mengingat set Anda (Unity-) peluncur di ruang kerja yang berbeda.
Saya mencoba ini dalam "versi 1" dari skrip, tetapi selalu "menanamkan" dua peluncur-cek antara dua ruang kerja-cek ternyata merupakan trik untuk mencegah perilaku yang tidak diinginkan (menyimpan data yang salah) ketika bergerak cepat melalui ruang kerja.
Bagaimana cara menggunakan
Seperti versi pertama, skrip ini menggunakan wmctrl
:
sudo apt-get install wmctrl
Salin skrip ke file kosong, simpan sebagai launcher_toworkspace.py
Jalankan dengan perintah:
python3 /path/to/launcher_toworkspace.py
Jika berfungsi seperti yang diharapkan, tambahkan perintah berikut ke Aplikasi Startup Anda:
/bin/bash -c "sleep 15&&python3 /path/to/launcher_toworkspace.py"
Naskah
#!/usr/bin/env python3
import subprocess
import os
import time
datadir = os.environ["HOME"]+"/.config/lswitcher"
if not os.path.exists(datadir):
os.makedirs(datadir)
workspace_data = datadir+"/launcher_data_"
key = [
"gsettings get ",
"gsettings set ",
"com.canonical.Unity.Launcher favorites",
]
def get_launcher():
return subprocess.check_output(
["/bin/bash", "-c", key[0]+key[2]]
).decode("utf-8").strip()
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the current viewport
res = get_res()
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1
curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
curr_ws1 = current()
currlauncher1 = get_launcher()
while True:
time.sleep(1)
currlauncher2 = get_launcher()
curr_ws2 = current()
datafile = workspace_data+curr_ws2
if curr_ws2 == curr_ws1:
if currlauncher2 != currlauncher1:
open(datafile, "wt").write(currlauncher2)
else:
if not os.path.exists(datafile):
open(datafile, "wt").write(currlauncher2)
else:
curr_set = open(datafile).read()
command = key[1]+key[2]+' "'+str(curr_set)+'"'
subprocess.Popen(["/bin/bash", "-c", command])
curr_ws1 = curr_ws2
currlauncher1 = get_launcher()
Catatan
Jika Anda mengatur ruang kerja Anda dengan versi skrip sebelumnya, mereka juga harus bekerja untuk versi ini.
AKP
Per 2015-04-23, pertanyaan bagus dari Dennis J, dan dorongan dari Parto, telah mengarah pada pembuatan ppa
skrip untuk, dibahas di webupd8 , termasuk GUI untuk mengelolanya.
ppa:vlijm/lswitcher
Untuk menginstalnya, jalankan:
sudo add-apt-repository ppa:vlijm/lswitcher
sudo apt-get update
sudo apt-get install lswitcher
Sejak sekarang, itu dikemas untuk Trusty & Utopic. Saya akan menambahkan orang lain setelah pengujian. Saya juga akan menambahkan .deb
installer, tapi saya sarankan menggunakan ppa
, karena biasanya hal-hal semacam ini diperbarui setiap sekarang dan kemudian.
Karena lokasi data viewport telah berubah dari ~/
menjadi ~/.config/lswitcher
, Anda harus mengatur Peluncur Persatuan lagi jika Anda menggunakan skrip sebelumnya.