berry icon indicating copy to clipboard operation
berry copied to clipboard

Suggestions

Open JLErvin opened this issue 6 years ago • 26 comments

Please comment any suggestions you have to improve the window manager below. I can't promise that I will be able to implement everything, but I'm curious what people have to say!

JLErvin avatar Aug 25 '18 07:08 JLErvin

Maybe a simple menu... I can't remember all the keys configured :P

jolupa avatar Aug 28 '18 13:08 jolupa

I don't know whether I'm just missing something but I can't figure out how to make use of the mouse-controlled window moving - right now it feels like everytime I alt+click the window moves in a random direction. It'd be much easier if it was more like a click and drag functionality.

EDIT: Another enchancement could be to adjust the window decorations a little. For example, when you hover over a link in a web browser, the URL will pop-up in the bottom left corner of the window. Currently, it seems that the window decoration covers it a little bit. Happy to provide screenshots of what I mean if it's not clear.

EDIT2: Also giving an example on how to fix the "X" mouse cursor when not over a window.

nan0s7 avatar Sep 01 '18 04:09 nan0s7

@nan0s7 For the first issue, this should be fixed by using sxhkd version 0.5.5 or earlier. Later version don't add motion support which is why it is all funky.

I'll investigate the window decorations issue as well as the mouse cursor and get back to you.

JLErvin avatar Sep 04 '18 19:09 JLErvin

Hi, Thanks for your WM, it's very nice. My suggestion would be to have the possibility to set in config a particuliar mode by default for windows for example having all new windows in monocle mode (specially my workflow) Thanks

rapha8l avatar Feb 07 '19 17:02 rapha8l

I love very much in general the software that allows to remote interact via bash scripts, so I can only love berry, that I just found out today!

proposal 1/2: Windowchef adds to each window the WINDOWCHEF_STATUS property whose value is a JSON object that returns a bag of information not otherwise available via xprop; for example

WINDOWCHEF_STATUS(STRING) = "{\"window\":\"0x01c00006\",\"geom\":{\"x\":4,\"y\":602,\"width\":1902,\"height\":584,\"set_by_user\":false},\"state\":\"normal\",\"min_width\":135,\"min_height\":37,\"max_width\":2200,\"max_height\":0,\"width_inc\":1,\"height_inc\":1,\"mapped\":true,\"group\":-1}"

I have always found in WINDOWCHEF_STATUS a very useful resource for my scripts so, since berry is inspired (also) by windowchef...

proposal 2/2: Again in the name of the pleasure for hacking: since in berry is already configurable a title area at the top of each window, it would be interesting to allow the user to be able to freely -for position and quantity- create some hotspots -small buttons even with only textual label- clickable via button1 event to be bindable with berryc command???? (...the historic TWM window manager allowed this already at the dawn of X era but such intuition was then unfortunately -I say- lost...) A solution, in full *nix philosophy, that could allow to build some menus with external tools -jgmenu for example- without having to burden the berry code for this kind of task...

PS: @nan0s7, if not already settled:

EDIT2: Also giving an example on how to fix the "X" mouse cursor when not over a window.

this line added in ~/.xinitrc before running berry should fix it:

xsetroot -cursor_name left_ptr &

paoloschi avatar Jun 23 '19 19:06 paoloschi

@paoloschi

These are both excellent suggestions. I'll look into implementing both of these.

Number 1 should be fairly simple to implement since berry already maintains the internal state of each of its clients - I really just need a way to report this information to clients.

Number 2 might be a little trickier - I would like some time to think about the best way to implement this cleanly. I have stayed away from clickable decorations before as I feel that there isn't a convenient way for users to define their shape. Openbox, for example, uses .xbm files which aren't super easy to create yourself. Although I do really like the idea of being able to link custom commands to clickable buttons (users could create their own tiling script, for example, and add a tiling button to each window. That would be so cool). I'll look into this and keep you posted.

JLErvin avatar Jun 23 '19 19:06 JLErvin

Number 1 should be fairly simple to implement [...]

That's great! ...and also consequently collect all JSON objects from all existing clients (mapped & unmapped) in a single JSON array available via xprop -root <PROP_NAME> would it be equally easy to achieve? (paradoxically, from bash thanks to tools like jq I find it has become more handy to acquire data from JSON documents rather than parsing STDOUT columns from xprop itself or from wmctrl & C.)

paoloschi avatar Jun 25 '19 18:06 paoloschi

Number 2 might be a little trickier [...]

Personally I have never used the desktop toolbar yabar but I was reading the features today and I wonder if the technique it adopts could be inspiring: https://github.com/geommer/yabar/blob/master/doc/yabar.1.asciidoc

