Tiling and simultaneous resizing of side-by-side windows (not only) for Xfce.
Tested with Xfce, it should work with any window manager compliant to the EWMH standard.
A Python script to auto-tile and to simultaneously resize docked windows.
Simultaneous resizing of adjacent windows
5 different tilers
Hotkeys for:
- Tiling and/or simultaneous resizing can be enabled/disabled
- Tiling can be triggered manually on demand
- Changing tiler
- Storing and re-creating current windows layout
- Cycling windows
- Swap windows
- Set/unset window decoration
All settings are workspace specific.
So for each workspace you can choose independently, if tiling is enabled and which tiler should be used.
No limit of supported workspaces
Config-file
Pure Python, easily hackable
Option to set the mouse-cursor in the middle of the new active window, when changed by hotkey.
This visual feedback is helpful, especially when the window decoration is turned off.
Focus can be set to next adjacent window, in the direction of the pressed arrow-key
Max. number of tiled windows for the currently active tiler can be increased/decreased per hot-key
Hotkeys can be defined in the config-file.
Most important hotkeys (full set see config-file):
Super_L - 1
tiler - master and stack vertically
Super_L - 2
tiler - vertically
Super_L - 3
tiler - master and stack horizontally
Super_L - 4
tiler - horizontally
Super_L - 0
tiler - maximize
Super_L - c
cycle tiler
Super_L - 5
restore windows layout
Super_L - 6
store windows layout
Super_L - ^
cycle windows
Super_L - ESC
swap current window with top/left-most window
Super_L - q
toggle simultaneous resizing (on/off)
Super_L - w
toggle tiling (on/off)
Super_L - y
toggle window-decoration (on/off) of tiled windows (*)
Super_L - a
shrink width/height of master window
Super_L - s
enlarge width/height of master window
Super_L - m
increment number of max. tiled windows for active tiler
Super_L - n
decrement number of max. tiled windows for active tiler
Super_L - arrow
focus next adjacent window in the given direction
Super_L - .
log name & tile of active window in /tmp/xpytile_<USERNAME>.log
Super_L - -
exit
*) Hint: In XFCE one can resize windows with Alt - Right-Click
and drag,
which is useful when windows-decorations are turned off
Well, edit the hopefully self-explanatory config-file xpytile.conf
Place xpytilerc in XDG_CONFIG_HOME in ~/.config/ or in /etc/ respectively
ArchLinux - users can install xpytile-git
from the AUR
./xpytile.py
or, to let run in background: nohup ./xpytile.py > /dev/null 2>&1 &
You may want to assign a hotkey.
In Xfce for example, add a shortcut to xpytile.py with:
Xfce-Menu -> Settings -> Keyboard -> Application Shortcuts
notify-send (package: notifylib for ArchLinux, notifylib-bin for Debian/Ubuntu) python3, python-xlib
I'm currently not aware of a bug.
However, when the program crashes it writes traceback info in /tmp/xpytile_<USERNAME>.log
(Q) Are gaps supported?
(A) Nope
(Q) Does xpytile support multiple monitor setups?
(A) On workspaces that span multiple monitors, simultaneous resizing works fine, tiling not really.
(Q) How do I get the exact name and title of a window I want xpytile to ignore?
(A) Run xpyile with -v or -vv or use the hotkey to log name and title of the current window.
(Q) What can I do, xptile isn't picking up my hotkeys?
(A) Run ./getModifierCode.py
, press Super_L - 1
(or the modifier you'd like to use)
and check/edit xpytilerc
(line: modifier = )