以下是我如何使其工作的方法。
使用插件
我已经下载了Eclipse UI Themes插件,如此处所述(直接链接到存档)。但是,我将其解压缩到plugins
目录中,而不是dropins
目录中。同时,我更改了其权限,以允许每个人修改其文件。
此时,您拥有:
plugins/com.github.eclipsecolortheme.themes_1.0.0.201207121019/
├── com
│ └── github
│ └── eclipsecolortheme
│ └── themes
│ └── Activator.class
├── META-INF
│ └── MANIFEST.MF
├── plugin.xml
└── themes
└── css
└── juno.css
juno.css
文件是您需要的。启动Eclipse后,该主题将在外观->Dark Juno下可用。
无需插件
在查看plugin.xml
之后,我有了一个想法,可以在不使用任何插件的情况下创建新主题。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.e4.ui.css.swt.theme">
<theme
basestylesheeturi="themes/css/juno.css"
id="com.github.eclipsecolortheme.themes.darkjuno"
label="Dark Juno">
</theme>
</extension>
</plugin>
您可以将org.eclipse.e4.ui.css.swt.theme
扩展点添加到现有插件中,比如org.eclipse.platform_4.2.0.v201206081400
。此外,它的plugin.xml
已经具有此扩展点,您需要做的唯一事情就是添加适当的theme
。请注意,它必须具有唯一的id
。
<theme
basestylesheeturi="css/my_theme.css"
id="org.eclipse.e4.ui.css.theme.my_theme"
label="My Theme Name">
</theme>
一个新的CSS文件可以放置在
css
目录中,该目录已包含默认的主题集。
org.eclipse.platform_4.2.0.v201206081400/
├── ...
├── css
│ ├── e4_basestyle.css
│ ├── e4_classic_win7.css
│ ├── e4_classic_winxp.css
│ ├── e4_default.css
│ ├── e4_default_gtk.css
│ └── ...
├── images
│ ├── gtkGrey.png
│ ├── gtkHandleDark.png
│ ├── gtkHandle.png
│ ├── gtkTSFrameDark.png
│ ├── gtkTSFrame.png
│ └── ...
├── META-INF
│ ├── eclipse.inf
│ ├── ECLIPSE_.RSA
│ ├── ECLIPSE_.SF
│ └── MANIFEST.MF
├── platform.jar
├── plugin.properties
├── plugin.xml
└── ...
使用
-clean
选项重新启动Eclipse后,您将在所有主题列表中看到一个新创建的项目:
对于我的安装来说,似乎只有在Eclipse重新启动(文件->重启或手动退出和启动)时才能应用CSS更改。
我注意到的唯一奇怪的行为是,来自~/.e4css
目录的CSS文件(如果存在)会覆盖插件目录中的文件。我不确定它来自哪里,但我可以安全地删除其中的任何文件。我也不知道这个目录是否存在于非Linux系统上,但如果存在,我想它应该位于用户的主目录或文档
目录中的某个位置。
更新2
我刚刚尝试从头开始添加一个新主题,并注意到上面的XML中有一个小错误。为了正确注册一个新主题,它必须具有唯一的id
属性。否则,您将收到一个错误:
java.lang.IllegalArgumentException: A theme with the id 'org.eclipse.e4.ui.css.theme.e4_default' is already registered
at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngine.registerTheme(ThemeEngine.java:186)
...
看来我之前说只要重新启动Eclipse以注册新主题是不正确的。然而,eclipse -clean
可以解决问题。