You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Working on argument parser & wrapper functions
- remove -msse2 flag from makefile
- update todo
- begin work on argument parsing
- add skeleton for wrapper functions
- rename requests to core
- rename other_requests to helpers
* start working again
* move src -> fluke, alterations to makefile
* Started work on utilities
- Move utility working, can move multiple windows by a specified offset
- Templates for other utilities
- The argument parsing is a bit shoddy right now, will look into using proper parser soon
- Fix some stuff with Makefile & config.mk
* Major restructuring, new direction for project.
- removed most of the old code
- simplified directory structure
- updated & improved Makefile/config.mk
- update README.md
- add request_container.hpp
- exec function
- zip function
- add a whole host of functions/types to main.cpp, will clean up soon
- flukewm now actually runs :D
* Add tinge to repo
* Add xcb_keysyms to travis deps
* Fix incorrect Makefile output and compile error on clang
* Trying to update this shit to gcc9
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Update README.md & continue fixing travis
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Updating to gcc9 contd.
* Code cleanup and threaded hooks
- move most code in main into seperate files
- hooks now run on a seperate thread
- events are now handed in a blocking fashion, slightly more efficient
Fluke is designed to be a simple and fast controller for X. It can manipulate windows in various ways like resizing, moving, hiding etc. It is intended for use with a hotkey daemon like [sxhkd](https://github.com/baskerville/sxhkd). The hotkey daemon will call flukewm _as needed_ to perform various operations.
19
+
Fluke is a simple (but not extremely barebones) window manager for X which uses XCB for more efficient asynchronous IO. Fluke is designed to be configured through source (á la dwm).
20
20
21
21
### rationale
22
-
I wanted a very minimal window manager that could be scripted with ease. I spent a couple of years using [bspwm](https://github.com/baskerville/bspwm) but it felt a bit too feature rich for my needs and was required to run in the background alongside X at all times.
23
-
24
-
bspwm makes uses of a server/client control model with bspc which is both good and bad. It's good in that it is very easy to script and bad in that it comes at the cost of some latency and extra resource usage.
22
+
I wanted a very minimal window manager that suited my workflow, had good hotplug multimonitor support and was written in something a little bit less cryptic than C. I never really found what I was looking for in other window managers and decided to give it a try myself.
25
23
26
24
### features
27
25
> The planned features list is by no means exhaustive, it's just what I have managed to think of right now.
28
26
29
27
#### current
30
-
- Move, resize windows
31
-
- Retrieve cursor position relative to root window
32
-
- Close/Kill windows
33
-
34
-
#### planned
35
-
- Focus windows (by id, direction, monitor)
36
-
- Toggle fullscreen
37
-
- Add some grids/layouts
38
-
- Grow/Shrink windows
39
-
- Snap windows left,right,top,bottom
40
-
- Center a window
41
-
- Resize window to a percentage of screen size
42
-
- Workspaces
28
+
- Focus windows using the mouse.
29
+
- Adopt orphaned windows by default (allows you to restart flukewm in the case of a crash and not lose any work.)
43
30
- Window borders
44
-
- Focus on cursor hover
45
-
- Implement a way to update a statusbar using xsetroot (something like dwm)
46
-
- Move/resize windows using the mouse
47
-
- Groups (seperate from workspaces in that you hide or show them regardless of what workspace you're on)
48
-
- Respect EWMH for docks, notifications etc.
49
-
- Query information about various things (currently focused display, currently focused window, primary display etc.)
31
+
- Hooks which run every N ms
32
+
33
+
#### planned/ideas
34
+
- Move & resize windows
35
+
- Fullscreen windows
36
+
- Center windows
37
+
- Window snapping
38
+
- Workspaces (N per monitor)
39
+
- Groups/Scratchpad (seperate from workspaces in that you hide or show them regardless of what workspace you're on)
40
+
-_Basic_ EWMH support for docks, notifications, respectful closing of windows etc.
41
+
- Monitor hotplug support (automatically re-adjust windows & layout, maybe a built in autorandr functionality?)
42
+
- Keybindings
50
43
51
44
### prerequisites
52
45
- Any C++17 compliant compiler should work (tested with Clang and GCC)
@@ -55,26 +48,19 @@ bspwm makes uses of a server/client control model with bspc which is both good a
55
48
- `xcb-util`
56
49
- `xcb-randr`
57
50
- `xcb-icccm`
58
-
-[hyperfine](https://github.com/sharkdp/hyperfine) (optional for benchmarking)
59
-
- A running X server for fluke to communicate with
60
51
61
52
### build & run
62
-
- Run `make debug=yes` or `make` for debug and release build respectively (uses GCC by default)
53
+
- Run `make` or `make debug=no symbols=no` for debug and release build respectively (uses GCC by default)
63
54
- Binary will be placed in `build/flukewm` or you can run using the symlink in the root of the project, `./flukewm`
64
55
65
56
### installation
66
-
> Optionally configure install directory with PREFIX variable.
67
-
68
-
To install flukewm, simply run `make install` (you might need root).
69
-
To uninstall, run `make uninstall`
70
-
71
-
You may also use `make dist` if you wish to package flukewm as an archive.
57
+
> todo...
72
58
73
59
### license
74
60
This project uses the GPLv2 license. (check [LICENSE.md](LICENSE.md))
75
61
76
62
### acknowledgements
77
-
This project was inspired by:
63
+
This project was inspired and helped by the source code of the following projects:
0 commit comments