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 总是为真,所以循环会不断执行。

完!

相关推荐
泷羽Sec-静安2 分钟前
OSCP官方靶场-Solstice WP
服务器·网络·数据库
华不完14 分钟前
下一代防火墙混合模式部署
运维·服务器·网络
tomcsdn3115 分钟前
SMTPman,smtp的端口号是多少全面解析配置
服务器·开发语言·php·smtp·邮件营销·域名邮箱·邮件服务器
x县豆瓣酱15 分钟前
ubuntu server配置静态IP
linux·运维·ubuntu
工藤新一¹19 分钟前
Linux
linux·运维·服务器
互联网搬砖老肖30 分钟前
运维打铁: 阿里云 ECS 实例的高效运维与管理
运维·阿里云·云计算
longze_738 分钟前
frp内网穿透下创建FTP(解决FTP“服务器回应不可路由的地址。使用服务器地址替代”错误)
运维·服务器·网络
瓦力wow1 小时前
数据分析-名词
运维·服务器·数据分析
自由鬼1 小时前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理
许白掰1 小时前
Linux入门篇学习——Linux 编写第一个自己的命令
linux·运维·数据库·嵌入式硬件·学习