制作 .desktop 文件 - 仅几个问题

制作 .desktop 文件 - 仅几个问题

我想问一些有关 .desktop 文件的问题,并找出一些我认为相当巧妙的东西。

首先我要说的是,我正在运行内核为 [3.2.0-65-generic-pae] 的 [elementary OS Luna]。

我对 .desktop 文件及其用途略知一二。我从 eOS IRC 上的某个人那里学到了这一点。制作自己的 .desktop 文件时,有一件小事总是困扰着我。我相信,当您通过其 .desktop 打开应用程序时,它会在 ubuntu 中点亮该图标。在 eOS 中,我们也会得到一个小指示灯。它与图标本身一起出现。当您制作自己的 .desktop 文件时,它不会出现。

例如,我制作了一个 .desktop,它附加到可以打开 .jar 的 .sh 上。当我单击图标时,它会按照我的意愿打开。我唯一不喜欢的是弹出了一个全新的图标。它是 Oracle Java 图标,而且很模糊,很碍眼。我很好奇是否有一个命令可以放入我的 .desktop 中,使它只点亮原始图标,就像其他应用程序一样。

另外,我很好奇是否有办法将 .png 之类的文件转换为 .desktops 图标的文件格式。

提前感谢您。

答案1

首先我建议你查看文件日志

打开 终端
auditctl -a exit,always -w /path/to/file 并按 Enter
sudo nano /var/log/audit/audit.log 并按 Enter 查看日志


完整的 Freedesktop.org 参考:桌面入门规格

Freedesktop 示例

[Desktop Entry]
Version=1.0
Type=Application
Name=Foo Viewer
Comment=The best viewer for Foo objects available!
TryExec=fooview
Exec=fooview %F
Icon=fooview
MimeType=image/x-foo;
Actions=Gallery;Create;

[Desktop Action Gallery]
Exec=fooview --gallery
Name=Browse Gallery

[Desktop Action Create]
Exec=fooview --create-new
Name=Create a new Foo!
Icon=fooview-new  

引用:与操作一起显示的图标。如果名称是绝对路径,则将使用给定的文件。如果名称不是绝对路径,则使用图标主题规范将用于定位图标。实现可以选择忽略它。

阅读


Joe Reimero 的精彩简短教程:.desktop 文件剖析

Joe Reimero 示例

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=$HOME/MyApplication
Name=My Application
Icon=$HOME/Icons/MyIcon.png

乔,我也同意图标可以是绝对的或者相对而言,这取决于您选择构建符号链接的标准。传统上是 PNG。


特别为您准备的精彩教程:让你的 Java 应用变得适合 Gnome-Shell

[Desktop Entry]
Version=10.5.1
Name=IntelliJ IDEA Ultimate Edition
Comment=The Most Intelligent Java IDE
Categories=Applications;Development;
Encoding=UTF-8
Exec=env IDEA_CLASSPATH\=../lib/asm.jar /home/diego/bin/ideaIU-10.5/bin/idea.sh
GenericName=IntelliJ
Icon=/home/diego/bin/ideaIU-10.5/bin/idea128.png
MimeType=text/x-java
Terminal=false
Type=Application
URL=http://www.jetbrains.com/idea  

行注释:

Exec=env IDEA_CLASSPATH\=../lib/asm.jar /home/diego/bin/ideaIU-10.5/bin/idea.sh

您会在 exec 旁边看到 CLASSPATH 变量。


有没有可能它也可以帮助说出 OS Luna:

.desktop 文件遵循 freedesktop.org 桌面入口规范。它们应该安装在 中/usr/share/applications。用户可以通过将 .desktop 文件放入 中来创建自己的启动器 ~/.local/share/applications

答案2

.desktop 启动器文件可以(某种程度上)简化为以下内容