Among other features

  • A growing set of ready-to-use internal blocks developed in plain C.
  • Entirely clickable.

no dependence on any toolkit while, where it is required to add a bit of aesthetics

  • Pango font rendering with support of pango markup language.

...a similar "blocks" concept could that be a viable approach inside of berry?

paoloschi avatar Jun 27 '19 16:06 paoloschi

Maybe add a way to configure a set workspace to not have any window decorations for windows spawned in that workspace. This would help with steam because the decorations make the program act a little buggy.

Ergo0 avatar Jun 27 '19 18:06 Ergo0

Another thing which might be nice as a supplement to my earlier suggestion would be to add a way to only allow for window decorations on certain windows spawned by programs you allow to have window decorations.

Ergo0 avatar Jun 28 '19 20:06 Ergo0

@Ergo0 I'm going to look into your second suggestion. Being able to blacklist certain applications from drawing decorations would be helpful. I'm sure there's a way to automate this if a client wants to draw its own decorations, but I'm unfamiliar with the protocol as of now. In the meantime I can try adding a berryc command to not decorate windows from a certain process name (i.e. steam)

JLErvin avatar Jul 07 '19 21:07 JLErvin

Another suggestion would be a Workspace quick switcher, (kind of like i3's back-and-forth).

Also, making monocle and fullscreen toggles, so that the windows can return to the dimensions they were before going fullscreen.

StrangeAmoeba avatar Jul 08 '19 09:07 StrangeAmoeba

@StrangeAmoeba good idea, added as of f7f066632c0a205d35a0a38b68723f6bee4fada0

JLErvin avatar Jul 11 '19 05:07 JLErvin

A reverse-cycle-focus function would be convenient if you have many windows on a workspace.

mhlyv avatar Oct 06 '19 07:10 mhlyv

always on top mode

BartolomeyKant avatar Feb 26 '20 17:02 BartolomeyKant

When a window is in fullscreen, I sometimes move the window by mistake with the mouse. I would like to lock a window in fullscreen.

camillelab avatar Mar 10 '20 12:03 camillelab

@camillelab turn on edge_lock?

JLErvin avatar Mar 10 '20 14:03 JLErvin

Thanks!

camillelab avatar Mar 10 '20 14:03 camillelab

Add hooks on open and close window events, so we can create rules for different apps on it. For example I want my browser always opens on monocle mode without decorations at workspace 3, or messanger app opens at workspace 9 and snapped to right.

p.s. Sorry for my english

BartolomeyKant avatar Mar 10 '20 16:03 BartolomeyKant

:+1: for allowing decorations to be disabled by default.

Request: allow programs to manage their fullscreen state, eg pressing F11 in Firefox makes it think it's fullscreen, but it doesn't change size.

aeosynth avatar Mar 12 '20 01:03 aeosynth

@aeosynth

Default decoration behavior is very easy to implement, I can do that in the latest release.

With regards to fullscreen behavior, perhaps I have been a bit too opinionated. Personally, I want to be able to "trick" programs into behaving like they are fullscreen while keeping their size fixed. For example, having firefox fill the screen with a youtube video while remaining small is a nice way to watch media while working on something else. However, this is clearly an EWMH violation and not something everyone needs. I'll consider having an option to toggle this behavior.

JLErvin avatar Mar 12 '20 01:03 JLErvin

Rofi has a Windows mode which allows to select a window and apply a custom command with Shift+Return. By default, the command is wmctrl -i -R {window} in the config file, where {window} is the numeric identity of the selected window.

I would like to pass a command to berryc directly. However, berryc only targets the currently active window. Would it be possible to target a window given by its numeric identity?

Rofi also closes a selected window with Shift+Delete but it does not seem to work with berry.

camillelab avatar Mar 15 '20 14:03 camillelab

Would be usefull if some features like the hability to play videos on full screen would implemented on the code of actual version.

https://github.com/JLErvin/berry/issues/39

So, I think that some interesting modifications just exit as suggestion and no all people can see it.

bcd0101 avatar Apr 29 '20 00:04 bcd0101

Maybe a simple menu... I can't remember all the keys configured :P

This can be done with rofi and a simple shell script

image

K4zoku avatar Jan 13 '22 08:01 K4zoku

Would be nice if it didn't create windows outside of the designated screen space when edge_lock is set to "false"

squidgyberries avatar Jun 21 '22 13:06 squidgyberries

I've just made an issue about a feature which i would like to implement. More info in #197. If you want me to explain it a bit better just let me know

rice7th avatar Nov 28 '22 22:11 rice7th