LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2082|回复: 7

linux基础:自定义一个会话(session)=制作.desktop

[复制链接]
发表于 2005-10-1 02:37:44 | 显示全部楼层 |阅读模式
有些软件安装后在“应用程序”里找不到运行链接。
和个位菜菜分享一下。

eg:
Maya6.5主程序是:
/usr/aw/maya6.5/bin/Maya6.5
Maya6.5.png图标是:
/usr/aw/maya6.5/bin/Maya6.5.png

我们来添加一个简单的应用程序快捷方式:
------------------------------------------------------------------------------------------------------
| root@debian:/home/nry # gedit /usr/share/applications/MAYA.desktop |
------------------------------------------------------------------------------------------------------
写入以下:
----------------------------------------------------------------------------------------------------
[Desktop Entry]                                                         
Name=MAYA
Comment=MAYA6.5
Exec=/usr/aw/maya6.5/bin/Maya6.5
Icon=/usr/aw/maya6.5/bin/Maya6.5.png
Terminal=false
Type=Application
Categories=Application;Graphics;3DGraphics;

---------------------------------------------------------------------------------------------------
注意:
1.每行结束不能有空格,应该立即跳转到下一行;
2.不能自己加“#”注释;

---------------------------------------------------------------------------------------------------

下面我们再看一个稍复杂的{为了便于说明,稍做省略}:
gimp2.2
----------------------------------------------------------------------------------------------------
[Desktop Entry]
Version=1.0
Encoding=UTF-8          #我的locale是utf8保持一致
Type=Application            #应用程序
Name=GIMP Image Editor                 #显示在应用程序条的名字
Name[de]=GIMP Bildbearbeitung
Name[es]=Editor de imágenes GIMP
Name[fr]=Éditeur d'image GIMP
GenericName=Image Editor                  #一般名称
GenericName[de]=Bildeditor
GenericName[es]=Editor de imagen
GenericName[sr]=Обрада слика
GenericName[sv]=Bildeditor
GenericName[zh_CN]=图像编辑器
Comment=Create and edit images or photographs          #悬停时显示的说明
Comment[de]=Bilder und Photos erstellen und bearbeiten
Comment[es]=Cree y edite imágenes o fotografías
Comment[fr]=Crée et modifier des images ou des photographies
Comment[zh_CN]=创建并编辑图像或照片
Exec=gimp-remote-2.2 %U #程序位置或程序名
TryExec=gimp-2.2 #TryExec Filename of a binary on disk used to determine if the program is actually installed. If not, entry may not show in menus, etc.
Icon=/usr/share/gimp/2.0/images/wilber-icon.png              #图标位置
Terminal=false  #是否终端运行
Categories=Application;Graphics;2DGraphics;RasterGraphics;             #在应用程序条中的位置
X-GNOME-Bugzilla-Bugzilla=GNOME             #不明白,请指点
X-GNOME-Bugzilla-Product=GIMP                #不明白,请指点
StartupNotify=true                    #启动提示
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;.....        #省略很多,支持格式
--------------------------------------------------------------------------------------------------------------------..
部分细节:
1.Icon=/usr/share/gimp/2.0/images/wilber-icon.png  #图标位置
  除了png,常用的格式还有svg/xpm格式。请大家补充;
2.Exec=gimp-remote-2.2 %U #程序位置或程序名
  在”运行应用程序“里不能直接运行的要使用路径;
......................................................................................................................
  如果你指定的程序在 PATH 环境变量指定的路径里找不到, 或不可执行(没有+x属性),
  则这个会话不会在会话列表里列出.
     例子:
     自定义一个启动 X 后直接启动 firefox.
firefoxco.desktop
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Firefox
Comment=This session logs you into Firefox
Exec=firefoxco
TryExec=firefoxco
Icon=
Type=Application
GenericName[zh_CN]=

     $> cat /usr/local/bin/firefoxco
     #!/bin/sh
     FIREFOX="/usr/local/bin/firefox"
     exec $FIREFOX -width 1028 -height 768
     $> chmod +x /usr/local/bin/firefoxco
     使用脚本来启动 firefox , 这样你就可以在启动 firefox 前设置一些环境变量和启动输入法等.
.....................................................................................................................
参考文档:List of valid Exec parameter variables
......................................................................................................................
3.Categories=Application;Graphics;2DGraphics;RasterGraphics; #在应用程序条中的位置
  网络程序Categories=Application;Network;
  多媒体Categories=Application;AudioVideolayer;
  图象编辑Categories=Application;Graphics;
  其实 打开一个/usr/share/applications下同类别的desktop文件就知道归类了




=====================================================
finally eg:
[Desktop Entry]
Version=1.0
Type=Application
Encoding=UTF-8
Name=Foo Viewer
Comment=The best viewer for Foo objects available!
TryExec=fooview
Exec=fooview %F
Icon=fooview.png
MimeType=image/x-foo
X-KDE-Library=libfooview
X-KDE-FactoryName=fooviewfactory
X-KDE-ServiceType=FooService

[Desktop Action Inverse]
Exec=fooview --inverse %f
Name=Foo Viewer (inverse image)

