Fedora 18から36にアップグレードした後、マウスをクリックすると、XTermシェル(readline)でカーソル位置が停止します。

Fedora 18から36にアップグレードした後、マウスをクリックすると、XTermシェル(readline)でカーソル位置が停止します。

次の制御シーケンスを使用して設定し、XTermのシェル(BASH)でコマンドラインをクリックします。カーソルをこの位置に移動します。。少なくとも私が持っていた古代のFedora 18ではそれがうまくいきました。 (私は非常に長いパイプラインを作成する傾向があるため、この機能は長年使用して完全に慣れてきたので、私にとっては素晴らしく重要です。)

「ターゲットクリック」機能を有効にするにはどうすればよいですか(通常はPS1BASH変数で):

\[\e[?2001;2002;2003;2004;2005;2006s\e[?2001;2002;2003h\]

そして、元の保存状態を復元します(通常PS0はシェルで実行されるコマンドに影響を与えないため)。

\[\e[?2001;2002;2003;2004;2005;2006r\]

実験に使用したエイリアスは次のとおりです。

alias tmouseon='printf -- '\''\e[2001;2002;2003;2004;2005;2006s\e[?2001;2002;2003h'\'''
alias tmouseoff='printf -- '\''\e[?2001;2002;2003;2004;2005;2006r'\'''

以下は私のXTerm設定です。一部はこの問題に関連している可能性がありますが、XTermのマニュアルによると、私の設定に問題を引き起こす可能性がある他のオプションやオプションが見つかりませんでした。また、xrdb -merge私のXを知らないことに注意してください。リソースファイルを使用.xinitrcしましたがxrdb、ディストリビューションのデフォルト設定が気に入らず、ディストリビューションへのフルアクセスを望んでいたため、何年も問題なく使用してきました。

! Init
XTerm.ptyInitialErase: true
XTerm.waitForMap:      true

! Buffers
XTerm.buffered:    true
XTerm.bufferedFPS: 100
XTerm.maxBufSize:  131072
XTerm.minBufSize:  8192

! TERMINAL

! Name
XTerm.VT100.termName: xterm-256color

! Session
XTerm.VT100.loginShell: true

! Features
XTerm.VT100.allowFontOps:   true
XTerm.VT100.allowMouseOps:  true
XTerm.VT100.allowTcapOps:   true
XTerm.VT100.allowTitleOps:  true
XTerm.VT100.allowWindowOps: true
XTerm.VT100.c132:           true

! Input
XTerm.VT100.backarrowKey:        true
XTerm.VT100.backarrowKeyIsErase: true

! Scrolling
XTerm.VT100.scrollBar:       false
XTerm.VT100.scrollTtyOutput: false
XTerm.VT100.allowScrollLock: true

! Screen buffer
XTerm.VT100.saveLines: 10000

! Alternate screen
XTerm.VT100.titeInhibit:  true
XTerm.VT100.tiXtraScroll: true

! Visual bell
XTerm.VT100.visualBell:      true
XTerm.VT100.visualBellLine:  true
XTerm.VT100.visualBellDelay: 150

! Pointer shape
XTerm.VT100.pointerShape: hand1

! Margin bell
XTerm.VT100.marginBell:  true
XTerm.VT100.nMarginBell: 8

! Cursor blinking
XTerm.VT100.cursorBlink:   true
XTerm.VT100.cursorOffTime: 250
XTerm.VT100.cursorOnTime:  750

! Selection
XTerm.VT100.charClass:          33:48,36-47:48,58-59:48,61:48,63-64:48,95:48,126:48
XTerm.VT100.highlightReverse:   false
XTerm.VT100.highlightSelection: true
XTerm.VT100.trimSelection:      true

(色設定を省略...)

非常に古い(知っていますが、かなり「スパルタ」環境にあり、通常のツールを使用したとき)、Fedora 18ワークステーションを最新のFedora 36にアップグレードした後、マウスの機能はXTerm Clickのカーソルが機能しなくなり、見つかりませんでした。問題の根本原因。 (一生懸命修正しようとしましたが、完全に失敗しました。)機能を復元したいと思います。誰でも助けることができますか?

誰も同じ問題がありますか?どうやって分析しますか?

私の考えでは可能TermInfoで問題が発生しましたが、もう詳しく調べる方法がわかりません。

ベストアンサー1

通常、他のディストリビューションに適用されるので、別の答えを残しておきます。この回答は、readline-buttonFedora 31で動作が停止した理由を説明しています。

rpmバージョン30をダウンロードしてローカルに解凍し、バイナリで「readline-button」を見つけましたxterm

rel=30; mkdir $rel; cd $rel
dnf download --disablerepo='*' --enablerepo=fedora --downloadonly \
 --releasever=$rel xterm
rpm2cpio xterm-*fc$rel.x86_64.rpm | cpio -cdimB
strings usr/bin/xterm | grep readline-button

Fedora 30バイナリにはまだ表示されますが、Fedora 31バイナリでは消えました。

ソースrpmをダウンロードして解凍しました。

dnf download --disablerepo='*' --enablerepo=fedora-source \
 --source --releasever=$rel xterm
HOME=$PWD rpm -i xterm-*fc$rel.src.rpm 
HOME=$PWD rpmbuild -bp --nodeps rpmbuild/SPECS/xterm.spec
(cd rpmbuild/BUILD/; ln -s xterm-* xterm)

ソースを比較するとさまざまなバリエーションが表示されますが、これは関連性があるようです。

$ diff -wub {30,31}/rpmbuild/BUILD/xterm/ptyx.h
@@ -830,12 +845,6 @@
-#if OPT_PASTE64 && !OPT_READLINE
-/* OPT_PASTE64 uses logic from OPT_READLINE */
-#undef  OPT_READLINE
-#define OPT_READLINE 1
-#endif

変更ログファイルには次のものがあります。

$ diff -wub {30,31}/rpmbuild/BUILD/xterm/xterm.log.html
+    <li>adjusted ifdef's so that the paste64 configure option does
+    not automatically enable the readline-mouse configure
+    option.</li>

タイトルの下パッチ #338 - 2018/12/09。 rpm仕様ファイルを比較すると、唯一の実際の違いは、xtermバージョン334からこの新しいパッチを含む346に移行されることです。

$ diff -wub {30,31}/rpmbuild/SPECS/xterm.spec
-Version: 334
+Version: 346

追加の手がかりは次のとおりです。

$ diff -wub {30,31}/rpmbuild/BUILD/xterm/INSTALL
   --enable-readline-mouse enable support for mouse in readline applications
-       Compile-in code to support experimental bracketed paste mode, i.e.,
+       Compile-in code to support predecessor to bracketed paste mode, i.e.,
        provide functions for setting/getting the selection data.  Essentially
        this puts xterm into a mode that sends special function-key strings to
        bracket the data.
-       (See --enable-paste64, which fits xterm's protocol better).
+       (The "paste64" feature, which fits xterm's protocol better, is
+       configured by default).

仕様ファイルは、--enable-readline-mouse構成に使用されたことがないことを示しています31/rpmbuild/SPECS/xterm.spec

%configure \
        --enable-meta-sends-esc \
        --disable-backarrow-key \
        --enable-256-color \
        --enable-exec-xterm \
        --enable-luit \
%{?with_trace: --enable-trace} \
        --enable-warnings \
        --enable-wide-chars \
        --with-app-defaults=%{x11_app_defaults_dir} \
        --with-icon-theme=hicolor \
        --with-icondir=%{_datadir}/icons \
        --with-utempter \
        --with-tty-group=tty \
        --disable-full-tgetent

このオプションがないとOPT_READLINEゼロと定義されるため、readline-buttonコードはコンパイルされません31/rpmbuild/BUILD/xterm-346/charproc.c。たとえば、次のようになります。

#if OPT_READLINE
    { "readline-button",        ReadLineButton },
#endif

結論として

Fedoraでは使用されません--enable-readline-mouse。バージョン30より前は--enable-paste64デフォルトで有効になっており、定義OPT_PASTE64に使用されていたため、これは重要ではありませんOPT_READLINE。バージョン 31 およびパッチ 338 ではこれ以上実行されないため、この機能は失われました。

解決策は--enable-readline-mouseFedora仕様ファイルに追加することです。

おすすめ記事