Я бы хотел, чтобы мой рабочий стол всегда был организован по имени. Как мне этого добиться?
Я бы хотел, чтобы мой рабочий стол всегда был организован по имени. Как мне этого добиться?
Ответы:
Сценарий ниже переставит рабочий стол, как:
... в алфавитном порядке рабочего стола, как:
Заказал:
Кроме того, вы можете установить произвольное количество элементов по вертикали (строк); горизонтальный интервал будет установлен автоматически соответственно.
#!/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
Скрипту нужно xdotool
:
sudo apt-get install xdotool
Скопируйте скрипт в пустой файл, сохраните его как arrange_dt.py
Протестируйте его с помощью команды:
python3 /path/to/arrange_dt.py
в течение 20 секунд нажмите на рабочий стол, ваше новое соглашение будет применено. Если вы запускаете скрипт из ярлыка, когда рабочий стол находится впереди, расположение будет применено немедленно. Если рабочий стол не передний, скрипт ждет максимум 20 секунд. Если время превышает, просто нажмите,F5чтобы применить.
Если все работает нормально, добавьте его к сочетанию клавиш: выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду:
python3 /path/to/arrange_dt.py
Вы можете повлиять на расположение иконок тремя способами:
установить размер "плитки"
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
Это установит (максимальное) количество значков по вертикали. Размер из «плитки» будет, равный (х, у)
установить горизонтальное смещение
x_offs = -15
Это установит x-отклонение от положения по умолчанию матрицы значков в целом
Установите вертикальное смещение
y_offs = -30
Это установит отклонение от положения по умолчанию матрицы значков.
Пример, использующий:
# 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
Приведенное ниже объяснение в основном объясняет концепцию, а не кодирование
python
«ю.ш.os.listdir(Desktop)
Затем мы создаем матрицу:
На изображении ниже эти «виртуальные» квадраты видны, красная точка - там, где находится значок.
Тогда все, что нам нужно сделать, это поместить первый значок на половину размера квадрата, как по горизонтали, так и по вертикали.
Чтобы найти x-положение всех других значков, нам просто нужно разделить их индекс (начиная с нуля) на количество строк, округленных в меньшую сторону. Результат будет добавлен к позиции x первого значка (вверху слева), например:
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
Чтобы найти y-положение всех других значков, нам просто понадобится остаток индекса и количество строк. Результат x ширина квадрата будет добавлен к позиции y первого значка (вверху слева), например:
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
Впоследствии мы размещаем значки на рабочем столе, используя команду:
gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
Наконец, нам нужно нажать F5 с рабочим столом впереди , чтобы применить измененный макет (обновить рабочий стол). Если это так, это будет сделано немедленно. Если нет, сценарий повторяется в течение 20 секунд, если рабочий стол находится впереди, фактически нажимает F5и ломает. Если через 20 секунд рабочий стол все еще не был впереди, вам нужно нажать вручную F5.
6 -50 -50
но три папки слегка смещены. Есть идеи почему? Снимок экрана: i.imgur.com/XuGIiBT.png
Отчасти вдохновленный вышеуказанным вопросом, я написал iconic
для решения этой проблемы, позволив вам сортировать значки четырьмя различными способами. Дополнительно это будет:
Вы можете получить скрипт на github .
Вот главный экран:
Посетите страницу GitHub для иконических, чтобы увидеть все другие экраны, объяснения и копию сценария.