ubuntu Setforeground 前台应用切换
场景分析
有这样一个系统,一个服务主进程用于接收指令,其它服务是独立的gui 程序,服务进程根据命令将对应的gui 程序切换到前台。
windows 平台有Setforeground 这个api,可以根据进程ID,将某个应用的窗口切换到前台。ubuntu 并没有类似的api, 这里借助xdotool 这个第三方库,实现类似的功能。
xdotool git clone 后,直接make,生成动态库libxdo 和执行程序程序 xdotool。
需求
SetForeGround 大概就是根据进程ID,并激活该窗口为前台窗口。用xdotool 命令实现如下
xdotool search --pid 进程ID
#返回窗口idxdotool windowactivate 窗口ID
search 返回的ID 如果有多个,是因为一个进程有多个窗口,需要根据窗口标题再筛选
实际应用中,一般直接调用库,代码实现如下:
bool SetForeground(uint32_t pid, const char* window_name)
{Window *list = NULL;unsigned int nwindows;xdo_search_t search;xdo_t *context = xdo_new(NULL);memset(&search, 0, sizeof(xdo_search_t));search.max_depth = -1;search.require = xdo_search::SEARCH_ANY;search.pid = pid;search.searchmask = SEARCH_PID;do{if(list != NULL){free(list);}xdo_search_windows(context, &search, &list, &nwindows);if(nwindows > 0){for(int i = 0;i < nwindows;i++){unsigned char *name;int name_len;int name_type;xdo_get_window_name(context, list[i], &name, &name_len, &name_type);QString window_name((char*)name);if(window_name == window_name){xdo_activate_window(context, list[i]);}}}usleep(500000);}while(nwindows == 0);if(list != NULL){free(list);}xdo_free(context);return true;
}//调用:
SetForeground(QCoreApplication::applicationPid(), this->windowTitle().toStdString().c_str());
注:这个只适用于x11 图形平台,wayland 可能存在问题。
相关文章:
ubuntu Setforeground 前台应用切换
场景分析 有这样一个系统,一个服务主进程用于接收指令,其它服务是独立的gui 程序,服务进程根据命令将对应的gui 程序切换到前台。 windows 平台有Setforeground 这个api,可以根据进程ID,将某个应用的窗口切换到前台。…...
【Java 进阶篇】从Java对象到JSON:Jackson的魔法之旅
在现代的软件开发中,处理数据的能力是至关重要的。而当我们谈及数据格式时,JSON(JavaScript Object Notation)通常是首选。为了在Java中轻松地将对象转换为JSON,我们需要一种强大而灵活的工具。这时,Jackso…...
HarmonyOS ArkTS语言,运行Hello World(二)
一、认识DevEco Studio界面 进入IDE后,我们首先了解一下基础的界面。整个IDE的界面大致上可以分为四个部分,分别是代码编辑区、通知栏、工程目录区以及预览区。 代码编辑区 1、中间的是代码编辑区,你可以在这里修改你的代码,以…...
四、文件包含漏洞
一、文件包含漏洞 解释:文件包含漏洞是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行;其还能够使得服务器上的源代码被读取,在PHP里面我们把可重复使用的函数写入到单个文件中&#x…...
Java中基于SSM框架的数据保存方法与日期处理
一、详解 在SSM框架中,保存数据通常涉及到服务层和数据访问层。服务层处理业务逻辑,而数据访问层负责与数据库进行交互。 二、代码 Override public void save(Student student) { Date date new Date(); SimpleDateFormat format new Sim…...
编译器核心技术概览
编译技术是一门庞大的学科,我们无法对其做完善的讲解。但不同用途的编译器或编译技术的难度可能相差很大,对知识的掌握要求也会相差很多。如果你要实现诸如 C、JavaScript 这类通用用途语言(general purpose language),…...
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)
按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉…...
守护进程的理解
什么是守护进程 daemon False # 是否以守护进程方式运行,True守护,False 非守护 在这段代码中,daemon 变量的值决定了进程是否以守护进程方式运行。如果 daemon 的值为 True,则表示进程将以守护进程方式运行,否则为…...
VMware虚拟机的安装教程
安装VMware虚拟机的步骤如下: 首先,你需要从VMware官方网站(https://www.vmware.com)下载VMware虚拟机软件安装程序。 一旦下载完成,双击运行安装程序。 在安装程序启动后,你将看到一个欢迎界面。点击"…...
Linux环境搭建(tomcat,jdk,mysql下载)
是否具备环境(前端node,后端环境jdk)安装jdk,配置环境变量 JDK下载 - 编程宝库 (codebaoku.com) 进入opt目录 把下好的安装包拖到我们的工具中 把解压包解压 解压完成,可以删除解压包 复制解压文件的目录,配置环境变量…...
80万条中文ChatGPT多轮对话数据集
80万条中文ChatGPT多轮对话数据集 代码代码地址代码解析 代码 import json import numpy as np from tqdm import tqdm import redef find_chinese_text(text):pattern re.compile(r[^\u4e00-\u9fff])return pattern.sub(, text)with open("E:/data_sets/multiturn_chat…...
阿里云ECS服务器如何搭建并连接FTP,完整步骤
怎么用终端连接服务器就不多说了,直接开始搭建FTP。 我是用root账号执行的命令,如果不使用root账号,注意在命令前面加sudo。 一、安装FTP 我这里安装的是vsftpd。 1、检查是否已安装vsftpd: vsftpd -v如果出现了版本信息&…...
uni-app 使用uni.getLocation获取经纬度配合腾讯地图api获取当前地址
前言 最近在开发中需要根据经纬度获取当前位置信息,传递给后端,用来回显显示当前位置 查阅uni-app文档,发现uni.getLocation () 可以获取到经纬度,但是在小程序环境没有地址信息 思考怎么把经纬度换成地址,如果经纬度…...
cocos2dx Animate3D (一)
3D相关的动画都是继承Grid3DAction 本质上是用GirdBase进行创建动画的小块。 Shaky3D 晃动特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 晃动的范围 // z轴是否晃动 static Shaky3D* create(float initWithDuration, const Size& …...
2023年最新PyCharm环境搭建教程(含Python下载安装)
文章目录 写在前面PythonPython简介Python生态圈Python下载安装 PyCharmPyCharm简介PyCharm下载安装PyCharm环境搭建 写在后面 写在前面 最近博主收到了好多小伙伴的吐槽称不会下载安装python,博主听到后非常的扎心,经过博主几天的熬夜加班,…...
3D火山图绘制教程
一边学习,一边总结,一边分享! 本期教程内容 **注:**本教程详细内容 Volcano3D绘制3D火山图 一、前言 火山图是做差异分析中最常用到的图形,在前面的推文中,我们也推出了好几期火山图的绘制教程࿰…...
跳跃游戏[中等]
优质博文:IT-BLOG-CN 一、题目 给你一个非负整数数组nums,你最初位于数组的第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返…...
华为昇腾开发板共享Windows网络上网的方法
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 具体参考文章:linux(内网)通过window 上网。具体是两步:一是在windows上设置internet连接共享。二是打开Atlas 200I D…...
【工具栏】热部署不生效
目录 配置热部署: 解决热部署不生效: 首先检查: 第一步: 第二步: 第三步: 第四步: 配置热部署: https://blog.csdn.net/m0_67930426/article/details/133690559 解决热部署不…...
一键去水印免费网站快速无痕处理图片、视频水印
水印问题往往是一个大麻烦。即使我们只想将这些照片保留在我们的个人相册中以供怀旧,水印也可能像顽固的符号一样刺激我们的眼睛。为了解决这个问题,我们需要不断探索创新的解决方案,让我们深入研究一款强大的一键去水印免费网站“水印云”。…...
STL-Volume-Model-Calculator:3D打印模型体积计算的智能助手
STL-Volume-Model-Calculator:3D打印模型体积计算的智能助手 【免费下载链接】STL-Volume-Model-Calculator STL Volume Model Calculator Python 项目地址: https://gitcode.com/gh_mirrors/st/STL-Volume-Model-Calculator 你是否在3D打印前为材料用量估算…...
3步完美解决华硕主板传感器识别:FanControl终极兼容性指南
3步完美解决华硕主板传感器识别:FanControl终极兼容性指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...
APKMirror终极指南:5步打造安全便捷的安卓应用下载体验
APKMirror终极指南:5步打造安全便捷的安卓应用下载体验 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 你是否曾因为找不到官方应用商店的特定版本而苦恼?是否担心第三方下载站点的安全风险?APK…...
观察 Taotoken 在不同时段与模型下的服务稳定性与可用性
观察 Taotoken 在不同时段与模型下的服务稳定性与可用性 1. 长期使用体验概述 作为长期使用 Taotoken 的开发者,我们在过去六个月中持续通过 API 调用各类主流模型,覆盖了工作日白天、晚间以及周末等不同时段。整体而言,平台提供的统一接入…...
OpenCV车牌识别避坑指南:为什么你的字符总分割错?聊聊铆钉、汉字与verifyCharSize
OpenCV车牌识别实战:从字符分割到参数调优的深度解析 车牌识别系统在实际部署时,开发者常会遇到字符分割不准确、汉字识别率低等问题。本文将聚焦三个关键环节:铆钉干扰消除的阈值设定、字符尺寸验证的参数优化以及汉字轮廓的特殊处理&#x…...
别再只用SMOD了!SAP采购订单屏幕增强:BADI与函数组MEPOBADIEX的深度解析与应用选择
SAP采购订单屏幕增强技术选型:BADI与SMOD的深度对比与实践指南 在SAP系统实施过程中,采购订单屏幕增强几乎是每个企业都会遇到的定制化需求。当标准功能无法满足业务需求时,开发者通常面临两种主流技术路径的选择:传统的SMOD用户出…...
并发编程AQS之ReentrantLock/Semaphore/CountDownLatch/CyclicBarrier
一、管程——Java线程同步的设计思想管程:指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。互斥:同一时刻只允许一个线程访问共享资源;同步:线程之间如何通信、协作。MESA模型在管程的发展史上࿰…...
别再用Docker Desktop跑边缘了!Docker 27原生Edge Mode启用指南:零依赖、无GUI、资源占用低于Node-RED的3种部署范式
更多请点击: https://intelliparadigm.com 第一章:Docker 27 Edge Mode的架构革命与轻量化本质 Docker 27 引入的 Edge Mode 并非简单功能叠加,而是对容器运行时模型的一次范式重构——它将调度、网络与生命周期管理下沉至边缘节点本地&…...
企业内如何通过Taotoken实现API调用的审计与安全管控
企业内如何通过Taotoken实现API调用的审计与安全管控 1. 企业API调用的核心安全挑战 在企业环境中使用大模型API时,技术负责人通常面临三个维度的管控难题:密钥分发难以追踪、部门间用量无法隔离、请求来源缺乏审计。传统直连厂商API的方式往往需要为每…...
独立开发者利用Taotoken快速验证AI产品创意与实现原型开发
独立开发者利用Taotoken快速验证AI产品创意与实现原型开发 1. 快速验证AI产品创意的挑战 对于独立开发者而言,验证AI产品创意往往面临多重挑战。首要问题是模型选型困难,不同大模型在理解能力、生成质量和响应速度上各有特点,但逐一接入原厂…...
