ラット薬の最小化後のGUIウィンドウの復元

ラット薬の最小化後のGUIウィンドウの復元

私は走っていますratpoisonemacsキーバインディングを介して実行中です(したがってxtermはありません)。その後、誤ってCtrl-Zを押し、emacsが消えました(emacs iconify-or-deiconify-frame)。私はネズミを離れてmwm emacsに行ったとき、それが再び前景に戻ったので、それがまだそこにあることを知っています。しかし、xtermを起動して%emacsbashを実行するとbash: fg: %emacs: no such job

ネズミからemacsアイコンをキャンセルする方法は?

  1. Gnomeにも同様の問題があります。
  2. エラーレポート

(この記事はたくさん修正されました)

答え1

サブシェル#1のプロセスをバックグラウンドにしてサブシェル#2のフォアグラウンドに戻すことはできません(次のような追加ツールを使用しない場合)。レプテル)。


あなたの場合は、端末で実行していないし、Ctrl+Z端末にない場合は動作が異なります。私の考えでは、あなたがCtrl+Z別の「魔法」を行っていると思います。ネズミの主キーバインディングリストにもありません。おそらく、Ctrl+Z設定にどのような制限があるかを調べる必要があります。

編集する
~からEmacs マニュアル:

Czは、EmacsがXサーバーと直接通信し、独自のプライベートXウィンドウを作成するときに異なる意味を持ちます。独自のXウィンドウを使用するアプリケーションを停止するには意味がなく、役に立ちません。代わりに、Czは選択したEmacsフレームを一時的にアイコン化(または「最小化」)するiconify-or-deiconify-frameコマンドを実行します(P.フレームとX Windowsのセクションを参照)。その後、ウィンドウマネージャを使用してシェルウィンドウに戻ることができます。

Alt+Tab開いているアプリケーションからemacsにアクセスできる必要があります。おそらく、ラットを使用して最小化されたフレームを回復するための別の方法があります。または、Alt-Tabラット薬に追加するには、以下を編集します.ratpoisonrc

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

そしてrpを再起動してください。

答え2

Ctrl+ZはEmacsコマンドです。ウィンドウの最小化(Emacsはウィンドウを「フレーム」と呼びます)。技術的には、これはターミナルウィンドウでコマンドを一時停止するためにCtrl+を使用することとは何の関係もありませんZ(しかし、Emacsデザイナーはタスクがやや似ているので、対応するショートカットを選択しました)。

通常、ウィンドウマネージャは最小化されたウィンドウのリストをどこかに表示します。もともと「どこか」はデスクトップのアイコンだったので最小化をアイコン化ともいいます。多くのウィンドウマネージャは、リストから選択するなど、最小化されたウィンドウを最小化解除する別の方法を提供します。

ウィンドウマネージャがこの機能を提供していない場合は、コマンドラインからこの機能を実行できます。最新バージョンwmctrlそうするために使用できますwmctrl -x -Y Emacs。最新バージョンxdotoolそうするために使用できますxdotool search --classname Emacs windowmap

Emacsサーバーを起動した場合は、Emacsの復元ウィンドウを使用できますemacsclient -c '(make-frame-visible)'

将来の予期しない状況を回避するには、ファイルに次の行を追加して~/.emacs最小化する前に確認メッセージを表示できます。

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

C-zバインディングは端末で役に立ちますので、オーバーライドしません。アイコンをRatpoisonに役立つ他のものに置き換えることもできます。また、emacsclient以下(server-start)を使用してコマンドを実行できるようにEmacsサーバーを起動します.emacs

答え3

GitリポジトリでRatPoisonのソースを見ています。デフォルトでは、ウィンドウがアイコン化されたというイベントを受け取ったら、ウィンドウを再インポートしてグローバルリストに入れます。とのunmap_notify機能を確認してください。events.cwithdraw_windowmanage.c

withdraw_windowウィンドウを一種のグローバルリストに入れます。list_move_tail(&win->node, &rp_unmapped_window);の行を参照してくださいwithdraw_window

rp_unmapped_windowおそらく、新しいタスクを復号化し、特定のキーバインディングに割り当て、そのリストからウィンドウを表示し、XLIb呼び出しを実行してアイコン化を解除して再度有効にすることはそれほど難しくありません。 (ランダム選択のためにアイコン化されたウィンドウのリストをレンダリングするなど、素晴らしい作業を行う必要はありません。)

答え4

基本的なネズミのキーバインディング:

Ctrl++ウィンドウを非表示t Ctrlにします。Enterratpoison

Emacs Guiunderは+ratpoisonの後ろにも隠されています。Ctrlz

Ctrl+t Enter隠しウィンドウを復元します。

関連情報