ubuntu22.04 x11窗口环境手势控制
ubuntu22.04 x11窗口环境手势控制
ubuntu x11窗口环境的手势控制并不优秀,我们可以使用touchegg去代替
这个配置过程非常简单,并且可以很容易在一定范围内达到你想到的效果,类比mac的手势控制
关于安装
首先添加源,并安装
sudo add-apt-repository ppa:touchegg/stable
sudo apt update
sudo apt install touchegg
安装完成后使用touchegg命令启动应用,重启电脑后touchegg会自动启动。
创建默认配置文件
mkdir -p ~/.config/touchegg && cp -n /usr/share/touchegg/touchegg.conf ~/.config/touchegg/touchegg.conf
关于配置
然后你可以编辑这个配置文件,他的位置在~/.config/touchegg
, 你可以使用vim或gedit去编辑这个文本
下面我提供了我的conf文件,你可以直接替换
他有那些作用
1、三指左右滑动可切换工作区
2、三指上滑可以显示概览窗口,即活动窗口,再次上滑可取消概览窗口
3、三指下滑可最小化当前窗口
4、三指内缩可关闭窗口,这是个持续动作,内缩回收可撤回
5、三指点击表示鼠标中键
6、四指上滑可显示全部菜单,再次上滑可回到概览窗口
7、四指左、右滑动,可将当前窗口移动至左、右工作区
8、四指外阔显示桌面
9、单指,双指保持正常逻辑
<touchégg><settings><property name="animation_delay">150</property><property name="action_execute_threshold">20</property><property name="color">auto</property><property name="borderColor">auto</property></settings><application name="All"><gesture type="SWIPE" fingers="3" direction="UP"><action type="SEND_KEYS"><repeat>false</repeat><modifiers>Super_L</modifiers><keys>S</keys><on>begin</on></action></gesture><gesture type="SWIPE" fingers="4" direction="UP"><action type="SEND_KEYS"><repeat>false</repeat><modifiers>Super_L</modifiers><keys>A</keys><on>begin</on></action></gesture><gesture type="SWIPE" fingers="3" direction="DOWN"><action type="MINIMIZE_WINDOW"><animate>true</animate></action></gesture><gesture type="SWIPE" fingers="4" direction="DOWN"><action type="CHANGE_DESKTOP"><direction>auto</direction><animate>true</animate><animationPosition>auto</animationPosition></action></gesture><gesture type="SWIPE" fingers="4" direction="LEFT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Super_L</modifiers><keys>Shift_L+Left</keys></action></gesture><gesture type="SWIPE" fingers="4" direction="RIGHT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Super_L</modifiers><keys>Shift_L+Right</keys></action></gesture><gesture type="PINCH" fingers="4" direction="OUT"><action type="SHOW_DESKTOP"><animate>true</animate></action></gesture><gesture type="TAP" fingers="2" direction="UNKNOWN"><action type="MOUSE_CLICK"><button>3</button><on>begin</on></action></gesture><gesture type="TAP" fingers="3" direction="UNKNOWN"><action type="MOUSE_CLICK"><button>2</button><on>begin</on></action></gesture><gesture type="PINCH" fingers="3" direction="IN"><action type="CLOSE_WINDOW"></action></gesture><!--<gesture type="SWIPE" fingers="3" direction="LEFT"><action type="CHANGE_DESKTOP"></action></gesture><gesture type="SWIPE" fingers="3" direction="RIGHT"><action type="CHANGE_DESKTOP"></action></gesture>--><gesture type="SWIPE" fingers="3" direction="LEFT"><action type="CHANGE_DESKTOP"><direction>next</direction><animate>true</animate><animationPosition>right</animationPosition><color>3E9FED</color><borderColor>3E9FED</borderColor></action></gesture><gesture type="SWIPE" fingers="3" direction="RIGHT"><action type="CHANGE_DESKTOP"><direction>previous</direction><animate>true</animate><animationPosition>left</animationPosition><color>3E9FED</color><borderColor>3E9FED</borderColor></action></gesture></application><application name="chromium-browser"><gesture type="PINCH" fingers="2" direction="IN"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Subtract</keys><decreaseKeys>KP_Add</decreaseKeys></action></gesture><gesture type="PINCH" fingers="2" direction="OUT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Add</keys><decreaseKeys>KP_Subtract</decreaseKeys></action></gesture></application><application name="firefox"><gesture type="PINCH" fingers="2" direction="IN"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Subtract</keys><decreaseKeys>KP_Add</decreaseKeys></action></gesture><gesture type="PINCH" fingers="2" direction="OUT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Add</keys><decreaseKeys>KP_Subtract</decreaseKeys></action></gesture></application><application name="google-chrome"><gesture type="PINCH" fingers="2" direction="IN"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Subtract</keys><decreaseKeys>KP_Add</decreaseKeys></action></gesture><gesture type="PINCH" fingers="2" direction="OUT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Control_L</modifiers><keys>KP_Add</keys><decreaseKeys>KP_Subtract</decreaseKeys></action></gesture></application>
</touchégg>
关于你可以怎么简单配置
注意的是,这里的<action type="SEND_KEYS">
的手势,都是基于你的自定义快捷键
如此处我将shift+super+右设置为将窗口右移一个工作区,那么我可以进行如下配置
<gesture type="SWIPE" fingers="4" direction="LEFT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Super_L</modifiers><keys>Shift_L+Left</keys></action>
</gesture><gesture type="SWIPE" fingers="4" direction="RIGHT"><action type="SEND_KEYS"><repeat>true</repeat><modifiers>Super_L</modifiers><keys>Shift_L+Right</keys></action>
</gesture>
感谢您的翻阅
相关文章:

