Chciałbym, aby mój Pulpit był zawsze uporządkowany według nazwy. Jak mogę to osiągnąć?
Chciałbym, aby mój Pulpit był zawsze uporządkowany według nazwy. Jak mogę to osiągnąć?
Odpowiedzi:
Poniższy skrypt zmieni układ pulpitu:
... na alfabetycznie uporządkowany pulpit, taki jak:
Zamówione:
Ponadto można ustawić dowolną liczbę elementów w pionie (wiersze); odstępy w poziomie zostaną odpowiednio ustawione automatycznie.
#!/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
Skrypt potrzebuje xdotool
:
sudo apt-get install xdotool
Skopiuj skrypt do pustego pliku i zapisz go jako arrange_dt.py
Przetestuj - uruchom komendę:
python3 /path/to/arrange_dt.py
w ciągu 20 sekund kliknij pulpit, nowe ustawienie zostanie zastosowane. Jeśli uruchomisz skrypt ze skrótu, gdy pulpit jest z przodu, układ zostanie zastosowany natychmiast. Jeśli pulpit nie znajduje się na pierwszym planie, skrypt czeka maksymalnie 20 sekund. Jeśli czas przekroczy, po prostu naciśnij,F5aby zastosować.
Jeśli wszystko działa poprawnie, dodaj go do klawisza skrótu: wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie:
python3 /path/to/arrange_dt.py
Możesz wpływać na rozmieszczenie ikon na trzy sposoby:
ustaw rozmiar „kafelków”
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
Spowoduje to ustawienie (maksymalnej) liczby ikon w pionie. Wielkość z „płytek” będzie równa (x, y),
ustaw przesunięcie w poziomie
x_offs = -15
Spowoduje to ustawienie odchylenia x od domyślnej pozycji matrycy ikon jako całości
Ustaw przesunięcie pionowe
y_offs = -30
Spowoduje to ustawienie odchylenia y od domyślnej pozycji matrycy ikon
Przykład z użyciem:
# 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
Wyjaśnienie poniżej jest raczej wyjaśnieniem koncepcji niż kodowania
python
'sos.listdir(Desktop)
Następnie tworzymy macierz:
Na obrazku poniżej te „wirtualne” kwadraty są widoczne, czerwona kropka to miejsce, w którym umieszczona jest ikona.
Następnie wszystko, co musimy zrobić, to umieścić pierwszą ikonę na połowie wielkości kwadratu, zarówno poziomo, jak i pionowo.
Aby znaleźć pozycję x wszystkich innych ikon, wystarczy podzielić ich indeks (zaczynając od zera) przez liczbę wierszy, zaokrągloną w dół. Wynik zostanie dodany do pozycji x pierwszej ikony (u góry po lewej), na przykład:
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
Aby znaleźć pozycję y wszystkich innych ikon, potrzebujemy tylko pozostałej części indeksu i liczby wierszy. Wynik x szerokość kwadratu zostanie dodany do pozycji y pierwszej ikony (u góry po lewej), na przykład:
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
Następnie umieszczamy ikony na pulpicie, używając polecenia:
gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
Wreszcie musimy nacisnąć F5 pulpit z przodu , aby zastosować zmieniony układ (odświeżyć pulpit). W takim przypadku nastąpi to natychmiast. Jeśli nie, skrypt będzie próbował ponownie w ciągu 20 sekund, jeśli pulpit jest z przodu, praktycznie naciska F5i pęka. Jeśli po 20 sekundach pulpit nadal nie był na froncie, musisz ręcznie nacisnąć F5.
6 -50 -50
ale trzy foldery są lekko przesunięte. Jakieś pomysły dlaczego? Zrzut ekranu: i.imgur.com/XuGIiBT.png
Zainspirowany częściowo powyższym pytaniem napisałem, iconic
aby rozwiązać ten problem, umożliwiając sortowanie ikon na cztery różne sposoby. Dodatkowo:
Możesz pobrać skrypt na github .
Oto główny ekran:
Odwiedź stronę github, aby zobaczyć ikony, aby zobaczyć wszystkie pozostałe ekrany, objaśnienia i kopię skryptu.