ubuntu下快捷方式
在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 的硬鏈接與軟鏈接
和windows的快捷方式比較
直接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