本文适合:
不会lua编程、=不求杂七杂八只求还能够比较有效率的工作、学习的实用主义者。
openSUSE里安装awesome我感觉比Deb系方便,因为已经有了vicious包和branding包。Deb系的awesome-extra也倒是包括了vicious。
安装:
openSUSE里安装awesome很方便。提供了好几个包。我推荐安装awesome-vicious(这个有显示电池等功能)和awesome-branding-openSUSE(这个把awesome的一些外观按照蜥蜴的绿色风格调整了一下)。 这两个包应该会依赖其他一些包,包括awesome本身和awesome-freedesktop(这个包含了让awesome通用其他桌面环境的菜单的功能),自然也包括lua。
装好这几个包,openSUSE里基本上可以打开awesome来操作了。很方便。
就本人而言,纯粹入门实用主义者。也不深究其配置,只做了一点最初级的傻瓜配置,绝非什么高手。高手都用的urxvt这样的玩意儿。我就是个实用主义者,花一点时间随便配置一下了事了,根本无需多少编程基础也能配置。
预备:复制/etc/xdg/awesome 到~/.config/awesome
然后编辑~/.config/awesome/rc.lua
配置1:设置终端、编辑器
因为我是KDE用户,也把KDE作为备用环境,就直接拉了一堆KDE程序进来用。很明显会降低一些速度的,毕竟awesome很小巧而KDE很庞大(但是还是比Windows/OSX快得多啊)
在文件里按照这个注释,可以搜索到配置默认程序的地方,我把终端设置为konsole,编辑器设置为vim。当然大牛么就是urxvt之流了。
-- This is used later as the default terminal and editor to run.
terminal = "konsole"
editor = "vim"
editor_cmd = terminal .. " -e " .. editor
配置2:赶走讨厌的浮动
awesome作为平铺管理器,默认布局竟然是浮动!!果断把浮动赶到后面去:
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.floating,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier
}
补充1:配置各个tag的内容:
就在配置布局的后面。默认是用for循环直接配置掉所有tag。我很懒,直接不改了。因为我一般就是左右分割布局,偶尔自己轮转到上下平铺布局,极其偶然的情况下才使用magnifier布局。
配置3:默认启动几个程序
这里我又懒了。openSUSE里fcitx无需单独配置。
在rc.lua末尾,加入:
function run_once(cmd)
findme = cmd
firstspace = cmd:find(" ")
if firstspace then
findme = cmd:sub(0, firstspace-1)
end
awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
end
run_once("nm-applet")
run_once("kmix")
run_once("synaptiks")
前面定义run_once函数,防止重新载入awesome时反复运行程序,代码拷贝自官方wiki。
然后三个run_once定义要启动的程序:
nm-applet:GNOME的networkmanager界面
kmix:KDE的混音器(我太懒不在乎这点速度,实际上可以通过后面绑定按键的做法把音量键绑定到alsa命令上操作的)
synaptiks:这货已经停止更新了。但是openSUSE里打过补丁还能用。我的触摸板在Debian正常,openSUSE里跳,所以启动一个这个来关闭触摸板。更好的办法是用syndaemon。
别的我就都没管了。基本够用了。
配置4:去掉vicious里的不用内容。
vicious里我要用什么?就是一个电池和CPU检测。别的纯粹浪费顶部空间,比如天气什么的,我是不想用。于是把他们屏蔽掉。
-- Add widgets to the wibox - order matters
mywibox[s].widgets = {
{
mylauncher,
mytaglist[s],
mypromptbox[s],
layout = awful.widget.layout.horizontal.leftright
},
mylayoutbox[s],
mytextclock,
separator,
spacer,
kbdcfg.widget,
spacer,
separator,
spacer,
mycpuwidget,
spacer,
separator,
spacer,
mybattery,
spacer,
separator,
spacer,
-- mynetwidget,
-- spacer,
-- separator,
-- spacer,
-- wifi,
-- spacer,
-- separator,
-- spacer,
-- myweatherwidget,
-- spacer,
-- separator,
-- spacer,
s == 1 and mysystray or nil,
mytasklist[s],
layout = awful.widget.layout.horizontal.rightleft
}
end
把netwidget、wifi、myweatherwidget给注释掉了。
然后再把这几个widget的定义也给注释掉
-- Initialize widget
-- mynetwidget = widget({ type = "textbox" })
-- Register widget
-- vicious.register(mynetwidget, vicious.widgets.net, "${eth0 down_kb} / ${eth0 up_kb}", 1)
-- wifi
-- provides wireless information for a requested interface
-- takes the network interface as an argument, i.e. "wlan0"
-- returns a table with string keys: {ssid}, {mode}, {chan}, {rate}, {link}, {linp} and {sign}
-- wifi = widget({ type = "textbox" })
-- vicious.register(wifi, vicious.widgets.wifi, "${link}", 121, "wlan0")
-- Weather widget
-- myweatherwidget = widget({ type = "textbox" })
-- weather_t = awful.tooltip({ objects = { myweatherwidget },})
-- vicious.register(myweatherwidget, vicious.widgets.weather,
-- function (widget, args)
-- weather_t:set_text("City: " .. args"{city}"] .."\nWind: " .. args"{windkmh}"] .. "km/h " .. args"{wind}"] .. "\nSky: " .. args"{sky}"] .. "\nHumidity: " .. args"{humid}"] .. "%")
-- return args"{tempc}"] .. "C"
-- end, 1800, "EDDN")
-- --'1800': check every 30 minutes.
-- --'EDDN': Nuernberg ICAO code.
配置5:增加几个键位
在globalkeys = awful.util.table.join里增加
注意:键的名称不同电脑可能不同,可以安装xev并且用之获得。
注意:在这里必须注意整个globalkeys的最后一个定义结束之后,不能有逗号",",前面的定义里有逗号
键位1:PrtSc键截图。我安装了scrot。停止更新好几年了,但是能用好用,我懒就直接OBS里下载了,并且安装不订阅源。
awful.key({}, "Print", function()
awful.util.spawn("scrot -e 'mv $f ~/图片/ 2>/dev/null'") end),
这个用scrot截图并且存到图片目录里。
键位2:切换xrandr模式
因为是双显,我用几个模式。很多地方可以找到复杂的显示器轮转代码,官网上就有,可以拷贝来用。我觉得很麻烦,轮转需要重启awesome,转来转去,其实我要用的只有三个方案:LVDS1单独使用,就是只使用笔记本的屏幕,这个是大家通用的。LVDS1+VGA1扩展,这个是自己桌子上用的,就是VGA1外显向右扩展,形成双桌面(awesome是真正的双显,就是两个显示器像两个桌面一样操作)。第三个,就是VGA1镜像LVDS1,也就是投影的时候用,外显/投影仪镜像当前桌面。
这个我早就发现很多普通DE用户都弄不清楚,包括windows、mac的轮转,搞得来很多教授焦头烂额。KDE的配置显然人性化得多了。但是最好的办法还是把自己常用的方案绑定好,直接用,轮转都不要轮转。
awful.key({}, "XF86AudioPrev", function()
awful.util.spawn("xrandr --output VGA1 --off") end),
awful.key({}, "XF86AudioPlay", function()
awful.util.spawn("xrandr --output VGA1 --right-of LVDS1 --auto") end),
awful.key({}, "XF86AudioNext", function()
awful.util.spawn("xrandr --output VGA1 --auto --same-as LVDS1") end),
我这个代码里把:播放上一首、播放、播放下一首这三个操控音乐的Fn按键给绑定到了xrandr命令上面。
只需要按这三个键就可以操控显示器。不需要轮转。轮转的话有一些内容,比如向上扩展啊、只用外显啊,我用不到的。
键位3:快速启动程序
awesome里面Mod4(就是win键)+r,可以启动程序,但是仍然需要打程序名字。
常用的程序可以直接绑定键位启动。
我看到awesome默认没有用Mod1(也就是Alt,这是考虑到有的人喜欢把Modkey从Mod4改到1),我启动程序就用Mod4+Mod1了吧。
以下配置:
win+Alt+f 启动firefox
win+Alt+r 终端启动ranger文件管理器
win+Alt+m 终端启动mutt
win+Alt+k 启动Kile(LaTeX的IDE)
win+Alt+y 启动firefox隐私窗口
awful.key({ modkey, "Mod1" }, "f", function()
awful.util.spawn("firefox") end),
awful.key({ modkey, "Mod1" }, "r", function()
awful.util.spawn("konsole -e ranger") end),
awful.key({ modkey, "Mod1" }, "m", function()
awful.util.spawn("konsole -e mutt") end),
awful.key({ modkey, "Mod1" }, "k", function()
awful.util.spawn("kile") end),
awful.key({ modkey, "Mod1" }, "y", function()
awful.util.spawn("firefox -private-window") end)
注意firefox隐私窗口是我最后一项,所以后面没有逗号。否则会载入失败。
补充2:指定窗口行为
在awful.rules.rules里面可以配置指定窗口的行为。比如默认把firefox送到某一个屏幕的某一个tag等等。我觉得我自己每次临时调整花不了两个时间,而且每次工作摆放窗口的位置也不尽相同,就没有配置。
想要配置这个的,用xprop获取窗口的class,就能配置了。