Unity窗口按钮主题规范?

Unity窗口按钮主题规范?

我正在尝试追踪 Unity 窗口按钮主题的规范。 我指的是 Unity 特有的规范,(/usr/share/themes/Radiance/unity),不是gtk 或 metacity 规范(/usr/share/themes/Radiance/metacity-1/usr/share/themes/Radiance/gtk-x.0)。

我发现唯一使用该规范的主题是 Radiance 和 Ambiance 主题(在包中light-themes)。

通过查看/usr/share/themes/(Ambiance|Radiance)/unity,我看到了以下图像:

  • 角色.png
  • 角色焦点状态.png

在哪里

  • roleclosemaximize或之一minimizeunmaximize
  • focusstatefocusedunfocused
  • statenormalprelightpressed

是否有关于如何创建统一窗口主题的规范? 上述哪些文件是最低要求? 何时使用?

(例如,是否已针对所有焦点状态和状态存在close.png曾经使用过的 if close_[focusstate]_[state].png?如果是,那么什么时候?如果不是,为什么它close.png包含在 Ambiance/Radiance 中,而它似乎已经涵盖了所有焦点状态和所有状态?)

答案1

我做了更多的调查,我怀疑:

  • unity 使用 metacity 主题(metacity-1子文件夹)所有窗户装饰
  • unity使用unity子文件夹绘制窗口按钮仅在顶部统一面板中(当窗口最大化并且标题栏被隐藏时(?))

(我目前没有 Unity 可供测试)。

相关错误:https://bugs.launchpad.net/unity/+bug/740232

特别是第 22 条评论:

这个问题已经修复。检查 /usr/share/themes/ambiance/unity,你会发现那里的按钮被加载到面板中。所以,是的,Unity 窗口控制按钮现在可以主题化了。

相关代码(2013年6月3日):http://bazaar.launchpad.net/~unity-team/unity/trunk/view/3355/unity-shared/PanelStyle.cpp#L197

我不相信有任何文献

然而,阅读相关代码(上面)似乎

  • 窗口按钮类型为CLOSEMINIMIZEUNMAXIMIZEMAXIMIZE
  • 窗口按钮状态为NORMALPRELIGHTPRESSEDDISABLEDUNFOCUSEDUNFOCUSED_PRELIGHTUNFOCUSED_PRESSED

这些看起来与 metacity 非常相似。

type为了找到与类型和状态为 的按钮相对应的图像state,我们查找unity/<type_><state_>.png,其中:

  • type_是:
    • 类型为“close” CLOSE
    • 类型为“最小化” MINIMIZE
    • 类型为‘最大化’ MAXIMIZE
    • 类型为‘取消最大化’ UNMAXIMIZE
  • state_是:
    • ''(无)表示状态NORMAL(活动窗口上的按钮);
    • '_focused_prelight' 表示状态PRELIGHT(活动窗口上悬停的按钮);
    • '_focused_pressed' 表示状态PRESSED(活动窗口上被按下的按钮);
    • '_unfocused' 为状态DISABLED;(??)
    • '_unfocused' 表示状态UNFOCUSED(未聚焦窗口上的按钮);
    • '_unfocused_prelight' 表示状态UNFOCUSED_PRELIGHT(悬停在未聚焦窗口上的按钮);
    • '_unfocused_pressed' 表示状态UNFOCUSED_PRESSED(未聚焦窗口上被按下的按钮)。

unity因此,请注意Ambiance 子文件夹中的图像,<role>_focused_normal.png 未使用,即使它是在包中提供的(??)。

如果未找到特定(类型、状态)的图像,则看起来就像绘制了某种默认按钮(而不是使用其中一种现有图像)。

相关内容