Tree


.gitignorecommits | blame
LICENSE.mdcommits | blame
Makefilecommits | blame
README.mdcommits | blame
bxhkd.1commits | blame
bxhkd.ccommits | blame
config.def.hcommits | blame

README.md

# bxhkd

A very basix X hotkey daemon, a.k.a Brett's X hotkey daemon.

## Doing One Thing and Doing It Well

Modern window managers, even popular _minimalist_ ones, have bloat in  
in their codebases from bundling extraneous features into a single  
binary. Just my opinion.

I chose a different path. __bxhkd__ is an independent, modular  
companion to my primary window manager, __bxwm__. By offloading key  
handling management, I ensure that both the window manager and the  
hotkey daemon remain focused, llightweight, and easily maintainable.

__bxhkd__ isn't just about managing keys. This hotkey daemon  
is another project I am using for transitioning from writing shell  
scripts for automating workflow to writing robust C that prioritizes  
minimal runtime overhead, adherence to the Unix philosophy, and clean, 
 readable API design.

## Build

Compile __bxhkd__ from source.

```
make
```

## Install

Install the binary and man page. Note that root privileges are not  
required as the default desination is `~/.local/`.

```
make install
```

## Uninstall

Remove the binary and man page.

```
make uninstall
```

## Configuration

__bxhkd__ is configured at compile-time by editing config.def.h. After  
making changes, the program must be recompiled and reinstalled. See  
bxhkd(1) for details.

## Design & Functionality

__bxhkd__ operates as a background daemon that interfaces directly with  
the X11 window system.

  - Input Processing
    - Maps X11 key-events to command strings defined in config.def.h
  - Open a New Window
    - Open a window running st, simple terminal
    - Open a window running the author's launcher script
    - Users should change these per their own preferences
  - Focus, Move, and Resize A Window
    - Centered horizontally, full height
    - Left half
    - Right half
    - Maximized
    - Small, centered horizontally and vertically
  - Workspaces
    - Move windows to a specific workspace
    - Navigate to a specific workspace
  - Close Focused Window

Add the following lines to `~/.xinitrc` to start __bxhkd__.

```
exec bxhkd 2> ~/.local/var/log/bxhkd.log &
```