Commit Briefs

35aad07413 Brett Fisher

bxwm.c: Edit comments. (main)


15d700d967 Brett Fisher

bxwm.1: Edit description section.


1f13f47808 Brett Fisher

README.md: Edit for clarity and consistency.


f0748742c5 Brett Fisher

bxwm.1: Update author and log file directory.


e746ba3d3b Brett Fisher

README.md: Initial commit.


9c5a385748 Brett Fisher

bxwm.1: Initial commit.


a7d2cff745 Brett Fisher

Makefile: Add man page install and uninstall.


875950cb89 Brett Fisher

LICENSE.md: Update license details.



f273930fd4 Brett Fisher

Makefile: Start preparing for compiling bxwm with cproc.

- Add -std=c11 and -pendantic to CFLAGS - Change LIBX to LDLIBS


Branches

Tags

This repository contains no tags

Tree

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

README.md

# bxwm

A very basic X window manager, a.k.a Brett's X window manager.

## Yet Another Window Manager?

I went down the path of minimalist window managers a very long time  
ago. I used [dwm](https://dwm.suckless.org/) for many years. I tried out both 
 [i3](https://i3wm.org/) and [bspwm](https://github.com/baskerville/bspwm). I've relied on [cwm](https://cvsweb.openbsd.org/xenocara/app/cwm/) for the most recent several years.

One day not too long ago when I should've been working, I daydreamed  
about a window manager that did nothing more nor less than what I  
needed a window manager to do. That matched my worflow without  
tweaking or patching or scripting or hacking.

Dreaming led to looking up minimal window manager source code, then  
learning to read C code, then designing, then roadmapping, then  
stumbling along writing C code, a lot of trial and error. And voilà.

Here is yet another window manager. My window manager. __bxwm__.  
A stacking window manager that is purposely opinionated regarding  
window placement and sizing, provides a straight forward work  
environment, and prefers simplicity and tranquility.

In addition to being the window manager I use every day, __bxwm__  
also serves as my primary project for transitioning from writing  
shell scripts for automating workflow to writing robust, maintainable  
C programs that adhere to my values of minimalism, the Unix  
philosophy, and clean, readable API design.

## Dependencies

  - Xlib
  - A C compiler compliant with the C11 standard (e.g. cproc or gcc).
  - bxhkd, basic X hotkey daemon  (required for managing key commands).

## Build

Compile __bxwm__ 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

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

## Design & Functionality

__bxwm__ is built around a set of opinionated primitives:

  - Window Sizing & Placement
    - New windows are opened 
      - small, centered on the screen, and,
      - at a gold ratio dimension.
    - Windows can be moved and resized to
      - centered half the width of the screen and full height,
      - right half of the screen and full height,
      - left half of the screen and full height,
      - maximized to full screen height and width, and,
      - back to a small screen centered.

  - Stacking
    - Windows are maintained in a stack.
    - Window focus follows stack order.
    - Windows are navigated via key command
      - next window and
      - previous window. 

  - Workspaces
    - 10 workspaces available.
    - Windows can be moved between workspaces via key commands.
    - Workspaces are navigated via key command.

Window and workspace management and navigation commands via hotkeys  
are sent to __bxwm__ via __bxhkd__.

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

```
exec bxwm 2> ~/.local/var/log/bxwm.log
```