[Desktop Entry]
Type=Application
Name=Google Maps
Exec=google-chrome --app=https://www.google.co.uk/maps/@52.0547887,-1.3424413,11z
Comment=Open Google Maps
GenericName=Open Google Maps
Icon=/home/wilf/.local/Google-Maps-icon.png
Categories=GTK;Utility;
Keywords=Maps;
Hidden=false
NoDisplay=false
Terminal=false

在哪里:

  • 您需要两者[Desktop Entry]Type=Application说它是一个应用程序启动器。
  • Name是它的名字
  • Exec是它运行的命令
  • Comment/GenericName描述它(不总是需要)
  • Icon是图标的路径或您正在使用的主题的图标/usr/share/icons(并非总是需要,但默认图标经常令人讨厌)
  • Categories- 指定其所属类别(对菜单有用 - 并非总是需要)
  • Keywords是您搜索时可以用来找到它的单词(并非总是需要)。
  • Hidden/NoDisplay设置为 false 确保它显示(并非总是需要)。
  • Terminal是否在终端中运行`。

要更改图标,您只需更改行Icon以指定不同的图标 - 例如使用来自的文本编辑器图标/usr/share/icons

Icon=accessories-text-editor

或者您可以指定图标文件的路径

Icon=/home/wilf/.local/Google-Maps-icon.png

这也可以通过在大多数文件管理器中右键单击启动器并选择属性来实现: 在此处输入图片描述

然后单击图标并选择一个新的 - 注意如果它在,/usr/share/applications您可能需要权限来编辑该文件。

注意:

我不记得具体原因了(可能是因为某种原因),但我似乎有以下可以创建 .desktop 启动器的脚本 - 就在这里:

#!/bin/bash
if [ "$1" = "--help" ]; then
   echo -e "\e[1mUsage:\e[0m\n  create-launcher [OPTIONS...] [FILENAME] - create a launcher\n\e[1mHelp Options:\e[0m\n  --help    Show help options\n\e[1mApplication Options:\e[0m\n  -n NAME       Sets the name of the New launcher\n  -c COMMAND    Sets the command the launcher will be used to Launch\n  -t COMMENT    Sets the comment used to describe the launcher\n  -i ICON       Specifies an icon filename or stock icon to display.\n\n\e[1mNote\e[0m - ideally all of the above options should be used, mainly the Name option as it used to create the name of the launcher, and the command option as that is required for the launcher to work."
   exit
fi
while getopts n:c:t:i: option
do
    case "${option}"
    in
        n) NAME=${OPTARG};;
        c) COMMAND=${OPTARG};;
        t) COMMENT=${OPTARG};;
        i) ICON=${OPTARG};;
    esac
done
FILE=$HOME/.local/share/applications/$(echo $NAME | sed 's/ /-/g').desktop
NOFILE=$HOME/.local/share/applications/.desktop
if [ $FILE = $NOFILE ]; then
   echo -e "ERROR: Please enter atleast the Name for the launcher - for more info run\n    create-launcher --help" 
   exit 1
else
echo "New launcher created at $FILE"
echo -e "[Desktop Entry]\nType=Application" > $FILE
echo Name=$NAME >> $FILE
echo Exec=$COMMAND >> $FILE
echo Comment=$COMMENT >> $FILE
echo Icon=$ICON >> $FILE
echo -e "Hidden=false\nNoDisplay=false\nTerminal=false\n#X-GNOME-Autostart-enabled=true" >> $FILE
chmod +x $FILE
fi
exit

这可以保存到可执行文件中,并创建如下所示的简单启动器(除非通过指定脚本选项来填充字段 - 请参阅./create-launcher --help~/.local/share/applications(这应该意味着启动器显示在菜单等中)

[Desktop Entry]
Type=Application
Name=
Exec=
Comment=
Icon=
Hidden=false
NoDisplay=false
Terminal=false
#X-GNOME-Autostart-enabled=true

最后一行并不重要,除非它在其他地方用于在登录时启动程序。

相关内容