在某些WM中,可以选择影响窗口显示方式的主题,例如:按钮的背景如何着色。
如果我使用裸Xlib调用绘制窗口,我该怎么做才能符合这些受主题影响的设置?即我应该为每个可能的WM编写特定的代码吗?一般来说如何解决?
答案 0 :(得分:1)
有几种主题类型,它们有时会一起播放,但不应混淆。
某些桌面环境将所有这些主题捆绑在“桌面”主题中,或者至少提供一个前端来选择所有这些主题。然而,这些主题独立于桌面环境并且彼此独立。可以使用配置文件设置它们。
如果您希望您的应用程序符合用户的首选项,首先您应该遵守Icon主题。指针主题由X服务器处理,只要您只使用鼠标图标而不上传自己的X服务器。
第二个显而易见的事情是Color主题,但不幸的是没有颜色主题的标准,Gtk +和Qt框架都以独立的方式提供这个功能(桌面主题配置器理解和操纵两者以提供一致性)。您可以做一些魔术来确定用户是喜欢Gtk +颜色还是Qt颜色(例如,运行Gnome或KDE),然后从那里稍微提取颜色。
然而,最难的是提供UI元素的外观和感觉,这对用户选择的UI工具包主题是真实的。首先,您需要再次决定Gtk +和Qt(其他工具包也是主题存在,但通常不是由用户主题,或者像Enlightenment这样的小众玩家)。然后,您将不得不重新实现相同的功能。有趣的是,许多主题在Gtk +中都有自己的主题引擎,并且可以让主题引擎为您完成工作。已有多方采纳的方法。例子:
我的建议是不要重新发明轮子,而是使用Qt(或Gtk +,如果你愿意的话)用于超出基本绘图操作的GUI元素。请注意,根据我的经验,即使原始绘图通常使用Qt比使用Xlib更好。 用户可以获得她期望的外观和感觉(不仅只有外观),界面丰富而稳定,并且您可以节省大量时间来编写所有这些内容。