Opened 7 years ago

Closed 6 years ago

#5712 closed enhancement (fixed)

Roster position managed by window manager

Reported by: manwe Owned by:
Priority: normal Milestone: 0.15
Component: roster Version: 0.13.4
Severity: normal Keywords:
Cc: Blocked By:
Blocking: OS: Unix



Roster doesn't obey to window manager rules and restores itself to the last position.


I keep roster window in bottom right screen corner and set in WM to keep that position. Sometimes window has to be moved, but after hide and restore it should be placed again in that corner. Systray module forces last position based on roster_x-position / roster_y-position.

Enhancement recommendation

New boolean option, roster_noposition or similiar. If set to true (false by default), don't execute win.move() in and gtkgui_helpers.move_window() in .

Attachments (1)

gajim-tray.patch (2.5 KB) - added by manwe 7 years ago.

Download all attachments as: .zip

Change History (10)

comment:1 follow-up: Changed 7 years ago by asterix

We do that because we don't want roster to be outside of the screen.

comment:2 in reply to: ↑ 1 Changed 7 years ago by manwe

Replying to asterix:

We do that because we don't want roster to be outside of the screen.

If someone would turn this option on from advanced settings and put roster outside of the screen, should only blame himself. This is why WM's have settings to force windows positions.

Another solution is to move roster if (and only if) it's not visible. In line 342 of (pseudo-code, I don't know python to well):

screen = win.get_screen()
x, y = win.get_position()
if x > screen.get_width() || x < 0 || y > screen.get_height() || y < 0:
    #[move roster just to fit]

comment:3 Changed 7 years ago by asterix

Roster position is saved before it's hidden, so it's restored where it was, so what's your pb?

comment:4 Changed 7 years ago by manwe

My "problem" is gajim forces itself to last position instead staying where WM showed it. Compiz has option to define default window position based on class, etc. So I've set it to put gajim in bottom right corner. Now, even if I move window around screen it should still be placed in corner after hide/show action. But because of win.move() it isn't.

comment:5 Changed 7 years ago by asterix

see #5196 to understand the problem from the other point of view.

comment:6 Changed 7 years ago by manwe

That's why, my first suggestion was to wrap .diff from that ticket with simple bool option, disabled by default. Forcing some behavior isn't good, there always be one whining user (like me ;)

Changed 7 years ago by manwe

comment:7 Changed 7 years ago by asterix

Sure it's doable, your patch does it (excpept option name is not the best) but that's one more advanced option. But It still sounds strange to me that you move your roster but you want it always at the same place. Why move it then?

comment:8 Changed 7 years ago by manwe

Two LCDs, seperate X displays with different resolutions and seperate compiz configs fitting programs like web browser to match size of current display instead of using saved one. Same thing with gajim, but position instead of size.

comment:9 Changed 6 years ago by Yann Leboulanger <asterix@…>

  • Milestone set to 0.15
  • Resolution set to fixed
  • Status changed from new to closed

(In [6e4c6ae9baf8]) add advanced option to allow not saving roster position. Fixes #5712

Note: See TracTickets for help on using tickets.