让gtk+应用程序的主题风格即时生效

GTK+ 3应用程序开发入门:使用空白模板快速启动 GTK+ 3是一个广泛使用的开源图形库,最初由GNU计划提供,主要用于Linux系统。作为GTK+ 2的继任者,GTK+ 3引入了更多现代设计元素和改进的API,旨在为用户提供丰富的视觉体验和更佳的交互性。它被广泛应用在桌面应用程序的开发中,支持各种操作系统。GTK+ 3应用的调试可以使用如下几种工具::适用于命令行调试,可以通过设置断点、单步执行代码和查看变量值来定位问题。Valgrind:主要用于内存泄漏检测和性能分析,它能帮助开发者识别内存管理中的问题。 阅读详情

主题风格似乎已是GUI应用程序必不可少的元素了,不同用户有不同的审美观,为用户提供多种的主题风格,或者让用户自己定制,都是比较好的选择。记得win95刚出来时,很多人总会把它弄出不同的外观,以显示的自己的水平和与众不同。

 

在gtk+应用程序中,用户可以定制主题风格:设置窗口/控件在不同状态下的颜色,背景图片等等。用户在修改完成后,如何让这些设置即时生效呢?让用户重起所有gtk+应用程序,未免有些不近人情,而且,用户可能只是想看一下预览的效果罢了。最近在做gtk+的嵌入式应用程序时,遇到了这个问题,没有找到相关的资料,只好自己去研究,花了一些时间,有一点心得,这里写出来和大家分享。

 

定制gtk+应用程序的主题风格很简单,gtk+的文档里写得很清楚,这里不再多说了。本文的焦点是,在不重起gtk+应用程序条件下,如何让设置即时生效?

 

Gtk+的主题风格数据是放在rc文件(如~/.gtkrc-2.0)里的,看了一下gtk+中rc相关的一些函数,里面有一个函数名为gtk_rc_reparse_all,猜想它的功能重新加载rc文件的,试了一下,没错,但它只是在当前应用程序生效了,其它应用程序没变化。

 

查找了调用gtk_rc_reparse_all的地方,发现在gtkwindow.c的client_message处理函数里有用到。原来gtk+应用程序在收到client_message后,如果消息的类型是_GTK_READ_RCFILES,就会重新重加载rc文件。于是猜想,如果发一个广播消息给所有的应用程序,那么这些应用程序都会重新加载rc文件了。写一个程序,其中,发送广播消息的代码如下:

static void on_apply_theme( GtkWidget *widget,

                      gpointer   data )

{

      int i;

      GdkEvent *send_event = gdk_event_new (GDK_CLIENT_EVENT);

 

      for (i = 0; i < 5; i++) send_event->client.data.l[i] = 0;

 

      send_event->client.data_format = 32;

      send_event->client.message_type=gdk_atom_intern("_GTK_READ_RCFILES", FALSE);;

 

      gdk_screen_broadcast_client_message(gdk_screen_get_default(), send_event);

      gdk_event_free (send_event);

}

试了一下,OK,所有的gtk+应用程序都生效了。这种方法可以工作,但目前尚不知是否存在副作用。若有其它好的办法,望大家不吝赐教。

GTK电视墙控制客户端应用开发 本文还有配套的精品资源,点击获取 简介:gtk_Client是一个基于GTK库开发的客户端程序,专为Linux系统特别是opensuse发行版设计,用以实现电视墙控制功能。该程序利用 GTK 的图形界面能力,管理和操作多个显示器或投影设备,适用于监控、展示或广播等场景。在Linux环境下,特别是使用opensuse,它能提供窗口管理和布局调整功能,实现多屏显示系统的灵活使用... 阅读详情

相关推荐

Linux桌面美化全套主题包(GTK+图标+GDM登录界面)实战配置

