Насколько мне известно, все ярлыки в Unity Launcher имеют соответствующий файл * .desktop. У меня есть один ярлык (для skrooge ), у которого нет иконки. Как найти файл * .desktop, соответствующий этому ярлыку, чтобы я мог добавить к нему значок?
Вероятно, он находится в /usr/share/applications/
, но если вы хотите найти каждый .desktop
файл в системе, запустите:
find / -name '*.desktop'
или
sudo updatedb
locate *.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
напрямую; любые внесенные вами изменения будут автоматически перезаписаны при обновлении приложения менеджером пакетов.
Извлечено из здесь
Я знаю, что опаздываю стороне, но у меня есть более быстрое решение, чем то, принятое как ответ:
find / -iname "*desktop" -type f -not -path "/media*" -exec grep -il skrooge '{}' ';' 2> /dev/null
Это быстрее, потому что это не ищет, данные смонтировали файловые системы, и по всей вероятности файл на рабочем столе расположен в системном разделе.
, Кроме того, это, более вероятно, найдет то, что пропустила бы команда из принятого ответа. Поэтому файлы на рабочем столе не должны содержать имя приложения. Эта команда на самом деле ищет текст в каждом файле на рабочем столе.
Файлы пакетов snap для рабочего стола можно найти в /var/lib /snapd/desktop/applications/
и ниже /snap/
.
На самом деле я не знаю, какой файл .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 found
exit 1