27

由于在计算机屏幕前(工作、论文)花费 24/7 编程,因此尽可能多地查看深色是有益的。

Ubuntu 的 Ambiance 主题可以使用Solancer 的定制来巧妙地增强,Eclipse Juno 在应用Roger Dudler 的深色 Juno 主题后看起来基本一致。

但是,使用像 Dudler's 这样的深色 Juno 主题存在问题。Package Explorer中的(非)活动元素的背景颜色Project Explorer以及其他 Eclipse 视图显示的白/灰颜色不仅不一致,而且实际上掩盖了重要的显示组件,例如扩展箭头。

经过多次谷歌搜索,似乎这些颜色是从操作系统继承的,因此无法从 Eclipse 中更改Preferences。我希望深色 GTK 3 / Unity 主题(Solancer's Ambiance)能够提供必要的深色,但事实并非如此。

我已使用 sed 替换下所有文件中的所有预定义颜色,以确定那里定义的任何颜色是否会影响白色/灰色问题颜色;可悲的是他们没有。.css/opt/eclipse/plugins/org.eclipse.platform_4.2.0.v*/css#FF0000

在网上看到提到~/.e4css可能包含此类属性的覆盖 CSS 定义的文件夹后,我在本地计算机上寻找该文件夹,却发现它不存在。

SO上存在与此类似的问题,但没有一个明确指定如何“修复”这些颜色。

我的问题很简单:是否可以定义一个 GTK+ 3.0 CSS 属性(组)来为 Eclipse 4.x 指定这些颜色,应该在哪里配置?

光——它燃烧!

4

5 回答 5

20

终于通过自己手动搜索GTK配置文件找到了解决方案。

事实证明 Eclipse 使用 GTK+ 2.0 。

如果您在 Ubuntu 中安装自定义 GTK 主题(都与 Unity 兼容),您将把主题文件夹解压缩到~/.themes.

GTK+ 3.0 是通过 css 配置的,例如~/.themes/YourTheme/gtk-3.0/gtk.css

GTK+ 2.0 通过rc文件配置,例如~/.themes/YourTheme/gtk-2.0/gtkrc

由于许多应用程序是特定于 GTK+ 2.0 的,因此大多数 GTK+ 3.0 主题都包含这两个配置文件夹。

GTK+ 2.0gtkrc文件中的第一行包含基本的前景色和背景色;这些是必须改变的。

要在 Eclipse 视图中修改选定的活动元素背景颜色,您必须更改颜色base_color。要修改未选中元素的背景颜色,您必须更改selected_bg_color. 字体颜色使用等效fg_color属性进行更改(在这种情况下base_color是简单的'fg_color')。

请记住,这将影响所有 GTK 应用程序,因此您可能需要根据个人喜好进行调整。另请注意,您必须重新加载活动的 GTK 主题并重新启动 Eclipse 才能看到更改生效。执行此操作的最快方法是sudo apt-get install myunity在颜色更改期间重新启动 Eclipse 时启动并保持打开状态,并在每次希望加载gtkrc更改时选择另一个主题,然后选择所需的主题。

gtkrc我活跃的 GTK 主题中的原始引导线如下:

gtk-color-scheme = "base_color:#ffffff\nfg_color:#4c4c4c\ntooltip_fg_color:#ffffff\nselected_bg_color:#f07746\nselected_fg_color:#FFFFFF\ntext_color:#3C3C3C\nbg_color:#F2F1F0\ntooltip_bg_color:#000000\nlink_color:#DD4814"

经过大量实验后,我确定了这个替换配置:

gtk-color-scheme = "base_color:#555555\nfg_color:#000000\ntooltip_fg_color:#999999\nselected_bg_color:#666666\nselected_fg_color:#ffffff\ntext_color:#000000\nbg_color:#333333\ntooltip_bg_color:#000000\nlink_color:#DD4814"

整个操作系统的变化非常令人愉悦!这是 Eclipse 现在的样子,这次没有模糊:

甜蜜的黑暗之母

希望你喜欢新的外观:)

PS 如您所料,Netbeans 的过程是等效的。

更新

