Skip to content

zhangkun83/awesome-config

Repository files navigation

awesome-config

This is the awesome WM config I have fined-tuned for my daily use. I am currently running it on awesome v4.2 on Debian tesing (buster), using work and work_thinkpad profile.

Design principles

Use tiling for long-lived windows (for writing, programing or reading etc), while floating for temporary windows (dialogs, file manager, IM, settings etc). Based on that idea:

  • All windows are initially floating, and
  • Floating windows are always "on top", thus in front of tiling windows

Use tags (a.k.a., workspaces, virtual desktops) to group windows related to the same task. A tag's name should reflect the task, thus should be able to easily changed.

  • Make a key binding for changing the tag name in-place.

The interface should be clean while informative and functional.

  • Only show the traditional top titlebar with window title text on floating windows.
  • The color scheme is designed to best highlight the focus window, and build a strong visual connection between it and its task bar entry.
  • Use a bottom bar at an extension to the border, which enhances the highlighting for the focus, and also serves as a more natural resizing handle than the top title bar.

Most essential functionality should be easily accessible from both keyboard and mouse.

  • Provide both menu entries and shortcuts for most actions, e.g., launching the terminal and browser, changing the layout etc.
  • Allow moving and resizing windows with keyboard only.
  • Re-assign window-switching bindings from Mod-J/K to Mod-A/S to allow single-handed operation.

Responses to user inputs should be deterministic.

  • Avoid toggle-style key-bindings. For example, assign separate bindings for floating and or tiling a window, instead of assign one key to toggle floating state.

Other features

  • Self-contained: doesn't use any third-party awesome extensions.
  • Support multiple profiles that let me have small tweaks (theming, autostarts etc) on my differnt machines. Use switch_profile.sh {work|work_thinkpad} to swich between profiles.
  • Randomized wallpaper (link ~/.config/awesome/runtime/wallpapers to where the wallpapers are).

Dependencies

It uses the following applications / packages:

  • compton as the compositer
  • urxvt as the terminal emulator (Mod+Enter)
  • xfce4-panel to display the notification icons, because GTK+2 applications may crash with awesome's systray. I also have a window list on it that only shows minimized windows, because I made the wibar (on the top) skip them.
  • xfce4-power-manager for the battery icon on laptops. Also provides backlight adjustment.
  • slock for screen lock (Mod+F12)
  • xss-lock for locking screen at idleness and when lid closes
  • python-gtk2 for the quick search dialog (Mod+F10)
  • ibus for Chinese input (Mod+Space)
  • thunar as the file manager (Mod+])
  • Google Chrome as the web browser (Mod+\)
  • redshift for adjusting color temperature
  • feh for setting the wallpaper

Setting up

Clone the repository to ~/.config/awesome:

$ cd ~/.config
$ git clone https://github.com/zhangkun83/awesome-config.git awesome

Choose between the work and the home profile:

$ cd ~/.config/awesome
$ ./switch_profile.sh home

Set up awesome.sh as the awesome startup script:

$ sudo cp ~/.config/awesome/awesome.sh /usr/local/bin
$ sudo chmod a+rx /usr/local/bin/awesome.sh

To add desktop menu entry in display manager, create /usr/share/xsessions/awesome-local.desktop:

[Desktop Entry]
Encoding=UTF-8
Name=awesome-local
Comment=Highly configurable framework window manager
TryExec=/usr/local/bin/awesome.sh
Exec=/usr/local/bin/awesome.sh
Type=Application

To set up environment variables, put it in ~/.xsessionrc, e.g.:

export PATH=$HOME/bin:$HOME/.emacs.d/bin:$PATH
CLUTTER_IM_MODULE=ibus
QT4_IM_MODULE=ibus
GTK_IM_MODULE=ibus

Current color scheme works best with HighContrast GTK theme. Use it for the key gtk-theme-name in both ~/.gtkrc-2.0 and ~/.config/gtk-3.0/settings.ini.

(Optional) link the wallpaper directory as the source of randomized wallpapers. If you skip this step, the default wallpaper will be used. A wallpaper can be either a tile image or full-screen image. If the file name ends with -tile, like cats-tile.png, it will be used as a tile image.

$ ln -s ~/Pictures/wallpapers ~/.config/awesome/runtime/wallpapers

lightdm starts its own nm-applet instance and leave it running even after login. That nm-applet is usually inoperable due to permission issues. To get rid of it, put an executable file under /etc/lightdm/post-login.d with the following content:

#!/bin/bash
killall -u lightdm nm-applet

Screenshots

The "max" layout. One window at a time. Stay focused.

The "vertical split" layout. Useful when looking at two or more windows at the same time. One floating window is shown here, usually for transient tasks.

The "floating" layout. Best for applications that have many windows. Windows have "ontop" (Mod-F) set have visible side borders, while normal windows do not.

About

My own awesome-wm configuration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published