Linux桌面环境的视觉呈现由GTK+ 主题ICON 主题和GDM 主题三者协同构建,形成完整的主题包体系。GTK+ 主题:基于 GTK 图形工具包,通过 CSS 样式文件控制应用程序的控件外观(如按钮、输入框、窗口边框),其样式定义位于。ICON 主题:遵循,使用 SVG/PNG 图标资源和文件组织图标层级,确保系统图示风格统一。GDM 主题。

weixin_42588555的博客 960

关于GTK theme engine的使用和GTK风格介绍

                                            关于GTK+构件的设计风格及思想  引言:图形用户界面是用户与仪器的唯一交互方式,也是一个操作系统当中一个尤为重要的方面,GTK+即是一个应用于界面开发的良好图形库。      GTK+概述        一,1 GTK+简介        GTK+(GIMP ToolKit,GIMP工具包)最初用于开发GIM

freelyc的专栏 1万+

GTK全屏应用程序简单例子

GTK全屏应用程序简单例子

在 gtk 应用程序中使用 KDE 风格

KDE 安装 KDE4 是另外一个基于 plasma 的桌面环境,如果你在 Fedora 安装过程中没有安装 KDE ,你可以很容易的通过 yum 安装,命令如下: su -c 'yum install @kde-desktop' 安装过程结束之后登出系统, 点击你的用户名,从下方的会话管理器中选择 KDE ,然后输入你的密码登入。 *在 gtk 应用程序中使用 KDE 风...

TheoneFx 675

GTK应用.pdf

GTK应用.pdf

智能工厂四大系统协同实战:ERP/PLM/MES/WMS集成架构与数据流解析

本文深入解析了智能工厂中ERP、PLM、MES、WMS四大核心系统的协同集成架构与数据流。通过实战案例,阐述了如何打通系统孤岛,实现从产品设计、资源计划、生产执行到仓储物流的数据无缝流转,从而构建高效、敏捷的智能工厂运营体系。

ujm567890的博客 675

GTK主题安装与使用指南 - 基于pop-os/gtk-theme

