xaizek / euclid-wm (License: BSD 3-Clause) (since 2018-12-07)
A minimalist, tiling window manager for X11 that seeks to allow easy management of numerous windows entirely from the keyboard.
<root> / dev_install.md (4b9ad1b179172402b243ad60dd196d571fb93542) (1,659B) (mode 100644) [raw]
# Basic Testdrive #

  * First get the latest source:

```
svn checkout http://euclid-wm.googlecode.com/svn/trunk/ euclid-wm-read-only
```

  * cd into the trunk directory

Note: you will need to have the Xlib and Xinerama headers installed prior to compiling. On Debian you can get them by installing libx11-dev and libxinerama-dev.

  * Compile:
```
make clean
make
```

  * Install:
```
su
make install
suspend

```

  * Read the man page **before** trying it out:
```
man euclid-wm
```

> Note: By default euclid-wm uses xterm and dmenu as the terminal and menu respectively; running euclid-wm without having either installed them or reconfigured euclid-wm to use alternatives gives a substandard user experience.

  * Give it a go: Log out and log in using the euclid session.

# Debugging #
Debugging a window manager poses its own set of problems, here is the best way I've found to do it:

  * Checkout as above

  * Compile with:
```
cc -O0 -g -lX11 -lXinerama -oeuclid-wm euclid-wm.c
```

  * Start a new virtual terminal (if you are doing this several times, starting the doing this from within the directory where you compiled will save you some typing when you in the next step):
```
su
xinit -- :1 vt12
```

  * You should be in a new vt with a single xterm. In the xterm, cd to the directory where you compiled. Optionally switch from root. Then
```
screen gdb euclid-wm
```

  * Start euclid, within gdm:
```
r
```

  * Then `<ctrl> + a, d` to detach screen

  * Switch back to the original vt `<ctrl> + <alt> + <F7>`

  * Attach to the screen session:
```
screen -r
```

  * Go back to vt12 and do what you want to do, `<ctrl + <alt> + <F12>`
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/euclid-wm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/euclid-wm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master