redhog / InfiniteGlass

Window manager with infinite desktop, infinite zoom and infinite window resolution
https://redhog.github.io/InfiniteGlass/
GNU General Public License v3.0
35 stars 5 forks source link

Window decorations 2 #54

Closed redhog closed 4 years ago

redhog commented 4 years ago
IanTrudel commented 4 years ago

Is the recent merge includes actual window decorations to test? I can test tonight!

redhog commented 4 years ago

Yep it does. You need to clear/update ~/.config/glass/widgets.json Only the save and close buttons work. The pin button doesn't do anything yet.

Also, beware of emacs. It does something weird...

IanTrudel commented 4 years ago

I'm so excited!

:raising_hand: << vim user.

redhog commented 4 years ago

Btw, did you find out anything regarding svg rendering and skia?

IanTrudel commented 4 years ago

My docket is full this week. Nothing beyond reading Skia documentation.

IanTrudel commented 4 years ago

image

This is fun! Great work!

Pin and save respond to clicks

b'Terminal'/b'Pin'.()
b'Terminal'/b'Save'.send_sleep()
XXXXXXXXXXXXXXXXX SLEEP <class 'Xlib.display.Window'>(0x01a00006) b'Terminal'

Close is working but there is an Xlib.error.BadWindow

b'Terminal'/b'Close'.send_close()
XXXXXXXXXXXXXXXXX CLOSE <class 'Xlib.display.Window'>(0x01a00006) b'Terminal'
b'Terminal'/b'Close'.send_close()
XXXXXXXXXXXXXXXXX CLOSE <class 'Xlib.display.Window'>(0x00400015) b'Terminal'
X protocol error:
<class 'Xlib.error.BadWindow'>: code = 3, resource_id = <class 'Xlib.xobject.resource.Resource'>(0x00400015), sequence_number = 10141, major_opcode = 4, minor_opcode = 0

Also, I'm expecting close to fully close (without shadow) and pause to put to sleep.

image

Might be necessary to resize the buttons as well. :))) Default should be a bit smaller too.

Keep it up! It's super satisfying!

redhog commented 4 years ago

So save closes and saves the whole app. Close closes a single window.

So there are some alternatives:

And a problem:

IanTrudel commented 4 years ago

Font awesome does not have these two symbols. Where to find?

Are you using fonts for window decorations? This will be a problem for theming InfiniteGlass. SVG icons are the best option.

Only show decorations for window close to mouse?

Yes, please! One thing about your WM is that it's unencumbered and allows more space for actual content.

Also, my suggestion is that the window decorations appear on the corner closest to the mouse to keep travel distance to a minimum.

RE: Pinning

I'm bit lost when it comes to the concept. My initial thought was that pinning would prevent the window from moving, especially in case of tiling. Tiling could work other windows around but keep the pinned ones exactly where they are.

RE: Close

Do you have Gimp in mind? Close should close the window but when every window of a given app is closed, the app should terminate.

Also, shadows don't need window decorations.

RE: Saving apps, closing and such

There could be general preferences where one could say close either means close or it means saving. One thing I absolutely dislike on Windows is close often mean hide in the tray instead of quitting.

...

Universal symbol for additional options where other icons could be displayed to do whatever else you think is necessary but not absolutely necessary. For example, volume control for individual apps would be nice but it would clutter the window decorations. It would fit better in a ... icons (just like a submenu).

RE: Sleeping

Would it be possible to have a thumbnail added to the shadow window? A screenshot of the app on save.

Pause/play button is not immediately obvious but it does fit InfiniteGlass paradigm.

redhog commented 4 years ago

Are you using fonts for window decorations? This will be a problem for theming InfiniteGlass. SVG icons are the best option.

No, I use SVG, but the symbols in fontawesome come as a set of SVG:s too. That's what I use....

RE: Pinning I'm bit lost when it comes to the concept. My initial thought was that pinning would prevent the window from moving, especially in case of tiling. Tiling could work other windows around but keep the pinned ones exactly where they are.

So this actually came out of our discussion about ghosts, where you wanted to be able to configure individual apps/windows to (not) leave ghosts... I thought that since ghosts means that windows are kind of pinned to a place even when they're dead and reappear at that place, a pin would make sens for this, but maybe some other symbol would be better? Maybe something that symbolises immortality?

Do you have Gimp in mind? Close should close the window but when every windows of a given app are closed, the app should terminate.

Yep, GIMP is a very good example. Millions of little toolbox windows all over the place....

One thing I absolutely dislike on Windows is close often mean hide in the tray instead of quitting.

Yeah, that is super-annoying. Happens on Linux too with skype. How do you even quit such an app? The thing with save in InfiniteGlass is that it really isn't invisible - the ghosts are big and obvious, and you can use their close button to kill them off.

...

Universal symbol for additional options where other icons could be displayed to do whatever else you think is necessary but not absolutely necessary. For example, volume control for individual apps would be nice but it would clutter the window decorations. It would fit better in a ... icons (just like a submenu).

Oh, that's a cool feature. No idea how easy it is to implement, but it would be super useful. And that reminds me of another feature I'd like to add: Showing visually which window is currently a sound source....

Would it be possible to have a thumbnail added to the shadow window? A screenshot of the app on save.

It is. The icon of the app is trivial, screenshot requires a little more work, but not that much I think...

redhog commented 4 years ago

You could play around with different icons in widgets.json btw, maybe you come up with some really smart symbolisms?

IanTrudel commented 4 years ago

RE: discussion on ghosts

My initial suggestion was a cog to set window individual preferences. We should also have system-wide preferences. How easy would it be to write a Python GUI interfacing with existing InfiniteGlass libraries?

RE: Quitting Skype

Don't install it in the first place? :) :) :)

Showing visually which window is currently a sound source....

Oh yes! That would be great.

You could play around with different icons in widgets.json btw, maybe you come up with some really smart symbolisms?

So far we have talked about :

RE: Plus and minus sign

Minimizing a non-fullscreen window doesn't make much sense in InfiniteGlass, does it? It would be better to display only the maximize icon in windowed mode and display a minimize icon in fullscreen.

RE: Pin symbol

I'm really liking the idea of being able to pin (as in stick a window in place) a window where it would prevent retiling. It would reinforce the idea of islands and make it easier to tile other windows around one or more windows.

RE: fullscreen window decorations

This is a difficult one. Moving the mouse to a corner and having window decorations overlay might prevent using some features in any given app. What about having one of your magic shortcuts to pop up window decorations? Also, InfiniteGlass should override Xorg default right click menu anyway where we could add the decorations along. Got a few ideas, let me get back to you on this one.

redhog commented 4 years ago

Some symbol proposals in addition to yours above / replacing some of them:

So... I guess renaming your "pin" option to "lock", and my "pin" to "save location"?

redhog commented 4 years ago

Btw, minimize doesn't really make sense at all - a window morphs into its icon when you zoom out enough that it's too small to show the content.. But conceptually that's not iconification - the window hasn't changed, it's not in a different mode, you're just too far away to see it properly...

IanTrudel commented 4 years ago

Yes! Yes! These would be perfect. Even the colour would be good.

So... I guess renaming your "pin" option to "lock", and my "pin" to "save location"?

Agreed.

RE: Other icons

Do you have a cog and ellipsis somewhere? Pretty sure we need them too.

RE: Minimize

Indeed. Toggle full screen is what makes sense.

redhog commented 4 years ago

I'm using the fonts here: http://fa2png.io/fonts/

redhog commented 4 years ago

Added those two. But right now I'm not sure what would end up under ..., but I'm sure we'll come up with loads of stuff eventually...

IanTrudel commented 4 years ago

InfiniteGlassUIConcept

IanTrudel commented 4 years ago

The window decorations are supposed to reduce opacity as you move from one to another. It's also a bit too fast. I'm using a new software for the animation, learning along the way. Hopefully it inspires you anyway. :)

redhog commented 4 years ago

Cool, that looks really sleek. And if you have animation software to play around in - keep experimenting! I have to do everything "the hard way", so it takes longer time for me... I would offset the secondary icons a bit more though, so that they don't overlap...

IanTrudel commented 4 years ago

Cool, that looks really sleek. And if you have animation software to play around in - keep experimenting! I have to do everything "the hard way", so it takes longer time for me...

Yes, sir! The software is super intuitive to use for prototyping such kind of things. The best I used so far. I will keep experimenting but if you have ideas you want me to do, let me know.

I would offset the secondary icons a bit more though, so that they don't overlap...

Indeed, it would be better. My concern is travel distance. I have a slightly different take on the same concept. I will show you when it's done. :)

IanTrudel commented 4 years ago

InfiniteGlassUIConcept-MenuWorkflow

This is the new concept for the window decorations. Don't mind the line, it's a reference for you to be able to see the cursor move.

Additional ideas:

redhog commented 4 years ago

I like the scroll-wheel idea... and the mouse move means select/go back is interesting, but I'd have to try it to see how it feels...

IanTrudel commented 4 years ago

At least having a visual reference now really helps. We will see what we keep and what we discard once we get something to play with. :)

IanTrudel commented 4 years ago

I like the scroll-wheel idea... and the mouse move means select/go back is interesting, but I'd have to try it to see how it feels...

If there's an argument for it, all major WMs (incl. Windows and macOS) waste a lot of our time on fancy things, mouse movements and lots of clicking or shortcuts. This is something InfiniteGlass can do better, whatever the solution will be.

Perhaps it explains why some people like tiling window managers. I find them super stiff to use but it doesn't take away the practicality they have.

redhog commented 4 years ago

Yeah, I'm all for rethinking each problem "from scratch"! I started InfiniteGlass because I felt like my current WM didn't support my workflow very well. In my workflow, I don't really need non-maximized windows, but I need the other (currently non-visible) workspaces to be organized in a way I can remember intuitively. That's also why I liked your edge-hinting thing...

And yes, I'm the same about tiling...

redhog commented 4 years ago

Ping @BackOrder : Just so you know, I'm a bit stuck on fixing a serious bug on this issue, that's why I'm not doing any other features for now... it'll take a while :(

The bug: Something is screwed up with textures, so that when a window has multiple textures, all end up containing the same image!! And I've been digging and digging and I can't figure out why!

redhog commented 4 years ago

I'm an idiot.

When generating textures, you bind them. To the current texture unit. Whatever that is....

IanTrudel commented 4 years ago

I'm an idiot.

Hey, oh, be nice to yourself. InfiniteGlass is an amazing creation!

redhog commented 4 years ago

Blocked by https://github.com/redhog/InfiniteGlass/issues/63

IanTrudel commented 4 years ago

You have so much progress today according to the commits. Great!

Did you add the pointer svg? I saw that you wrote the code allowing to have a custom mouse pointer. The one in my videos are part of the Font Awesome that you have shown me before.

redhog commented 4 years ago

No sorry, that's not what those commits do. They just let shader code know where the pointer is, so that window decorations can be shown/hidden/made half transparent depending on that...

IanTrudel commented 4 years ago

Thanks for explaining. No worries here, you're on a roll!

redhog commented 4 years ago

Moved the submenu stuff to https://github.com/redhog/InfiniteGlass/issues/64