2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CygwinのEmacsをタスクバーからいい感じに起動

Last updated at Posted at 2017-12-26

課題

WindowsでEmacsを動かす方法はいくつかありますが、Cygwinを使っている場合は親和性の観点から、CygwinのEmacsが使いたくなります。しかし、emacs-w32.exeはコンソールプログラム(コンソールアプリケーション)として作成されているので、単純にタスクバーにピン留めしてこれをクリックして起動すると、真っ黒のコンソールウィンドウが余分に表示され、いい感じじゃありません。

コンソールウィンドウの隠蔽

Cygwinはベースシステムにrun.exeというコマンドが用意されており、これに目的のプログラムを与えると、コンソールウィンドウを隠蔽してくれます。emacs-w32.exeのコンソールウィンドウを隠蔽するには、run.exeのショートカットを作成して適当な名前(run-emacsとか)に変え、プロパティの「リンク先」としてEmacsのコマンド名emacs-w32を引数として付け、C:\cygwin64\bin\run.exe emacs-w32のようにしておきます。あと、アイコンをemacs-w32.exeのものに変更し、作業フォルダをC:\cygwin64\home\%USERNAME%などとしておくとよいでしょう。

これをタスクバーにピン留めしておくと、起動しても、コンソールウィンドウが一瞬現れますが、すぐ消えるので、まあいい感じとしておきましょう。

ところがタスクバーをよく見ると、Emacsのアイコンがもう一つ表示されてしまいます。これはいい感じじゃありません。

タスクバーのグループ化制御

Windows 7以降では、プログラムはアプリケーションID(AppId)でグループ化されてタスクバーに表示されます。ところが、ショートカットにはデフォルトではAppIdが設定されていないため、起動されたプログラムそのものは別のグループとして扱われてしまうのです。

プログラムのAppIdは、7+ Taskbar Tweakerにより調べることができます。これをインストール・起動すると、ウィンドウ右下にある「Taskbar Inspector」ボタンにより、現在のタスクバーの各AppIdが表示されます。これによると、CygwinのEmacsのAppIDはGNU.Emacsです(GNU純正のMinGW32バイナリも同様のようです)。

次に、ショートカットのAppIdを設定するには、Win7AppIdが利用できます。Win7AppId1.1.exeをダウンロードして適当な場所に置き、次のように実行すると、それまでのAppIdが表示され、新しいAppIdが設定されます。(引数の先頭の/はスイッチとして扱われるので、Cygwinからはショートカットを絶対パスで指定でできないので注意)

$ Win7AppId1.1 run-emacs.lnk GNU.Emacs

完成

以上の作業の後、いったんタスクバーのピン留めをはずし、再度run-emacsをピン留めします。以降は、これをクリックすると、コンソールウィンドウは出ず、タスクバーのグループ化もうまくいき、いい感じです。

もちろん他のGUI付きコンソールアプリケーションにも応用できます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?