Jonas Helgi Palsson wrote:
> Hi
>
> On Tuesday 08 January 2008 19:45:05 Wendell Nichols wrote:
>> Kate drives me nuts. Its a good editor but every time you right click
>> to edit a file in konqueror using kate it starts a new window. If I use
>> a command window and specify --use it will "reuse" an existing window if
>> one is started for the session I specify. However because kdeinit
>> starts it I cannot pass a parm through konqueror.
>> So I get 30 kate windows on my desktop when all I want is one. Ideally
>> I'd like kate to open the file I've chosen in the instance of kate which
>> is already open ON THAT DESKTOP.
>>
>> Has anyone figured this out?
>> Sorry if this is an inappropriate forum... well not all that sorry....
>> wcn
>
>
> Now the simple answer is (of course) DCOP!
>
> But how to make it work was not so easy :-)
>
> What you need to do is
> 1. Keep track of which virtual desktop you are on
> 2. Keep track of which Kate process is on which virtual desktop
> 3. Use DCOP to instruct (the correct) Kate to open the selected file.
>
>
> Here is a way to do it (with some quick'n'ugly scripts):
>
> First make a directory to keep some tempfiles
>
> mkdir ~/.kate_pid
>
> then we make 2 bash scripts, put them in your ~/bin/ or where ever you fancy.
>
> 1: start_kate.sh
> --------------------<cut here>---------------------------
> #!/bin/bash
> # Get current virtual desktop
> VIRT_DESKTOP=$(dcop kwin KWinInterface currentDesktop)
> #Now we start kate with all the arguments that we recived
> kate $@&
> echo -n $! > ~/.kate_pid/kate_pid.$VIRT_DESKTOP
> exit 0;
> --------------------<cut here>---------------------------
> 2: kate_open_file.sh
> --------------------<cut here>---------------------------
> #!/bin/bash
> # The encoding used, utf8 is the usual one
> ENCODING=utf8
> # We need to find out which virtual destop we are on
> VIRT_DESKTOP=$(dcop kwin KWinInterface currentDesktop)
> # We need to see if there is a pid file for that desktop
> if [ -f ~/.kate_pid/kate_pid.$VIRT_DESKTOP ] ; then
> #Yes there was, now we need to check if the kate process
> #belonging to that pid is still alive
> #First find the pid
> KATE_PID=$(cat ~/.kate_pid/kate_pid.$VIRT_DESKTOP)
> if [ $(dcop kate-$KATE_PID >/dev/null 2>&1; echo $?) -gt 0 ] ; then
> #No it is not, so we start it
> kate $@&
> # and record the pid for reuse
> echo -n $! > ~/.kate_pid/kate_pid.$VIRT_DESKTOP
> else
> # now some DCOP magic
> dcop kate-$KATE_PID KateApplication openURL $1 $ENCODING
> fi
> else
> #there was no kate_pid file so we start kate.
> kate $@&
> # and record the pid for reuse
> echo -n $! > ~/.kate_pid/kate_pid.$VIRT_DESKTOP
> fi
> --------------------<cut here>---------------------------
>
> Use the start_kate.sh wrapper to start Kate on a virtual desktop. (Not really
> needed)
>
> Then make a new action in Konqueror to open files, and have it run:
> /the/path/to/the/script/kate_open_file.sh %U
>
> That should do it :-)
>
> Notice that there is no error checking at all in the scripts, so if you use
> it, please make it better and post the result :-)
>
> regards
> Jonas
It looks like the source of the problem was this change in the code:
Revision 499764 - (view) (download) (as text) (annotate) - [select for
diffs]
Modified Wed Jan 18 16:49:04 2006 UTC (23 months, 3 weeks ago) by alund
File length: 10186 byte(s)
Diff to previous 498190
* Kate will export the PID of the instance in the environment variable
KATE_PID. You can use that to do some initialization in your ~/.bashrc
file for example, if you like to open files in kate from the built in
terminal:
# If we are running in a konsole in kate,
# $KATE_PID is the pid of that kate application instance.
if [ -n $KATE_PID ] ; then
# open files in this instance
alias kate="kate -u -p $KATE_PID"
# allow creating a new instance
alias kate_newinst="`which kate`"
fi
The discussion continues and recognizes the difficulty in getting the
old behavior back.
Revision 495447 - (view) (download) (as text) (annotate) - [select for
diffs]
Modified Sun Jan 8 09:02:09 2006 UTC (2 years ago) by alund
File length: 9921 byte(s)
Diff to previous 465343
Always follow the configuration option for chosing a session when none
is specified.
I commit this, since I can't see how else we can enable old style
behavior easily. The 'new' behavior can be achieved by keeping the
default configuration of starting a new session.
BUG: 119620
--
David C. Rankin, J.D., P.E.
Rankin Law Firm, PLLC
510 Ochiltree Street
Nacogdoches, Texas 75961
Telephone: (936) 715-9333
Facsimile: (936) 715-9339
www.rankinlawfirm.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]