Best guide on youtube: https://youtu.be/TwZLyybNpjo?feature=shared
Note
It's not recommended to blindly copy this config since it contains a backlight.sh
script which requires adding privilege to users to edit /sys/class/backlight
(see: https://wiki.archlinux.org/title/Backlight), keyboard layout switching hotkeys that depend on xkb-switch and an autostart.lua
that starts my programs/scripts.
This config has been stripped off of xdesktop appmenu, titlebars and all code related to them.
├── appearance
│ ├── layout_popup.lua
│ ├── padding.lua
│ ├── taglist.lua
│ ├── tasklist.lua
│ ├── tray.lua
│ ├── wallpaper.lua
│ └── wibox.lua
├── image
│ ├── fairvw.png
│ ├── maxw.png
│ └── tilew.png
├── key
│ ├── clientbutton.lua
│ ├── clientkey.lua
│ ├── globalbuttons.lua
│ ├── globalkey.lua
│ └── tagkey.lua
├── main
│ ├── error.lua
│ ├── layout.lua
│ ├── rule.lua
│ ├── signal.lua
│ ├── tag.lua
│ └── user_variable.lua
├── module
│ ├── autostart.lua
│ └── share_keyboard_layout.lua
├── script
│ ├── amixer.sh
│ ├── backlight.sh
│ ├── sensitivity.sh
│ ├── set_xkb_layout.sh
│ └── xkb_group.sh
├── README.md
├── awesome_wallpaper.png
├── rc.lua
└── theme.lua
Contains customization of the wibar and popup wibox.
- Padding - auxillary widget to add spacing between other widgets (not used yet)
- Layout popup - colour coded keyboard layout popup widget positioned at bottom center (see main photo)
- Taglist, tasklist, system tray widgets are extracted into separate files. Every widget is put inside a method with
s
-screen argument used for the wibar inawful.screen.connect_for_each_screen(function(s) ...
, same with theset_wallpaper
inwallpaper.lua
- In
wibox.lua
my widgets are put into a "library" object to not pollute the namespace.
local appearance = { -- my library
set_wallpaper = require("appearance.wallpaper"),
mytaglist = require("appearance.taglist"),
mytasklist = require("appearance.tasklist"),
mytraywidgets = require("appearance.tray"),
mypadding = require("appearance.padding"),
mypopup = require("appearance.layout_popup")
}
Any custom images will be put here: layout pictures, and in the future: battery, sound, brightness icons.
In each file the hotkeys table is returned and used in main/rule.lua
or rc.lua
.
clientbuttons.lua
used for mousebutton = clientbuttons,
inmain/rule.lua
clientkeys.lua
- keys related to client manipulation (inmain/rule.lua
:keys = clientkeys,
)globalbuttons.lua
- 4th, 5th buttons on mouse (not needed, at least for me)globalkey.lua
- global hotkeys, auxillary functions andbrighness_emit
,volume_emit
(used to send signals to tray widgets) functions that are invoked with appropriate hotkeystagkey.lua
- same globalkeys but only hotkeys that involve numbers. Here thetagkey
table is returned and used inglobalkey.lua
to be joined in globalkeys (i.e. inglobalkey.lua
:local globalkeys = gears.table.join(tagkey, ...
)
Then globalkeys are set in rc.lua
:
root.keys(globalkeys)
root.buttons(globalbuttons)
Some files here have no return information and are used in rc.lua
in a rawdoggin way: (because of this, the rc.lua can seem a bit criptic, idk)
require("main.error")
require("main.tag")
require("main.signal")
layout.lua
, rule.lua
and user-variable.lua
return tables of corresponding info.
autostart.lua
- startup applications.
share_keyboard_layout.lua
- signals that imitate IBus "local layout" behaviour (Share same input method among all windows = disabled). Contains us(altgr-intl)
string literal as a default layout.
This is just my stuff, not useful for others.
Scripts for laptop: brightness controls, volume controls, sensitivity for my keyboard's Razer Cobra mouse.
set_xkb_layout.sh
and xkb_group.sh
are for using several input methods (us, ru, am)