Konqueror右鍵菜單的擴(kuò)展
konqueror我用了一段時(shí)間感覺還不錯(cuò),下面給大家介紹點(diǎn)關(guān)于Konqueror的知識:如何擴(kuò)展Konqueror的右鍵菜單。
konqueror是kde下的一個(gè)多功能資源瀏覽器,能直接管理硬盤上的文件,瀏覽網(wǎng)絡(luò)上的資源,功能強(qiáng)大.而安裝了kde3.1的朋友,在konqueror里,對著zip,tar.gz,tar.bz2這些壓縮包右鍵時(shí),會驚喜的發(fā)現(xiàn)其中有項(xiàng)"解壓到這里..."的選項(xiàng),通過它可以很方便的解壓常見的壓縮包.那你有沒有想過它是怎么來的呢?你有沒有想過根據(jù)自己的需要也來擴(kuò)展這個(gè)右鍵菜單呢?下面簡單說一下,希望能起到拋磚引玉的作用.
1.環(huán)境:redhat8.0+非官方的kde3.1升級包,magic1.1beta(自帶kde3.1)
2.打開/usr/share/apps/konqueror/servicemenus這個(gè)目錄,你會發(fā)現(xiàn)下面有不少*.desktop文件,這些文件便是我們今天文章里的主角,就是它們實(shí)現(xiàn)"在此打開終端"這些多姿多彩的右鍵功能的.先看konsolehere.desktop這個(gè)文件的內(nèi)容:
[Desktop Entry]
ServiceTypes=inode/directory
Actions=openTerminalHere
X-KDE-AuthorizeAction=shell_access
[Desktop Action openTerminalHere]
Name=Open Terminal Here
Name[zh_CN]=在此打開終端
Icon=konsole
Exec=konsole --workdir %U
很明顯,它的內(nèi)容分成兩段,其中[Desktop Entry]段
ServiceTypes=inode/directory #定義此右鍵菜單項(xiàng)出現(xiàn)的條件,為inode/directory(這個(gè)定義可以從konqueror菜單上的"設(shè)置---配置konqueror...---文件關(guān)聯(lián)"里看到),也就是說如果當(dāng)前對象為目錄就出現(xiàn)這個(gè)選項(xiàng)
Actions=openTerminalHere #定義此右鍵菜單項(xiàng)動作的名字
X-KDE-AuthorizeAction=shell_access #不知道......
再看[Desktop Action openTerminalHere]段,這里是定義菜單項(xiàng)的名字和圖標(biāo)和相應(yīng)的動作,注意的是"[Desktop Action openTerminalHere]"這里后面的openTerminalHere和上面的Actions=openTerminalHere相對應(yīng)
Name=xxx #定義缺省環(huán)境(英文)下菜單項(xiàng)的名字
Name[xxx]=xxx #定義不同語言環(huán)境下菜單項(xiàng)的名字,對中文locale環(huán)境,顯示的就是Name[zh_CN]里的定義
Icon=konsole #定義菜單項(xiàng)前面的圖標(biāo),為/usr/share/icons/當(dāng)前所用主題/16x16/apps/konsole.png
Exec=konsole --workdir %U #定義菜單項(xiàng)的執(zhí)行動作,其中 %U代表當(dāng)前目錄,konsole --workdir %U的意思就是,執(zhí)行konsole,并將當(dāng)前鼠標(biāo)所指目錄設(shè)定為工作目錄
上面的不復(fù)雜,應(yīng)該不難理解,再看"解壓到這里..."功能的實(shí)現(xiàn)
打開arkservicemenu.desktop文件,可看到如下內(nèi)容:
[Desktop Entry]
#Encoding=UTF-8
ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,......,application/x-archive,application/x-bzip2,application/x-jar
Actions=Extract
[Desktop Action Extract]
Name=Extract Here...
Name[zh_CN]=解壓到這里...
Exec=ark -extract %U
也不復(fù)雜,我大概說說.
Encoding=UTF-8 #表示下面的Name段所用的字符編碼都是utf8(如果你使用其他編碼,譬如gbk,最好將這行去掉)
ServiceTypes=application/x-gzip,......,application/x-jar
#同樣,你可以在konqueror的"設(shè)置---配置konqueror...---文件關(guān)聯(lián)"管理里看到類似的Types定義,也就是定義了如果鼠標(biāo)所指當(dāng)前對象屬于上面定義的文件類型,那么就顯示此項(xiàng)菜單
Exec=ark -extract %U#定義執(zhí)行ark -extract命令,將文件解壓到當(dāng)前目錄(%U)下
3.下面就讓我們自己寫一個(gè)desktop文件,來實(shí)現(xiàn)右鍵就可以將任意文件當(dāng)作附件用kmail發(fā)送的功能(對于使用kmail的朋友,這個(gè)功能還是挺方便的)
在/usr/share/apps/konqueror/servicemenus下建立一個(gè)叫kmail.desktop(名字隨意起,后綴為desktop就行)的文件,內(nèi)容該怎樣寫呢?讓我們考慮一下
首先,確定kmail的附件功能命令是什么.開一個(gè)終端,執(zhí)行kmail -help指令,可以知道用kmail --attach 命令可以將url所指的文件當(dāng)作附件發(fā)送來啟動kmail.
然后,我們需要的功能是對著任意文件(不包括目錄),右鍵就出現(xiàn)相應(yīng)菜單,那么,這個(gè)"任意文件"對象怎么設(shè)置呢,通過在konqueror菜單上的"設(shè)置---配置konqueror...---文件關(guān)聯(lián)"選項(xiàng),我們可以知道,"所有文件"的Type定義是all/allfiles,因此,應(yīng)該有ServiceTypes=all/allfiles定義
確定了這兩點(diǎn),編寫這個(gè)kmail.desktop就不是難事了,內(nèi)容如下:
[Desktop Entry]
ServiceTypes=all/allfiles
Actions=Mail
[Desktop Action Mail]
Name=Mail this file to...
Name[zh_CN]=將文件當(dāng)作附件發(fā)送
Icon=kmail #使用/usr/share/icons/當(dāng)前所用主題/16x16/apps/kmail.png作為圖標(biāo)
Exec=kmail --attach %u #%u代表當(dāng)前鼠標(biāo)選中的對象
保存一下,現(xiàn)在,試試右鍵任意konqueror里的任意文件,右鍵是否就有"將文件當(dāng)作附件發(fā)送"的選項(xiàng),選中它試試,夠神奇吧!
4./usr/share/apps/konqueror/servicemenus目錄下還有不少文件,定義包括光驅(qū)圖標(biāo)的右鍵"彈出""加載"菜單功能等,好好將它們研究一下,能學(xué)會不少東西
只有想不到,沒有做不到;充分發(fā)揮你的想象力,祝你寫出不少精彩的右鍵功能出來!
閱讀完整篇文章,是不是很神奇,更多右鍵功能就在你手邊!
【編輯推薦】
- Konqueror簡單介紹
- 嵌入式瀏覽器Konqueror的技術(shù)分析
- 我教你修改konqueror工具欄
- 讓我的konqueror顯示中文網(wǎng)頁
- Konqueror 特殊超能力
- 圖文并茂 Konqueror讓你一看就精通
- 深入了解 Konqueror/embedded的編譯和安裝的過程
- Opera快速撥號引入Konqueror方法