Linux 程序置顶脚本

引言

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

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

脚本

bash 复制代码
#!/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 总是为真,所以循环会不断执行。

完!

相关推荐
龙鸣丿1 小时前
Linux基础学习笔记
linux·笔记·学习
耶啵奶膘3 小时前
uniapp-是否删除
linux·前端·uni-app
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410833 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.3 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-04 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代4 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方5 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘5 小时前
NFS服务器
运维·服务器
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx