側邊欄釘在邊上、不跟著重排:kitty 0.50 加入停靠視窗
版本 0.50
摘要
kitty 0.50 讓側邊欄與狀態列脫離平鋪計算,改釘在視窗或分頁邊緣,寬度不受重排擠壓;登出後連回捲內容一起還原,分頁能具名收送視窗,Wayland 上也補上觸控。
推薦- 軟體名稱
- kitty
- 版本
- 0.50
- 收費
- 免費
- 開源
- 開源
- 作業系統
- LinuxmacOS
- 更新時間
- 2026-11-10 23:00
kitty 是 Kovid Goyal 維護的終端機工具,靠 OpenGL 畫字,執行在 Linux、macOS 與部分 BSD 發行版上,授權是 GPL-3.0。它的習慣是不假手他人:分割視窗、分頁、工作階段檔案、自訂的圖片協定,還有能被腳本叫動的遠端控制,全部在終端機內部解決。2026 年 11 月 3 日,版本推進到 0.50。
把欄位從格線裡拿出來
想在終端機裡湊出一個順手的開發畫面,側邊欄與狀態列幾乎是必需品。以往的解法是再切一格:目錄樹、日誌、跑測試的小視窗全塞進同一套平鋪格子。問題在於格子是整體重算的,主區域一變寬,貼在邊上的欄位就被壓成幾個字寬。
0.50 的停靠視窗換了路徑。停靠視窗落在平鋪區域之外,只貼著宿主視窗或整個分頁的某一條邊,平鋪計算不會把它算進去。開視窗層級的停靠用 launch --type=window-dock,分頁層級用 launch --type=tab-dock;--dock-edge 指定貼哪一邊,--dock-size 決定它佔多少寬度。
兩者的存續方式不同。視窗層級的停靠跟著宿主跑,宿主換到別的分頁它一起搬,宿主關掉它就結束;分頁層級的停靠會撐到該分頁最後一個常規視窗關閉為止。停靠關係也能寫進工作階段檔案,下次開工作階段,欄位仍回到本來那一邊。
這一條真正換掉的,是側邊欄不再算一個格子。格子是從你正在讀的東西那裡割走的空間,停靠則是固定家具:工作區怎麼縮放,它的寬度都留著。終端機有很多視窗,跟終端機有一套版面,差別就在這裡。

登出之後還接得上
新開關 restore_session_after_logout 負責這件事。開啟之後,登出、重開機或關機時,kitty 會把每個實例的 OS 視窗、分頁、視窗連同回捲內容一併存下,下次啟動原樣鋪回。macOS 上存的狀態用鑰匙圈裡的密鑰加密;Linux 上要靠桌面入口的 Inhibit 介面,才搶得到系統收攤之前的時間把狀態寫完。
工作階段檔案的欄位也擴了。os_window_position 記下作業系統視窗的位置,save_as_session --os-window-geometry 把尺寸、位置與狀態一起存。以前能還原的是視窗內部的排法,現在連視窗擺在哪一顆螢幕上都能放回去。
分頁往工作區靠了一步
這次開了三處小口子。launch --focus-existing 直接切到已經存在的視窗或分頁,不再多開一份;launch --location by-title 讓分頁按標題字母序排;detach-window 指令與 detach_window 動作可以把視窗投送到某個具名分頁,那個分頁不存在就順手開出來。三者合起來,分頁從「多開幾個 shell」變成可以按專案命名、讓視窗來回搬運的格子。
它沒有因此變成文書工作區,kitty 也沒打算假裝。這些零件的用途是讓腳本去排版:開好專案分頁、把日誌視窗推進那個分頁、把焦點放到已經在跑的東西上。遠端控制本來就是為了自動化,這三個旗標只是讓它少幾個推託的理由。

分頁列上看得出程式在忙什麼
Program Status Protocol 走 OSC 7501 這條跳脫序列。程式自己上報處於 working、finished、failed 還是 blocked,只要 tab_title_template 裡取用 tab.program_status,狀態就出現在分頁列上。跑編譯或長工作時不必一格一格點開,掃一眼就知道哪個分頁卡在等輸入。
游標後面拖一串粒子
自訂著色器是 0.49 鋪的路,0.50 在上面加了三個游標軌跡:cursor-trail-railgun、cursor-trail-torpedo 與 cursor-trail-pixiedust。開啟之後游標一跳,身後散出一串粒子。著色器現在也能由按鍵觸發,負責的是新增的 shader_event 動作;著色器裡還可以定義 pointer_map(),把點擊與選取對到螢幕上實際畫出來的那個字,而不是位移後的座標。
圖片跟著配色一起變
圖形協定多了兩種索引色格式,像素值存的是終端機調色盤的索引,不是寫死的顏色。換配色方案時,圖裡的顏色跟著調色盤走,不必重新產生一張圖。

Wayland 上可以動手指了
Wayland 這條線補得比較密。0.50 加入觸控螢幕支援:輕點算點擊,手指移動帶慣性捲動,按住再拖可以選字。GNOME 這類合成器上的客戶端視窗裝飾改成仿原生樣式,跟著桌面的標題列字型、文字縮放、按鈕位置與點擊行為走。輸入法的候選視窗固定到預編輯文字的起點,打字時不再跟著跳。
零碎但每天會碰到
新選項 collapse_window_margins 讓相鄰視窗的外邊距合併而不是相加,邊框對齊之後間距總算均勻。mouse_map 現在能對應滾輪,上下左右四個方向各算一個按鈕,像按住 Ctrl 滾輪改字級這種對應可以直接寫進設定。方框線字元、游標與標題列邊框的粗細改成跟著字級縮放,把字放大時不至於細成一根線。
修掉的那些地方
0.50 堵了一個安全漏洞:構造過的請求可以偽裝成非同步請求的取消,藉此繞過遠端控制的密碼認證。遠端控制那批指令的解析也重寫了。action、send-key、set-colors、ls、run 以前會忽略選項、誤報成功或把非法輸入默默吞掉,現在照規矩報錯,單一沒有回應的對端也不會再堵住整條通道。記憶體安全上修了設定重載時的堆積緩衝區溢位、越界寫入與釋放後使用。
效能方面,GPU 的精靈快取長得慢了,input_delay 不為零時 CPU 佔用也更低。另外順手修了粗斜體圖示被無關字型畫掉、ssh kitten 複製目錄時掉權限、拖放把目錄搬進自己的子目錄,這幾項都會真的弄丟資料。
跑在哪種機器上
kitty 覆蓋 Linux、macOS 與部分 BSD,Windows 不在原生支援之列,要在 WSL2 裡跑 Linux 那一份。專案由 Kovid Goyal 一個人主導,更新節奏一向很密:0.49 是 9 月 21 日,0.50 隔了一個多月就到。
0.50 的意義不在那幾個著色器,而在停靠視窗把「排版」與「常駐欄位」拆成兩件事。終端機真要當工作區用,就得允許有些視窗不受重排擺布。至於登出後原樣還原,則是把這件事從一次工作階段,延伸到關機與開機之間。