Saya ingin menjaga Desktop saya selalu diatur berdasarkan nama. Bagaimana saya bisa mencapai ini?
Saya ingin menjaga Desktop saya selalu diatur berdasarkan nama. Bagaimana saya bisa mencapai ini?
Jawaban:
Script di bawah ini akan mengatur ulang desktop seperti:
... ke desktop yang disusun menurut abjad seperti:
Dipesan:
Selanjutnya, Anda dapat mengatur jumlah item yang berubah-ubah secara vertikal (baris); jarak horizontal akan diatur secara otomatis.
#!/usr/bin/env python3
import subprocess
import os
import math
import time
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
# set x/y offset of the matrix if you want
x_offs = -15
y_offs = -30
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8")
dt = get(["xdg-user-dir", "DESKTOP"]).strip()
# find size of the left screen
left = [int(n) for n in sum(
[s.split("+")[0].split("x") for s in \
get("xrandr").split() if "+0+" in s], [])]
# size of the squares (icon area)
sqr = int((left[1]/rows))
# number of cols, squares
cols = math.floor(left[0]/sqr)
n_sqrs = cols*rows
# define positions (matrix)
pos = list([[
str(int((math.floor(n/rows)*sqr)+(sqr/2)+x_offs)),
str(int(((n%rows)*sqr)+(sqr/2)+y_offs)),
] for n in range(n_sqrs)])
# list iconfiles, split into dirs and files, sort & combine
iconlist = [os.path.join(dt, item) for item in \
sorted([item for item in os.listdir(dt) if not "~" in item])]
dirs = []; files = []
for it in iconlist:
if os.path.isfile(it):
files.append(it)
else:
dirs.append(it)
iconlist = dirs+files
# place icons in position(s)
for i, item in enumerate(iconlist):
location = (",").join(pos[i])
subprocess.call(["gvfs-set-attribute", "-t", "string", item,
'metadata::nautilus-icon-position', location])
# simulate F5 to refresh desktop, retry for max 20 secs if not in front
t = 0
while t < 40:
w_id = [l.split()[-1] for l in get(["xprop", "-root"]).splitlines() \
if "_NET_ACTIVE_WINDOW(WINDOW):" in l][0]
if "desktop" in get(["xprop", "-id", w_id, "WM_CLASS"]):
subprocess.Popen(["xdotool", "key", "F5"])
break
else:
time.sleep(0.5)
t += 1
Kebutuhan skrip xdotool
:
sudo apt-get install xdotool
Salin skrip ke file kosong, simpan sebagai arrange_dt.py
Uji-jalankan dengan perintah:
python3 /path/to/arrange_dt.py
dalam 20 detik klik pada desktop, pengaturan baru Anda akan diterapkan. Jika Anda menjalankan skrip dari pintasan, saat desktop di depan, pengaturan akan segera diterapkan. Jika desktop tidak berada di depan, skrip menunggu maksimal 20 detik. Jika waktu melebihi, cukup tekanF5untuk menerapkan.
Jika semuanya berfungsi dengan baik, tambahkan ke tombol pintasan: pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:
python3 /path/to/arrange_dt.py
Anda dapat memengaruhi pengaturan ikon dengan tiga cara:
atur ukuran "ubin"
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
Ini akan mengatur (maks) jumlah ikon secara vertikal. The ukuran dari "ubin" akan, sama (x, y)
atur offset horizontal
x_offs = -15
Ini akan mengatur deviasi x dari posisi default dari icon-matrix secara keseluruhan
Atur offset vertikal
y_offs = -30
Ini akan mengatur deviasi y dari posisi default dari ikon-matriks
Contoh, menggunakan:
# set the size of the squares (indirectly, by setting n- rows)
rows = 6
# set x/y offset of the matrix if you want
x_offs = 50
y_offs = 10
Penjelasan di bawah ini sebagian besar merupakan penjelasan tentang konsep daripada pengkodean
python
'sos.listdir(Desktop)
Lalu kita buat matriks:
Pada gambar di bawah ini, kotak "virtual" ini terlihat, titik merah adalah tempat ikon ditempatkan.
Maka yang harus kita lakukan adalah menempatkan ikon pertama di setengah dari ukuran persegi, baik secara horizontal maupun vertikal.
Untuk menemukan posisi-x semua ikon lainnya, kita hanya perlu membagi indeksnya (dimulai dengan nol) dengan jumlah baris, dibulatkan ke bawah. Hasilnya akan ditambahkan ke posisi x ikon pertama (kiri atas), misalnya:
item 10 (index 9): 9/4 = 2,25, rounded down: 2
x position = position of icon 0 + 2 x the width of a square
item 17 (index 16): 16/4 = 4, rounded down: 4
x position = position of icon 0 + 4 x the width of a square
Untuk menemukan posisi-y dari semua ikon lain, kita hanya perlu sisa dari indeks dan jumlah baris. Hasil x lebar kotak akan ditambahkan ke posisi y ikon pertama (kiri atas), misalnya:
item 10 (index 9): 9%4 = 1
y position = position of icon 0 + 1 x the height of a square
item 17 (index 16): 16%4 = 0
y position = position of icon 0 + 0 x the height of a square
Selanjutnya, kami menempatkan ikon di desktop, menggunakan perintah:
gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
Akhirnya, kita perlu menekan F5 dengan desktop di depan , untuk menerapkan tata letak yang diubah (menyegarkan desktop). Jika itu masalahnya, itu akan segera dilakukan. Jika tidak, skrip akan coba selama 20 detik jika desktop ada di depan, secara virtual menekan F5dan merusak. Jika setelah 20 detik desktop masih tidak di depan, Anda perlu menekan secara manual F5.
6 -50 -50
tetapi tiga folder sedikit diimbangi. Ada ide mengapa? Tangkapan layar: i.imgur.com/XuGIiBT.png
Terinspirasi sebagian oleh pertanyaan di atas, saya menulis iconic
untuk memecahkan masalah ini dengan membiarkan Anda mengurutkan ikon dengan empat cara berbeda. Selain itu akan:
Anda bisa mendapatkan skripnya di github .
Inilah layar utama:
Kunjungi halaman github untuk ikon untuk melihat semua layar lainnya, penjelasan dan salinan skrip.