在Ubuntu Kylin下,软件快捷方式在/usr/share/applications
,软件通过*.desktop的形式(类freedesktop.org-compliant的桌面中亦然这形式)注册,用于保存程序的元数据,以TeamVIewe10为例
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=TeamViewer 10
Comment=TeamViewer Remote Control Application
Exec=/opt/teamviewer/tv_bin/script/teamviewer
Icon=/opt/teamviewer/tv_bin/desktop/teamviewer.png
Type=Application
Categories=Network;
#Categories=Network;RemoteAccess;
文件名为teamviewer-teamviewer10.desktop,其中Name和Type是必选的,而Categoies是Dash搜索时的分类。
根据软件的安装位置,选择保存在/usr/share/applications或者是~/.local/share/applications 。
现在创建一个网页链接的快捷方式
[Desktop Entry]
Name=baidu
Type=Link
URL=http://www.baidu.com
在桌面上会以baidu,即Name属性值显示,但实际上这个文件还是以*.desktop为文件名的,所以编辑时需要注意。
双击,会自行调用浏览器打开网页。
创建软件的快捷方式
[Desktop Entry]
Name=teamview
Type=Application
Exec=/opt/teamviewer/tv_bin/script/teamviewer
Exec用于启动应用程序,接受sh.
接着赋予权限使其可执行,不然只会当成一般的文件。
chmod u+x TeamVIewe10.desktop
不过一般都是加上Icon,Categories才是最基本的。
比较好的像是这样
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Sample Application Name
Comment=A sample application
Exec=application
Icon=application.png
Terminal=false
更详细的可看Linux Desktop Entry 文件深入解析
linux下还有软链接和硬链接,感觉它们更像快捷方式。两者都是直接指向文件,不过硬链接相当于文件的别名,Java里的引用,像chown
这样的操作会直接影响被指向的文件,而软件可以指向目录,同时可以赋予不同的属性和权限。
以teamviewer-teamviewer10.desktop为例,创建硬链接
wang@Bottom:~/桌面$ sudo ln /usr/share/applications/teamviewer-teamviewer10.desktop team.link
创建软链接链接
wang@Bottom:~/桌面$ sudo ln -s /usr/share/applications/teamviewer-teamviewer10.desktop teams.link
wang@Bottom:~/桌面$ ls team.link teams.link -l
-rw-r–r– 2 root root 277 4月 27 14:35 team.link
lrwxrwxrwx 1 root root 55 6月 19 17:35 teams.link -> /usr/share/applications/teamviewer-teamviewer10.desktop
wang@Bottom:~/桌面$ sudo chown wang team.link
wang@Bottom:~/桌面$ sudo chown wang teams.link
wang@Bottom:~/桌面$ ls team.link teams.link -l
-rw-r–r– 2 wang root 277 4月 27 14:35 team.link
lrwxrwxrwx 1 root root 55 6月 19 17:35 teams.link -> /usr/share/applications/teamviewer-teamviewer10.desktop
尝试再为软链接teams.lnk添加链接
很明显,硬链接仍然只指向teamviewer-teamviewer10.desktop,而软链接则指向teams.lnk,删除了软链接teams.lnk后,软链接则成为死链接。
同理为硬链接team.lnk添加链接
奇怪的很,硬链接无法创建,而软链接则指向team.lnk,直接成了死链接。
相比之下,.desktop更多用于述程序启动配置信息,如可以通过脚本启动程序(Exec)。
更详细的可看理解 Linux 的硬链接与软链接
直接gedit打开TeamViwer.exe.lnk
乱,将数据清洗一下后和lnk-parser(windows下用于查看.lnk快捷方式的工具)打开后的结果比较,除了Header是每个文件都有的,就会发现.lnk有Link Target ID List、Link Info、String Data、Metadata Property Store、、Special Folder Location、Distributed Link Tracker等段,类似结构体的形式。
从Metadata Property看两者相同之处
ubuntu | windows | 说明 |
---|---|---|
文件名 | teamviewer-teamviewer10.desktop | TeamViewer.exe.lnk |
文件属性名 | Name | System.ItemTypeText |
文件属性值 | TeamViewer 10 | TeamViewer.exe |
扩展名 | .desktop | .lnk |
类型属性名 | Type | System.ItemTypeText |
类型属性值 | Application | 0x001f (VT_LPWSTR) |
执行路径属性名 | Exec | System.ParsingPath |
执行路径属性值 | /opt/teamviewer/tv_bin/script/teamviewer | 0x001f (VT_LPWSTR)(C:\Program Files (x86)\TeamViewer10\TeamViewer.exe) |
两者不同之处更多,如图标:.desktop是Icon制定的,而.lnk是
则是依据exe文件的。
关于快捷方式的维基:File Shortcut