Keybindings padrão de ratpoison:
Ctrl + t Ctrl + Enter oculta uma janela emratpoison
.
Emacs Gui
sob ratpoison
também está oculto após Ctrl + z .
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?
(este post foi muito editada)
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.
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
.
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.)