- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

はじめに Edit

  • 要件: Windows 7の「タスクバーにこのプログラムを表示する」でタスクバーにピン止めするのを考慮して, cygwin用の端末minttyから ローカルのscreen を起動したい
    • ※ 従来だとbatファイル経由やシェルスクリプト経由でminttyとscreenを起動するのが楽ですけど, Windows 7の機能的なタスクバーの機能が使えるようになると便利ですね, という話です
    • 【募集中】batファイルや シェルスクリプトの方がより柔軟に細かい設定ができるので, 「タスクバーにこのプログラムを表示する」でバッチファイルを指定して動かす方法が知りたいです(AppIDを割り当てる?)

方法1 「タスクバーにこのプログラムを表示する」のショートカットのオプション引数に指定する Edit

まずは, minttyの起動オプションを指定し, bash (もしくは zsh)経由で screenを起動する方法を試してみます.

  1. まずは, minttyを起動して, タスクバーのminttyのアイコンを右クリック, 「タスクバーにこのプログラムを表示する」でタスクバーに固定します.
    2011-10-27_mintty_with_screen_01.jpg
  2. 次に, タスクバーのminttyのアイコンを右クリック → メニューが出たら, minttyのアイコンを右クリック → 「プロパティ」 で 「minttyのプロパティ」のウインドウが表示されるはず
    2011-10-27_mintty_with_screen_02.jpg

「ショートカット」タブの「リンク先」の項目が下記のようになっているはずなので,

C:\cygwin\bin\mintty.exe -
2011-10-27_mintty_with_screen_03.jpg

bash 経由で screen を起動するなら, 例えば下記のように置き換えます
(screenのオプションは個人的なオススメになってます. 詳細や,screenの挙動が気に入らない人については後述)

C:\cygwin\bin\mintty.exe /bin/bash --login -c "screen -U -x -RR"

もしzshをお使いなら, なら下記のように置き換えます

C:\cygwin\bin\mintty.exe /bin/zsh --login -c "screen -U -x -RR"

※注意点 screenのオプションについて** Edit

screenのオプションの詳細は screenのマニュアル を見てください

以下は上の方の項目で指定した簡易的なオプションの解説(違ってる所あるかも)

  • "-U" : screenで使う文字コードをUTF-8に指定
  • "-x" : dettachしてないセッションある場合、複数の端末で同じセッションが開ける↲
    • 【こんな時に便利】 mintty でscreenで作業し, 同じ起動オプションで mintty と screenをもう一つ開く(タスクバーをSHIFTキーを押しながらクリックするなどする )と, 同じscreenのセッションが開いてくれる. 突然, サブディスプレイにもう一つ同じscreen内の別バッファを置いて作業したくなったときなどに便利です
  • "-RR" : (忘れた. -r と -R との違いとは??) [TODO]: -RRの説明を後で書く

以下は, その他便利オプション

  • "-D": dettach後, 親プロセスからもログアウトする
    • 元のシェルやスクリプトから exec screen (他引数) のように, 起動するのと似てる気がする
    • 【こんな時に便利】死ぬとき [TODO]: ちゃんと書く

方法2: batchファイルやシェルスクリプト経由で screen を起動 Edit

もし、screenの起動時にちょっとした処理をしたくて、シェルスクリプト経由で起動したい場合があります。

例えば、下記のように書いたのを ~/bin/run_screen.zshのような名前でおいておいて、

#!/usr/bin/env zsh
# screenで再アタッチを用意にするためのスクリプト
# screen内ではないときscreenに移行する
function run_screen_not_in_screen () {
	# (STYが設定されてないとき)はログインしたらすぐにscreen起動
	# 簡易的なの: [ ${STY} ] || exec screen -U -D -RR
	if [[ -z ${STY} ]]; then
                # byobu があるなら byobuを優先的に起動する
		if [[ -n "$(whence byobu)" ]]; then
			screencmd="byobu"
		else
			screencmd="screen"
		fi
		exec ${screencmd} -U -x -RR
	fi
}

run_screen_not_in_screen

minttyのプロパティには、例えば下記のように設定して起動する感じでいいのではないかと思います。

c:\cygwin\bin\mintty.exe /bin/zsh --login -i -c "~/bin/screen_run.zsh"

No comment. Comments/Cygwin/minttyからscreenを起動する方法?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2011-12-27 Tue 10:30:37 JST (2848d)