I no longer actively mantain this project due to personal reasons, anyone is free to fork and take control of it or simply take it as a study reference as long as you respect the GPL license agreements. Ciao.
Taiwins is a dynamic wayland window manager, supports both tiling and floating layout. It is designed to be modern and modular. It is extensible through lua script and it has built-in shell and widgets implementation through nuklear GUI. It also supports popular tiling window manager features like gapping.
The name of the project pronounces as ['taiwinz], it is inspired by the philosophy of Taichi as I hope it would be dynamic and balanced.
Taiwins is usable now with potential bugs and some missing features. Continues developement in progress and helps are wanted. If you like to join, I drafted some pages of notes to guide you through the starting steps. You can also join the chat on Gitter for any questions and disscussions. There is a feature list available if you want to know more about what taiwins can do.
you will need following dependencies
- Pixman
- xkbcommon
- xwayland
- libx11, libxcb (if you want X11 backen support)
- libinput
- wayland
- wayland protocols
- cairo
- lua
- librsvg
- opengl or opengles
- meson
- ninja
- pam
- fontconfig
- freetype2
with source code, you can easily compile and try out:
git clone https://github.com/taiwins/taiwins --recursive taiwins && cd taiwins
meson build && ninja -C build
For those who use Archlinux, there is an aur package you can simply install.
Taiwins starts with default shell and default console they are found. You can also specifiy the shell application and console application through command line options.
cd build
./bin/taiwins -s ./bin/taiwins-shell -c ./bin/taiwins-console
Or if you install systemwisely, you can simply use
taiwins -s taiwins-shell -c taiwins-console
If you prefer not to have the shell, try taiwins -n which will make taiwins
run without shell, user can start a shell later.
The default configuration is $XDG_CONFIG_PATH/taiwins/config.lua, see the
sample config for an example.
Taiwins has a versatile binding system, you can chain key-presses like in Emacs(up to 5) and add custom bindings through lua functions. The bindings is configurable, by default available bindings are
F12: quit taiwinsSuper+Shift+cclose current applicationCtrl+LEFT/RIGHTswitch to previous/next workspaceAlt+Super+bswitch to last workspaceAlt+LEFTresize window to the left (only in tiling mode)Alt+RIGHTresize window to the right (only in tiling mode)Super+Spacetoggle vertical/horizental layout (only in tiling mode)Alt+Shift+Spacetoggle window floating/tilingAlt+Shift+jcycle through applicationsSuper+vcreating vertical sub-layout (only in tiling mode)Super+hcreating horizontal sub-layout (only in tiling mode)Super+mmerge current application to parent layoutSuper+pcalling shell-console to launch application
Currently documentation is generated through doxygen. enable build_doc option
to enable building documentation. We also host a online themed
documentation which you can access.
There are some example screen shots of taiwins, check out the screenshot page for more details.