Ubuntu平铺左、右、上、下、1/2、1/4窗口(脚本)

前言

之前因为一直在用Ubuntu 18或者Ubuntu 20然后发现装了GNOME插件后,电脑在使用过程中,会时不时的卡死(鼠标没问题,键盘输入会有10-20秒的延迟)频率基本是一小时一次,因为这种卡顿会很容易打断思路,所以我重装了系统,从最小化安装开始,什么软件都经过我一手安装了(没有安装GNOME插件)发现没有卡顿的现象了(初步排查是GNOME插件的问题)。

所以就有了这篇用脚本实现窗口平铺的文章。如何你们用插件没有这个BUG那么可以直接下载GNOME- WinTile插件就可以实现了。

正文

创建脚本文件/usr/local/bin/ubuntu_move_windows,内容如下:

#!/bin/bash
ScriptVersion="1.0"unset key
unset file
unset directorywid=$(xwininfo -root | grep Width | awk '{print $2}')
hei=$(xwininfo -root | grep Height | awk '{print $2}')if [ "$(xrandr 2>/dev/null | grep ' connected' | wc -l )" == "1" ];thenhalf_wid=$(expr $wid / 2)half_hei=$(expr $hei / 2)
elsehalf_wid=$(expr $wid / 4)half_hei=$(expr $hei / 2)
fiwindwos_name=":ACTIVE:"main(){local offset=0if [ "$second_screen" == "2" ];thenoffset=$widfiif [ "$key" == "left" ];then#置于左半屏幕wmctrl -r $windwos_name -e 2,$offset,0,$half_wid,$heielif [ "$key" == "right" ];then#置于右半屏幕wmctrl -r $windwos_name -e 2,$(expr $half_wid + $offset),0,$half_wid,$heielif [ "$key" == "u" ];then#置于左上屏幕wmctrl -r $windwos_name -e 2,$offset,0,$half_wid,$half_heielif [ "$key" == "i" ];then#置于右上屏幕wmctrl -r $windwos_name -e 2,$(expr $half_wid + $offset),0,$half_wid,$half_heielif [ "$key" == "j" ];then#置于左下屏幕wmctrl -r $windwos_name -e 2,$offset,$half_hei,$half_wid,$half_heielif [ "$key" == "k" ];then#置于右下屏幕wmctrl -r $windwos_name -e 2,$(expr $half_wid + $offset),$half_hei,$half_wid,$half_heielif [ "$key" == "top" ];then#置于上半屏幕wmctrl -r $windwos_name -e 2,0,0,$wid,$half_heielif [ "$key" == "down" ];then#置于下半屏幕wmctrl -r $windwos_name -e 2,0,$half_hei,$wid,$half_heielif [ "$key" == "center" ];then#居中屏幕get_current_windows_sizefi
}get_current_windows_size(){windows_wid=$(xwininfo -id $(xdotool getactivewindow) | awk '/Width/ {print $2}')windows_hei=$(xwininfo -id $(xdotool getactivewindow) | awk '/Height/ {print $2}')wmctrl -r $windwos_name -e 2,$(expr $(expr $wid - $windows_wid ) / 2),$(expr $(expr $hei - $windows_hei ) / 2),$windows_wid,$windows_hei
}usage (){echo "Usage :  $(basename "$0") [options] [--] argument-1 argument-2Options:-h, --help                  Display this message-d, --debug                 Debug model run-v, --version               Display script version-p, Screen to be displayed, E.g: -p [1|2] Suitable for multiple monitors-l, Move windows to Left-r, Move windows to Right-u, Move windows to Left-Up-i, Move windows to Right-Up-j, Move windows to Left-Down-k, Move windows to Right-Down"}while getopts ":hp:vlruijkctdw:D:-:" opt; docase "${opt}" inh) usage && exit 0;;p) second_screen="${OPTARG}";;v) echo "$0 -- Version $ScriptVersion"; exit ;;l) key="left";;r) key="right";;u) key="u";;i) key="i";;j) key="j";;k) key="k";;t) key="top";;d) key="down";;c) key="center";;w) windwos_name="${OPTARG}";;D) directory=${OPTARG};;-) case "${OPTARG}" inhelp) usage && exit 0;;version)    echo "$0 -- Version $ScriptVersion"; exit ;;file)       file=${!OPTIND}; OPTIND=$((OPTIND+1));;directory)  directory=${!OPTIND}; OPTIND=$((OPTIND+1));;*)          echo "Invalid option: --${OPTARG}" >&2 && exit 1;;esac;;:) echo "Option -${OPTARG} requires an argument." >&2 && exit 1;;*) echo "Invalid option: -${OPTARG}" >&2 && exit 1;;
esac
done
shift $((OPTIND-1))main "$@"

保存写入后,给这个文件添加执行权限:sudo chmod +x /usr/local/bin/ubuntu_move_windows 。 然后来到设置中添加键盘快捷键-自定义快捷键,如下:
在这里插入图片描述
在这里插入图片描述
这个快捷键是按照Mac OS里的Magnet软件来设置的

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

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

相关文章

首屏性能优化:提升用户体验的秘籍

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Chrome中如何导出和导入书签

导出书签 如下图所示: 右上角三点->书签和清单->书签管理器->右上角三点->导出书签 然后你选择保存地址即可。打开后如下: 导入书签 如下图所示: 右上角三点->书签和清单->导入书签和设置->选择以前导出的书签&…

存储引擎的详细介绍

通过查询可得: (一)InnoDB引擎 简介:具备外键支持功能的事务存储引擎 优点: 1.是mysql的默认事务型存储引擎,它被设计用来处理大量短期事务(确保事务完整提交和回 滚) 2.除了增加…

【数仓】通过Flume+kafka采集日志数据存储到Hadoop

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用(集群配置)【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置【数仓】kafka软件安装及集群配置【数仓】flume软件安…

【重新定义matlab强大系列十七】Matlab深入浅出长短期记忆神经网络LSTM

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

19、电源管理入门之微内核中的电源管理

目录 1. QNX电源管理框架 2. QNX客户端API库 3. QNX代码分析 4. Fuchsia中的电源管理 5. Minix中的电源管理 6. Harmony OS中的电源管理 之前介绍的电源管理机制基本都是在Linux中实现的,可以看到很复杂,各种框架,明明一个操作非要转来转去,而且在内核里面实现,跟内…

静态时序分析:SDC约束命令set_multicycle_path详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 目录 指定多周期值 指定建立/保持时间检查 指定上升/下降沿 指定起点或终点 指定时序路径起点 删除多周期路径 添加注释 单周期时序分析 多周期时序分析 本章将继续上章的步伐&a…

php集成修改数据库的字段

1.界面效果 2.代码 <?phpecho <form action"" method"post"><label for"table">表名:</label><input type"text" id"table" name"table"><br><div id"fieldsContaine…

文本生成视频:从 Write-a-video到 Sora

2024年2月15日&#xff0c;OpenAI 推出了其最新的文本生成视频模型——Sora。Sora 能够根据用户的指令生成一分钟长度的高质量视频内容。这一创新的发布迅速在社会各界引发了广泛关注与深入讨论。本文将围绕本实验室发表于SIGGRAPH AISA 的 Write-a-video和 Sora 展开&#xff…

提示词微调:LLMs适应新任务的强大技术

原文地址&#xff1a;Prompt Tuning: A Powerful Technique for Adapting LLMs to New Tasks 2023 年 10 月 18 日 提示词微调是一种通过训练少量提示参数来使大型语言模型 (LLM) 适应新任务的技术。提示文本添加在输入文本之前&#xff0c;以指导LLM生成所需的输出。由于其高…

深入分析Java线程池——ThreadPoolExecutor

文章目录 Java 线程池概述ThreadPoolExecutor 构造方法线程池拒绝策略工作流程并发库中的线程池CachedThreadPoolFixedThreadPoolSingleThreadExecutorScheduledThreadPool ThreadPoolExecutor 源码分析线程池状态表示获取 runState获取 workerCount生成 ctl 提交任务 execute(…

ARTS Week 20

Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上&#xff0c;可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens&#xff0c;其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…