trinity-users@lists.pearsoncomputing.net

Message: previous - next
Month: March 2019

Re: [trinity-users] Re: [users] Re: [users] Making TDE aware of non-Trinity applications

From: "Dr. Nikolaus Klepp" <office@...>
Date: Thu, 21 Mar 2019 15:48:36 +0100
Anno domini 2019 Wed, 20 Mar 23:46:39 -0500
 J Leslie Turriff scripsit:
> On 2019-03-15 02:52:33 Dr. Nikolaus Klepp wrote:
> > Anno domini 2019 Thu, 14 Mar 22:40:38 -0500
> >
> >  J Leslie Turriff scripsit:
> > > On 2019-03-14 20:15:13 Michael wrote:
> > > > On Thursday 14 March 2019 06:26:16 pm J Leslie Turriff wrote:
> > > > > On 2019-03-11 04:12:29 Dr. Nikolaus Klepp wrote:
> > > > > > Anno domini 2019 Sun, 10 Mar 11:16:03 -0500
> > > >
> > > > .> >  J Leslie Turriff scripsit:
> > > > > > > On 2019-03-10 10:35:32 BorgLabs - Kate Draven wrote:
> > > > > > > > On Sunday 10 March 2019, J Leslie Turriff wrote:
> > > > > > > > >       Is there a way to make TDE aware of running non-Trinity
> > > > > > > > > applications so that they can be resurrected after
> > > > > > > > > Logout/Login? I have at least one X11-based application (X2 -
> > > > > > > > > The Programmer's Editor) that I use extensively, and it would
> > > > > > > > > be nice if it could remember across Logout/Login events.
> > > > > > > > >       I'm wondering if something like a DCOP wrapper might do
> > > > > > > > > the job?
> > > > > > > >
> > > > > > > > Load the application into your autostart dir.
> > > > > > > > /home/foo/.trinity/autostart
> > > > > > > > Also, check the program's setting to see if it has an autostart
> > > > > > > > feature.
> > > > > > >
> > > > > > >   Yes, that would work if I wanted it to start at every login,
> > > > > > > not just if it was running when I logged out...
> > > > > >
> > > > > > Once upon a time there was a little kingdom where all applications
> > > > > > held the X11 standards high and the grand master of session
> > > > > > management called
> > > > >
> > > > >       So I guess you're saying that there's no way to get TDE to
> > > > > notice my X2, then.
> > > >
> > > > You can use the autostart dir [1], but you'll need to do the work
> > > > yourself. You could add a wrapper to starting X2 and a script in the
> > > > autostart dir. Or better would be a check script in the shutdown dir
> > > > (if it exists) and a corresponding script in the autostart dir.
> > > >
> > > > Here's some out of context code from something else, hack-and-slash as
> > > > needed.
> > > >
> > > > #!/bin/bash
> > > > /path-to-X2/X2
> > > > Pid=`pgrep -f /path-to-X2/X2`
> > > > if [ "$Pid" != "" ] ; then
> > > > #  echo Already running...
> > > > #  ps "$Pid"
> > > >   touch /home/foo/.trinity/apps-to-restart/X2
> > > >   exit
> > > > fi
> > > >
> > > > In any event, what you want can be done, it just might be painful.
> > > >
> > > > Best,
> > > > Michael
> > > >
> > > > [1] Mine seems to be called:  /home/michael/.trinity/Autostart
> > >
> > > 	You're apparently misunderstanding what I'm looking for.  I don't want
> > > this program to Always start when I login, only when it was running at
> > > the time that I previously logged out.  That's why I wondered if some
> > > sort of DCOP wrapper might be appropriate.
> > >
> > > Leslie
> >
> > As your editor is not xsession-aware you have to wrap it some shell script,
> > that just saves the state of x2 in the form of commandline invocation in a
> > file when it's close due to TDE shutdown. So there is no invocation of X2
> > when no X2 was open when TDE closed the session. At TDE login you execute
> > that file with invocations and be happy. Sure, you have to manage some
> > stuff like which desktop to put it, window placement etc. but that's not
> > that complicated.
> >
> > Nik
> 
> 	Yes, but what to put in that wrapper?  That's what my original question was.

Ah, ok. I do not know X2, is it this one? http://www.tangbu.com/x2main.shtml
If yes, then there is one notable things about the application (but correct me if I'm wrong): The X11 application "xx" does not set the X11 window title to the filename of the file that's edited - which makes it an extremly hostile application and difficult to find the filename in a general solution. The terminal application "x" does neither, but you can get the filename from the current instance if you parse the escape-sequence (<ESC>[H, then some chatter and there comes the filename).

Anyway, the geometry of each window and the desktop where it runs on can be found like this:

for ID in $(xwininfo -all -root|awk '/"X2 Editor Version 2.08.1"/ {print $1}'); do
  echo $(xprop -id $ID|awk '/_NET_WM_DESKTOP/{print $3}') \
       $(xwininfo -id $ID|awk '/geometry/ {print $2}'| tr -c '[0-9]' ' ') \
       $(/do/some/black/magic/to/get/filename/from/X2)
done > /some/place/to/store

Example /some/place/to/store:
2 484 559 58 0 /tmp/a.txt
4 100 100 100 100 /tmp/b.txt

To restore each window you basicly do something like this - nota bene: if x2 were a nice application, you would not have to do this trickery to get it's window id:

cat /some/place/to/store | while read DESKTOP W H X Y FILE; do
  A=$(xwininfo -all -root|awk '/X2 Editor Version 2.08.1/ {print $1}')
  /path/to/xx $FILE &
  sleep 1
  B=$(xwininfo -all -root|awk '/X2 Editor Version 2.08.1/ {print $1}')
  ID=$(echo $A $B|tr ' ' '\n'|sort|uniq -u)
  xdotool set_desktop_for_window $ID $DESKTOP
  xdotool windowsize $ID $W $H
  xdotool windowmove $ID $X $Y
done

I hope that get's you started. As I do not know how you use X2 (xx or x ...), I cannot give you a hint how to obtain the filename of a window instance.

Nik

> 
> Leslie
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: trinity-users-unsubscribe@...
> For additional commands, e-mail: trinity-users-help@...
> Read list messages on the web archive: http://trinity-users.pearsoncomputing.net/
> Please remember not to top-post: http://trinity.pearsoncomputing.net/mailing_lists/#top-posting
> 
> 



-- 
Please do not email me anything that you are not comfortable also sharing with the NSA, CIA ...