这是补充信息,当使用自定义主题(例如 Dudler's)时,上述过程仍然正确。

经过进一步的实验,现在很清楚为什么编辑/opt/eclipse/plugins/org.eclipse.platform_4.2.0.v*/css/*.css没有任何效果:

假设您正在e4_default_gtk.css该位置进行编辑 - 该文件中更改样式的效果仅在您选择GTK.Window -> Preferences -> Appearance -> [Theme]

您可以将此下拉列表中列出的主题以及您的操作系统与上述文件系统位置中的 .css 文件的名称相关联。

于 2012-09-02T19:05:59.483 回答
9

如果您不想更改整个桌面的外观,您可以通过在启动 Eclipse 的命令中设置 GTK2_RC_FILES 标志来为 Eclipse 启动一个单独的 GTK+ 主题。

例子:

GTK2_RC_FILES=/path/to/gtk/theme/gtkrc /opt/eclipse/eclipse

这意味着您可以创建 GTK+ 主题的副本并针对 Eclipse 对其进行调整,而不会影响桌面的任何其他部分。

于 2012-11-07T21:09:55.560 回答
2

你终于不需要改变你的 GTK 主题来拥有一个黑暗的包资源管理器或项目资源管理器等窗口。试试这里发布的解决方案,对我来说,它在 Ubuntu 和 Windows 上都运行良好,无需更改系统主题。

于 2013-04-22T16:23:35.890 回答
1

即使在 2013 年,有些项目仍然不能“主题化”,不仅在 Eclipse IDE 中。与颜色硬编码器(通过常量而不是主题参数定义项目颜色的人)对抗的唯一方法是 Compiz 颜色过滤器。我开发了这样的过滤器,它在反转时保留颜色。所以任何软件都没有问题了。

不幸的是,据我所知,颜色过滤不适用于最新的 Ubuntu。

请在此处阅读更多信息http://ubuntuforums.org/showthread.php?t=1419702&page=3

!!ARBfp1.0
TEMP temp, neg, YPbPr;
TEX temp, fragment.texcoord[0], texture[0], RECT;
RCP neg.a, temp.a;
MAD temp.rgb, -neg.a, temp, 1.0;
MUL temp.rgb, temp.a, temp;
MUL temp, fragment.color, temp;
DP3 YPbPr.x, temp, {0.333, 0.333, 0.333, 1};
SUB YPbPr.y, YPbPr.x, temp.b;
SUB YPbPr.z, YPbPr.x, temp.r;
ADD temp.r, YPbPr.x, YPbPr.z; 
ADD temp.b, YPbPr.x, YPbPr.y;
SUB temp.g, YPbPr.x, YPbPr.z; 
SUB temp.g, temp.g, YPbPr.y;

MOV result.color, temp;
END

# DO NOT MOVE LINE #2 (TEMP...) below, i.e. do not insert comments before it!
# do not insert comments before 'END' token: SOMETIMES not work!

# replace file /usr/share/compiz/filters/negative with this file.

#  Color filter: negative, but preserve colours. Tested on Ubuntu LTS 10.04.

# compiled from [1], [2] by jopka@kvidex.ru, www.bdyssh.ru
# [1] http://hronir.blogspot.com/2008/09/compiz-fusion-color-filter-for-hue.html
# [2] http://ubuntuforums.org/showthread.php?t=1419702

# add to line 15:  MUL temp.b, 0.5, temp.b;  - for warm/melatonine colors, or 
#  MUL temp.g, 0.5, temp.g;  - for cold colors.
于 2013-10-09T08:39:30.633 回答
0

对于 Eclipse 4.5: 1. 创建一个类似于插入片段的文件 2. 将其保存为“/usr/share/themes/..used theme../gtk-3.0/apps/eclipse.css” 3. 包含它“/usr /share/themes/..使用的主题../gtk-3.0/gtk-main.css"

@define-color ecl_scrollbutton_color #7C7C7C;
@define-color ecl_scrollbutton_color_hover #FB7A00;
 
.scrollbar,
.scrollbar.vertical {
    -GtkScrollbar-has-backward-stepper: 0;
    -GtkScrollbar-has-forward-stepper: 0;
    -GtkRange-slider-width: 14;

    border-radius: 20px;

    border-image: none;
}

/*.scrollbar.trough,
.scrollbar.trough.vertical {
}
*/
.scrollbar.slider,
.scrollbar.slider.horizontal,
.scrollbar.slider.vertical,
.scrollbar.button,
.scrollbar.button.horizontal,
.scrollbar.button.vertical {
    border-width: 0.5px;
    border-style: solid;
    border-color: shade (@ecl_scrollbutton_color, 0.66);
    background-image: -gtk-gradient (linear, left top, right top,
                                     from (shade (@ecl_scrollbutton_color, 1)),
                                     color-stop (0.5, @ecl_scrollbutton_color),
                                     to (shade (@ecl_scrollbutton_color, 1)));
    box-shadow: inset 1px 0 shade (@bg_color, 1.1),
                inset -1px 0 shade (@bg_color, 1.01),
                inset 0 1px shade (@bg_color, 1.1),
                inset 0 -1px shade (@bg_color, 1.1);
}

.scrollbar.slider:hover,
.scrollbar.slider.vertical:hover,
.scrollbar.slider.horizontal:hover {
    background-image: -gtk-gradient (linear, left top, left bottom,
                                     from (shade (@ecl_scrollbutton_color_hover, 1)),
                                     color-stop (0.5, @ecl_scrollbutton_color_hover),
                                     to (shade (@ecl_scrollbutton_color_hover, 1)));
    box-shadow: inset 1px 0 shade (@bg_color, 1.1),
                inset -1px 0 shade (@bg_color, 1.1),
                inset 0 1px shade (@bg_color, 1.1),
                inset 0 -1px shade (@bg_colo

于 2016-03-07T11:18:06.063 回答