Linux 程序置顶脚本

引言

当希望我们运行的程序,一直保持在最顶端运行,即置顶状态,那么有很多种方式,这边给出一种脚本方式处理。

通过持续监控,当发现活动窗口不是我们所希望的窗口时,将我们希望置顶的程序窗口置顶。

脚本

#!/bin/bash# 目标窗口的标题
TARGET_WINDOW_TITLE="目标窗口的标题"# 获取当前活动窗口的ID
ACTIVE_WIN_ID=$(xdotool getactivewindow)# 使用wmctrl查找目标窗口ID
TARGET_WIN_ID=$(wmctrl -l | grep "$TARGET_WINDOW_TITLE" | awk '{print $1}')# 检查目标窗口是否已经是活动窗口
if [ "$TARGET_WIN_ID" != "$ACTIVE_WIN_ID" ]; then# 如果不是,则置顶目标窗口wmctrl -a "$TARGET_WINDOW_TITLE"  
fi# 设置循环运行,每隔180秒检查一次  
while true; do  # 获取当前活动窗口的ID  ACTIVE_WIN_ID=$(xdotool getactivewindow)  # 检查目标窗口是否已经是活动窗口  if [ "$TARGET_WIN_ID" != "$ACTIVE_WIN_ID" ]; then  # 如果不是,则置顶目标窗口  wmctrl -a "$TARGET_WINDOW_TITLE"  fi  # 等待180秒  sleep 180  
done

讲解

  1. TARGET_WINDOW_TITLE="目标窗口的标题":这行定义了一个变量 TARGET_WINDOW_TITLE,并将其值设置为“目标窗口的标题”。注意,这里应该替换为实际的窗口标题。

  2. ACTIVE_WIN_ID=$(xdotool getactivewindow):这行使用 xdotool 命令的 getactivewindow 选项来获取当前活动窗口的ID,并将该ID存储在变量 ACTIVE_WIN_ID 中。

  3. TARGET_WIN_ID=$(wmctrl -l | grep "$TARGET_WINDOW_TITLE" | awk '{print $1}'):这行通过管道命令组合 wmctrl -l(列出所有窗口)、grep(搜索包含目标窗口标题的行)和 awk '{print $1}'(打印每行的第一个字段,即窗口ID)来找到目标窗口的ID,并将该ID存储在变量 TARGET_WIN_ID 中。

  4. if [ "$TARGET_WIN_ID" != "$ACTIVE_WIN_ID" ]; then:这行是一个条件判断语句,它检查目标窗口的ID是否不等于当前活动窗口的ID。如果不等,说明目标窗口不是当前活动窗口。

  5. wmctrl -a "$TARGET_WINDOW_TITLE":如果上面的条件为真(即目标窗口不是当前活动窗口),这行命令会使用 wmctrl 的 -a 选项来激活(或置顶)目标窗口。

  6. while true; do:这行开始了一个无限循环,因为 true 总是为真,所以循环会不断执行。

完!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣:3195. 包含所有 1 的最小矩形面积 I(Java)

目录 题目描述:示例 1:示例 2:代码实现: 题目描述: 给你一个二维 二进制 数组 grid。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形,并且满足 grid 中所有的 1 都在矩形的内部。 返回这个矩形可…

LLama-Factory大模型训练框架,基于自己数据集微调qwen7B模型实战

一,项目简介 LLama-Factory,大模型训练框架,支持多种模型,多种训练方式, 项目github地址:link 项目特色 多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGL…

“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“

目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令,安装Nginx 3.2.运行以下命令,查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…

Java 8默认垃圾回收器

Java 8作为Java语言的重要里程碑,不仅引入了Lambda表达式、Stream API等新特性,还在垃圾回收(Garbage Collection, GC)方面继续沿用了Java 7的策略,但同时也提供了新的垃圾回收器选项。在本文中,我们将深入…

Springboot+Vue3开发学习笔记《1》

SpringbootVue3开发学习笔记《1》 博主正在学习SpringbootVue3开发,希望记录自己学习过程同时与广大网友共同学习讨论。 一、前置条件 博主所用版本: IDEA需要破解,破解工具链接容易挂,关注私聊我单发。 Spring Boot是Spring提…

Linux--start-stop-daemon

参考:start-stop-daemon(8) - Linux manual page 1、名称 start-stop-daemon:启动和停止系统守护程序。 2、简介 start-stop-daemon [option...] command 3、描述 start-stop-daemon用于控制系统级进程的创建和终止。使用其中一个匹配选项&#xff0…

