ratpoison
を実行しています。キーバインディングを介して開始されたemacs
を実行していました(したがって、xtermはありません)。次に、誤ってCtrl-Zを押すと、emacsが消えました(emacs iconify-or-deiconify-frame
)。 ratpoisonを離れてmwmemacsに行くと、フォアグラウンドに戻ってくるので、まだそこにあることはわかっています。ただし、xtermを起動して%emacs
bashを実行すると、bash: fg: %emacs: no such job
がわかります。
Ratpoisonでemacsを非アイコン化するにはどうすればよいですか?
(この投稿は大幅に編集されました)
デフォルトのratpoisonキーバインディング:
Ctrl+tCtrl+Enterratpoison
のウィンドウを非表示にします。
ratpoison
の下のEmacs Gui
も後に非表示になります Ctrl+z。
Ctrl+tEnter 非表示のウィンドウを元に戻します。
サブシェル#1でプロセスをバックグラウンドにして、サブシェル#2でフォアグラウンドに戻すことはまったくできません(次のような追加のツールを使用しない場合: reptyr )。
あなたの場合、ターミナルから起動していなくても、ターミナルにいない場合はCtrl+Z
の動作が異なります。あなたのCtrl+Z
は他の「魔法」をやっていると思います、 ratpoison-default-keybindings それをリストしていません。セットアップでCtrl+Z
が何にバインドされているかを理解する必要があるかもしれません。
[〜#〜]編集[〜#〜]
From Emacs Manual :
EmacsがXサーバーと直接通信し、独自の専用Xウィンドウを作成する場合、C-zの意味は異なります。独自のXウィンドウを使用するアプリケーションを一時停止しても、意味がなく、役に立ちません。代わりに、C-zはコマンドiconify-or-deiconify-frameを実行します。これは、選択されたEmacsフレームを一時的にアイコン化(または「最小化」)します(セクションP.フレームとXウィンドウを参照)。次に、ウィンドウマネージャーを使用して、シェルウィンドウに戻ることができます。
開いているアプリケーションを介してemacsにAlt+Tab
できるはずです。たぶん、ratpoisonの下で、最小化されたフレームを取り戻す別の方法があります。または、Alt-Tab
をratpoisonに追加し、.ratpoisonrc
を編集します。
definekey top M-Tab next
definekey top M-ISO_Left_Tab prev
rpを再起動します。
Ctrl+Zウィンドウを最小化する (Emacsはウィンドウを「フレーム」と呼びます)へのEmacsコマンドです。の使用とは技術的に無関係です Ctrl+Z ターミナルウィンドウでコマンドを一時停止します(ただし、ショートカットはEmacsの設計者によって選択されました。これは、アクションが多少似ているためです)。
通常、ウィンドウマネージャーは最小化されたウィンドウのリストをどこかに表示します。もともと、「どこか」はデスクトップ上のアイコンを意味していました。そのため、最小化はアイコン化とも呼ばれます。多くのウィンドウマネージャーは、リストから選択するなど、最小化されたウィンドウを最小化しない他の方法を提供します。
ウィンドウマネージャーがこの機能を提供していない場合は、コマンドラインから実行できます。 wmctrl
のごく最近のバージョンは、_wmctrl -x -Y Emacs
_でそれを行うことができます。 xdotool
の最近のバージョンは_xdotool search --classname Emacs windowmap
_でそれを行うことができます。
Emacsサーバーを起動した場合は、emacsclient -c '(make-frame-visible)'
を使用してEmacsウィンドウを復元できます。
将来の事故を避けるために、_~/.emacs
_に次の行を追加して、最小化する前に確認プロンプトを取得できます。
_(defadvice iconify-frame (around iconify-frame-confirm)
(if (y-or-n-p "Really iconify this frame?")
ad-do-it))
_
_C-z
_バインディングは端末で役立つため、オーバーライドしません。アイコン化をRatpoisonで役立つ他のものに置き換えることをお勧めします。また、必ずEmacsサーバーを起動して、emacsclient
でコマンドを発行できるようにしてください。_(server-start)
_を_.emacs
_に入れてください。
私はそのgitリポジトリでRatPoisonのソースを見ています。基本的に、ウィンドウがアイコン化されたというイベントを取得すると、ウィンドウを撤回してグローバルリストに追加します。 _unmap_notify
_の_events.c
_関数と_withdraw_window
_の_manage.c
_を見てください。
_withdraw_window
_は、ウィンドウをある種のグローバルリストに配置します。_withdraw_window
_の行list_move_tail(&win->node, &rp_unmapped_window);
を参照してください。
おそらく、キーバインディングに割り当てられた新しいアクションをハックして、この_rp_unmapped_window
_リストからウィンドウをポップし、XLib呼び出しを実行してアイコンを解除し、それによってウィンドウを復活させることは難しくありません。 (ランダムに選択するためにこれらのアイコン化されたウィンドウのリストをレンダリングするなど、特別なことは何もしません。)