らくがきちょう

なんとなく

Windows10 に Poderosa4 をインストールし、コマンドコピーの順序を変更する

ターミナルエミュレータPoderosa はバージョン 4 まではオープンソースでしたが、バージョン 5 以降は有償ソフトウェアになってしまいました。 試用期間もあるのですが、「インターネットから遮断された状態ではターミナルの接続ができない」という制限があり、使い勝手がよくありません。 バージョン 4 であれば現在も GitHub 上でオープンソースとして開発が継続されている為、今回は Poderosa4 を Windows 10 にインストールします。

.zip ファイルのセキュリティ設定にチェックしてから展開する

GitHub のプロジェクトページから Relase ファイルを取得します。 今回は 4.4.5 をダウンロードしました。 但し、現在はバイナリではリリースされていないのか、ソースコードしか見当たらなかった為、ダウンロードした .zip を展開し、.sln から Visual Studio を起動して Release Build 設定にしてビルドしました。 これで bin/release/poderosa.exe が生成されますが、そのまま実行すると以下のようにブロックされ、実行出来ません。

f:id:sig9:20190824142755p:plain:w400

poderosa.exe のプロパティから保護の解除を実施して再実行しても、更に以下のような警告が表示されました。

f:id:sig9:20190824142805p:plain:w400

これを避ける為に、GitHub のプロジェクトページからダウンロードした .zip ファイルを展開する 前に、.zip ファイルのプロパティを開き、以下画面の一番下にある「セキュリティ」にチェックを入れて OK をクリックします。 これで poderosa.exe をエラー無く、実行出来るようになりました。

f:id:sig9:20190824142813p:plain:w400

TerminalEmulator プロジェクトの CommandResultPopup.cs の 256 行目あたりを以下のように変更します。

コマンドポップアップの順序を変更する

Poderosa コマンド実行時に Enter の代わりに Ctrl + , (コントロール + カンマ)を押すことで、コマンドの実行結果をクリップボードへコピーしたり、別ウインドウでポップアップさせることが出来ます。 但し、標準状態では Ctrl + , した際の候補順序が以下のようになっています。

  1. コマンド実行結果をポップアップする
  2. コマンド実行結果をコピーする

私の場合は「2. コマンド実行結果をコピーする」の利用頻度の方が圧倒的に高いので、この順序を逆にします。 Visual Studio から TerminalEmulator プロジェクトの CommandResultPopup.cs の、下記部分を探します。 今回の v4.4.5 だと 256 行目にありました。 これを以下のように変更し、Poderosa をビルドし直します。

変更前

        //ExtP作成とデフォルトの登録
        public static void CreateExtensionPointAndDefaultCommands(IPluginManager pm) {
            IExtensionPoint pt = pm.CreateExtensionPoint(POPUP_MENU_EXTENSION_POINT, typeof(ICommandResultProcessorMenuItem), TerminalEmulatorPlugin.Instance);
            pt.RegisterExtension(new PopupCommandResult());
            pt.RegisterExtension(new CopyCommandResult());
        }

変更後

        //ExtP作成とデフォルトの登録
        public static void CreateExtensionPointAndDefaultCommands(IPluginManager pm) {
            IExtensionPoint pt = pm.CreateExtensionPoint(POPUP_MENU_EXTENSION_POINT, typeof(ICommandResultProcessorMenuItem), TerminalEmulatorPlugin.Instance);
            pt.RegisterExtension(new CopyCommandResult());
            pt.RegisterExtension(new PopupCommandResult());
        }

これで Ctrl + , を実行した際の候補が以下のように「コピーが上」になります。

  1. コマンド実行結果をコピーする
  2. コマンド実行結果をポップアップする