这个故事要从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的原因
- 开箱即用,不用花太多时间折腾。以前我喜欢折腾,工作忙起来有时会比较懒惰。
- 非常方便直接的鼠标操作,虽然我以前曾经尝试时抛弃鼠标。最终还是选择接受,毕竟现在很多程序的开发就是面对鼠标的。强行键盘有时得不偿失。
- 窗口最小化,这是一个关键点。使用i3时我就有这样的需求,有时我想一些程序暂时最小化不显示。i3中我就会把它移动到其他workspace来实现,没有这个直观。
- lua脚本配置,这一点我比较喜欢。毕竟之前为了写neovim插件学习过一周lua脚本的编程,不想让这个技能因长期不用废弃掉。
- 浮动模式体验比i3好一些,至少有标题栏。这样有个好处,就是别人临时用我的电脑时。至少不至于不会操作。浮动的方式跟常见的windows很类似。
- 加载快。比起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
调整窗口大小
- 通用方法:按住
Super
并按住鼠标右键 拖动就可以调整窗体大小了。 - 按住鼠标右键 拖动窗体标题栏就可以调整窗体大小了。
移动浮动窗口
- 按住鼠标左键 拖动窗体标题栏就可以移动窗体。
- 通用方法:按住
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/