A fork of tinywl designed to be a simple base for a tiling WM with less then 2000 lines of code under the BSD-3-Clause license (see LICENSE for more details). NOTE: that this is not the default branch, but instead one that is re-written with simalar goals, the similaritys END THERE.
Configure tinytile with options when you run the launch command, you also need to note that for space-separeted inputs use an underscore instead of a space EG:
tinytile\
keyboradLayout gb\
keyboardOptns caps:escape\
terminal alacritty\
browser qutebrowser\
systemMonitor alacritty_-e_btop\
hideCursor yes
Use alt + x
to y
where:
x is ... |
y is ... |
---|---|
q | close the focused window |
j | focus the next open window |
return | open a terminal |
b | open a web browser |
m | open a system monitor |
x | suspend the system to ram |
p | power off the system |
r | reboot the system |
- Format every
.c
and.h
file with the provided.clang-format
file - Use
/* COMMENT */
for comments and//
to comment out code blocks - Name every variable with
snake_case
, enum values mustUSE ALL CAPS
as well - Here are some rules that may be broken, which if I can be bothered will make me rebase from default tinywl:
- Commits should be atomic - each commit implements one thing.
- The implementation of these features should only be modified if they need to work togethor with larger features - allows new developers to see how to implement everything individually ontop of base tinywl
- Cursor pressed move off surface fix
- Make gtk popups spawn in the center of their parents
- Make sure that the mouse always has the correct icon for what it is pointing over:
- When you open a window the cursor can be the wrong icon
- Implement drag icons
- Implement screen recording and screenshotting:
- Implement the output manager protocol
- Implement the scrrencopy protocol
- [WIP] Stop
xdg_popup
s from going off screen (some surfaces still go offscreen) - Add an option to hide the cursor if it is at the top left of the screen which allows for less distractions
- Allow switching virtual terminals
- Add configuration for pointers via libinput (allows for mouse acceleration)
- Make clients think they are tiling so that they draw square borders
- Basic keybindings for:
- Suspending/shutting down/rebooting
- Opening a terminal
- Opening a web browser
- Opening a system monitor
- Closing the focused window
- Basic config options for things such as - need to be customizable with command line arguments:
- Keyboard layout
- Keyboard options (to rebind keys)
- Command to be ran to open a terminal
- Command to be ran to open a web browser
- Command to be ran to open a system monitor
- Clients start at a floating size and then resize to the new size which wastes CPU and is visible to the user
- Command are executed in
sh
which is unnecarserry
- A menu system (requieres font rendering):
- Be able to switch (and reorder) apps with a list of open windows
- An overlay panel in the corner of the screen to display info such as:
- Date & time
- Battery available and wether it is charging, discharging or staying the same
- CPU tempreture
- Memory usage as % and GB/MB used
- Perhaps how many updates you have
- Network status
- Tiling functionality (and removal of floating functionality)
- Splits
- Be able to manage windows effectively with multiple monitors
- Fullscreen clients
- Spawn windows maximized to the pointer focused monitor by default
- Make sure that when you close a window it focuses another window
- XWayland support
- Layer shell support