ubuntu22.04 x11窗口环境手势控制
ubuntu22.04 x11窗口环境手势控制 ubuntu x11窗口环境的手势控制并不优秀,我们可以使用touchegg去代替 这个配置过程非常简单,并且可以很容易在一定范围内达到你想到的效果,类比mac的手势控制 关于安装 首先添加源,并安装 sud…...
【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】
文章目录 1.1 ARM NIC-400(Network interconnect)1.1.1 NIC-400 系统框图1.1.2 NIC-400 Network Interconnect1.2 NIC-400 特点1.2.1 QoS-400 Advanced Quality of Service1.2.2 QVN-400 QoS Virtual Networks1.2.3 TLX-400 Thin Links1.3 NIC-400 Top1.4 NIC-400 Terminology1…...

【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR
介绍 尽管最先进的模型可以生成常见实体的高质量图像,但它们通常难以生成不常见实体的图像,例如“Chortai(狗)”或“Picarones(食物)”。为了解决这个问题,我们提出了检索增强文本到图像生成器…...

南美巴西市场最全分析开发攻略,收藏一篇就够了
巴西位于南美洲东部,是南美洲资源最丰富,经济活力和经济实力最强的国家。巴西作为拉丁美洲的出口大国,一直是一个比较有潜力的市场,亦是我国外贸公司和独立外贸人集群的地方。中国长期是巴西主要的合作伙伴,2022年占巴…...
c++中操作符->与 . 的使用与区别
在C中,-> 和 . 是两个不同的成员访问操作符,用于访问类、结构体或联合体的成员。 “->” 操作符: 用于通过指针访问指针所指向对象的成员。当有一个指向对象的指针时,可以使用 -> 操作符来访问该指针所指向对象的成员。…...

golang 编译器 汉化
1、找到左上角file选项,点击选中settings进行单机 2、找到settings中找到plugins选中进行点击 3、再框中输入chinese进行搜索,出结果后找到如下图所示,点击进行安装 4、安装完成后进行重启ide,完美解决...
压缩包系列
1、zip伪加密 一个zip文件由三部分组成:压缩源文件数据区压缩源文件目录区压缩源文件目录结束标志。 伪加密原理:zip伪加密是在文件头中加密标志位做修改,然后在打开时误被识别成加密压缩包。 压缩源文件数据区: 50 4B 03 04&a…...

互联网图片安全风控实战训练营开营!
内容安全风控,即针对互联网产生的海量内容的外部、内部风险做宏观到微观的引导和审核,从内容安全领域帮助企业化解监管风险和社会舆论风险,其核心是识别文本、图片、视频、音频中的有害内容。 由于互联网内容类型繁杂、多如牛毛,加…...

