2021-06-28 04:01:37 +02:00
### Why?
2021-06-27 08:57:56 +02:00
Layout-machi is great, however it requires you to use its built-in switcher to manage your open windows. If you are shuffling, swapping, and moving things around often, this could become counter productive.
2021-06-27 08:15:25 +02:00
`Machina` is built on top of layout-machi, and allows you to bind frequently used actions to your keys and gives you additional user friendly features.
2021-06-27 08:57:56 +02:00
A combination of `layout-machi` and `awesomewm-machina` will give you a similar experience to fancy zones on windows.
2021-06-27 08:15:25 +02:00
2021-06-28 04:01:37 +02:00
### What?
2021-06-27 08:15:25 +02:00
These are the features I added:
2021-06-27 09:11:08 +02:00
- Quick Expand:
2021-06-28 04:01:37 +02:00
Expand focused window to left, right, or vertically. This will make the window snap to the next available region.
2021-06-27 08:15:25 +02:00
2021-06-27 09:11:08 +02:00
- Directional Swapping:
2021-06-28 04:01:37 +02:00
Swap windows between regions.
2021-06-27 08:15:25 +02:00
2021-06-27 09:11:08 +02:00
- Directional Shifting:
2021-06-28 04:01:37 +02:00
Relocate windows like Elv13's collision module.
2021-06-27 08:15:25 +02:00
2021-06-27 09:11:08 +02:00
- Rotational Shifting:
2021-06-28 04:01:37 +02:00
Relocate windows clockwise or counter clockwise. This uses a different algorithm compared to directional shifting and should be more accurate in merging your floating clients to the tiling layout.
2021-06-27 08:15:25 +02:00
2021-06-27 09:11:08 +02:00
- Shuffling:
2021-07-04 00:13:07 +02:00
Go backward or forward in a region, and it will cycle the clients inside that area.
2021-06-27 09:01:59 +02:00
2021-06-27 09:11:08 +02:00
- Auto-Hide Floating Windows:
2021-06-27 08:15:25 +02:00
Often times, the floating windows pollutes your background if you are using `useless-gaps` . Machina will hide those for you, but they can still be accessed through your window-switcher such as Rofi.
2021-06-27 09:11:08 +02:00
- Floating and Tiled:
2021-06-27 09:04:42 +02:00
All keybindings, including swapping work seamlessy on both the tiled and the floating windows. So, if you need to push that terminal to a corner, you can easily do so without changing it to tiling mode.
2021-06-27 08:15:25 +02:00
2021-07-04 00:13:07 +02:00
- Experimental Tabs:
We now have tabs for tiled clients :)
2021-06-27 09:01:59 +02:00
2021-07-04 00:13:07 +02:00
### Next?
2021-06-10 16:28:28 +02:00
2021-07-06 19:16:15 +02:00
- [ ] Better keybindings
- [x] Avoid machi's auto expansion on config reload
- [x] Show tabs everywhere
- [x] Dual monitor support
- [x] Allow zooming to center
- [x] Fixed geometries for zooming in
- [x] Auto hide floating layer
- [x] Auto hide floating layer exclusions
- [x] Simple move to designated coordinates (move_to)
- [x] Focus/Unfocus to tabbed regions should have visual indicator
- [x] Teleport client to other monitor
- [x] Directional swapping toggle
- [x] Rotational swapping toggle
- [x] Refresh layout on tag switching
- [x] Floating clients should respond to swapping
- [x] Floating clients should respond to shifting
2021-06-27 09:01:59 +02:00
2021-06-28 04:01:37 +02:00
### Layout-Machi compatibility
2021-06-27 09:01:59 +02:00
2021-06-28 04:01:37 +02:00
Machina should work just fine with both versions of layout-machi.
2021-06-27 09:01:59 +02:00
2021-06-28 04:01:37 +02:00
### Problems?
2021-06-27 09:01:59 +02:00
2021-06-28 04:01:37 +02:00
If you have any issues or recommendations, please feel free to open a request. PRs are most welcome.
### Install
2021-06-10 16:28:28 +02:00
switch to your awesome config folder, typically at:
```
cd ~/.config/awesome
```
clone this repository:
```
2021-07-05 06:34:14 +02:00
git clone https://github.com/basaran/awesomewm-machina machina
2021-06-10 16:28:28 +02:00
```
and call it from your `rc.lua`
```lua
2021-07-06 00:54:27 +02:00
local machina = require('machina')()
2021-06-10 16:28:28 +02:00
```
2021-06-28 04:01:37 +02:00
### Keybindings
2021-06-28 13:48:51 +02:00
This module directly injects into rc.lua and ideally, all keybindings should work unless you override them in your rc.lua.
If you have any issues, you can change in your `rc.lua` :
```lua
root.keys(globalkeys)
```
to:
```lua
root.keys(gears.table.join(root.keys(),globalkeys))
```
or, you can just copy / paste what you like from `init.lua` onto your rc.lua globalkeys table.
Some of the default shortcuts are:
2021-06-10 16:28:28 +02:00
```lua
2021-06-28 13:27:03 +02:00
2021-07-04 00:13:07 +02:00
-- Please see init.lua for keybindings and their descriptions.
2021-06-28 13:27:03 +02:00
2021-06-10 18:42:39 +02:00
```
2021-06-28 04:01:37 +02:00
2021-06-10 18:42:39 +02:00
### Preview
2021-06-27 10:46:59 +02:00
https://user-images.githubusercontent.com/30809170/123538385-ab5f7b80-d702-11eb-9a14-e8b9045d9d27.mp4
2021-06-10 18:42:39 +02:00