Git Product home page Git Product logo

glazewm's People

Contributors

afermar avatar agusardizzone avatar alegrz avatar aminedjeghri avatar areamanm avatar colonelbucket8 avatar groovyghoul avatar gtsherman avatar holbyfpv avatar jayrfs avatar jk-flip-flop96 avatar jovark avatar killerrat avatar kuznetsovvj avatar lars-berger avatar lyze237 avatar maxle5 avatar neon-sunset avatar pamesta avatar phisko avatar robertmoelker avatar s-v-o avatar scubamount avatar sebastian-nielsen avatar sewer56 avatar silvarc141 avatar sitiom avatar video-nomad avatar wis avatar zinvoke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

glazewm's Issues

Borders of Electron apps are resized inconsistently

Pseudo-apps: applications that utilize Chromium/Headless Chromium alongside packages like Electron to cobble together a dedicated desktop application with HTML/CSS or a web-app; a dedicated Chromium install for a web-app with extended system permissions and capabilities.

When using LibreWolf and similar or Streamlink Twitch GUI (both left), the sizing and positioning is now correct and consistent as of 1.4. However, now Discord and Spotify (both right) are no longer sized correctly. Discord has some slight overlap on the left or right edges, while Spotify has significant overlap on the right and bottom edges, to the point of requiring at least 12 for the inner and outer gaps to compensate for the overlap (Pic 1). I have tried moving workspaces, moving the windows, toggling floating, restarting GWM and the rig itself, and have updated from 1.4 to 1.4.1; no change.

Pic 1: inner and outer gaps set to 12
image

Pic 2: inner set to 5, outer set to 10 (what I was using before)
image

RFI: Run external commands

Hi @lars-berger,

I was taking a look at the animated gif you posted in the README section of the project and from what I gather it seems possible to launch external commands directly within GlazeWM (e.g: Terminal Emulator, Text Editor, etc). At the moment I am using AHK to do that but I was just wondering if that is necessary.

Thanks in advance.

Minimize window command

Would help productivity, something similar to WinKey+DownArrow but without opening the Windows menu.

Example:

- command: "minimize"
   binding: "Alt+M" 

Issues with multiple monitors: cant pick which screens to tile on

Been using the app for a few days on my laptop, and it's been a good experience.
I tried it today on a pc with multiple screens and found it kept tiling my windows on the 3rd screen and ignoring the other 2. I tried to drag or move with the alt keyboard shortcuts but anytime I'd open a new window, all the other windows would be moved over to the third screen again.

Would be great to get multiple monitor support, or at the least the ability to pick which screens to tile on and which to ignore, (and if only one screen can be supported let the user pick which screen to use for tiling).

Many thanks for the great app.

Cobian Backup - auto selecting "Run All Tasks Now"

Similar to the notepadplus issue and keepass issue, when opening the main window of Cobain Backup, it seems to select 2Run All Tasks Now".

Not sure what info you use to exclude these, I can provide more info in the future.

Main window:
Title: Cobian Backup 11 Gravity
class: TformMain

monocle layout support?

Will this software support monocle layout in the future?
If so, it could be the best wm for windows for me.

Avoid trying to manage windows running with elevated privileges

Windows launched with administrator mode cannot be moved/resized when the WM is run in non-administrator mode.

These windows should be ignored when the WM is launched in non-administrator mode. If the WM is launched in administrator mode, then these windows should be managed.

Keybindings with Alt also trigger when using AltGR

I have the following keybinding:

- command: "focus workspace 1"
  binding: "Alt+1"

It also triggers when I press AltGr+1

This happens with every keybinding that uses the Alt key

Why is this bad?
On the german keyboard layout, AltGr is used for lots of characters, including but not limited to:

  • AltGr + 2: ²
  • AltGr + 3: ³
  • AltGr + 7: {
  • AltGr + 8: [

Just using alt (e.g. Alt + 2) would not produce the specific character (in this case ²)

Question: How to move workspace to Monitor and focus monitor?

Hi,

first I wanted to thank you for the great application!

I've used Xmonad on linux and Workspacer on Windows (which takes the layouting approach of Xmonad) in the past and I think GlazeWM takes inspiration vom i3, which I tried out only for a short period of time, so I may be oblivious to an obvious solution to my following questions:

  1. How do I move a workspace from one monitor to the next?

eg. using Xmonad/workspacer if I am focused on monitor 1 and I press ALT-2 to switch to workspace 2, workspace 2 is used on monitor 1. If it was visible on monitor 2, the workspace that was previously being shown on monitor 1 is switched with monitor.

I have searched for an i3-based solution and found:
https://faq.i3wm.org/question/4609/how-to-move-workspace-to-monitor.1.html
which mentions the use of move workspace to output right and move container to output right as possible solutions.

  1. How do I move focus from one monitor to the another?

eg. using Xmonad/workspacer provides alt-wer

I've searched for an i3-based solution and found:
https://faq.i3wm.org/question/4335/move-focus-to-monitor.1.html
which mentions the use of focus output right as a possible solution.

I've quickly glanced at the source code, but I don't think those commands are implemented atm - is this correct? If not, is this on the roadmap or are there any other solutions that I am not aware of?

Thank you!

Take care,
Martin

Feature Request: Set up workspaces per windows Virtual Desktop

I am wondering how hard it would be to implement a full set up GlazeWM workspaces PER Windows Virtual Desktop. so desktop 1 would have spaces 1-9 for me. Then Desktop 2 would have a different set of spaces 1-9, etc... That would be amazing :)

My use case is I have my personal stuff on desktop 1, and then I have separate desktops for each of my client projects I have open. Each client may have many windows and tools open at the same time, because I jump to different customers quite frequently during the day. Just having a single set of 9 workspaces isn't quite working for me, I don't have enough maneuvering to have many windows open, and many different clients things open.

Let me know how doable that is going to be, and if you have and pointers of where I should start looking in the code.

Cheers,

Request: Automatic nested windows

As per Unix based tiling window managers, it'd be great if newly spawned windows would auto tile in a divided horizontal/vertical way rather than all horizontal.

After reading this thread which details how to manually switch between horizontal and vertical modes to produce this effect. It'd be great to get some basic automation where windows spawn in a somewhat golden ratio of alternating horizontal/vertical.

WSL Applications

Hello,

I launched a couple of apps from wsl2 via Vcxsrv. From what I can tell the windows are being ignored by glazeWM. Is this supposed to be the case?

Improve handing of maximized/full-screen windows

This isn't as disruptive as the minimised window issue, as that was bringing up already hidden windows and leading to the user having to fight the program to get them minimized again.

This is more a usability / quality of life suggestion.

To me there's two different things that I'll disambiguate. Full screen, is a window with no maximize/restore button and takes the entity of the screen (so you can't view the taskbar or anything). This is mostly multimedia.

The other is maximised windows, windows that can be maximised/minimize/restored that have had the maximize button used.

I think anyone would agree full screen windows should be ignored and left to be fullscreen. Currently they're mostly fine. The program sometimes trims the very edge of the screen after tiling some other windows. But the screen still stays roughly the same size so it's not a huge issue.

Regarding maximised windows, currently windows can be moved around, resized and maximized without issue, and the program doesn't do anything to prevent that until another windows is opened and it starts to tile things.
I like this behavior as it means you get to temporarily use a window differently whilst you look at it for a minute, and glazewm doesnt immediately fight it. Which is good to me.

However, I propose that maybe it'd be good for glazwm to just ignore maximized windows by default? Or resize that maximized window into the only window on that workspace?
That way the ability to maximize is less a temporary thing that works as a consequence of the program not catching it yet, and more an expected possibility.

Whether behaviour like this is even possible or not I'm unsure. Is it possible mean pull the window state of a window before touching it?

Obviously ignoring certain classes or processes is possible and I do that for RDP and can probably do it for things like VLC video playback window classes. But maximized file explorer/chrome etc being turned into a full-size workspace screen isn't something possible by window rules.

Anyway feel free to mark this low priority or close it if. But figured I'd put in a suggestion to float the ideas I had. The only actual issues with full screen is video playback and RDP that I've noticed so far, which are somewhat fixable with window rules.

I definitely like having the maximize button rather than have it removed entirely like I've seen with Linux tiling window managers. So keeping maximizing ability is preferred even if it's just leaving temporarily until the next new window triggers the tiling process

Borderless Fullscreen mode in games sticking under taskbar

image

As shown above, the Borderless Fullscreen/Fullscreen Windowed mode in certain games appears to display incorrectly, where it will stick below the taskbar, even when tabbed into the game in question. This can be solved, however, by using Windowed mode alongside something like Borderless Gaming. Tested with Ghost Watchers and Modern Warfare 3.

Ultra wide causes explorer crash

image

After launching, this line pops up. Only thing that would fix it reboot even after restarting explorer and exiting program etc.. was able to visually capture with snippet tool this line.

This has only applied on ultra wide monitor with 1 workspace.

Edit: - right clicking desktop would have infinite spinning circle after this

Inner gaps not respecting 0

First off: Great initiative and good job! Loving the push for window managers in Windows and YAML is a great choice for configs.

Now to the issue I'm experiencing.

There seems to be an issue with the inner gaps where it doesn't allow you to go below a certain threshold.

My ~/.glaze-wm/config.yaml (everything else is left at default):

gaps:
  inner_gap: 0
  outer_gap: 0
...

Expected behavior

Expected no gaps between my windows.

Actual behavior

Found gaps on both vertical as well as horizontal layouts. See screenshot:

image

Spec Info
OS Windows 11
Built from c4ee499
Built with .NET SDK 6.0.101
Screen resolution 3440x1440

NOTE: I also tried the latest binary (v1.2.0) but it has the same problem.

Keepass 2

keepass 2 is exhibiting weird behavior where dialogs and settings randomly seem to get selected themselves, opening menus automatically close with things being selected. It seems like a similar situation to notepad++ where glazewm is interacting and controlling with keepass 2.
I tried to just create a window rule myself, but it'd be nice not to have to completely ignore the program from glazewm.

reproducible:

opening keepass 2 automatically tries to create a new entry as if "add entry" was pressed.
opening the fle menu automatically opens a search wizard
opening the tools menu opens the password generator automatically
...

When RDPing to a host running glazewm, open windows vanish

If I RDP to a host that is running glaze. Open windows disappear until I exit glazewm.
I've tested this on single monitor to single monitor connections and multiple monitor connections and it's the same. Until I close glaze I cannot access any windows that were open.

If I disconnect the rdp session the windows are still hidden until I close glaze.

Not a major issue. It just means closing and reopening glaze anytime I RDP onto the computer, but figured I'd put in an issue for it.

GeForce Experience overlay shows with each focus changes.

Raised for 1.2.0 version.

I have GeForce Experience overlay enabled.
When I am changing focus from one application to another (Alt + hjkl) this overlay is "automatically" brought to the front:
image

I have tried to remove managing of this app window through window_rules section:

window_rules:
  - command: "ignore"
    match_process_name: "nvcontainer"

But so far I had no luck.

If you have any advice on how to debug this behavior I can try to spin-up local development setup and dig a little more information.

Command keybinding doesn't accept semicolon

Hi there, I'm trying to set a command's keybinding to "Alt+;" but the error log says Requested value ';' was not found. I've attached the whole error log, I wonder if you can tell me if/how this is possible. Thanks.

errors.log

Exclude dialog boxes by default

In relation to a similar issue, is there a class or match_title that could be implemented like this? If I could find out how to universally exclude things like explorer or dialog popups, I would submit a pull

Restore window/workspace state on next startup after a forceful exit

GlazeWM just froze on my PC, which is fine. I don't mind occassionaly restarting GlazeWM. Unfortunately, after having needed to kill it in Task Manager, all my windows except one window are hidden. I suppose this is because before the crash, I was on a workspace with only one window. After starting GlazeWM again, all the hidden windows remain hidden and I essentially lost all my unsaved progress.

There should be a more graceful way of handling crashes. Maybe unhide all windows on GlazeWM start? nog actually saves all windows in a text file so on restart, not only does it unhide hidden windows but it also puts them in the right workspaces.

Typing in notepad plus plus causes window movement

Rather minor one but still consistent and reproducible.
Typing in notepad++ causes the application window to start resizing by itself.

Steps to reproduce, just type in notepad++
Example word "typing"

The notepad++ window seems to keep moving and resizing by itself with each keypress then going back to its original state again.

Be able to bind a workspace to a specific monitor

First, thank for this great project!

I'm running in with two monitors, and I know you already have an issue open for moving entire workspaces to specific monitors, but I was wondering if there's some config problem since my left monitor has workspace 2, 3, 4, and 5, and my right monitor has workspace 1, 6, 7, 8, and 9. I noticed Windows thought of my left monitor as monitor 2 and the right as monitor 1, but swapping the cables to fix that seemed to have no effect.

Respect minimized state

I mentioned it on Reddit, but to put it in Github, it'd be great if GlazeWM ignored already minimized windows when launched rather than unminimizing them all and trying to tile them straight away.
Additionally, it'd be good if minimization keyboard shortcuts weren't ignored/fought with (such as win+m)

Many thanks

Array support for match_process_name

Small improvement for config, support arrays for match_process_name.

# before
window_rules:
  # ignore foo.exe
  - command: "ignore"
    match_process_name: "foo"
  # ignore bar.exe
  - command: "ignore"
    match_process_name: "bar"  

# after
window_rules:
  # ignore foo.exe and bar.exe
  - command: "ignore"
    match_process_name: ["foo", "bar"]

Great WM :)

Key bindings bug when more keys pressed than binding

I found a problem with the key bindings.

I bound focus workspace 1..9 to Alt+1 .. Alt+9. This works, but when I press Control+Alt+1 the program checks to see if Alt is pressed, and if 1 is pressed, and then runs the focus workspace 1... It should ignore that, since I bound another application to Control+Alt+1.

So we need to check all the currently pressed modifiers and keys, and compare exact match with the key bindings. If it doesn't match EXACTLY, then ignore it.

I had a very quick look but I couldn't quite figure out how it works.

It's somewhere below:

I think this needs to be somehow flipped, or change to do an exact compare:
https://github.com/lars-berger/GlazeWM/blob/622a7f9b46842d1f1c8a0396e73429aea341dea4/GlazeWM.Infrastructure/WindowsApi/KeybindingService.cs#L103

https://github.com/lars-berger/GlazeWM/blob/622a7f9b46842d1f1c8a0396e73429aea341dea4/GlazeWM.Infrastructure/WindowsApi/KeybindingService.cs#L133

Cheers,

Some feature suggestions.

Just want to start off by saying that this is great. I've always wanted tiling on Windows to make it slightly less annoying to deal with, and this actually delivers. That being said, there are some points that need improvement.

Firstly, I'm not sure if it's just Firefox being Firefox, but the browser window in my case does not appear to respect the gap rules. Not sure why, but it's roughly twice the gap size as what is set (10, at the time of writing).

Next, there needs to be a hot reload for the config file, or at least a manual reload that can be triggered via keybind. I made a script to just restart it on change, but it's a pretty hacky solution.

Finally, the rules for fullscreen applications needs work. If you try to run a game from a launcher, for example, it currently treats the launcher as the parent window before either hiding or crunching the window, requiring you to manually move the window over and resize it in-game. More to the point, it would be incredible if we could set rules in the config for fullscreen or specific applications, with options such as floating or grid, position, etc.

Again, thank you for your work and for making Windows less of a pain to deal with.

Prevent keybindings from firing when an ignored app is focused

Hi @lars-berger,

first of all thanks you very much for the awesome work you have done with GlazeWM. Keep up the good work.

I have a question on how the 'ignore' functionality works. I would like to exclude Intellij Idea from being managed by GlazeWM as I am using a lot of shortcuts in my IDE that overlap with the WM (e.g. Alt+1 for example is moving to the project tab in Idea but it is also focusing workspace 1). I tried using ignore and I seem to miss a bit how it is supposed to work (or maybe I am simply using it wrong). In my config file I have:

window_rules:
  - command: "ignore"
    match_process_name: "/idea64/"
    match_class_name: "SunAwtFrame"

and the result I get is that the window is persisted on all the workspaces (which sounds reasonable to me as it is ignored) but I am not sure whether my understaning is correct or not and also pressing Alt+1 seems to still trigger the WM as the IDE does not set the focus on the Project tab.

Am I doing something wrong here? Could you please help me in getting this right?

Cheers and thanks again.

Qt windows not hooking? (OBS as a notable example)

So, I use a few tools that use Qt for Windows, including OBS Studio. Regardless of what I try, it's like it either fails to manage entirely (Czkawka/Szyszka) or it attempts to manage with a large gap in the current layout but with no actual management taking place (OBS Studio). Is Qt support simply not a thing for the WM currently?

OBS Studio:
image

Program does not start

After about using the newest release for 2 weeks, it no longer was able to start. When double clicking on the .exe, nothing happened. Reinstall did not solve the issue. I reverted back to the previous release for the last 2 weeks and that was working fine until today, when that stopped starting as well.

Issue with ignoring windows

GlazeWM doesn't seem to work well with ConEmu, which I use to have a dropdown-style terminal.
relevant yaml:

window_rules:

  - command: "ignore"
    match_process_name: "/ConEmu64|ConEmuC64|notepad.*/"

When i open conemu it still gets placed by glazewm

I also couldn't figure out how to move workspaces to different monitors. I can strategically create the workspaces while on a particular monitor but that is a lot of overhead on startup.

Notepad++ also seems to move itself in the layout whenever i type into it.

Keybinds + your config - impossible to make vert/horizontal

The current default keybinds work, will continue testing program. Downside is I cannot for the life of me figure out how to get something to tile horizontally and vertically at the same time besides opening a new window utilizing start menu and using the horizontal or vertical layout selector. I rarely need to open new windows by hitting start menu, open a new program, and selecting where it should go... I commonly need to reconfigure where my windows are already.

If this is my lack of knowledge and I have not been concise, I will resolve issue immediately

Edit: It's frustrating to open a window and then need to move it across a workspace and then it removes the horizontal or vert tiling without being able to have vert and horiz at the same time. Having a 1x2 or a 2x2 is super important to me. Whereas having a 1x1x1 is not... Accidentally moving a tile the wrong way messes up everything and windows must be closed and opened to orient correctly.

Example:
Alt+Shift+V > Alt+Shift+Left = goodbye horizontal/vertical tiling.
Alt+V + > Alt+Shift+left = goodbye horizontal/vertical tiling

Feature Request: Window Highlighting?

I know that this is probably difficult, clunky, or impossible given Windows and its shell, but I was wondering if it might be possible to create a border highlight for the currently-selected window in the same vein as i3, showing which window you currently have selected. While you kind of can tell which is selected if you look, there's no current way to just look across your screen and be able to tell which window is currently active, which can hinder productivity in keyboard-only solutions.

Just a thought.

How do I setup the BSP like tiling as shown in the demo GIF?

How do I setup the BSP like tiling as shown in the demo GIF?

After the initial 3 terminals are added as new column. The GIF shows 2 Columns, and new terminals added as rows only in the second column. The GIF further shows BSP like layout.

Is this supported yet?

image

image

Can't drag tabs in Chromium based browsers

In Chromium based browsers I can't drag tabs between browser windows or into a new window. As soon as I drag a tab and leave the space designated for tabs in the window, i.e. dragging the tab out of the window, it just jumps back to where it was. For an instant the outline of a new tiled window appears, before disappearing again.

This happens in Google Chrome, Chromium, Microsoft Edge (Chromium), Brave, and presumably any other Chromium based browser.

Firefox doesn't have this issue and lets me drag a tab out of the current window to create a new window. It also allows me to drag tabs between existing Firefox windows.

I'm running Windows 11 Home, version 21H2, build 22000.613
2022-04-17-17-01-44_Trim

Reload user config without restart

Started using 1.5 today, and it seems to work a treat, with the issue in thread #80 appearing to have been solved for the time being.

Anyways, would it be possible to incorporate a kind of hot-reload for the config file, something that could be triggered on keybind or in the tray menu? The lack of attribute docs on what can be specified is an issue in and of itself, but needing to close and reopen the WM to see the changes from a single line is a bit much, especially since it discards your layout with no way to preserve it outside of explicit rulesets. That's also a pain, since I can't find anything for assigning workspaces to X or Y panel, so setting program workspace requirements is a half-measure.

Random closing/crashing

Have noticed the program seems to close itself every couple of hours. Not sure how to diagnose, I thought I saw it save to an error log file in the program directory before but am not seeing one now.

Completely possible something I've changed in the yaml or so something I do. But would be good to troubleshoot.

Relaunching program works and thanks to it handling minimized windows well isn't an issue. But might as well diagnose if I can.

Add `exec` command for launching an executable (eg. terminal window)

Hi, first of all, I'd like to say that this is the best WM I've used on Windows so far; thank you for the excellent work!

Something convenient I've seen in typical linux WMs is the ability to launch a terminal/editor with a shortcut, and I was wondering if that is something you would consider for Glaze as well? There are already many shortcuts that depend on the alt key, so it's understandable if you'd prefer to not add yet another one or two, but something like alt+t to launch your preferred terminal program would be neat for example.

I can definitely have a go at making a PR if you'd like to consider this feature.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.