Насколько мне известно, все ярлыки в Unity Launcher имеют соответствующий файл *.desktop. У меня есть один короткий путь (для скрудж), у которого нет значка. Как я могу найти файл *.desktop, соответствующий этому ярлыку, чтобы я мог добавить к нему значок?
Он, вероятно, сидит в /usr/share/applications/
но если вы хотите найти все .desktop
файл в системе запустите это:
find / -name '*.desktop'
или
sudo updatedblocate *.desktop
Чтобы найти файлы с "skrooge" в их пути или имени, добавьте grep к команде:
locate *.desktop | grep -iR "skrooge"
Система хранит файлы .desktop в /usr/share/applications/
. К сожалению, если вы откроете эту папку в nautilus, файлы .desktop появятся со значком, указанным в файле, и с именем файла, вызываемым внутри файла. Вам также не будет разрешено редактировать эти файлы, нажав на них и выбрав пункт Изменить.
Чтобы отредактировать эти файлы, вам необходимо открыть эту папку в окне терминала. Выполняя ls
команда покажет все файлы .desktop с их фактическими именами. Когда вы найдете файл .desktop, который хотите изменить, запустите gksudo gedit {file-name}.desktop
.
Обычно все файлы .desktop, которые вы создаете или редактируете, хранятся в вашей домашней папке ~/.local/share/applications
.
Некоторые дополнительные сведения в дополнение к другим ответам:
Типично, .desktop
файлы для пакетов будут находиться в /usr/share/applications
.
Если вы хотите, вы могли бы скопировать один из них в ~/.local/share/applications
и отредактируйте его там без необходимости sudo. Предметы в ~/.local/share/applications
будет переопределение совпадающие элементы в /usr/share/applications
и /usr/local/share/applications
, но видны только вашему пользователю.
В качестве альтернативы вы можете поместить отредактированную копию в /usr/local/share/applications
где он будет переопределять любой в /usr/share/applications
в то же время оставаясь видимым для всей системы.
Обратите внимание, что вы не должны редактировать .desktop
файлы в /usr/share/applications
напрямую; любые внесенные вами изменения будут автоматически перезаписывается когда приложение обновляется менеджером пакетов.
Извлеченный из здесь
Файлы рабочего стола пакетов snap можно найти в /var/lib/snapd/desktop/applications/
и ниже /snap/
.
Я знаю, что опаздываю на вечеринку, но у меня есть более быстрое решение, чем то, которое принято в качестве ответа:
find / -iname "*desktop" -type f -not -path "/media*" -exec grep -il skrooge '{}' ';' 2> /dev/null
Это быстрее, потому что он не выполняет поиск в файловых системах, подключенных к данным, и, скорее всего, файл рабочего стола находится в системном разделе.
Более того, с большей вероятностью можно найти то, что команда из принятого ответа пропустила бы. Это связано с тем, что файлы рабочего стола не обязательно должны содержать имя приложения. Эта команда фактически выполняет поиск текста в каждом файле рабочего стола.
Вы можете найти все каталоги с файлами рабочего стола в переменной окружения XDG_DATA_DIRS. Файлы *.desktop могут находиться в applications
каталог в каждом из каталогов в этой переменной. Например.:
> echo $XDG_DATA_DIRS/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
Вы можете использовать этот скрипт bash для составления списка всех файлов рабочего стола, используемых системой (например, для создания панели или меню приложений).:
for p in ${XDG_DATA_DIRS//:/ }; do find $p/applications -name '*.desktop' done
Я не нашел никакой документации для этого, но здесь есть некоторая информация об этой переменной окружения: https://unix.stackexchange.com/a/531664
На самом деле я сейчас не знаю, какой файл .desktop вступает в силу. Мое лучшее предположение заключается в том, что из https://wiki .archlinux.org/index.php/Desktop_entries , чтобы создать подобный сценарий и запустить его:
#!/bin/sh# try to find the effective desktop file# (there seems to be no documented standard for this)use_if_desktop_file () { if [ -r "$1" ] && [ "$(xdg-mime query filetype "$1")" = application/x-desktop ]; then echo "$1" exit fi}for d in ~/.local/share/applications /usr/local/share/applications \ /usr/share/applications; do use_if_desktop_file "$d/$1" use_if_desktop_file "$d/$1.desktop"done# no file foundexit 1