Terminal.appのウィンドウグループが壊れたので修正する

ターミナル.appのウィンドウグループのロードがおかしくなったので修正した時のメモ。

ターミナル.appのバージョンは、2.8.3

ウィンドウグループの概要

macOSのターミナルには、メニュー > ウィンドウのところに、ウィンドウグループを開くウィンドウをグループとして保存…がある。

グループとして保存すると、ウィンドウグループを開くから、保存したグループを開くことができる。

このグループというのは、保存時に開いていた全てのウィンドウと、各々のウィンドウの全てのタブのこと。

特定の環境を1,2秒で開くことができるので、便利である。

保存したグループがおかしい

ある時、新しく保存したグループを開こうとすると、保存時には開いていなかった空のウィンドウまで開いていることがあった。しかも、5,6枚も。

グループを開くたびに空のウィンドウが開くので、閉じるのが面倒で仕方ない。修正することにした。 以下のようになってしまう。

ウィンドウグループのバグの例

バグの例

ダメだった修正方法

単純に、空のウィンドウを閉じたあと、保存したいタブ・ウィンドウだけにしてから、再度グループとして保存する。という方法。

結果は変わらず空のウィンドウが開いてしまっていた。

有効な修正方法

ウィンドウグループの設定をエクスポートし、テキストエディタで修正してから、ターミナル.appにインポートし直す。という方法。

設定をエクスポート

  1. ターミナル.appメニュー > 環境設定を開く。
  2. ウィンドウグループタブを開く。
  3. 左下の歯車メニューから書き出す…を選択。適当な場所に書き出す。

ウィンドウグループの設定画面

書き出したファイルの構造

適当なテキストエディタで開くとすぐわかる。(自分の場合は、mi.appを使った。)

マークアップ言語で設定が書いてある(plist)。関係ありそうなところだけ抜粋。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>WindowList</key>
    <array>  
        <dict>
            <!-- 内容に意味はない気がするウィンドウX -->
            <key>Origin</key>
            <string>{78, 643}</string>
            <key>ScrollerStyle</key>
            <integer>0</integer>
            <key>ShowsTabBar</key>
            <false/>
            <key>ShowsTabBarInFullScreen</key>
            <false/>
            <key>Window Settings</key>
            <array/>
            <key>WindowNumber</key>
            <integer>1</integer>
            <!-- 1行上のWindowNumberが10桁以上あるものもあった。 -->
        </dict>
        <!-- 上のようなウィンドウ情報が28個ほど続く -->
        <dict>
            <!-- 本来意図したウィンドウ -->
            <key>Origin</key>
            <string>{181, 678}</string>
            <key>ScrollerStyle</key>
            <integer>1</integer>
            <key>ShowsTabBar</key>
            <false/>
            <key>ShowsTabBarInFullScreen</key>
            <false/>
            <key>Window Settings</key>
            <array>
                <dict>
                    <!-- ウィンドウ設定やタブの情報など -->
                </dict>
            </array>
            <key>WindowNumber</key>
            <integer>1</integer>
        </dict>
        <dict>
            <!-- 本来意図したウィンドウ2 -->
            <key>Origin</key>
            <string>{296, 761}</string>
            <key>ScrollerStyle</key>
            <integer>1</integer>
            <key>ShowsTabBar</key>
            <false/>
            <key>ShowsTabBarInFullScreen</key>
            <false/>
            <key>Window Settings</key>
            <array>
                <dict>
                    <!-- ウィンドウ設定やタブ情報など -->
                </dict>
            </array>
            <key>WindowNumber</key>
            <integer>2</integer>
        </dict>
        <dict>
            <!-- 本来意図したウィンドウ3 -->
            <key>Origin</key>
            <string>{82, 831}</string>
            <key>ScrollerStyle</key>
            <integer>1</integer>
            <key>ShowsTabBar</key>
            <false/>
            <key>ShowsTabBarInFullScreen</key>
            <false/>
            <key>Window Settings</key>
            <array>
                <!-- ウィンドウ設定やタブ情報など -->
            </array>
            <key>WindowNumber</key>
            <integer>3</integer>
        </dict>
    </array>
    <key>name</key>
    <string>テスト用</string>
    <key>type</key>
    <string>Window Group</string>
</dict>
</plist>

書き出したファイルを編集

上記のウィンドウX群の行を全て削除して保存すればOK。

エクスポートした時の設定画面で、読み込む…から設定を新しく保存すればいい。同名のグループがあるときは、末尾に1などが付加される。

原因

テスト用のウィンドウグループを作って実験していたら、原因がわかった。

再現手順

  1. ウィンドウグループAを保存する。
  2. 設定から保存したグループAを削除する。
  3. 名前が同一の新しいウィンドウグループAを保存する。
  4. 新しく保存したグループAを開く。
  5. ウィンドウがいっぱい開く。

削除した以前のものと同一名の設定を保存すると、おかしくなるようだ。

上の修正手順でも、古いのを削除してから、インポートしたら、再びおかしくなるかもしれない。(未確認)

また、他の要因もあるかもしれない。

新しいバージョンでは起こらないかも

自分が使っているターミナル.appは古いバージョンであるという自覚はあるので、新しいバージョンなら起こらないんじゃないかと思う。

以前にも、削除したのと同名のものを作成するとおかしくなる、という挙動は見たことがある。しかし、どこで見たか記憶が怪しい。Finderだった気もする。

設定やファイルの名前は被らないようにするのがいいのかもしれない。

以上です。

タイトルとURLをコピーしました