vue-router 源码分析——7.命名视图

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行: 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时…

若依前后端分离 前端路由登录页 如何进行跳转

路由守卫,看这篇文章 http://t.csdnimg.cn/HkypThttp://t.csdnimg.cn/HkypT

MySQL存储与优化 一、MySQL架构原理

1.MySQL体系架构 MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层 (1)网络连接层 客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常…

有趣的递归(Recursion),一些直观的示例

从前有座山, 山上有座庙, 庙里有个老和尚在给小和尚讲故事: “从前有座山, 山上有座庙, 庙里有个老和尚在给小和尚讲故事: …” 反复而纠结的定义 看完这个故事, 对递归你已经有了印象, 很好, 这样已足够. 如果你不幸是个喜欢精确定义的人, 那么答案可能无法让你满意: 你想知…

java考试题20道

选择题 编译Java源代码文件的命令是javac javac命令是将Java源代码文件进行编译得到字节码文件(.class文件) java命令是在JVM上运行得到的字节码文件 下面是一个示例: javac test.java -------> test.class java test ------> 运行test.class文件下列那…

vue3 在el-input的光标处插入文本

点击文本框下方的按钮&#xff0c;将相应的文本插入光标处的实现&#xff1a; <el-input type"textarea" rows"4" v-model"formula" blur"handleBlur" clearable></el-input><el-button-group class"short_btn&q…

63、基于深度学习网络的数字分类(matlab)

1、基于深度学习网络的数字分类的原理及流程 基于深度学习网络的数字分类是一种常见的机器学习任务&#xff0c;通常使用的是卷积神经网络&#xff08;CNN&#xff09;来实现。下面是其原理及流程的简要说明&#xff1a; 数据收集&#xff1a;首先&#xff0c;需要收集包含数字…

华为高斯数据库安装

这里主要在虚拟机上安装&#xff0c;选择openEuler系统。已经有很多博文介绍了虚拟机安装&#xff0c;直接推荐博文。 OpenEulerx虚拟机中安装 openEuler添加VMware-tools 数据库的安装也有详细博文推荐 OpenGauss数据库的详细安装 借花献佛&#xff0c;大家努力

【shell script】

文章目录 一、基础shell script二、脚本运行方式的差异三、判断式1.利用test命令2.利用判断符号[] 四、if&#xff0c;case语句1.if...then2.case...esac 五、函数function六、循环1.while和until循环2.for循环 一、基础shell script 在“shell”部分&#xff0c;那是在命令行…

【Oracle】Oracle常用语句大全

目录 创建/删除数据库创建/删除表其他表操作增加字段修改字段重命名字段删除字段 主键/索引/视图相关数据插入数据更新数据删除字段拼接merge into语法案例素材同时更新和插入记录同步错误 分页查询分组查询/筛选排序连接查询1. 内连接&#xff08;INNER JOIN&#xff09;&…

Flutter——最详细(Badge)使用教程

背景 主要常用于组件叠加上圆点提示&#xff1b; 使用场景&#xff0c;消息数量提示&#xff0c;消息红点提示 属性作用backgroundColor红点背景色smallSize设置红点大小isLabelVisible是否显示offset设置红点位置alignment设置红点位置child设置底部组件 代码块 class Badge…

从数据洞察到智慧决策:数字孪生技术在智慧水利中的应用实践,为水库管理提供强有力的数据支撑和智能分析

目录 一、引言 二、数字孪生技术的核心与原理 三、数字孪生技术在智慧水利中的应用场景 1、水库管理的挑战与需求 2、数字孪生水库管理系统的构建 四、数字孪生技术在水库管理中的具体应用案例 1、洪水预测与模拟 2、水资源配置与调度 3、大坝安全监测与评估 4、生态环…

【C++/STL深度剖析】stack和queue的详细概念和使用(图文详解,初学者必看!!)

目录 一、前言 二、stack 的详细解析 &#x1f525; stack的介绍&#x1f525; &#x1f525; stack的构造&#x1f525; &#x1f525; stack的常用接口&#x1f525; &#x1f4a7;push &#x1f4a7;top &#x1f4a7;pop &#x1f4a7;empty &#x1f4a7;size…

C# Queue、List、LinkedList 性能对比

最近需要用到一个先进先出的缓存列队&#xff0c;对比了一下几个可能用的类的性能。。 向添加100w个数据&#xff0c;然后每次弹出100个&#xff0c;输出用时 Queue<int> q new Queue<int>();List<int> l new List<int>();LinkedList<int> ll…