Recuperar janela GUI após minimizando em ratpoison

2

Estou correndo ratpoison . Eu estava a funcionar emacs iniciado através de uma combinação de teclas (por conseguinte, sem xterm). Então eu pressione Ctrl-Z por engano e emacs desapareceu (emacs iconify-or-deiconify-frame ). Eu sei que ele ainda está lá, como quando eu sair ratpoison e ir para emacs MWM volta para o primeiro plano. No entanto, iniciar um xterm e correndo %emacs do bash me diz bash: fg: %emacs: no such job .

Como pode emacs I de-iconify em ratpoison?

  1. problema semelhante dentro Gnome
  2. bugreport

(este post foi muito editada)

    
por dmvianna 12.06.2014 / 06:44

4 respostas

2

Keybindings padrão de ratpoison:

Ctrl + t Ctrl + Enter oculta uma janela em ratpoison .

Emacs Gui sob ratpoison também está oculto após Ctrl + z .

Ctrl + t Enter traz a janela oculta de volta.

    
por 17.06.2014 / 07:33
4

Fundo um processo no subnível # 1 e obtê-lo de volta ao primeiro plano no subnível # 2 não é possível a todos (se você não usar ferramentas extras como: reptyr ).

No seu caso você ainda não iniciá-lo do terminal e Ctrl+Z tem um comportamento diferente se você não está em um terminal. Eu acho que sua Ctrl+Z está fazendo algum outro "mágico", ratpoison-default-keybindings mesmo não liste. Talvez você deva descobrir a que Ctrl+Z está vinculado à sua configuração.

EDITAR
Do Manual do Emacs :

When Emacs communicates directly with an X server and creates its own dedicated X windows, C-z has a different meaning. Suspending an application that uses its own X windows is not meaningful or useful. Instead, C-z runs the command iconify-or-deiconify-frame, which temporarily iconifies (or "minimizes") the selected Emacs frame (see section P. Frames and X Windows). Then you can use the window manager to get back to a shell window.

Você deve ser capaz de Alt+Tab através de aplicativos abertos para o emacs. Talvez sob ratpoison haja outra maneira de recuperar quadros minimizados. Ou adicione Alt-Tab ao ratpoison, edite seu .ratpoisonrc :

definekey top M-Tab next
definekey top M-ISO_Left_Tab prev

e reinicie o rp.

    
por 12.06.2014 / 07:04
3

Ctrl + Z é o comando do Emacs para minimiza uma janela (o Emacs chama janelas de" frames "). É tecnicamente não relacionado ao uso de Ctrl + Z para suspender um comando em uma janela de terminal (mas o atalho foi escolhido pelos projetistas do Emacs porque são ações um tanto similares) .

Normalmente, os gerenciadores de janela exibem uma lista de janelas minimizadas em algum lugar. Originalmente, “em algum lugar” deveria ser um ícone na área de trabalho, e é por isso que a minimização também é chamada de iconificação. Muitos gerenciadores de janelas fornecem outra maneira de minimizar a janela minimizada, por exemplo, selecionando de uma lista.

Se o seu gerenciador de janelas não fornecer esse recurso, você poderá fazê-lo a partir da linha de comando. Versões muito recentes de wmctrl podem fazer isso com wmctrl -x -Y Emacs . Versões recentes de xdotool podem fazer isso com xdotool search --classname Emacs windowmap .

Se você iniciou um servidor Emacs, pode restaurar a janela do Emacs com emacsclient -c '(make-frame-visible)' .

Para evitar futuros contratempos, você pode adicionar as seguintes linhas ao seu ~/.emacs para obter um aviso de confirmação antes de minimizar:

(defadvice iconify-frame (around iconify-frame-confirm)
  (if (y-or-n-p "Really iconify this frame?")
    ad-do-it))

Eu não sobrescrevo a ligação C-z porque é útil em terminais. Você pode querer substituir a iconificação por algo mais útil com o Ratpoison. Também não se esqueça de iniciar um servidor Emacs para poder emitir comandos com emacsclient : coloque (server-start) no seu .emacs .

    
por 13.06.2014 / 04:04
2

Estou vendo a origem do RatPoison em seu repositório do git. Basicamente, quando ocorre um evento em que uma janela foi iconizada, ela é retirada e colocada em uma lista global. Procure na função unmap_notify em events.c e em withdraw_window in manage.c .

withdraw_window coloca a janela em algum tipo de lista global: veja a linha list_move_tail(&win->node, &rp_unmapped_window); in withdraw_window .

Talvez não seja difícil hackear uma nova ação, atribuída a alguma ligação de chave, para abrir uma janela dessa lista de rp_unmapped_window , e fazer as chamadas de XLib para desenfigurá-la, trazendo-a de volta à vida. (Sem fazer nada extravagante, como renderizar uma lista dessas janelas iconizadas para seleção aleatória.)

    
por 13.06.2014 / 02:01