在一些WMs中,可以选择影响窗口如何显示的主题,例如按钮的背景如何着色。
如果我使用纯Xlib调用绘制一个窗口,我应该怎么做才能符合这些受主题影响的设置?也就是说,我是否应该为每个可能的WM编写特定的代码?它通常是如何解决的?
发布于 2012-12-01 02:34:18
有几个主题类型,他们有时一起玩,但他们不应该被混淆。
颜色管理器/边框主题描述每个窗口的装饰,而不是content
主题的框架内使用的调色板定义一组鼠标指针图标
一些桌面环境将所有这些主题捆绑在“桌面”主题中,或者至少提供一个前端来选择所有这些主题。然而,这些主题是独立于桌面环境的,也是相互独立的。可以使用配置文件设置它们。
如果你想让你的应用程序符合用户的喜好,首先你应该坚持图标主题。指针主题是由X服务器处理的,只要你只使用常用的鼠标图标,而不是上传你自己的图标到X服务器。
第二个显而易见的事情是颜色主题,但不幸的是,颜色主题没有标准,Gtk+和Qt框架都以独立的方式提供了这一功能(桌面主题配置器理解和操作两者以提供一致性)。您可以使用一些魔法来找出用户更喜欢Gtk+颜色还是Qt颜色(例如,正在运行Gnome或KDE),然后从那里提取一些颜色。
然而,最困难的事情是提供符合用户选择的UI工具包主题的UI元素的外观和感觉。首先,您必须再次在Gtk+和Qt之间做出选择(也存在其他可主题化的工具包,但通常不是由用户或像启迪这样的利基玩家来主题化的)。然后,您将不得不重新实现相同的功能。有趣的是,许多主题在Gtk+中都有自己的主题引擎,可以让主题引擎为您完成工作。一种已经被几个政党采用的方法。示例:
使用inconsistencies.
我的建议是不要重复发明轮子,而是对超出基本绘图操作的图形用户界面元素使用Qt (或Gtk+,如果您愿意)。请注意,根据我的经验,即使是原始绘制,使用Qt通常也比使用Xlib更好。用户得到了他们期望的外观和感觉(不仅仅是外观),界面丰富而稳定,您可以节省大量的时间来编写所有这些东西。
https://stackoverflow.com/questions/13649824
复制相似问题