Hi List,

I'm interested in urxvt being X-Session--Management-Protocol aware.

I started porting session support from mrxvt but its not working yet.

I would, however, like to discuss the idea a bit here, in order not to
waste too much time by running into the wrong direction.

My understanding is, that once a connection to a session manager is
established, the manager will invoke a specific callback (save_yourself)
to initiate storing of state.

For a first implementation, I consider the following state as relevant
(maybe skip the tabbing stuff first):

 * Position and size of window,
 * Number of tabs, and
 * CWD of child (shell) inside each tab.

I plan to store this state in the form of a restart command within the
session manager.  Alternatively, one could have urxvt-private state
files where this information is stored and indexed with a key, which
would be stored with the session manager.

Restarting urxvt with a certain window size and position should be
possible using the "geometry" command-line switch.

Using the "cd" command-line switch, the initial path for a single shell
can be preset.  The tabbed extension would probably have to be extended
to grab some command line switches here.  Is there are defined way for a
perl extension to get command line parameters?

Furthermore, some properties (e.g., WM_CLIENT_LEADER) seem to be
required for session management to work (currently, urxvt is currently
completely ignored by session managers, xsm, ksmserver, and also smproxy).

I hooked rxvt_session_init() into rxvt_term::create_windows(), closely
after the creation of the top XWindow.  Is this a good place?

I don't know yet, where to hook rxvt_session_exit into.  Any suggestions?

I'd appreciate suggestions for the plan and especially feedback
regarding X-protocol specifics.

Cheers,
Martin

_______________________________________________
rxvt-unicode mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/rxvt-unicode

Reply via email to