本指南旨在帮助用户深入了解并使用从[https://github.com/pop-os/gtk-theme.git](https://github.com/pop-os/gtk-theme.git)获取的GTK主题。我们将分别探讨项目的基本架构、启动流程以及配置细节,以确保用户能够顺利地应用此主题到自己的Linux系统中。 ## 1. 项目目录结构及介绍 项目根目录下主要包括以下几个关键部分:...

gitblog_00383的博客 683

西门子S7-1200的PID应用(恒温热水器)

物料清单:1200PLC一台,模拟量输入模块SM1231(PLC自带的输入通道不支持4-20mA电流输入)一个,PT100一个,温度变送器,热得快,固态继电器。 第一步,硬件接线; 第二步,新建1200工程,添加PLC和模拟量输入模块,修改模块的模拟量输入类型为4-20mA,模拟量模块的IO地址为96-103(8个字); 第三步,新建循环组织块OB30,循环时间选择默认点1...

weixin_30835649的博客 6549

nature-figure 完整教程:3 步画出符合 Nature 期刊标准的科研图

nature-figure 是 nature-skills 仓库中的科研绘图技能,面向 Nature 系列期刊的投稿图件:输入数据、图注或论文结论,它生成可运行的 Python / R 绘图脚本,导出 SVG / PDF / TIFF 三件套,并在导出前自动执行面板对齐、字号与文字碰撞质检。本文带你完成一次完整流程:装好技能、产出第一张多面板 Figure、跑完三道投稿前质检。 [![natur

gitblog_01021的博客 683

三维Copula建模进阶:从对称、嵌套到Pair-Copula(C-Vine/D-Vine)到底怎么选?

本文深入探讨三维Copula建模的进阶策略,包括对称Archimedean、嵌套结构和Vine Copula(C-Vine/D-Vine)的选择方法。通过对比数学特性、计算复杂度和实际应用案例,提供了一套针对金融风险分析等场景的决策框架,帮助分析师根据数据特征选择最优模型。

weixin_27038701的博客 436

FineBI制作数据可视化大屏-数据连接(1)

快速上手大屏可视化,FineBI数据连接配置。

Pangaoyang_的博客 1912

Pop GTK+主题与其他Linux主题对比:优缺点全面分析

Pop GTK+主题是System76为Pop!_OS操作系统设计的官方主题,也是Linux桌面环境中备受瞩目的现代主题之一。作为一款精心设计的GTK+主题,它不仅在视觉上提供了出色的用户体验,还在功能性上有着独特的优势。本文将深入分析Pop GTK+主题与其他主流Linux主题的优缺点,帮助你选择最适合自己的桌面美化方案。💻 [![Pop GTK+主题Logo](https://raw.gi

gitblog_00145的博客 886

密评实战:应用层数据安全防护全解析

本文从实战角度深度解析三级信息系统密评中应用层数据安全防护的核心要点。围绕身份鉴别、访问控制、数据传输与存储安全、不可否认性等关键环节,结合国密算法(SM2/SM3/SM4)与智能密码钥匙等合规技术,提供了从代码审查、日志分析到流量验证的全链路排查方法,助力构建真正符合密评标准的数据安全防线。

weixin_29291185的博客 460

GTK+:GTK+的简介、安装、使用方法之详细攻略

​ GTK+:GTK+的简介、安装、使用方法之详细攻略 目录 GTK+的简介 GTK+的安装 GTK+的使用方法 GTK+的简介 GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。 GTK+ 是一种图形用户界面(GUI)工

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 6万+

中远麒麟堡垒机 SQL注入漏洞复现

中远麒麟堡垒机/baoleiji/api/tokens接口处存在sql注入漏洞,未经身份认证的攻击者可通过该漏洞获取数据库敏感信息及凭证,最终可能导致服务器失陷。

0xSec 2995

Allegro172版本如何在联机模式下使用skill文件操作指导

注意:如果下次重新开启Symphony模式的时候可能导致symphony_skill中的文件内容被清空,所以最好将自己常用的skill文件都写到symphony_skill.txt中去,然后做好备份,需要的时候,在开启软件后把文件放到env目录中去。在用Allegeo172版本进行PCB设计的时候,有时会用到Symphony模式进行多人实时在线协同设计,如下图。这个模式设计起来可以提升设计速度,但是也有一个缺陷,就是不能使用skill文件。如下图,当调用skill的时候就会出现如下报错。

weixin_54787054的博客 1586

推荐开源项目:stylepak - 轻松管理你的GTK+主题

推荐开源项目:stylepak - 轻松管理你的GTK+主题 项目介绍 stylepak 是一个便捷的工具,旨在帮助你在Flatpak环境中自动安装和管理你的主机GTK+主题。无需手动配置,只需几行命令,就能让你的Flatpak应用与你的系统主题保持一致,提供更统一且美观的视觉体验。 项目技术分析 stylepak依赖于以下几个核心组件: bash 和 coreutils:作为基础的脚本语言和工...

gitblog_00100的博客 552

城市仿真软件:AnyLogic_(8).行人与人群动态仿真

定义行人个体的行为和属性,如行走速度、目标位置等。// 创建一个行人// 设置行走速度为1.5 m/s// 设置目标位置为入口// 创建另一个行人// 设置行走速度为1.2 m/s// 设置目标位置为出口// 创建行人// 创建乘客行人与人群动态仿真在城市规划、交通管理和紧急疏散等领域具有广泛的应用。通过AnyLogic提供的行人模型模块,可以有效地模拟行人的个体行为、群体动态和与环境的交互。

kkchenjj的博客 1249

如何为Pop GTK+主题贡献代码:开源社区参与指南

Pop GTK+主题是System76开发的一款现代美观的桌面主题,为Linux用户提供优雅的视觉体验。作为开源项目,它欢迎所有开发者参与贡献,无论是修复bug、添加新功能还是改进现有设计。本文将带你了解贡献代码的完整流程,帮助你快速融入社区。 ## 为什么选择贡献Pop GTK+主题? 参与开源项目不仅能提升你的技术能力,还能为全球用户带来更好的桌面体验。Pop GTK+主题作为Linux生

gitblog_00594的博客 316

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Pop GTK+主题与GNOME Shell集成:打造完美桌面环境

Pop GTK+主题是System76开发的一款美观且功能丰富的桌面主题,专为GNOME Shell环境设计。它不仅提供了现代化的视觉体验,还通过精心优化的界面元素和交互效果,让Linux桌面环境更加易用和舒适。本文将详细介绍如何将Pop GTK+主题与GNOME Shell完美集成,打造个性化的桌面体验。 ## 为什么选择Pop GTK+主题? Pop GTK+主题以其简洁优雅的设计风格和出

gitblog_00625的博客 451

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Solaar主题引擎架构解密:构建GTK+生态下的智能外观系统

在Linux桌面生态中,Solaar作为Logitech设备管理器的翘楚,其主题引擎设计展现了开源项目在用户体验层面的深度思考。本文将带你深入探索Solaar主题引擎的设计哲学、实现机制、实战应用和未来演进路径。 ## 设计哲学:简约而不简单的视觉语言 Solaar主题引擎的设计理念源于一个核心认知:设备管理工具应当是"看得见却感受不到"的存在。这套外观系统并非追求花哨的视觉效果,而是致力于在

gitblog_00280的博客 950

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

探索未来风格:Numix 主题,你的桌面新选择

Numix 是一款富有现代感的扁平化主题,它巧妙地融合了光亮和暗色元素,为你的桌面带来无与伦比的视觉体验。此主题不仅支持 GNOME、Unity、Xfce 和 Openbox 等多种桌面环境,更兼容 GTK+ 3.18 及以上版本。现在就让我们一起深入了解一下 Numix 的魅力所在。 ## 项目简介 Numix 由 The Numix Project 团队精心打造,旨在提供一个跨平台、高颜值

gitblog_01077的博客 687

Pop GTK+主题开发者指南:从源码编译到自定义修改

Pop GTK+主题是System76为Pop!_OS打造的官方桌面主题,以现代设计和流畅体验著称。本指南将帮助开发者从源码编译主题、进行个性化修改,并掌握主题开发的核心技巧,轻松打造专属桌面风格。 [![Pop GTK+主题标志](https://raw.gitcode.com/gh_mirrors/gt/gtk-theme/raw/25ea85d97126992024b03bfb4e4c3b

gitblog_00764的博客 962

Pop GTK+主题:System76官方桌面美化方案完全指南

Pop GTK+主题是System76为Linux桌面环境打造的官方美化方案,以现代简约的设计风格和流畅的用户体验著称。作为GitHub加速计划(gt)项目的一部分,它提供了完整的桌面主题解决方案,包括GTK、GNOME Shell和声音主题等组件,帮助用户轻松打造个性化的Linux桌面环境。 ## 为什么选择Pop GTK+主题? Pop GTK+主题由System76团队精心设计,专为Li

gitblog_01165的博客 947

探索Gotk3:构建优雅的GTK+应用程序的Go语言绑定

在软件开发的世界里,GUI(图形用户界面)工具包是创造美观且交互性良好的应用的关键组件。Gotk3是一个强大的开源项目,它将流行的GTK+3库与Go语言无缝结合,为Go开发者提供了一个高效、跨平台的GUI构建框架。如果你正在寻找一种简单的方式来构建桌面应用,那么Gotk3值得你的关注。 ## Gotk3 是什么? Gotk3是Go语言对GTK+3库的全面绑定,使得Go开发者可以直接利用GTK+...

gitblog_00025的博客 829
上一篇: Vi 技巧集(开个头)
下一篇: 设计log函数库的几个要点
李先静
博客等级 码龄23年 2万+粉丝 846原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值