TimUntersberger / nog

A tiling window manager for Windows
MIT License
696 stars 20 forks source link

News #78

Closed TimUntersberger closed 4 years ago

TimUntersberger commented 4 years ago

Subscribe to this issue if you want to be notified when something gets fixed or a new feature gets added.

TimUntersberger commented 4 years ago

Update v0.11.0

Add support for windows that are maximized.

This means that you can now have for example firefox maximized and whenever you want firefox to be managed by WWM you can just use the ToggleFloatingMode keybinding without any problems. When the window gets unmanaged it resumes its previous position like normal windows, but gets also maximized.

TimUntersberger commented 4 years ago

Update v0.11.1

WWM no longer slows down after some time

I discovered this issue a month ago, but I initially thought I fixed this by deleting every Brush object created by the CreateSolidBrush function, but I missed that I have to also release the device context that I get for each paint call. Not releasing the device context slows down the whole system, because a device context can only be held by one application at a time. This should now be fixed.

TimUntersberger commented 4 years ago

Update v0.12.0

Highlights

New config format

The project initially used yaml as its format, because of simplicity and compactness. Now that the config is more powerful and provides more options, the simplicity of yaml now becomes its downfall. Writing the config in yaml felt very restricted and made the implementation of some features very awkward. The new config had only two real candidates:

I considered lua mainly because of how the way writing a config in Neovim with lua feels like. It is very convenient to use, powerful and fast. Lua still had some restrictions, which made writing the config not as smooth as I imagined it to be. After searching for the perfect embedded scripting language I found rhai. Rhai in itself wasn't perfect for writing configs, but the flexibility that the rhai engine provides makes it possible to easily define custom syntax on top of rhai. This makes writing the config very smooth. An example for a custom syntax is the bind keyword.

I will be writing a concise guide on how to use rhai and the custom syntax that was implemented on top of it (for now you can look at the readme).

Resizing

It is now possible to define a keybinding for resizing a column/row.

example

bind "Alt+H" resize("Left", 2) // increase column to the 'Left' by 2 percent of the display

Modes

You can see modes like modes in vim. When you enter a mode you have a new set of keybindings. This can be very useful to reuse the same keybindings.

Example

You have Alt+H, Alt+J, Alt+K, Alt+L to change tile focus.

You press Alt+R to enter resize mode.

Now Alt+H, Alt+J, Alt+K, Alt+L are for resizing.