Claude Media
Claude CodeをKonsoleで使うときのスクロール・コピー・再描画の不具合

Claude CodeをKonsoleで使うときのスクロール・コピー・再描画の不具合

KDE Konsoleで起きる3症状(Shift+PageUpが効かない・大きな選択のコピーが欠ける・折りたたみ後に再描画されない)の原因と回避策を切り分けます。

Claude CodeをKDE Konsoleで使うと、3つの別々の不具合が報告されています。Shift+PageUpでスクロールバックが動かない、大きな範囲を選んでコピーすると文字が欠ける、展開した出力を畳んでも画面が更新されない、の3つです。3つは別々のissueで報告されていて、どれもopenのままです。

先に切り分けの早見表を置きます。

症状起きる条件回避策
Shift+PageUpがスクロールにならない起きる条件v2.1.269以降・通常(非フルスクリーン)表示回避策Konsoleのkitty keyboard protocolをオフにする
大きな選択のコピーで文字が欠ける起きる条件特定プロジェクトの既存会話(v2.1.220)回避策範囲を分けてコピーする / ファイルに書き出させる
折りたたみ後に画面が更新されない起きる条件展開した出力を畳んだとき(v2.1.251)回避策マウスを動かして再描画させる

Shift+PageUpでKonsoleのスクロールバックが動かない

いちばん影響が大きいのがこの症状です。Claude Codeを起動したままShift+PageUpを押しても、Konsoleの履歴は遡れません。代わりに入力欄のカーソルが行頭へ、続けて押すと1行上へ動きます。プレーンなPageUpと同じ動きです。issueの題名はShift+PageUp/PageDownで、Shift+PageDownも同じ落ち方をします。

いつから起きたのか

issue #94151の報告者は、claude install <version>でバージョンを切り替えながら、既定のキー設定のまま二分探索しています。環境はArch Linux、Konsole 26.08.1、bashです。

あゆみ

Shift+PageUpの症状が出たバージョン

  1. v2.1.268正常

    報告者が2回確認。v2.1.240・252・261・266も正常でした。

  2. v2.1.269(9月11日)症状が出始める

    changelogに載った変更が引き金になっています(次節)。

  3. v2.1.270症状が続く

    issueが立てられたときのバージョンです。

  4. v2.1.283コメントで再現を報告

    「2.1.283でもまだ起きる」というコメントが付きました。

  5. v2.1.286回避策で解消した報告

    Konsole側でkitty protocolを切ったところ直ったとのコメントです。ただし、直したのが設定変更か版の更新かは、そのコメントでも切り分けられていません。

v2.1.270から289までのchangelogには、Shift+PageUpを扱う項目がありません。

何が起きているのか

v2.1.269のchangelogに、kitty keyboard protocolの問い合わせに答える端末への対応が載っています。footやAlacritty 0.16以降などで、Shift+EnterとCtrl+Shiftのショートカットが使えるようになりました。報告者によると、Konsoleもこの問い合わせに答えます。

Konsoleの挙動は、報告者が生のキー入力を読むと分かります。

