全部博文(326)
分类: LINUX
2006-01-18 22:02:32
E17 包括不同的本地化. 它可以在运行时通过 "enlightenment_remote" 工具修改. 这个命令显示当前可用的语言:
$ enlightenment_remote -lang-list
REPLY <- BEGIN
REPLY: ""
REPLY: "en_US.UTF-8"
REPLY: "ja_JP.UTF-8"
REPLY: "fr_FR.UTF-8"
REPLY: "es_AR.UTF-8"
REPLY: "pt_BR.UTF-8"
REPLY: "fi_FI.UTF-8"
REPLY: "ru_RU.UTF-8"
REPLY: "bg_BG.UTF-8"
REPLY: "de_DE.UTF-8"
REPLY: "pl_PL.UTF-8"
REPLY: "zh_CN.UTF-8"
REPLY: "hu_HU.UTF-8"
REPLY: "sl_SI.UTF-8"
REPLY: "it_IT.UTF-8"
REPLY: "cs_CZ.UTF-8"
REPLY: "da_DK.UTF-8"
REPLY: "sk_SK.UTF-8"
REPLY: "sv_SV.UTF-8"
REPLY: "nb_NO.UTF-8"
REPLY: "nl_NL.UTF-8"
REPLY <- END
你可以看到, 现在有20个语言可以选择. 现在你需要使用下面的命令切换你的本地化, 例如:
$ enlightenment_remote -lang-set zh_CN.UTF-8
这将切换到中文 - E17 应该马上开始使用新语言, 你不需要重起它
.
同时可以修改字体. 这当前可以使用enlightenment_remote 工具来完成, 因为现在还没有图形前端完成它. 这是一些你需要先知道的事情:
为了看到当前可用的字体, 使用下面的命令:
为了看到当前可用的字体, 使用下面的命令:
$ enlightenment_remote -font-available-list
REPLY <- BEGIN
REPLY: "Vera-Bold-Italic"
REPLY: "Vera-Normal"
REPLY: "Vera-Bold"
REPLY: "Vera-Italic"
REPLY: "Vera-Mono-Bold-Italic"
REPLY: "Vera-Mono-Bold"
REPLY: "Vera-Mono-Italic"
REPLY: "Vera-Mono"
REPLY: "Vera-Serif"
REPLY: "Vera-Serif-Bold"
REPLY: "Vera"
REPLY: "Baekmuk-Dotum"
REPLY: "Kochi-Gothic"
REPLY: "New-Sung"
REPLY <- END
为了修改字体, 你将需要使用 "enlightenment_remote"工具:
-font-default-set OPT1 OPT2 OPT3 - 设置文字类型 (OPT1) 字体 (OPT2) 和大小 (OPT3)
有
两个不同的字体类型: 标题栏和默认 . 默认就是在不同对话框中使用的字体, 例如 "About Enlightenment" 窗口.
标题字体类型是窗口的修饰性标题栏使用的字体. 字体名 (OPT2) 是在 enlightenment_remote
-font-available-list 中显示的一个字体. 你同时可以检查看当前使用什么字体
$ enlightenment_remote -font-default-list
REPLY: BEGIN
REPLY: DEFAULT TEXT_CLASS="default" NAME="Vera-Bold-Italic" SIZE=10
REPLY: DEFAULT TEXT_CLASS="title_bar" NAME="Vera" SIZE=10
REPLY: END
这是默认字体. 现在你可以方便的使用 enlightenment_remote -font-default-set 命令修改它们. 例如如果你想修改窗口修改饰的标题栏中字体成 12 Vera-Bold, 你可以使用下面的命令:
$ enlightenment_remote -font-default-set default Vera-Bold 12
如果你同时希望修改对话框字体,让它使用相同的字体:
$ enlightenment_remote -font-default-set title_bar Vera-Bold 12
窗口对话框字体应该马上更新, 但是你需要为其它字体系统相关的设置运行下面的命令( 在这里是窗口修饰性的标题栏) 来应用它:
$ enlightenment_remote -font-apply
现在你已经修改字体设置, enlightenment_remote -font-default-list 应该显示你的新设置:
$ enlightenment_remote -font-default-list
REPLY: BEGIN
REPLY: DEFAULT TEXT_CLASS="default" NAME="Vera-Bold" SIZE=12
REPLY: DEFAULT TEXT_CLASS="title_bar" NAME="Vera-Bold" SIZE=12
REPLY: END
所有的字体修改会自动保存. 如果你希望回到默认的字体, 只需要运行下面的命令并重起 E17:
$ enlightenment_remote -font-default-set default Vera 10
$ enlightenment_remote -font-default-set title_bar Vera 10
补充:中文标题栏的字体的设置:
1 修改e17/apps/e/data/themes/default.edc,把下面这个
fonts {
font: "Vera.ttf" "Edje-Vera";
font: "VeraBd.ttf" "Edje-Vera-Bold";
}
修改成
fonts {
font: "simsun.ttf" "Edje-Vera";
font: "VeraBd.ttf" "Edje-Vera-Bold";
}
注意simsun.ttf可以是其它中文字体
2 把simsun.ttf 复制到e17/apps/e/data/fonts目录, 如果你是使用其它字体, 那把这个字体文件复制到这里.
3 修改标题栏上字体高度:
修改 e17/apps/e/data/themes/default_border.edc
color3: 255 255 255 128;
text {
text: "";
font: "Edje Vera";
size: 10; // 这里修改成13 这样显示中文更清楚
min: 0 1;
align: 0.0 0.5;
text_class: "title_bar";
}
如果你不想全部编译源码的话, 可以下载 e17/apps/e, 然后编辑上面的值,
然后运行
autogen.sh
make
这时新布局文件应该已经生成,试在e17/apps/e/data目录下查找default.edc文件,并把它代替E17的默认布局
E17可以根据你的需要而变百轻量级的或是重量级的, 模块系统是实现这个可能的东西. 模块添加一定的特征到窗口管理器中.
模块可以实时的加载或是卸载而不需要重起窗口管理器. 一旦载入, 这个模块中的特性就变成窗口管理器的一部分. 载入或是载出(loaded or
unloaded)这些模块会实时起作用, 而不需要重起窗口管理器. 模块可能添加各种类型的功能和特征.默认,下面的模块已包括在E17中.
这同时会带来一个缺点: 如果一个模块死掉了, 它可能会让窗口管理系统自己崩溃.
E17中包括的模块或多或少应该是稳定的. 另外第三方的模块可能会引起不稳定. 如果一个模块有问题, 那是不稳定的. 下面是E17中带的模块:
默认除了ibox外, 所有这些模块都加载, 注意randr模块使用标准的Xrandr来切换分辨率, 所以为让它正常工作, 你需要确认你的X.org/XFree86 配置文件是正确的.
在 Get-e.org有第三方的模块. 只需要看左边的菜单.
这是一些第三方模块外观的例子:
现在有两个方法可以加载, 使用, 禁用, 卸载模块:
1. 使用E17控制面板中的模块管理对话框
2. 使用 "enlightenment_remote" 工具
注意如果你已经加载一个模块, 但是没有使用它, 它仍然使用内存, 所以如果你想减少内存使用, 卸载你不需要的模块.
模 块可以使用 E17 主菜单中的 gadgets 中的 "Edit Mode" ("编辑模式", 也叫 E17小器件管理器) 来控制. 也可以通过 E17 主菜单中 "模块" 选项里面的 "Configuration" (配置) 选项来配置. 还可以通过 E17 控制面板中模块对话框来设置. 注意 "Configuration" 选项只在对应的模块已经启动时才会出现. 并且不是所有的模块都有配置对话框.
下面是模块管理对话框 (可以通过 E17 控制面板访问) , 还有一些模块的配置对话框:
在 "Edit Mode" 下, 所有的模块上有一定的特定显示效果, 当改变它们大小时会出现拖动条. 这是小器件管理器看起来的效果:
如果你想使用 "enlightenment_remote" 而不是模块管理对话框配置模块的话, 下面是相关的命令:
$ enlightenment_remote --help
OPTIONS:
-module-load OPT1 加载(Load)名字'OPT1' 的模块到内存
-module-unload OPT1 从内存卸载(UnLoad)名字'OPT1' 的模块
-module-enable OPT1 使用(Enable )名为'OPT1'的模块
-module-disable OPT1 停用(Disable)名为'OPT1'的模块
-module-list
列出所有已经加载的模块
要看当前已经加载的模块, 可以通过 E17 主菜单或通过下面的命令:
$ enlightenment_remote -module-list
REPLY: BEGIN现在为了加载或是卸载一个模块, 你需要使用下面的命令:
REPLY: MODULE NAME="ibar" ENABLED=0
REPLY: MODULE NAME="dropshadow" ENABLED=1
REPLY: MODULE NAME="clock" ENABLED=1
REPLY: MODULE NAME="pager" ENABLED=1
$ enlightenment_remote -module-load modulename
$ enlightenment_remote -module-unload modulename
有美学眼光的程序
员很少, 这就是好的编程艺术的能力. 图形用户界面和自己的程序核心在E17中是分开的.
这里介绍给布局者一个空前的艺术自由,可以对基本上所有层上的图形都定制和修改. 相同的应用程序可以看起来完全不同依赖使用的Edje布局.
这个分支的一点问题就是布局将比老提供布局的应用程序布局方式需要更多的努力,在这里基本提供相同层的定制E17使用二进制EAPP格式保存图标.同时还
有另一种二进制格式叫EDJ,它们被背景和布局(theme)所使用. EDJ与EAPP文件从深一层来讲都是EET包文件. 下面是一个引用
的介绍:
"EET 是一个微型库,设计于写任意块的数据到一个文件,并可以选择压缩每一块(很像一个zip文件),并充许以后快速的任意读访问.它不像zip那样做zip操作, 因为zip太复杂了,没有必要,只是使用了一个简单的实现.
Eet又快又小又简单.eet文件可以非常小,并可以高度压缩,这使它很适合在internet上传输而不用归档,压缩与解压与安装.一量创 建,它充许很明显的快的随机读访问,这使它适合保存那些只需要写一次(中是很少写)但是需要读很多次的数据,并且程序不想一次读入所有的内容.
它同样可以在内存中进行数据结构的编解码,如图形文件保存到eet文件中或在网络中发送到其它机器,或是只是写到系统中任意文件.所有的数据都是以平台无关的方式,并可以被任意架构读写 ."
按句话说,很难说EDJ与EAP是不同的格式 - 它们之所以这样命名是为了让用户易于理解.EAP与EDJ文件只是EET包的不同名字,多数情况下包括不同的数据.EAP文件(通常)只包括一个图形文件 与一些其它数据,如应用程序名,可执行二进制名等.这不表示eap文件只能包括图标相关的数据.例如一个eap文件可以包括并运行一个危险的脚本,所以你 应该只使用你信任来源的eap文件.为了方便,EDJ与EAP在这个指南中说成是两种不同的文件格式.
EDJ的名字从Edje派生来,edje是一个enlightenment基本类库(EFL),这是一个从
的引用:
"Edje
是一个复杂的图形设计 & 布局库, 在 Enlightenment 0.17的目标中, Edje 应该为所有创建视觉元素 (窗口边框,
滚动条等) 服务, 并充许设计动画. 作为一个基本的 GUI 构造器布局和控制任何使用Edje的程序的外观.
这个库充许收集很多层到一个文件中, 共享相同的图象数据库, 然后充许整个布局可以方便的打包到一个文件中然后发行.
Edje 分开层和行为逻辑. Edje 文件带有一个图象数据库, 这个数据库被收集的所有东西当成图片源数据. 它有一个目录或是逻辑部分名来指出这部分收集的分支在这文件中的ID (因此充许多个逻辑名来指向相同的收集部分, 充许在不同的显示元素间共享数据). 每部分收集者当成一系列的虚拟部分, 同时是一个程序列表. 一个程序会在一个特殊事件发生时运行这个程序, 这些事件如 (按下一个按钮, 一个鼠标进入或离开这个部分), 同时将触发一个可能会影响其它部分的动作. 通过这种方式, 一个收集部分可以通过它的文件被 "程序化", 如当鼠标进在一个按钮上通过时高亮这个按钮, 或是显示当鼠标点某个地方时显示隐藏部分等.. 这引起动作希望从一个状态修改到另外一个状态, 同时可以有一个过游时间, 充许动画.
这个程序简单分开的事件驱动方式可以产生几乎任何视觉和感觉到一个可以需要的基本虚元素. 更复杂的东西可以看成一个应用程度或是构件集的域, 它们可以使用Edje做为一个方便的可配置中显示部分的方法. "
E17中的布局和背景都使用这种方法. 这同时表示 EDJ 二进制背景文件可以像 E17 布局中一样, 包括所有各种动画和效果 (或只是一个简单的静态背景文件, 这个文件已经根据屏幕进行了缩放). 不是所有的 EDJ 文件包括解压信息, 因此不是所有的并不是都能正确解压, 这应该没有什么要紧. 在 中多数文件都应该可以正确解压. 一个重要的意外是 E17的默认布局, 它不能正确解压, 因为有一个bug. 这个布局的源文件可以在E17 源目录下找到.
E17 需要 EDJ (和 EAP) 文件是已编译的二进制状态. 这充许这些布局 ( 或背景设施) 可以快速的通过internet共享, 并且对最终用户, 它提供了一个方可和实际的方法来管理和使用不同的布局的背景. 用户需要做的唯一事情是, 取到一个文件,然后移动它到对应的目录下,然后使用图形化的用户界面来选择它. 虽然这节是关于二进制图标文件(EAP)的.
所有17使用的不同的二进制格式是:
EAP 文件被IBar和菜单使用. 这些文件需要移动到 "~/.e/e/applications/all" 目录.
有几个方法创建这些文件, 如果你不想自己创建它们的话, 你可以从这个站点上下载 EAP 文件, 更友好的方法是使用 E17 集成的 EAP
编辑器创建. 我们先开始用户友好的方式, 然后介绍使用命令行的手工方式, 命令已被包括在 E17 窗口管理器中.
E17 包括一个集成的 EAP 编辑器, 这个可以使用在两个模式. 在基本模式, 它看起来像这样:
在高级模式 (有更多让用户可以修改的选项), 它看起来像这样子:
当
你第一次启动 E17 时, 你应该注意到在菜单和 IBar 中有一些默认图标. 打开一个终端然后启动你想在 E17 中使用的程序.
一旦你已经打开一个你想为它创建图标的程序. 点击程序的左上角, 在这里已经有一个默认图标. 使用左键点然后选择 "Create
Icon"("创建图标") . 如果这个程序已经有一个图标, 那这个选项则叫做 "Edit Icon" ("编辑图标"). 这将启动 EAP
编辑器.
添加你所有需要的信息, 但是请保留 "Window name" ("窗口名") 这段. 这需要保留为空.
然后选择一个图标文件, 它可以是任意大小. 然而越大的图标会使用越多的内存. 注意你不用完整的可执行程序的路径 - 如果这个程序在你SHELL
中的路径中的话, 只需要程序名就可以. 当这个图标已经创建后, 原始的图标文件已经不再有用了: 它已经被包括到 EAP 文件中了.
所有你创建的 EAP 文件都会自动移动到 ~/.e/e/applications/all 目录.
IBar 的图标顺序可以通过简单的拖动图标来修改.
它同时可以从窗口边框拖动图标到IBar上. 也可以通过手工编辑文件配置文件来实现. 在 "Favourite Applications"
(常用程序) 中的图标当前不可以通过拖动图标来重排序: 这冀南图标不可以拖动. 它来自实际的文本配置文件. 系统组织 IBar 和
"Favourite Applications" 菜单的方式是一样的. 将需要在一个特定的目录下创建一个文件名叫 ".order" 的文件.
这个目录如下:
firefox.eap
mozilla.eap
xmms.eap
bmp.eap
evidence.eap
entice.eap
这
将按上面的顺序添加图标. 对于菜单, 你可以创建子菜单. 为了这样, 你需要在 ~/.e/e/applications/favourite
下创建一个目录, 并在这个目录内创建 ".order" . 除了你可以添加目录外它遵守相同的逻辑 . 例如如果你已经创建一个叫
~/.e/e/applications/favourite/multimedia 的目录, 同时你在
~/.e/e/applications/favourite 目录中有这样一个文件 ".order" ,文件内容如下:
firefox.eap
mozilla.eap
irc.eap
multimedia
这将创建一个有 上面三个图标和一个叫 multimedia 子目录的菜单. 为了指定在子菜单中显示的图标, 你需要在子目录下创建一个 ".order" 文件. 它同时可以在子菜单中创建子菜单. 默认图标中的目录选项没有图标. 你可以通过放一个叫".directory.eap" 到这个目录中为它添加一个图标. ".directory.eap" 文件内容除了应用程序名和图标文件外, 不应该包括其它东西. 应用程序名可以是你喜欢的任何东西 - 应用程序名将会成为菜单中名字 而图标则会名字边上显示.
例如, 让我们看前面的例子. 如果你想为 "multimedia" 创建一个图标, 你可以放一个 ".directory.eap" 到 ~/.e/e/applications/favourite/multimedia 目录下. 在这个情况下, 这个图标的应用程序名可以是 "multimedia" . 它同时可以是其它你喜欢的东西. 换句话说, ".directory.eap" 中的菜单目录选项名 (应用程序名) 不需要任何限制, 它也与目录没有联系.
同时可以不用集成的 EAP 编辑器来创建图标文件. 这个会更费时间, 并且有点难度. 但这里包括一个简单的参考来指导那些想尝试的人. 从 /usr/share/enlightenment/data/other ( 依赖你安装E17的地方) 解压 icon_example.tar.gz 到某个目录. 你将看到这三个文件: build.sh, icon.edc 和 icon.png.
编辑icon.edc修改"max:"值到你希望的值.如果你的图标是128x128的png文件, 那你写入"128 128"是一个好选择.下一步,复制一个图标(.png文件格式)代替默认的icon.png. 注意你的图标文件名应该是icon.png,如果你想使用不同的名字, 你可以编辑icon.edc和build.sh修改icon.png为相应的值.
现在编辑 build.sh:
#!/bin/sh
# a .eap file is just a .edj file with added meta data for application launch
# info. enlightenment_eapp can add/modify/delete this metadata. the script
# below is an example of building an eap icon from scratch.
# actually compile a edje file with all the gfx etc.
edje_cc $@ -id . -fd . icon.edc icon.eap
# add eapp properties to the file - they are ALL optional EXCEPT name and exe
# and exe is optional for directory .eapp files
enlightenment_eapp \
icon.eap \
-set-name "Application Name" \
-set-generic "Generic name" \
-set-comment "Comment on what this application does" \
-set-exe "execute_line" \
-set-win-name "" \
-set-win-class "window_class" \
-set-icon-class "icon,class"
# other options u might want to use:
# -lang LANG
# -set-startup-notify 1/0 \
# -set-win-title "window_title*glob" \
# -set-win-role "window_role" \
# -set-wait-exit 1/0 \
#
# see enlightenment_eapp -h for more -set options
你需要设置这些值, 但是不要设置窗口名, 这需要保留为空(也就是 -set-win-name "" \). 同时要确定窗口类正确, 不然新创建的图标启动程序时图标不会显示在窗口边框的左上角. 你可以通过在终端中输入下面的命令查找窗口类:
xprop WM_CLASS|cut -d \, -f 2
然后点一个窗口. 对应的,你可以使用集成的 EAP 编辑器来查找窗口类. 你可以通过点菜单中的 "Create Icon"来打开 EAP 编辑器, 这个菜单会在你用左键点窗口修饰栏左上角弹出, 或是通过在窗口修饰栏上任意地方点右键弹出, 这个编辑器默认应该显示它打开的应用程序正确的窗口类.
现在你需要做的事是运行build,sh,它会在相同目录下创建一个"icon.eap"文件, 重命名它成你喜欢的名字,然后复制到~/.e/e/applications/all. 在你已经创建了一些EAPP文件后,有一个简单的办法来编辑信息(所有除了图片外的信息 - 图片需要来编辑).
用来做这个的工具是 "enlightenment_eapp":
$ enlightenment_eapp --help
OPTIONS:
-lang LANG Set the language properties to modify
-set-name NAME Set the application name
-set-generic GENERIC Set the application generic name
-set-comment COMMENT Set the application comment
-set-exe EXE Set the application execute line
-set-win-name WIN_NAME Set the application window name glob
-set-win-class WIN_CLASS Set the application window class glob
-set-win-title WIN_TITLE Set the application window title glob
-set-win-role WIN_ROLE Set the application window role glob
-set-icon-class CLASS_NAME Set the application icon class for themes
-set-startup-notify [1/0] Set the application startup notify flag
-set-wait-exit [1/0] Set the application wait exit flag
-get-name Get the application name
-get-generic Get the application generic name
-get-comment Get the application comment
-get-exe Get the application execute line
-get-win-name Get the application window name glob
-get-win-class Get the application window class glob
-get-win-title Get the application window title glob
-get-win-role Get the application window role glob
-get-icon-class Get the application icon class for themes
-get-startup-notify Get the application startup notify flag
-get-wait-exit Get the application wait exit flag
-del-name Delete the application name
-del-generic Delete the application generic name
-del-comment Delete the application comment
-del-exe Delete the application execute line
-del-win-name Delete the application window name
-del-win-class Delete the application window class
-del-win-title Delete the application window title glob
-del-win-role Delete the application window role glob
-del-icon-class Delete the application icon class for themes
-del-startup-notify Delete the application startup notify flag
-del-wait-exit Delete the application wait exit flag
例如如果你想修改eap中可执行文件的命令行, 你可以使用下面的命令:
enlightenment_eapp -set-exe "name of the new execute line" /path/to/file.eap
默认E17 使用四个虚拟桌面, 有两个方法来修改背景:
E17
背景选择器可以在控制面板 (位置E17 主菜单中的 "Configuration" 菜单下) 中找到. 它显示所有放在
"~/.e/e/backgrounds" 目录下的 EDJ 背景文件 - 换句话说, 你需要先转换你的背景图片到 EDJ 文件 (看
"编译背景" 一节). 同时注意当前不可以使用这个工具来为每个虚拟桌面设置不同的背景: 要这样做,你需要使用命令行工具
"enlightenment_remote" .
E17 使用二进制的EDJ格式文件来做背景,这个文件同时可以包括动画和不同的效果, 如果你想下载一些动画背景或是 EDJ 背景文件, 请看我们的背景一节 (看主站点的菜单) 如果你想下载一些动画或通常静态的背景文件,请看我们的背景一节(看主站点菜单).
默认 E17 使用四个虚桌面. 每个桌面可以使用不同的背景. 如果你使用默认数目的虚拟桌面 (4x1), 你可以使用下面的命令设置每个桌面的背景. 第一个命令是设置第一个虚拟桌面的背景, 第二个是下一个桌面, 如此类推.
enlightenment_remote -desktop-bg-add 0 0 0 0 /path/to/background.edj
enlightenment_remote -desktop-bg-add 0 0 1 0 /path/to/background.edj
enlightenment_remote -desktop-bg-add 0 0 2 0 /path/to/background.edj
enlightenment_remote -desktop-bg-add 0 0 3 0 /path/to/background.edj
这亲当你切换到使用不同背景的桌面时, 就会产生很好的动画效果. 要想得到 "enlightenment_remote -desktop-bg-add" 命令的更多信息, 请看 "enlightenment_remote --help".
编译背景:
你可以使用命令行 "edje_cc" 编译器来创建背景. 要想得到更多的 Edje 的信息, 请看 . 现在基本上快有一个图形化的工具来创建 背景 EDJ 文件, 所以现在先临时使用命令行工具临时编译它一下.
为了使用 "edje_cc" 编译一个背景EDJ, 你需要创建一个目录, 在这目录下放两个文件: background.edc 和一个图片文件. 使用下面的 background.edc 例子并编辑它使它适合你要求:
images{
image, "image.jpg" LOSSY 95;//
}
collections
{
// Customize away ;)
group{
name, "desktop/background";
parts {
part {
name, "background_image";
mouse_events, 0;
description {
state, "default" 0.0;
rel1 {
relative, 0.0 0.0;
offset, 0 0;
}
rel2 {
relative, 1.0 1.0;
offset, -1 -1;
}
image {
normal, "image.jpg";
}
fill {
origin {
relative, 0.0 0.0;
offset, 0 0;
}
size {
relative, 1.0 1.0;
offset, 0 0;
}
}
}
}
}
}
$ edje_cc -id ./ -fd ./ background.edc background.edj
这应该会创建一个叫 background.edj的文件, 你可以重命名它并移动它到~/.e/e/backgrounds.
E17
不支持伪透明. 换句话说如果你已经加载一个 EDJ 背景, 使用伪透明的程序 ( 如多数终端) 将不会 "看" 到背景. 现在可以使用
Esetroot(包括在Eterm中) 设置一个 "伪" 背景来强制设置伪透明. 这是一个不好的方式来实现的.
并且不保证所有使用伪透明的程序都可以正常工作. 使用这种方式强迫伪透明并不推荐 (或被 E17 支持), 并且它可能会引起各种不同的问题.
甚至就是它工作, 它也工作在静态图片 - 动画 Edj背景是不可能在伪透明下工作的.
对那些想使用伪透明的 ( 例如不同的终端) 或只是想得到一个包括在EDJ内背景文件的普通图片, 你可以使用一个叫 edje_thumb的工具, 它让你可以在EDJ文件外创建任意分辨率的缩略图. 这在当你使用使用一个EDJ文件, 并且这个EDJ文件由多于一个的普通的已被缩放的背景文件 (例如它使用不同的图片来构造背景)构成, 并且你想让它适合屏幕时就会特别有用, 例如这个站点的多数背景都是这样的. 为了创建一个 EDJ图像的缩略图:
edje_thumb INPUT_EDJE GROUP_TO_LOAD OUT_FILE [OPTIONS]
必须的参数是:
INPUT_EDJE 要参照的 edje文件
GROUP_TO_LOAD 在edge中的组名
OUT_FILE 输出文件格式(对于多帧, 包括一个 %i 来接受帧号 - 如同printf中一样)
可选的参数[OPTIONS] 是:
-h 这个帮助
-g WxH 渲染大小
-og WxH 输出文件大小
-fps N 如果是是捕捉一个动画的话, 每秒的帧率
-n NUM 如果是是捕捉一个动画的话, 需要捕的帧数
例如你可以使用下面的命令:
edje_thumb /home/username/background.edj desktop/background /home/username/your_new_image_file.png -og 1600x1200 -g 1600x1200
这将从edj文件中创建一个 1600x1200 的图片 - 并且大小也会正确的计算. 现在你可以方便的使用这个背景来设置那个想使用伪透明的程序 - 需要注意的是你需要安装 Eterm, 因为它包括 Esetroot工具:
Esetroot -s /home/username/image.png
你可以在这个站点上找到一些 EDJ 背景文件. 检查站点菜单中的 "Backgrounds"(背景) 链接. 如果你已经有一个 EDJ 背景并且不想使用 Esetroot (或没有安装 Eterm), 你可以使用命令行工具来加载背景:
enlightenment_remote -default-bg-set /path/to/background.edj
E17 布局格式还没有完全确定. 这是么没有太多的themes和其中它们一些无法正常工作(如果它们没有及时根据最新的theme格式更新)的原因.
为 了切换到另外一个布局, 你你需要移动EDJ布局文件到~/.e/e/themes或$PREFIX/share/enlightenment/data/themes/ (例如如果你安装E17到 /usr那目录是 /usr/share/enlightenment/data/themes)目录下. 这些目录的内容将会显示在主菜单上,你通过选择它们的名字就可以切换. 或你可以在 E17 控制面板中选择这些布局. 在 E17 控制面板中的布局选择器看起来像这个样子:
所有E17中包括的模块的图形被E17的布局控制 - 另外加的模块需要订制的布局文件并且需要它们放在某个目录下, 这个根据你的模块来确定.
提示: 另外在这个站点上有一些编译好的布局,可以试试 :-)如果你在E17中使用大量的GTK2程序(多数人是这样), 你可能希望看 的.当你使用默认的 E17 官方布局时, 这会让它使所有的东西保持很好的一致.
基本布局教程:
E17 有一个非常强大的布局引擎,它远比它的竞争者领先.但这也表示创建布局会比其它的窗口管理器更困难(最好是比那些简单的). 基本上用户在E17中看到的都在布局中定义, 并可以完全看起来不一样, 甚至让人看不出来是同一个程序. 虽然布局不是那么难, 它只需要花点时间来适应新的系统. 这篇指南是一个简单的E17布局功能的介绍. 后面将会有技术性更高的教程, 一旦写完就会放在 Get-e.org 上。 这篇应该足够你进行E17布局技术的起步。如果你感到有任何布局相关的并且属于用户级别的文档,并且不包括在这里的话,请联系给我们以致我可以尝试添加 它。
前面已经提到, 你需要知道 E17 的布局格式还没有最终定型。现在和以后都会有新元素和特征添加到默认的布局格式。如果一个布局没有维护让它与CVS上的进行更新同步, 它可能会变成无法使用的。
所有E17的布局, 在这篇指南前面提到的, 需要是二进制格式, 所有正确创建的二进制Edje文件都可以使用下面的命令解压:
edje_decc /path/to/theme.edj
不是所有的布局都可以正确解压, 有些布局可能没有解压信息。 多数布局应该可以正常解压。不巧的是默认的布局不可以完全解压。E17布局包括Edje代码(.edc文件)和不同的图像,这些图像被图形化界面自己使用。
当
前没有太多的官方的Edje文档,所以如果你希望学习它(如订制布局/创建你自己的背景),
最好的方法是解压不同的Edje文件然后看里面实现代码。对于程序员来说, Edje 代码是C格式的,
它可以被C预处理器理解,但构造与关键字等是Edje. 一个EDJ文件通常包括一个或多个实现的Edje代码文件(文件后缀是.edc)
并且有图片,图片被布局自己使用。
这个教程将使用默认布局来做例子,但是同样的系统应该适合多数其它布局。让我们开始创建一个本地 目录, 里面有所有创建默认的E17布局的文件. 多数情况下这个目录可以简单的通过解压前面提到的布局来得到。在这个例子中虽然不可能那样,但因为我们是使用E17默认的布局, 所以你需要到你的E17源码目录,然后进入 data/themes 目录. 这个目录中你可以看到默认布局包括的多数文件. 在你开始前,你装需要知道如果你使用这种方式编译布局, 第二个将因为一个E17配置文件的问题而不会显示时钟, 我还没有找到解决这个问题的方案, 但应该很快就有一个。当我知道这个问题已经被解决时我装尽快更新这个指南. 如果这个不影响你, 从这个目录复制所有的 .edc文件到你选择的目录:
cp /path/to/E17-source-dir/data/themes/*.edc /home/username/e17-theme-default
下一步你装需要复制所有图像, 从 data/themes/images 目录到你的本地E17布局源目录:
cp /path/to/E17-source-dir/data/themes/images/*.png /home/username/e17-theme-default
现在你已经有一个有所有需要的图形和Edje代码文件的本地目录, 但是还少一些事情. 首先,你需要在这个目录中创建一个叫build.sh的bash脚本. 脚本需要包括下面的内容:
#!/bin/sh
edje_cc $@ --image_dir . --font_dir . default.edc -o custom.edj
这是一个简单的bash脚本,它运行edje_cc程序(一个创建二进制EDJ文件的工具), 并告诉它布局需要的所有文件在当前目录中.
如果这个目录中包括所有需要的文件,那在这个目录中运行这个脚本装编译这个布局成二进制EDJ格式. 在这例子中创建的文件名叫 custom.edj.
后面, 你需要复制两个字体文件到相同的目录, 如果你已经安装E17, 那这些字体就已经在你的系统中.
cp /usr/share/enlightenment/data/fonts/Vera.ttf /home/username/e17-theme-default
cp /usr/share/enlightenment/data/fonts/VeraBd.ttf /home/username/e17-theme-default
现
在你应该可以通过运行build.sh脚本来编译默认布局的一个版本. 前面已经提到,创建出来的文件名叫 custom.edj, 但是你可以编辑
build.sh 脚本指定其它名字. 如果你想开始创建一个定制的布局的话,你可能想创建这个目录的几个复制, 让我们看看这些独立的文件。
在这个例子中,主要的Edje代码文件定义其它Edje代码文件使用/加载的字体, 它是 default.edc. 看起来像下面样子:
#ifdef E17_PROFILE
# if E17_PROFILE == LOWRES_PDA
# define SM "sm_"
# elif E17_PROFILE == MEDIUMRES_PDA
# define SM "sm_"
# elif E17_PROFILE == HIRES_PDA
# define SM "sm_"
# elif E17_PROFILE == SLOW_PC
# define SM "sm_"
# elif E17_PROFILE == MEDIUM_PC
# define SM
# elif E17_PROFILE == FAST_PC
# define SM
# endif
#else
# define SM
#endif
fonts {
font: "Vera.ttf" "Edje Vera";
font: "VeraBd.ttf" "Edje Vera Bold";
}
collections {
#include "default_background.edc"
#include "default_battery.edc"
#include "default_border.edc"
#include "default_clock.edc"
#include "default_gadman.edc"
#include "default_ibar.edc"
#include "default_menu.edc"
#include "default_pager.edc"
#include "default_resize.edc"
#include "default_move.edc"
#include "default_temperature.edc"
#include "default_error.edc"
#include "default_cpufreq.edc"
#include "default_ibox.edc"
#include "default_start.edc"
#include "default_winlist.edc"
#include "default_transitions.edc"
#include "default_dialog.edc"
#include "default_desktopname.edc"
#include "default_icons.edc"
}
你可以看到, 这个文件只是简单的列出布局中Edje代码文件需要使用的一系列字体. 上面列出的独立的.edc文件定义它是E17功能的哪个部分,
需要在那里部分加载什么图片, 当然还有图形怎样用来构造图形用户界面. 你可以看到, 例子中的多数模块有自己的Edje代码文件.
这些布局.edc文件中多数从定义使用的图像开始. 一个布局包括大量的PNG图像这些东西当然是不用说的. 你所需要做的就是修改其中一些艺术工作,
如图标或一个模块的默认的背景, 这些通常可以通过替换相应的图像成你自己定制的来实现. 如果你想做的更深入一点,
例如创建一些完全原始的, 你将需要学习Edje的代码。 学习它最好的方法是比较不同布局文件中Edje代码文件。
例如default_icons.edc 像这样开始:
images {
image: "e17_icon_e_0.png" LOSSY 90;
image: "e17_icon_e_glow_0.png" LOSSY 90;
image: "e17_icon_power_button_0.png" LOSSY 90;
image: "e17_icon_power_button_glow_0.png" LOSSY 90;
image: "e17_icon_reset_button_0.png" LOSSY 90;
image: "e17_icon_reset_button_glow_0.png" LOSSY 90;
image: "e17_icon_theme_0.png" LOSSY 90;
image: "e17_icon_theme_glow_0.png" LOSSY 90;
image: "e17_icon_windows.png" LOSSY 90;
image: "e17_icon_module.png" LOSSY 90;
image: "e17_icon_favorites.png" LOSSY 90;
image: "e17_icon_desktop.png" LOSSY 90;
image: "e17_icon_gadget.png" LOSSY 90;
image: "e17_icon_configuration.png" LOSSY 90;
image: "e17_icon_run.png" LOSSY 90;
}
在这后是很多功能相关的Edje代码, 但为了简化修改, 例如如果你希望修改默认菜单图标, 你可以简单的使用你自己定制的图形代替这里列出的文件然后重编译布局.
另一个例子是修改或添加字体到默认的布局中. 如果你看到default.edc,你只要简单的添加你的字体TTF文件在这里, 并移动它们到布局创建目录:
fonts {
font: "Vera.ttf" "Edje Vera";
font: "VeraBd.ttf" "Edje Vera Bold";
font: "NewFont.ttf" "New Font";
font: "NewFontBd.ttf" "New Font Bold";
}
现在你可以在不同的Edje代码文件 (.edc) 中查找 "font:" 字串,并简单的编辑那节来在布局中使用新字体。例如如果你希望你的新字体在窗口边框的标题栏上使用, 你需要修改 default_border.edc 中的这节:
text {
text: "";
font: "Edje Vera";
size: 10;
min: 0 1;
align: 0.0 0.5;
text_class: "title_bar";
}
同样修改E17菜单中使用的字体也是, 你需要编辑 default_menu.edc 中这节:
text {
text: "Item Label";
font: "Edje Vera";
size: 10;
min: 1 1;
align: 0.0 0.5;
text_class: "menu_item";
}
在所有情况下,你可以简单的代替 "Edje Vera" 文本成 "New Font", 依赖你命名它们的方式. 为编辑颜色,你需要在Edje代码文件(.edc) 中查找 "color:" 开始的行,如:
color: 255 255 255 0;
这 四个值是一个 RGBA 代码. 开始的三个是标准的RGB代码, 最后一个是透明度 (255 是不透明, 0 是不可见). 例子中这四个值表示一个完全白的文本并带有最大的透明度, 换句话说这个颜色是不可见的m 要想方便的检查RGB代码, 你可以尝试Elicit, 这个对布局相关的工作很有用.
我知道这不是非常方便, 但它应该可以开始E17布局了。 如果看到其它的E17布局,它们中多数共享相同的结构因些它很容易比较布局中各个部分, 布局结构是模块化的, (几个.edc文件,还有定义了一小部分的图形用户界面).
这节还没有准备好 -请后面再看.
E17 包括一个内建的文件管理器, 它叫 EFM(Enlightenment File manager, Enlightenment文件管理器). 这是 E17的一部分, 并且还在早期的开发中. 所以为推荐使用 EFM 来处理任何重要的文件! 可能会有数据丢失.
下面是在我们完成这章前的一些截屏. 这是文件管理器自已:
这是不同的对话框:
E17 是高度可伸缩的. 甚至就是使用所有的图形效果与动画, 它仍然很省资源. 但是还是有几个方法来修改性能.
如果你有特殊的内存, 你可能想增加 E17 的字体和图像缓存. 这将减少交换, 例如如果你经常切换背景. 这可以通过 "enlightenment_remote" 工具来配置. 相关的选项是:
-font-cache-set OPT1 设置字体缓存大小(kb)
-font-cache-get
得到理论的字体缓存大小(kb)/Get the speculative font cache size (Kb)
-image-cache-set OPT1 设置图像缓存大小(kb)
-image-cache-get 得到理论的图像缓存大小(kb)
要看当前的缓存状态, 你需要使用下面的命令:
$ enlightenment_remote -image-cache-get
REPLY <- BEGIN
REPLY: 4096
REPLY <- END
$ enlightenment_remote -font-cache-get
REPLY <- BEGIN
REPLY: 512
REPLY <- END换句话说就是, 默认的图像缓存是4 MB左右, 默认的字体缓存是 ~0.5 MB. 如果你想修改这些到其它值,你将需要:
$ enlightenment_remote -font-cache-set number
$ enlightenment_remote -image-cache-set number
另外一个你想改的就是帧率, 这个在背景层被渲染. 这同样可以通过 "enlightenment_remote" 修改:
$ enlightenment_remote -framerate-get
REPLY <- BEGIN
REPLY: 30.000
REPLY <- END默认帧率是30, 你同时可以通过下面这个命令修改:
$ enlightenment_remote -framerate-set 数值