dreamcat4 / skippy-xd

A full-screen Exposé-style standalone task switcher for X11.
GNU General Public License v2.0
100 stars 12 forks source link

Corner radius settings option for windows presented in skippy-xd #46

Closed cezaris13 closed 1 year ago

cezaris13 commented 1 year ago

Hi, I was tinkering with my window manager recently and added rounded corners. I was wondering, if there is an option to add rounded corders to skippy-xd presented windows? If not, are there available resources to read about this and try to implement this feature?

dreamcat4 commented 1 year ago

We do not view such as any priority above other work, having bigger or more pressing problems to solve.

But happy to take PR's for that feature. So long as the code quality is high enough, and the feature can be switched on/off under configuration. And does not crash / is not buggy, then great. No objections. Certainly would be of a value to others. (Just we cannot afford the necessary time to work on it ourselves).

But it's a great idea! And a good way to begin getting familiar with skippy codebase.

felixfung commented 1 year ago

@cezaris13 do you mean rounded corner on the thumbnail or the highlight tinting?

If it is just the tinting, it should be quite simple: changing the rectangular paint here https://github.com/dreamcat4/skippy-xd/blob/61f979b16ec6b67d94f7956670c3c35c36e7bdc4/src/clientwin.c#L356 to some rounded rectangle. This link might help https://www.x.org/releases/X11R7.7/doc/renderproto/renderproto.txt

If the mini windows themselves need rounded corner, then it would be a little more complex. Perhaps XFixesCreateRegionFromWindow, XFixesTranslateRegion, XFixesSetPictureClipRegion, XFixesDestroyRegion are needed. The functions to change I think would be a subset of clientwin_create(), clientwin_update(), clientwin_repaint(), clientwin_move().

Let me know how it goes :)

felixfung commented 1 year ago

Also look at this one: https://tronche.com/gui/x/xlib/graphics/filling-areas/XFillArcs.html

cezaris13 commented 1 year ago

Also look at this one: https://tronche.com/gui/x/xlib/graphics/filling-areas/XFillArcs.html

Found similar implementation on dwm-flexipatch pach list: https://github.com/bakkeby/dwm-flexipatch/blob/fcbe686ff250849b00da2479baf71dedc3cb0f07/patch/roundedcorners.c#L4 I think it should be quite similar in skippy-xd to implement.

dreamcat4 commented 1 year ago

ok @cezaris13 your initial PR was merged.

(i am not sure if others see this minor issue) but there might be some slight visual displaying bug, whereby some client window previews are rounded below the bottom of the preview. It is not very much issue, and you might not notice. So i didn't bother opening any new issue for it.

You can keep this issue open if you want to work on this feature anymore. Once you are finally happy with this feature as being done, please you are welcome to close the issue at your discression.

Many thanks for your contibution! very nice :)

cezaris13 commented 1 year ago

ok @cezaris13 your initial PR was merged.

(i am not sure if others see this minor issue) but there might be some slight visual displaying bug, whereby some client window previews are rounded below the bottom of the preview. It is not very much issue, and you might not notice. So i didn't bother opening any new issue for it.

You can keep this issue open if you want to work on this feature anymore. Once you are finally happy with this feature as being done, please you are welcome to close the issue at your discression.

Many thanks for your contibution! very nice :)

Can you show the picture/ video where the issue can be seen? I'll try to look into that.

dreamcat4 commented 1 year ago

Can you show the picture/ video where the issue can be seen? I'll try to look into that.

ah false alarm. is ok man... i think i found the problem here:

https://webcache.googleusercontent.com/search?q=cache:Y9ra60NBEOMJ:https://www.lxle.net/forums/discussion/1450/expose-skippy-xd-fix-for-possible-issue-with-radeon-driver&cd=3&hl=en&ct=clnk&gl=ch&client=firefox-b-d

then it was nothing to do with your rounded corners stuff. sorry for any confusion. and your code has been working well since it was merge. very nice work. many thanks again my friend

so i think we can close this issue...

maybe update in the sample config as 5px rounded corners (by default). because that seems like a nice (but minor) level amount. just for people to just know that the feature is there and exist to play around with

cezaris13 commented 1 year ago

Can you show the picture/ video where the issue can be seen? I'll try to look into that.

ah false alarm. is ok man... i think i found the problem here:

https://webcache.googleusercontent.com/search?q=cache:Y9ra60NBEOMJ:https://www.lxle.net/forums/discussion/1450/expose-skippy-xd-fix-for-possible-issue-with-radeon-driver&cd=3&hl=en&ct=clnk&gl=ch&client=firefox-b-d

then it was nothing to do with your rounded corners stuff. sorry for any confusion. and your code has been working well since it was merge. very nice work. many thanks again my friend

so i think we can close this issue...

maybe update in the sample config as 5px rounded corners (by default). because that seems like a nice (but minor) level amount. just for people to just know that the feature is there and exist to play around with

It's ok, created PR for the default corner radius value. After that, I'll close this Issue.