标准的桌面颜色有哪些?

标准的桌面颜色有哪些?

11.10 中的标准通知颜色是什么?我正在编写一个带有 AppIndicator 的应用程序,我希望它与桌面配色方案相匹配。

有没有什么地方记录了这些内容?我查看了 developer.ubuntu.com,但没有任何收获。

答案1

假设您的真正问题是在您的评论中给出的(并且假设是 python,因为您添加了 py-appindicator 标签):“1.)如何从全局菜单中获取颜色?2.)如何将颜色绘制到我的 appindicator 的图像上?”

你的第二个问题其实是由两个问题组成的:2.a) 如何绘制图像?2.b) 如何定义 Appindicator 图标主题?

我对 2.b 的问题没有答案。Appindicator 要么文档记录非常糟糕,要么文档隐藏得非常好。可以找到一些不太有用的东西这里这里。您可能必须运行myindicator.set_icon_theme_path但我没有找到所使用的不同图标的名称。

1.):以编程方式获取 gtk 小部件的颜色以供使用开罗(稍后绘制它们)你可以使用类似这样的内容(用于菜单):

import gtk
def get_menubar_colors_for_cairo():
    w = gtk.Window()
    b = gtk.MenuBar()
    w.add(b)
    w.show_all()
    w.hide()
    style = b.get_style()
    del(w)
    del(b)
    bg = {}
    fg = {}
    for name, state in [("normal", gtk.STATE_NORMAL),
                        ("active", gtk.STATE_ACTIVE),
                        ("prelight", gtk.STATE_PRELIGHT),
                        ("selected", gtk.STATE_SELECTED),
                        ("insensitive", gtk.STATE_INSENSITIVE)]:
        bg[name] = (style.bg[state].red / 65535.0, style.bg[state].green / 65535.0, style.bg[state].blue / 65535.0)
        fg[name] = (style.fg[state].red / 65535.0, style.fg[state].green / 65535.0, style.fg[state].blue / 65535.0)
    return fg, bg

这为您提供了不同状态下的前景和背景样式。(可能有更好的方法,但这仍然有效......)

请注意,鲜蓝色或鲜红色似乎不是标准菜单颜色的一部分。我找不到它们来自哪里。

还要注意,如果 gtk 主题发生变化,但您保留图标原样,它们将会很突出,因为它们可能具有错误的颜色。

2.a) 您可以使用 cairo 将图像绘制到各种表面(png、pdf、svg、gtk 小部件等)。下面是一个示例,它将一些矩形绘制到 png 表面上,并将文件保存到当前工作目录中。每个矩形的前景色都绘制在给定状态的背景色上:

import cairo
def draw_a_rect(fg, bg, state, outfilename):
    surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
    context = cairo.Context(surf)

    context.rectangle(0, 0, 200, 200)
    context.set_source_rgb(*bg[state])
    context.fill()

    context.rectangle(50, 50, 100, 100)
    context.set_source_rgb(*fg[state])
    context.fill()
    surf.write_to_png(outfilename % state)

fg, bg = get_menubar_colors_for_cairo()
for state_name in ["normal", "active", "prelight", "selected", "insensitive"]:
    draw_a_rect(fg, bg, state_name, "test_%s.png")

最后说明一下:您可能希望让图标的背景保持透明,这样就不用再担心颜色了。

相关内容