[Desktop Action Edit]
Exec=fooview --edit %f
Name=Foo Viewer (edit image)
Icon=fooview-edit.png
====================================================
还有很多我不懂的,请大家指正补充下吧:)
====================================================
今天发现sir里还有个朋友也写过这个内容的教程,有兴趣的朋友最好看看,很有用的。

终于搞定了文件关联!
http://www.linuxsir.cn/bbs/showthread.php?t=134703
发表于 2005-10-1 10:03:04 | 显示全部楼层
好文顶一顶^+_^
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-2 06:05:34 | 显示全部楼层
又补充了很多。
恩,怎么没几个人回复?
难道我是最后一个知道的?
(地球人都知道了~~~~~:P)
回复 支持 反对

使用道具 举报

发表于 2005-10-2 10:44:07 | 显示全部楼层
地球人都不知道,除了你;-)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-3 21:13:06 | 显示全部楼层
这里给一个更好的例子,是我查找 修改右键 修改 找到的:

可以作为 ServiceTypes= 的补注

问:
Konqueror文件管理器的右键菜单怎样增加自定义功能?
看到论坛上的帖子说Gnome的Nautilus可以修改脚本来增加右键菜单的功能,
Konqueror怎么作这件事呢?
Snoopy答:
.打开/usr/share/apps/konqueror/servicemenus这个目录,你会发现下面有不少*.desktop文件,
这些文件便是我们今天文章里的主角,就是它们实现"在此打开终端"这些多姿多彩的右键功能的.
先看 konsolehere.desktop这个文件的内容:
[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
很明显,它的内容分成两段,其中[Desktop Entry]段

ServiceTypes=inode/directory #定义此右键菜单项出现的条件,为inode/directory(这个定义可以
从konqueror菜单上的"设置---配置konqueror... ---文件关联"里看到),
也就是说如果当前对象为目录就出现这个选项

Actions=openTerminalHere #定义此右键菜单项动作的名字

X-KDE-AuthorizeAction=shell_access #不知道......

再看[Desktop Action openTerminalHere]段,这里是定义菜单项的名字和图标和相应的动作,
注意的是"[Desktop Action openTerminalHere]"这里后面的openTerminalHere和上面的
Actions=openTerminalHere相对应

Name=xxx #定义缺省环境(英文)下菜单项的名字

Name[xxx]=xxx #定义不同语言环境下菜单项的名字,对中文locale环境,显示的就是
Name[zh_CN]里的定义

Icon=konsole #定义菜单项前面的图标,为/usr/share/icons/当前所用主题/16x16/apps/konsole.png

Exec=konsole --workdir %U #定义菜单项的执行动作,其中 %U代表当前目录,
konsole --workdir %U的意思就是,执行konsole,并将当前鼠标所指目录设定为工作目录

上面的不复杂,应该不难理解,再看"解压到这里..."功能的实现
打开arkservicemenu.desktop文件,可看到如下内容:
[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

也不复杂,我大概说说.
Encoding=UTF-8 #表示下面的Name段所用的字符编码都是utf8(如果你使用其他编码,
譬如gbk,最好将这行去掉)
ServiceTypes=application/x-gzip,......,application/x-jar
#同样,你可以在konqueror的"设置---配置konqueror...---文件关联"管理里看到类似的Types定义,
也就是定义了如果鼠标所指当前对象属于上面定义的文件类型,那么就显示此项菜单

Exec=ark -extract %U#定义执行ark -extract命令,将文件解压到当前目录(%U)下

2.下面就让我们自己写一个desktop文件,来实现右键就可以将任意文件当作附件用kmail发送的
功能(对于使用kmail的朋友,这个功能还是挺方便的)

在/usr/share/apps/konqueror/servicemenus下建立一个叫kmail.desktop(名字随意起,后缀为desktop就行)的文件,内容该怎样写呢?让我们考虑一下

首先,确定kmail的附件功能命令是什么.开一个终端,执行kmail -help指令,
可以知道用kmail --attach 命令可以将url所指的文件当作附件发送来启动kmail.

然后,我们需要的功能是对着任意文件(不包括目录),右键就出现相应菜单,那么,
这个"任意文件"对象怎么设置呢,通过在konqueror菜单上的"设置---配置konqueror...---文件关联"选项,
我们可以知道,"所有文件"的Type定义是all/al
回复 支持 反对

使用道具 举报

发表于 2005-10-19 14:39:28 | 显示全部楼层
FC4里找不到这个:/usr/share/apps/konqueror/servicemenus 文件夹
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-19 17:10:19 | 显示全部楼层
1。不同的发行版上叙.desktop文件不尽相同。我使用的是debian-ubuntu。
     没有默认安装konqueror,但是我们可以根据自己的需要定制。
2。你可以自己编辑一个:
    $sudo mkdir /usr/share/apps/konqueror/servicemenus
     $sudo gedit /usr/share/apps/konqueror/servicemenus/filename.desktop
回复 支持 反对

使用道具 举报

发表于 2009-2-28 23:34:33 | 显示全部楼层
05年的  不错  顶了!

如果搂住还活着 能告诉我 文章参考么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表