出口に設定を動的にリロードするように強制する方法は?

出口に設定を動的にリロードするように強制する方法は?

私はターミネーターをターミナルエミュレータとして使用していますが、とても好きなので、1つだけやりたいのですが、どうすればいいのかわかりません。

そのため、右クリックして「環境設定」に進み、カラープロファイルとフォントを選択する方法を知っています。その後、設定が完了したら、デフォルト設定にアクセスしているイニシエータインスタンスに行った更新(色/フォントなど)が反映されます。これを行いたいのですが、設定ファイルを手動で編集し、アクティブな~/.config/terminator/configターミネータセッションで設定ファイルを再ロードしてから、エミュレータを再起動せずにその変更を反映するだけです。

これを行う方法はありますか? --実際のプログラムを閉じることなく、設定ファイルからそれ自身を再ロードするように指示するコマンドの一種をターミネータに送信します。 GUIを介して設定を手動で編集すると、プロセスを再起動せずに変更が反映されるため、これが可能であると思います。

答え1

コマンドラインソリューションではありませんが、[基本設定]ダイアログボックスを開いて閉じて、ターミネータを終了せずにプロファイルを手動で再ロードできます。

答え2

ソースコードに移動して独自のソリューションを作成したい場合は、ターミネータがPythonで書かれているので、ソースコードに移動するのは簡単です。次を見つけました。

にはterminatorlibモジュールがありますterminal.py。クラスで次の2行を実行すると、目的のTerminal効果が得られます。

self.config.base.reload()
self.reconfigure()

たとえば、左マウスボタンイベントを処理するon_buttonpressクラス部分に次のようなものを含めることができます。Terminal

   if event.button == self.MOUSEBUTTON_LEFT:
            # Ctrl+leftclick on a URL should open it
            if self.config["link_single_click"] or event.get_state() & Gdk.ModifierType.CONTROL_MASK == Gdk.ModifierType.CONTROL_MASK:
                # Check new OSC-8 method first
                url = self.vte.hyperlink_check_event(event)
                dbg('url: %s' % url)
                if url:
                    self.open_url(url, prepare=False)
                else:
                    dbg('OSC-8 URL not detected dropping back to regex match')
                    url = self.vte.match_check_event(event)
                    if url[0]:
                        self.open_url(url, prepare=True)
                    else:
                        dbg("No regex match, discard event.")
            self.config.base.reload()  # <------ reload config file
            self.reconfigure()         # <------ refresh terminal profile

terminatorlib私のコンピュータでは、/usr/lib/python3.11/site-packages/terminatorlibもちろん実行しているものが見つかりますsudo find / -name terminatorlib

修正する:これを追加したようです。出身地ここ);したがって、ソースからビルドするか、次のリリースを待つかにかかわらず、コードを直接書く必要はありません。 :)

答え3

sudo apt-get install xdotool私はxdotool()のターミネーターを使ってウィンドウを設定することによって色スキームを変更するためのステップを実行するためにプログラム的にマウスを動かすために非常に盲目的で壊れやすいスクリプトを書いています。マウスを画面のx座標とy座標に移動します。これは試行錯誤によって純粋に見つかりました。座標が他のコンピュータでも同じかどうかはわかりません。 Ubuntu 20を使用しています。

#!/bin/bash

if [ "$1" != "light" ] && [ "$1" != "dark" ]; then
    echo "Need to pass \"light\" or \"dark\" as arg"
    exit 1
fi

xdotool mousemove 100 100
xdotool click 3
xdotool mousemove 140 350
xdotool click 1
xdotool mousemove 140 100
sleep 1
xdotool click 1
xdotool mousemove 420 140
xdotool click 1
xdotool mousemove 420 250
xdotool click 1


if [ "$1" = "light" ]; then
    xdotool mousemove 420 230
    xdotool click 1
else
    xdotool mousemove 420 280
    xdotool click 1
fi

xdotool mousemove 840 720
xdotool click 1

Seleniumなどのツールを使用してLinuxでこれを行う方法があります(特定のボタンの座標を見つけるために画面ピクセルを解析するためにOpenCVを使用するUbuntuの説明を見ているようです)。ボタンボタンを使用してボタンテキストを選択しましたが、今はこれが機能します。誰もがこの残念な問題に直面する場合に備えて共有してください。

関連情報