Загрузка с терминала, startx не работает

1. Автоматически измените значок папки в первое найденное изображение в

, сценарий Python ниже изменит значок всех папок в каталоге (рекурсивно) в первый найденный допустимым файлом изображения в папке.

сценарий

#!/usr/bin/env python3
import subprocess
import os
import sys

# --- set the list of valid extensions below (lowercase)
# --- use quotes, *don't* include the dot!
ext = ["jpg", "jpeg", "png", "gif","icns", "ico"]
# ---

dr = sys.argv[1]

for root, dirs, files in os.walk(dr):
    for directory in dirs:
        folder = os.path.join(root, directory)
        try:
            first = min(p for p in os.listdir(folder) 
                        if p.split(".")[-1].lower() in ext)
        except ValueError:
            pass
        else:
              subprocess.Popen([
                  "gvfs-set-attribute", "-t", "string",
                  os.path.abspath(folder), "metadata::custom-icon",
                  "file://"+os.path.abspath(os.path.join(folder, first))
                  ])

Загрузка с Pastebin

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

  1. Копия сценарий в пустой файл, сохраните его как change_icon.py
  2. В заголовке сценария, редактирования, если Вам нравится, список расширений, которые будут использоваться в качестве действительных изображений значка.
  3. Выполнение это с целенаправленным каталогом как аргумент:

    python3 /path/to/change_icon.py 
    

Вот именно!

2. Более усовершенствованный

... должен сделать это опцией щелчка правой кнопкой в наутилусе:

enter image description here

сценарий немного отличается затем:

#!/usr/bin/env python3
import subprocess
import os

# --- set the list of valid extensions below (lowercase)
# --- use quotes, *don't* include the dot!
ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"]
# ---

# retrieve the path of the targeted folder
current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ")
dr = os.path.realpath(current)

for root, dirs, files in os.walk(dr):
    for directory in dirs:
        folder = os.path.join(root, directory)
        try:
            first = min(p for p in os.listdir(folder) 
                        if p.split(".")[-1].lower() in ext)
        except ValueError:
            pass
        else:
              subprocess.Popen([
                  "gvfs-set-attribute", "-t", "string",
                  os.path.abspath(folder), "metadata::custom-icon",
                  "file://"+os.path.abspath(os.path.join(folder, first))
                  ])

Загрузка с Pastebin

Для использования

  1. Создает, если это еще не существует, Копия каталога

    ~/.local/share/nautilus/scripts
    
  2. сценарий в пустой файл, сохраните его в ~/.local/share/nautilus/scripts как set_foldericons (никакое расширение!), и делают это исполняемым файлом .

  3. Выходят из системы и въезжают задним ходом, это работает.

Примечания

  • Это изменит значок всех папок внутренний папка, по которой щелкают правой кнопкой, не самой папки.
  • С тех пор os.path.realpath() используется, это также работает, если целенаправленная папка является ссылкой.

РЕДАКТИРОВАНИЕ

Отмена (сбросила) пользовательские значки в каталоге рекурсивно

, Если, по некоторым причинам требуется сбросить значки в папке к их значку (значкам) по умолчанию, используйте сценарий ниже. Просто:

  • копия это в пустой файл, сохраните его, поскольку reset_icons.py
  • выполняет его командой:

    python3 /path/to/reset_icons.py 
    

сценарий

#!/usr/bin/env python3
import subprocess
import os
import sys

dr = sys.argv[1]

for root, dirs, files in os.walk(dr):
    for directory in dirs:
        folder = os.path.join(root, directory)
        subprocess.Popen([
            "gvfs-set-attribute", os.path.abspath(folder),
            "-t", "unset", "metadata::custom-icon"
            ])
1
задан 13.04.2020, 17:53

2 ответа

Вы можете использовать

sudo start lightdm

. Это точно так же, как

sudo service lightdm start

. Также есть:

sudo stop lightdm
sudo restart lightdm

Если у вас есть другие менеджеры входа, замените Lightdm с тем, что у вас есть - так что, если вы используете GNOME (и выбрали менеджер входа в систему GNOME), это

sudo start gdm

Если у вас есть KDE (и вы выбрали менеджер входа в KDE), это

sudo start kdm
2
ответ дан 13.04.2020, 17:54

Попробуйте:

sudo service lightdm start

Это запустит ваш менеджер дисплеев LightDM.

0
ответ дан 13.04.2020, 17:55

Теги

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