炫酷转换:Java实现Excel转换为图片的方法
摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在实际开发过程中,经常会有这样的需求:将Excel表格或特定区域转…...

vue elementui <el-date-picker>日期选择框限制只能选择90天内的日期(包括今天)
之前也写过其他限制日期的语句,感觉用dayjs()的subtract()和add()也挺方便易懂的,以此记录 安装dayjs npm install dayjs --save dayjs().add(value : Number, unit : String); dayjs().add(7, day); //在当前的基础上加7天dayjs().subtract(value : N…...
YOLOv5全新Neck改进:BiSPAN 结构独一无二,为目标检测打造全新融合网络,增强定位信号,对于小目标检测的定位具有重要意义
💡本篇内容:YOLOv5全新Neck改进:BiSPAN 结构升级版,为目标检测打造全新融合网络,增强定位信号,对于小目标检测的定位具有重要意义 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv…...

flutter开发实战-video_player插件播放抖音直播实现(仅限Android端)
flutter开发实战-video_player插件播放抖音直播实现(仅限Android端) 在之前的开发过程中,遇到video_player播放视频,通过查看video_player插件描述,可以看到video_player在Android端使用exoplayer,在iOS端…...

React组件
一、React组件 函数组件 // 函数组件 // 组件的名称必须首字母大写 // 函数组件必须有返回值 如果不需要渲染任何内容,则返回 null function HelloFn () {return <div>这是我的第一个函数组件!</div> }// 定义类组件 function App () {return (<di…...

[动手学深度学习]注意力机制Transformer学习笔记
动手学深度学习(视频):68 Transformer【动手学深度学习v2】_哔哩哔哩_bilibili 动手学深度学习(pdf):10.7. Transformer — 动手学深度学习 2.0.0 documentation (d2l.ai) 李沐Transformer论文逐段精读&a…...

hadoop集群安装并配置
文章目录 1.安装JDK 环境2.系统配置2.1修改本地hosts文件2.2创建hadoop 用户2.2 设置ssh免密(使用hadoop 用户生成) 3.安装 hadoop 3.2.43.1 安装hadoop3.1.1 配置Hadoop 环境变量 3.2配置 HDFS3.2.1 配置 workers 文件3.2.2 配置hadoop-env.sh3.2.3 配置…...

Quarto 入门教程 (3):代码框、图形、数据框设置
简介 本文是《手把手教你使用 Quarto 构建文档》第三期,前两期分别介绍了: 第一期 介绍了Quarto 构建文档的原理;可创建的文档类型;对应的参考资源分享。 第二期 介绍了如何使用 Quarto,并编译出文档(PDF…...

虚拟机Ubuntu18.04安装对应ROS版本详细教程!(含错误提示解决)
参考链接: Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客 1.4 ROS的安装与配置_哔哩哔哩_bilibili ROS官网:http://wiki.ros.org/melodic/Installation/Ubuntu 一、检查cmake 安装ROS时会自动安装旧版的Cmake3.10.2。所以在…...
#力扣:14. 最长公共前缀@FDDLC
14. 最长公共前缀 一、Java class Solution {public String longestCommonPrefix(String[] strs) {for (int l 0; ; l) {for (int i 0; i < strs.length; i) {if (l > strs[i].length() || strs[i].charAt(l) ! strs[0].charAt(l)) return strs[0].substring(0, l);}…...
Android 13.0 解锁状态下禁止下拉状态栏功能实现
1.前言 在13.0的系统定制化开发中,在关于一些systemui下拉状态栏的定制化功能开发中,对于关于systemui的下拉状态栏 是否可以下拉做了定制,用系统属性来判断是否可以在解锁的情况下可以下拉状态栏布局,虽然11.0 12.0和13.0的关于 下拉状态栏相关分析有区别,可以通过分析相…...

chromium线程模型(1)-普通线程实现(ui和io线程)
通过chromium 官方文档,线程和任务一节我们可以知道 ,chromium有两类线程,一类是普通线程,最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现,下一篇文章分析线程池的实现。ÿ…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...