Как я могу всегда сохранять Значки на рабочем столе организованными и отсортированными по имени?

Я хотел бы сохранить свой Рабочий стол всегда организовываемым по имени. Как я могу достигнуть этого?

Рабочий стол, не организованный по имени:

enter image description here

Рабочий стол, организовав по имени:

enter image description here

8
задан 19 June 2019 в 17:46

2 ответа

Расположите значки на рабочем столе в алфавитном порядке командой

Сценарий ниже перестроит рабочий стол как:

enter image description here

... в в алфавитном порядке заказанный рабочий стол как:

enter image description here

Заказанный:

  • каталоги сначала, затем файлы
  • сверху донизу, слева направо

Определите номер объектов вертикально

Кроме того, можно определить произвольный номер объектов вертикально (строки); пространство по горизонтали будет установлено автоматически соответственно.

Сценарий

#!/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

Как использовать

  1. Потребности сценария xdotool:

      sudo apt-get install xdotool
    
  2. Скопируйте сценарий в пустой файл, сохраните его как arrange_dt.py

  3. Тестовый прогон это командой:

    python3 /path/to/arrange_dt.py
    

    в течение 20 секунд нажимают на рабочий стол, Ваше новое расположение будет применено. Если Вы запустите скрипт от ярлыка, в то время как рабочий стол впереди, расположение будет сразу применено. Если рабочий стол не является frontmost, сценарий ожидает в течение макс. 20 секунд. Если время превышает, просто нажмите F5 для применения.

  4. Если все хорошо работает, добавьте его к сочетанию клавиш: выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/arrange_dt.py
    

Опции

Можно влиять на расположение значков тремя способами:

  1. установите размер "мозаик"

    # set the size of the squares (indirectly, by setting n- rows)
    rows = 10
    

    Это определит (макс.) номер значков вертикально. Размер "мозаик" будет, быть равным (x, y)

  2. установите горизонтальное смещение

    x_offs = -15 
    

    Это установит x-отклонение от положения по умолчанию матрицы значка в целом

  3. Установите вертикальное смещение

    y_offs = -30
    

    Это установит y-отклонение от положения по умолчанию матрицы значка

    Пример, с помощью:

    # 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
    

    enter image description here

Объяснение

Объяснение ниже является главным образом объяснением на понятии, а не кодированием

  • Для расположения значков в алфавитном порядке мы сначала перечисляем объекты на рабочем столе, с помощью python os.listdir(Desktop)
  • Затем мы разделяем файлы на два подсписка; файлы/папки и вид оба списка, присоединяются к ним снова, папки сначала.
  • Затем мы создаем матрицу:

    • Так как номер строк определяется в заголовке сценария, мы делим высоту экрана количеством строк. Таким образом у нас есть размер "квадратов", значки будут помещены в (в центре).
    • Так как значки так же расположены с интервалами горизонтально, мы можем затем вычислить (макс.) число столбцов путем деления ширины экрана шириной "квадратов", в которых значки будут помещены (на значок), округлены в меньшую сторону до первого целого числа ниже.
    • В изображении ниже, эти "виртуальные" квадраты видимы, красная точка - то, куда значок помещается.

      enter image description here

    • Затем все, что мы должны сделать, поместить первый значок в половину размера квадрата, и горизонтально и вертикально.

    • Для нахождения x-position всех других значков мы просто должны разделить их индекс (запускающийся с нуля) количеством строк, округленных в меньшую сторону. Результат будет добавлен к 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-position всех других значков нам просто нужны остаток от индекса и количество строк. Результат 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.

9
ответ дан 23 November 2019 в 05:40

Вдохновленный частично вышеупомянутым вопросом, записал я iconic решить эту проблему путем разрешения Вам значки вида четыре различных пути. Дополнительно это будет:

  • Определите сетку для интервала значков ближе или далее независимо
  • Сохраните настольную установку значка и восстановите ее позже для различных установок домой и работы
  • Позвольте Вам перемещать значки в любой из трех мониторов
  • Не страдают "потерянным синдромом значка", который появляется, когда мониторы нескольких разрешений используются
  • Значки вида в алфавитном порядке, в алфавитном порядке со "Ссылкой на" проигнорированный префикс, вид измененным возрастанием даты или убыванием даты
  • Позвольте другой размер сетки (столбцы x строки) в зависимости от монитора, EG больше на мониторе 4K, чем монитор 2K
  • Мгновенная Кнопка проверки для быстрого экспериментирования на строке столбца x изменяется или зарезервированные изменения пространства для оставленного монитора, вершина, право или нижние области
  • Кнопка проверки продлится в течение x секунд, определенных Вами, очистит все окна перед тестом и восстановит их после теста
  • Сценарий Bash для легких модификаций

Можно получить сценарий на GitHub.

Вот основной экран:

iconic main menu.png

Посетите страницу GitHub для графического для наблюдения всех других экранов, объяснений и копии сценария.

0
ответ дан 23 November 2019 в 05:40

Другие вопросы по тегам:

Похожие вопросы: