awesome平铺窗口使用笔记

news2024/11/18 4:31:50

这个故事要从vim开始。从入了vim的坑以后,就爱上了平铺窗口模式。在macOS中就开始使用yabai。使用了yabai以后,就很大程序可以用键盘完成大部分操作了。然后我开始用linux,使用的是i3wm。感觉非常不错,几乎就与vim中的窗口管理差不多。但是i3wm中一直有一个小问题困扰着我,就是看视频或者快速切换图片是画面会撕裂。

我解决过程中我尝试了各种其他的平铺桌面用来测试是否会有画面撕裂的现象,这时我才发现原来awesome也挺符合我的味囗的。

简介

Awesome 是运行于UNIX以及Linux、FreeBSD等类Unix操作系统上的窗口管理器, 是采用GPL协议的自由软件。 不同于KWin和Metacity, awesome是一款Tiling window manager,直译就是“瓦片式窗口管理器”,意译为“平铺式窗口管理器”。
在这里插入图片描述
官网
https://awesomewm.org/

我喜欢awesome的原因

  1. 开箱即用,不用花太多时间折腾。以前我喜欢折腾,工作忙起来有时会比较懒惰。
  2. 非常方便直接的鼠标操作,虽然我以前曾经尝试时抛弃鼠标。最终还是选择接受,毕竟现在很多程序的开发就是面对鼠标的。强行键盘有时得不偿失。
  3. 窗口最小化,这是一个关键点。使用i3时我就有这样的需求,有时我想一些程序暂时最小化不显示。i3中我就会把它移动到其他workspace来实现,没有这个直观。
  4. lua脚本配置,这一点我比较喜欢。毕竟之前为了写neovim插件学习过一周lua脚本的编程,不想让这个技能因长期不用废弃掉。
  5. 浮动模式体验比i3好一些,至少有标题栏。这样有个好处,就是别人临时用我的电脑时。至少不至于不会操作。浮动的方式跟常见的windows很类似。
  6. 加载快。比起KDE,这个加载几乎是秒级的。当然i3也快,但是我有一种错觉感觉这个好像比i3还要快一些。

此次使用,主要还是以试用为目的,短期内不打算放弃i3.

配置

初始化配置文件

mkdir -p ~/.config/awesome/
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

默认快捷键

我个人有一个习惯,不管用什么软件尽可能使用它的默认配置来。除非一些非常难适应的地方(跟以前的习惯差距太大),我才会修改一下。趁我改动不大的时候截图保存一下。

可以按Super+s 显示帮助。

在这里插入图片描述
这里完全是可以自己修改的。下面的快捷启动就是我自己新加的。
这个帮助功能挺方便的,快捷键忘记时非常有用。如果是i3我就要自己到配置文件中查询了。

快捷键启动程序

-- 启动终端
awful.key({ modkey,           }, "Return", function () awful.spawn(terminal) end,
          {description = "终端", group = "快捷启动"}),
--启动浏览器
awful.key({ modkey,           }, "b", function () awful.spawn("/opt/microsoft/msedge/microsoft-edge  --password-store=gnome") end,
          {description = "浏览器", group = "快捷启动"}),
-- 截图
awful.key({ modkey,"Shift"    }, "a", function () awful.spawn("/home/itkey/.soft/bin/screenshot") end,
          {description = "深度截图", group = "快捷启动"}),

状态栏位置

s.mywibox = awful.wibar({ position = "bottom", screen = s })

position = “bottom”

  • top在上面
  • bottom在下面
    这个放哪不重要,喜欢就好。
    使用yabai和i3时我习惯放下面,这样屏大的时候不用仰视了。

更改主题

awesome有多个内置主题供您选择:

  • default
  • gtk
  • sky
  • xresources
  • zenburn
    要更改主题,请打开 rc.lua,在文件开头附近找到此行,然后更改为提到的其他值之一:default
beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")

但是,在本教程中,我们将复制并自定义默认主题。复制并更改上面在 rc 中显示的行.lua如下所示。确保替换为您的用户名。

cp /usr/share/awesome/themes/default/theme.lua ~/.config/awesome/
beautiful.init("/home/USER/.config/awesome/theme.lua")

修改壁纸

桌面背景图像在主题文件中处理。要更改它,请在主题文件中编辑此行:

theme.wallpaper = themes_path.."default/background.png"

默认值使用相对于 的路径,方法是使用运算符将两个字符串连接在一起。例如,要将其设置为绝对路径,您可以执行以下操作:

theme.wallpaper = "/usr/share/backgrounds/my-awesome-wallpaper.png"

日期格式化

--日期格式化
mytextclock = wibox.widget.textclock('%Y-%m-%d %H:%M')

文档:
https://awesomewm.org/apidoc/widgets/wibox.widget.textclock.html

隐藏窗口标题栏目

titlebars_enabled = false

-- 窗体标题栏
    { rule_any = {type = { "normal", "dialog" }
      }, properties = { titlebars_enabled = true }
    },

参考:
https://stackoverflow.com/questions/42724311/how-to-remove-title-bar-in-awesome-window-manager-ver-4

调整窗口大小

  1. 通用方法:按住Super并按住鼠标右键 拖动就可以调整窗体大小了。
  2. 按住鼠标右键 拖动窗体标题栏就可以调整窗体大小了。

移动浮动窗口

  1. 按住鼠标左键 拖动窗体标题栏就可以移动窗体。
  2. 通用方法:按住Super并按住鼠标左键就可以移动窗体。

设置窗体间隙margin/gap

--设置窗体margin
beautiful.useless_gap="10";
beautiful.gap_single_client = true;

https://www.reddit.com/r/awesomewm/comments/g7b3bq/gap_between_tiling_windows_help/

设置屏幕边距

其实上面一节就可以实现,如果只想要屏幕有内边距。不需要窗体之间有间距,可以如下设置。

--设置屏幕边距
awful.screen.focused().padding = {left= "20",right="20", top = "20", bottom = "20" };

参考:
https://www.reddit.com/r/awesomewm/comments/ojhv3z/screen_padding_and_maximized/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Android Studio] 如何查看Android Studio的版本信息

🟧🟨🟩🟦🟪 Android Debug🟧🟨🟩🟦🟪 Topic 发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 📋笔记目…

命令行批量 PDF 转换器:2PDF 2.0.8x Crack

命令行 PDF 转换器 2PDF 是一个专业的命令行实用程序,用于以批处理模式将办公文档和图像转换为 PDF。2PDF 基于命令行界面和语法,通过简单的标准命令提供对批量转换为 PDF 的完全控制。 从 Windows 命令提示符将文档和图像转换为 PDF 2PDF 可以将 PDF 和…

面试官问我微服务注册中心如何保证数据强一致性?头秃了。。。

目录 1、再回顾:什么是服务注册中心?2、Consul服务注册中心的整体架构3、Consul如何通过Raft协议实现强一致性?4、Consul如何通过Agent实现分布式健康检查? 1、再回顾:什么是服务注册中心? 先回顾一下什么…

Promise 详解

Promise 详解示例一个抽奖小游戏原生 JavaScript 实现Promise 实现读取文件原生 JavaScript 实现Promise 实现Promise 对象Promise 对象的状态Promise 对象的创建Promise 对象的状态的改变pending 转换为 fulfilledpending 转换为 rejected与 Promise 对象相关的 APIPromise.th…

Linux---gdb调试方法

1. 背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项2. gdb调试 进入/退出调试: list/l 行号:显…

佳能2420报错代码E000007-0000

应该是定影的问题,先试一下清零,如果还是出现这个问题,不是电压就是应该换定影了。(包含:轴套、定影膜、缺硅油了【定影膜硅油、润滑脂】) 维修模式菜单: CLEAR > ENGIN > ERRCLR &…

交大博士学长:研究生计算机专业的方向选择!

Datawhale干货 作者:一辈闲,上海交大博士,Datawhale邀约作者作者知乎:https://www.zhihu.com/people/yi-bei-xian-16目前计算机专业的研究方向主要分为四个大方向分别是:AI(人工智能)、Systems&…

常微分方程组解稳定性的分析

文章未完相空间的绘制我们随机选一个方程,随机选的,不是有数学手册吗,一般来说考题不可能出数学手册上的例子import scipy.integrate as si import matplotlib.pyplot as plt import numpy as np## dx/dt x**2-y**2xy ## dy/dt x*y**2 - x**2*yf lambda x,y:x**2-y**2xy g…

HashMap、HashTable和ConcurrentHashMap的区别

HashMap是线程不安全的,HashTable和ConcurrentHashMap是线程安全的。HashTable的实现线程安全的方式是:将所有的方法都加上锁,也就相当于对this加锁,此时,无论访问HashTable的任何一个元素都会加锁操作,在多…

ESP32设备驱动-MMA8451加速度计驱动

MMA8451加速度计驱动 1、MMA8451介绍 MMA8451 是一款具有 14 位分辨率的低功耗加速度计,具有灵活用户可编程选项的嵌入式功能,可配置为两个中断引脚。嵌入式中断功能可实现整体节能,从而使主机处理器免于连续轮询数据访问低通滤波数据和高通滤波数据,最大限度地减少颠簸检…

DockerCompose安装卸载、文件语法格式

DockerCompose安装卸载、文件语法格式 一、DockerCompose的概念和作用 1.1 相关概念 DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,不需要我们手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如…

【蓝桥杯】时间显示(省赛)Java

【问题描述】 小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从1970年1月1日O0:00:00到当前时刻经过的毫秒数。 现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日&a…

IIC通信协议

数据有效性 IC由两条线组成,一条双向串行数据线SDA,一条串行时钟线SCL。 SDA线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。 换言之, SCL为高电平时表示有效数据…

Crack:结构分析和设计软件:Cross Section Analysis-Design

Cross Section Analysis & Design (美国、欧洲、亚洲和澳大利亚最受好评的结构软件)是一款功能强大的应用程序,可以执行各种横截面计算,包括钢筋混凝土截面的设计(钢筋计算器)。所提供的横截面可以是简…

Python之argparse模块的使用

我们在写一个成熟的Python项目时候,需要传入若干指定的参数。而不是写死在程序里,这个时候就要用到argparse模块。argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会…

【FPGA笔记系列3】assign语句和if-esle语句

结构化建模 前面几节中采用的方法称为结构化建模。 assign语法(数据流建模方式) assign语句仅能描述组合逻辑电路,没有涉及时钟、触发器等! 五人投票电路(由于CGD100板子原因,需修改逻辑使按下点亮,弹起熄灭) 因为板子当key按下时为低电平,弹起时为高电平;led高电平点…

MyBatis查询接收数据 批量删除

MyBatis查询接收数据 批量删除查询出的数据只有一条通过实体类对象接收通过List集合接收通过map集合接收查询出的数据有多条通过list集合接收通过map类型的list集合接收MapKey注解模糊查询批量删除${}和#{}的区别查询出的数据只有一条 通过实体类对象接收 mapper接口代码: 映射…

Lr 12 ACR 15:传统蒙版工具

在 Lr 或 ACR 中,可以用各种不同的方式创建或添加蒙版。其中主题、天空、背景、对象及人物(若照片上有)都是由 AI 技术提供支持。画笔、线性渐变、径向渐变、范围等是传统的蒙版工具。画笔Brush手动绘制要选择的区域。创建一个画笔&#xff1…

C#,图像二值化(24)——局部阈值算法的NiBlack算法及源程序

1、局部阈值算法的NiBlack算法摘要-医学图像的处理最为复杂人和计算机。磁性捐赠的脑组织共振成像(MRI)在许多领域是非常重要的问题例如手术和治疗。最常见的分割图像的最简单方法是使用阈值。在这项工作中,我们提出了一个有效的实现阈值&…

SpringBoot整合Mybatis和MybatisPlus

目录 一、整合MyBatis操作 1、配置模式 2、注解模式 3、混合模式 二、整合 MyBatis-Plus 完成CRUD 1、什么是MyBatis-Plus 2、整合MyBatis-Plus 3、CRUD功能 一、整合MyBatis操作 官网:MyBatis GitHub SpringBoot官方的Starter:spring-boot-st…