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软件来设置的
相关文章:
Ubuntu平铺左、右、上、下、1/2、1/4窗口(脚本)
前言 之前因为一直在用Ubuntu 18或者Ubuntu 20然后发现装了GNOME插件后,电脑在使用过程中,会时不时的卡死(鼠标没问题,键盘输入会有10-20秒的延迟)频率基本是一小时一次,因为这种卡顿会很容易打断思路&…...
深度学习+感知机
深度学习感知机 1感知机总结 2多层感知机1XOR2激活函数3多类分类总结 3代码实现 1感知机 是个很简单的模型,是个二分类的问题。 感知机(perceptron)是Frank Rosenblatt在1957年提出的一种人工神经网络,被视为一种最简单形式的前馈神经网络&…...
爬虫练习:获取某招聘网站Python岗位信息
一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(拉钩Python岗位数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [公司, 规模,岗位,地区,薪资,经验要求]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer…...
Java对接腾讯云直播示例
首先是官网的文档地址 云直播 新手指南 可以发现它这个主要是按流量和功能收费的 价格总览 流量这里还只收下行的费用,就是只收观看消耗的流量费 其它的收费就是一些增值业务费 (包括直播转码、直播录制、直播截图、直播审核、智能鉴黄、实时监播、移动直…...
free pascal 调用 C#程序读 Freeplane.mm文件,生成测试用例.csv文件
C# 请参阅:C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件 Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能&#x…...
在Blender中清理由Instant-NGP等几何学习技术生成的网格
使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式(按Tab键)。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…...
【重要公告】BSV区块链上线TypeScript SDK,未来将支持更多开发语言
发表时间:2024年2月21日 BSV区块链协会宣布上线JavaScript和TypeScript SDK(即“标准开发工具包”)。TypeScript SDK旨在为开发者提供新版统一核心代码库,以便利开发者在BSV区块链上开发能够任意扩容的应用程序。新上线的SDK替…...
【工具使用-VScode】VScode如何设置空格和tab键显示
一,简介 在提交代码的时候,行末尾的tab和空格不符合规范,但是如果在vscode中不显示tab和空格的话,不能及时的查看到并改正,导致提交代码之后还需要再次进行修改,效率比较低。 代码编辑界面如图所示&#…...
【原理图PCB专题】Cadence 17.4版本原理图及PCB Mudule复用
在我们设计复杂板卡的时候,往往会遇到一部分电路被反复使用的情况。虽然使用复制黏贴我们很快的做出相同的设计,但由于不同工程师能力水平不同,有时可能存在部分电路被漏掉导致重大异常。尤其对于大规模复杂设计,如果设计者浪费时间制作相同模块上,这无疑是对于工程师精力…...
llama-index调用qwen大模型实现RAG
背景 llama-index在实现RAG方案的时候多是用的llama等英文大模型,对于国内的诸多模型案例较少,本次将使用qwen大模型实现llama-index的RAG方案。 环境配置 (1)pip包 llamaindex需要预装很多包,这里先把我成功的案例…...
基于springboot的医院信息管理系统(程序+代码+文档)
** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…...
【环境配置】Linux MySQL8 忘记密码解决措施
本片博客介绍 Linux 操作系统 Ubuntu 下,MySQL8 忘记密码怎么重新设置,笔者亲测有效,分享给大家。 查看 MySQL 版本 $ mysql --version停止 MySQL 服务器,并查看状态是否变更为 Server shutdown complete # 等价命令sudo syste…...
MySQL-锁:共享锁(读)、排他锁(写)、表锁、行锁、意向锁、间隙锁,锁升级
MySQL-锁:共享锁(读)、排他锁(写)、表锁、行锁、意向锁、间隙锁 共享锁(读锁)、排他锁表锁行锁意向锁间隙锁锁升级 MySQL数据库中的锁是控制并发访问的重要机制,它们确保数据的一致性…...
docker 使用官方镜像搭建 PHP 环境
一、所需环境: 1、PHP:7.4.33-fpm 的版本 2、Nginx:1.25.1 的版本 3、MySQL: 5.7 的版本 4、Redis:7.0 的版本 1.1、拉取官方的镜像 docker pull php:7.4.33-fpm docker pull nginx:1.25.1 docker pull mysql:5.7 do…...
STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置
STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置前言第1章 设置字体颜色第2章 设置字体大小第3章 设置代码区背景颜色总结 前言 编程软件环境最好就设置一个自己喜欢的界面进行显示,这样看起来会比较舒服些…...
【《高性能 MySQL》笔记】性能优化
学习知识最快最好的方式就是问对问题。 本文将通过“问正确的问题”的方式循序渐进地深入总结性能优化相关知识。 性能优化基础 Q1:什么是“性能”? 即响应时间(RT,Response Time),完成某个任务所需要的时间度量。 Q2:什么是“性能优化”? 性能优化为在一定工作负…...
Spring AOP底层原理
目录 代理模式 静态代理 动态代理 1. JDK动态代理 创建⼀个代理对象并使用 2. CGLIB动态代理 SpringAOP底层原理面试 代理模式 Spring AOP是基于动态代理模式来实现的 代理模式:静态代理模式动态代理模式 代理模式, 也叫委托模式。 定义:为其…...
proteus8.9 示波器放大
proteus8.9 示波器放大** 1. 打开放大:Windows徽标键 加号 2. 取消放大:Windows徽标键 ESC...
代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集
动态规划:01背包理论基础 文章讲解:代码随想录(programmercarl.com) 视频讲解:带你学透0-1背包问题!_哔哩哔哩_bilibili 动态规划:01背包理论基础(滚动数组) 文章讲解:代码随想录(…...
1908_Arm Cortex-M3的实现
1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…...
鸿蒙ArkTs实战:从零构建so胶水层,打通C/C++原生能力与JS/TS应用生态
1. 理解so胶水层在鸿蒙ArkTs中的核心价值 在鸿蒙应用开发中,我们经常会遇到需要调用C/C原生能力的场景。比如你可能有一个用C语言编写的高性能图像处理库,或者一个经过多年优化的数据解析模块。这时候就需要一个"翻译官"——也就是我们说的so胶…...
mysql如何设计积分系统_mysql流水账与余额对账
流水表必须带唯一业务单号trade_no并建唯一索引,用INSERT IGNORE或ON DUPLICATE KEY UPDATE防重;余额统一用BIGINT存最小单位,所有增减走原子UPDATE;对账分实时(查最近N条)与离线(每日全量SUM比…...
长沙心理科医院暖心指南+真实案例分享
行业痛点分析在长沙,心理疾病就诊仍面临多重挑战。据《2023年湖南省心理健康白皮书》显示,约62%的轻度心理障碍患者因“怕被歧视”而延迟就诊,其中39%将情绪波动误认为“性格问题”,导致轻症恶化为中重度。三甲医院普遍面临心理科…...
80% 案例显示:恶意活动激增极大可能预示新安全漏洞
研究人员发现,在大约80%的案例中,针对边缘网络设备的恶意活动激增(如网络侦察、定向扫描和暴力破解尝试),往往是新安全漏洞(CVE)出现的前兆。 Network Security Scanning Software - N-able 这…...
Antd Table固定列踩坑实录:从‘有缝’到‘无缝’的完整调试心路与CSS终极覆盖指南
Antd Table固定列调试手记:从像素级对齐到CSS层叠的艺术 周五下午4点23分,距离管理后台系统上线还有不到3小时。当我第17次刷新页面时,那个顽固的白色缝隙依然刺眼地横亘在固定列和滚动区域之间——就像开发 deadline 前最后的嘲讽。这个 ant…...
怎么限制用户使用的最大查询数 MAX_QUERIES_PER_HOUR设置
MAX_QUERIES_PER_HOUR 是 MySQL 原生账户级 SQL 执行频次限流机制,统计用户任意连续 60 分钟内所有语句总数,超限报错 ERROR 1226;建户用 CREATE USER WITH,改户用 ALTER USER WITH,设为 0 表示不限;失效主…...
Mysql(8)约束
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录约束约束的作用约束的类型表级约束和列级约束约束和索引非空约束指定非空约束删除非空约束示例唯一性约束指定唯一键约束复合唯一查看唯一键约束删除唯一键约束主键约…...
老鼠监测站 鼠害监测系统
设备搭载高效太阳能供电模块,采用单晶硅太阳能电池板,可将太阳能转化为电能,一部分直接供给设备正常运行,另一部分存储至内置大容量锂电池中,实现“白天储能、夜间/阴雨天供电”的自主循环,全程无需接入市电…...
KMS_VL_ALL_AIO:终极Windows与Office激活指南 - 免费、简单、快速
KMS_VL_ALL_AIO:终极Windows与Office激活指南 - 免费、简单、快速 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统或Office办公软件激活而烦恼吗?面对复…...
3步打造个人漫画图书馆:哔咔漫画下载器让你轻松收藏离线资源
3步打造个人漫画图书馆:哔咔漫画下载器让你轻松收藏离线资源 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.c…...