状態Shift+PageUpでアプリへ届くもの
プロトコルなし(従来)Shift+PageUpでアプリへ届くもの何も届かない。Konsoleが自分のスクロールバックに使う
kitty protocolが有効Shift+PageUpでアプリへ届くものESC[5;2~。セミコロンの後ろの2がShift

つまりKonsole側は仕様どおりに動いています。Claude Codeの標準入力にも、straceで見ると6バイトのシーケンスがそのまま届いていました。

問題はその先です。Claude Code側でShift+PageUpに割り当てがないとき、プレーンなPageUpの処理へ落ちます。報告者によると、KonsoleのShift+PageUpはConfigure Shortcutsにも出てこない固定の動作で、端末側で取り戻す手段がありません。Claude Codeを終了すると、Shift+PageUpは普通に効きます。

nullで解除しても直らない

keybindingsの公式ページでは、アクションにnullを設定すると既定のショートカットを解除できます。報告者は次の設定を試しました。

{
  "context": "Global",
  "bindings": {
    "shift+pageup": null
  }
}

再起動しても、Shift+PageUpは行頭へのジャンプのままでした。nullを指定してもプレーンPageUpへの落下が止まらない、というのが報告の主張です。ここは公式の見解ではなく、報告者が手元で確かめた挙動です。

回避策1: Konsole側でkitty protocolを切る

いちばん確実なのは、原因の入口を塞ぐ方法です。同じissueのコメントで、別の利用者が次の手順を紹介しています。

手順

Konsoleのkitty keyboard protocolを切る

  1. 1

    プロファイルの詳細設定を開く

    設定から「現在のプロファイルを編集」へ進み、詳細設定のタブを開きます。

  2. 2

    チェックを外す

    「Kitty keyboard protocol」を外します。項目の説明は、端末プログラムにkitty keyboard protocolの利用を許可する、という内容です。

  3. 3

    新しいタブで起動し直す

    適用してから新しいタブを開き、claudeを起動します。既存のタブは古い設定を保持することがあります。

副作用として、Shift+Enterでの改行は当てにできなくなります。公式のターミナル設定ページでは、Shift+Enterが設定なしで使える端末の表にKonsoleがありません。改行にはCtrl+Jか、\に続けてEnterを使います。この2つは公式ページによると、どの端末でも設定なしで動きます。

回避策2: 具体的なアクションを割り当てる

もう1つの報告は、Shift+PageUpに具体的なアクションを割り当てる方法です。

{
  "context": "Global",
  "bindings": {
    "shift+pageup": "app:toggleTranscript"
  }
}

こうすると、Shift+PageUpでトランスクリプト画面が開き、プレーンPageUpの行移動は起きなくなります。設定は再起動なしで反映されたとのことです。

ただし、これでKonsoleのスクロールバックが戻るわけではありません。カーソルが勝手に動くのを止めるだけの副次的な効果で、報告者自身も、意図しない副次的な経路にすぎないと書いています。スクロールバックを使いたいなら、回避策1が向きます。

フルスクリーン表示でスクロールする手もある

/tui fullscreenで切り替えるフルスクリーン表示は、会話を端末のスクロールバックでなくアプリ内で描画します。スクロールはPgUp・PgDn・マウスホイールで行うので、端末側のShift+PageUpを当てにしなくて済みます。半画面ずつ動き、Ctrl+Homeで会話の先頭へ、Ctrl+Endで最新へ飛べます。

issueは通常表示で再現した報告で、フルスクリーン表示で症状が消えるかどうかには触れていません。フルスクリーン表示の性質はClaude CodeのTUI(フルスクリーン)の解説にまとめています。通常表示のままスクロールバックが消える場合は、スクロールバックが消える問題の対処が別に効きます。

大きな範囲をコピーすると文字が欠ける

2つ目は、コピーした文章の途中がまだらに抜ける症状です(issue #83503、v2.1.220、CachyOS・Wayland上のKonsole)。末尾で切れるのではなく、複数の行の途中の断片が消え、残った断片が直接つながります。

報告者の例では、「Fensterfläche. Das sind bei 60 Hz rund」が「Fens rund」になります。「Die Summe allein ist irreführend — in」も「Die Sumn」に縮みます。例はドイツ語の文面で、日本語など他の言語で起きるかはissueに書かれていません。報告者の入力した文も、Claudeの返答と同じように欠けています。

再現の条件が特殊

報告者の観察を整理すると、次のようになります。

  • 特定の既存プロジェクトの会話でだけ再現し、新しく作ったプロジェクトでは出ない
  • 大きな範囲を一度に選ぶと欠け、同じ内容を2回に分けてコピーすると正しく取れる
  • Claude Codeの再起動、Konsoleの再起動、PCの再起動でも直らない
  • Claude Codeが待機中で、何も動いていないときに選択してもコピーが欠ける
  • 同じ文面をMarkdownファイルに書き出させると欠けがなく、会話の中身自体は壊れていない

会話履歴の再構築、端末側のreflow、描画の問題、Konsoleの大きな選択の扱いなど、報告者は複数の可能性を挙げていますが、原因は特定されていません。他の環境での再現報告も、issueにはありません。

実用上の対処

原因が分からない以上、手元でできるのは欠けを避けることです。

  1. 範囲を小さく分けて、複数回に分けてコピーする
  2. 大事な文面は、Claude Codeにファイルへ書き出させ、そのファイルから取る
  3. 貼り付け先で、元の表示と見比べる

欠けた文章は前後が自然につながるため、見た目では気づきにくい点に注意が要ります。設計書や契約文面のように一字も欠けてはいけない文章では、3の見比べを省かないほうが安全です。コードブロックだけを取りたいときは/copyコマンドの使い方が使えます。日本語で文字化けする別症状は/copyの文字化けを参照してください。

折りたたんだあと画面が更新されない

3つ目は再描画の症状です(issue #90567、v2.1.251)。折りたたまれたツール出力をクリックで展開し、もう一度クリックして畳むと、画面が古いままになります。ほぼ空白で、最後の1〜2行だけが下に見える状態です。

マウスを端末の上で動かすと、その場で正しい表示に戻ります。キー入力は受け付けているので、プロセスが固まったのではなく、描画の更新が走らないだけに見えます。報告者によれば、プランモードでバックグラウンドエージェントが動いていて、出力が長いときに出やすいとのことです。エラー出力は何も出ません。

分かっていること・分からないこと

分かっているのは、v2.1.251のLinux環境で、マウスの移動が再描画のきっかけになる、という点までです。issueのタイトルはKonsoleを名指ししていますが、フォームの端末欄は「Other」で、環境はCachyOSのfishです。Konsole固有の問題なのか、他の端末でも起きるのかは切り分けられていません。退行かどうかも報告者は「分からない」と答えています。

回避策

changelogにはこの症状の修正項目がなく、issueもopenのままです。手元では次の順に試せます。

  1. マウスを端末の上で動かして再描画させる(報告者が確認した唯一の復帰手順)
  2. 展開・折りたたみの操作をやめ、Ctrl+Oのトランスクリプト画面で出力を読む
  3. クリックそのものを止めたいときは、CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1を試す

3はフルスクリーン表示でのマウス捕捉に関する環境変数で、ホイールのスクロールは残したままクリックとドラッグ、ホバーの処理だけを止めます。公式のフルスクリーンのページに載っており、v2.1.195で追加されました。このissueの症状がクリック操作を起点にしているため候補として挙げますが、症状が消えるという報告はありません。

CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 claude

3症状の関係と、Konsole側で見ておく設定

3つは別々のissueで、共通の原因は示されていません。共通するのは、どれもLinuxのKonsoleで報告され、issueがopenのまま残っている点だけです。

一方で、Konsoleに関する修正は別にあります。v2.1.269では、同期出力(synchronized output)の誤判定が直りました。Konsoleの一部のバージョンが未対応なのに、端末名だけで有効と見なしていた問題です。外部エディタから戻ったあと、画面が二重に描画される問題も同じ版で直っています。v2.1.121では、通常表示でCtrl+Lや再描画を行うとスクロールバックが重複する問題が直りました。対象はtmux、GNOME Terminal、Windows Terminal、Konsoleです。これらは今回の3症状とは別で、古い版を使っている場合はまず更新で片づく可能性があります。

症状が出たときの確認順

どの症状か分からないまま手当たり次第に試すと、原因が混ざります。次の順で切り分けると早く済みます。

手順

症状から原因を切り分ける

  1. 1

    バージョンを確認する

    claude --versionでバージョンを見ます。v2.1.269以降ならShift+PageUpの症状が候補になり、それより前なら別の原因を疑います。

  2. 2

    入力キーの症状なら

    Konsoleのプロファイルで、kitty keyboard protocolの設定を確認します。

  3. 3

    コピーの症状なら

    範囲を半分に分けて、欠けが再現するかを見ます。

  4. 4

    描画の症状なら

    マウスを動かして、表示が復帰するかを見ます。

Konsole以外の端末との違いも、判断の材料になります。公式のターミナル設定ページでは、footやAlacritty 0.16以降でShift+Enterが使えるのはv2.1.269以降とされています。gnome-terminalやJetBrains系IDEは「使えない」の行です。Konsoleはどの行にも載っていないので、Shift+Enterの扱いは端末側の設定次第です。

キーの割り当てを変えたい場合の書き方は、ショートカット一覧とkeybindings.jsonにあります。別の端末での描画トラブルとしては、Emacsのeatでちらつく問題が近い症状です。

まとめ

KonsoleでのClaude Codeは、Shift+PageUpの件だけ、原因の入口がkitty keyboard protocolだと分かっています。ここはKonsoleのプロファイルでプロトコルを切るのが現実的です。コピーの欠けと再描画の停止は原因が不明なので、症状が出たらバージョンと再現条件を控えておくと、issueの状態が変わったときに見直しやすくなります。

この記事を共有:XはてブLinkedIn