I'm not 100% sure but I think SIGTERM is what (or one of the things
that) Gvim with GNOME relies upon to save your session in a hurry when
you log out of X11 (or shut down the whole system) with an open gvim;
so if you want to ignore SIGTERM (which IMHO is not a very good idea)
you "might" have to compile without GNOME.


Best regards,
Tony.

On Tue, Jun 28, 2016 at 12:25 AM, Jacky Liu <[email protected]> wrote:
> On Monday, June 27, 2016 at 6:40:07 PM UTC+8, Jacky Liu wrote:
>> I'm using gvim as the user interface for my own application largely written 
>> in python, and I'm firing up matplotlib windows through vim's python 
>> interface to do data visualization and graphical operation, here I have an 
>> issue: I'm using Ubuntu 14.04 with Unity as the desktop environment, and 
>> only by the first time triggering will Unity bring the new matplotlib window 
>> on top of my gvim window, after the first time, Unity will only give me a 
>> notice in the launching area, and I have to manually switch to the newly 
>> created matplotlib window.
>>
>> I'm using PyQT4 as the backend inside matplotlib, here is the demo code:
>>
>>       nnoremap        \t      :<C-u>py3 test_graphical_interface()<CR>
>>
>>       python3 << EOF
>>
>>       import matplotlib
>>       matplotlib.use("Qt4Agg", warn=True)
>>       import matplotlib.pyplot as pyplot
>>
>>       from PyQt4 import QtGui, QtCore
>>
>>       def test_graphical_interface():
>>
>>               fig= pyplot.figure( \
>>                       figsize= (3.0, 3.0), \
>>                       dpi= 300, \
>>                       facecolor= '#ffc0cb', \
>>                       edgecolor= '#ffc0cb', \
>>                       linewidth= 1.0
>>               )
>>               ax= fig.add_axes((0.1, 0.1, 0.8, 0.8), axis_bgcolor='black')
>>
>>               manager= pyplot.get_current_fig_manager()
>>               manager.window.setWindowTitle('GIF testing')
>>
>>               manager.window.showMaximized()  # XXX: show up the graphical 
>> window
>>
>>       EOF
>>
>>
>>
>> The following code I found online was also tried, yet it has no effect.
>>
>>       manager.window.setWindowState(
>>               manager.window.windowState() & \
>>               ~QtCore.Qt.WindowMinimized | \
>>               QtCore.Qt.WindowActive
>>       )
>>
>>       manager.window.setWindowFlags(
>>               manager.window.windowFlags() & \
>>               QtCore.Qt.WindowStaysOnTopHint
>>
>>       )
>>
>>       manager.window.setWindowFlags(
>>               manager.window.windowFlags() & \
>>               ~QtCore.Qt.WindowStaysOnTopHint
>>       )
>>
>>       manager.window.raise_()
>>       manager.window.activateWindow()
>>
>>
>>
>> I realized this issue was in line with Unity's behaviour, like when you open 
>> up multiple image files with eog the viewer, only the first time opening 
>> will bring up the eog window, later opening up will only gives you notice in 
>> the launching area and Unity will not bring up new windows (having the new 
>> windows minimized and hidden below).
>>
>> After some try I realized two consecutive calls of window.show() will always 
>> bring up the window to the front as desired:
>>
>>       manager.window.showNormal()
>>       manager.window.showMaximized()
>>
>> but a new problem occurred, when the matplotlib window is closed, gvim 
>> window will be closed as well, it looks like each call of the show() 
>> function will be registered, such that corresponding numbers of TERM signal 
>> will be generated later, first signal kills the graphical window, the second 
>> kills gvim.
>>
>> There are 3 options I can think of trying to solve the issue:
>>
>>       1. try to make gvim ignore the TERM signal, such that it can only be 
>> quitted by commands like :qall
>>       2. try to alter the behaviour of Unity into always bringing up the new 
>> app windows to the top
>>       3. keep trying within the Qt frame, like more methods of the 
>> manager.window object to see if a solution can be found
>>
>> Can someone enlighten me as to which option I should try with the most 
>> likelihood of success? Thanks.
>
>
>
> OK, I found a not so elegant solution:
>
>         evalstr= "feedkeys(':py3 subprocess.Popen([''wmctrl'', ''-a'', ''" 
> +"GIF testing"+ "''], shell=False)' . " + '"\<CR>")'
>         vim.eval(evalstr)
>
>
> When in doubt, feedkeys.
>
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups 
> "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to