Skip to content

About

Lightweight tabbed browser for low-memory Windows/VDI. Rust + Slint UI on Edge WebView2; keeps only a few tabs live and freezes or discards the rest. Chrome Web Store extensions, Chrome/Edge/Firefox import, built-in MCP server for LLM control.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

20 Commits

Folders and files

Repository files navigation

LiteBrowser

給記憶體很少的 Windows(例如 VDI)用的輕量分頁瀏覽器。 介面用 Rust + Slint 寫,網頁引擎用系統內建的 Microsoft Edge WebView2。

省記憶體的方式是:同一時間只讓少數分頁真的活著,其他分頁凍結或釋放。

安裝與執行

  1. 下載 LiteBrowser-windows-x64.zip
    • 正式版:GitHub 的 Releases 頁面
    • 測試版:GitHub Actions → 最新一次 Build → 頁面最下方的 Artifacts
  2. 解壓縮,執行 LiteBrowser.exe(單一執行檔,不用安裝)
  3. 需要 Microsoft Edge WebView2 Runtime。Windows 11 內建;Windows 10 通常已隨 Edge 安裝。 如果開啟時出現找不到 WebView2 的訊息,請安裝:https://go.microsoft.com/fwlink/p/?LinkId=2124703

分頁的狀態

分頁標題左邊的網站圖示:

圖示 意思 記憶體
網站圖示 正在執行,或已凍結(背景超過 30 秒,外觀不變) 正常/較少
藍色轉圈 載入中 正常
淡掉的圖示+灰色標題 已釋放(背景超過 15 分鐘,或超過上限) 幾乎為 0,點回來會重新載入
  • 預設最多 2 個分頁保留網頁(含目前分頁),超過時最久沒用的分頁會被釋放。
  • 總記憶體超過上限(預設 500 MB)時,會再釋放最佔記憶體的背景分頁。
  • 最近看過的 2 個背景分頁在 5 分鐘內只凍結、不釋放,在幾個分頁之間切來切去不會一直重新載入。
  • 在分頁上按滑鼠右鍵 →「釘選」。釘選的分頁只會凍結、不會被釋放(適合信箱、ClickUp 這類想一直開著的頁面)。
  • 在網頁欄位打了字還沒送出就切到別的分頁,那個分頁也只凍結、不釋放(和 Chrome 一樣);送出或清空後恢復正常。
  • 正在播放聲音的分頁只凍結、不釋放,背景的音樂不會被切斷;把分頁靜音後就照常釋放。
  • 分頁上按右鍵 →「釋放分頁」可以立刻釋放它,選單上會顯示這個分頁目前用掉多少記憶體。
  • 中鍵點分頁=關閉。Ctrl+點連結(或中鍵點連結)會開成「已釋放」的背景分頁,點過去才載入,不佔記憶體。
  • 右下角狀態列顯示整個瀏覽器(含 WebView2 所有程序)實際用掉的記憶體。

注意:被釋放的分頁重新載入後,尚未送出的表單內容會不見。iframe 裡的編輯器(例如 Google 文件)偵測不到有沒有打字, 手動「釋放分頁」也不會檢查;正在輸入重要內容的分頁可以先釘選。

  • 關閉最後一個分頁會直接關閉瀏覽器(和 Chrome 一樣),而且下次啟動是空白分頁; 想保留分頁下次繼續,請用視窗右上角的 X 關閉。
  • 分頁上按右鍵會跳出選單:釘選、複製分頁、重新載入、靜音、釋放分頁、往左/往右移、關閉、關閉其他、關閉右側、重新開啟。
  • 釘選的分頁會縮小成只剩圖示,並固定排在最左邊。
  • 播放聲音的分頁在標題右邊顯示喇叭,點一下靜音/取消靜音(釘選的分頁是圖示換成喇叭,用右鍵選單靜音)。

快捷鍵

按鍵 功能
Ctrl+T / Ctrl+N 新分頁
Ctrl+W / Ctrl+F4 關閉分頁
Ctrl+Shift+T 重新開啟剛關閉的分頁
Ctrl+Shift+N 開新無痕分頁(不留 Cookie、歷史與快取)
Ctrl+Tab / Ctrl+Shift+Tab 下一個 / 上一個分頁
Ctrl+1 … Ctrl+8 / Ctrl+9 切到第 N 個 / 最後一個分頁
Ctrl+L / Alt+D / F6 網址列
Ctrl+D 加入 / 移除書籤
Ctrl+H 歷史紀錄
Ctrl+Shift+O 書籤
Ctrl+J 下載清單
F12 / Ctrl+Shift+I 開發人員工具(停駐在下方或右側)
F11 全螢幕(Esc 離開)
F5 / Ctrl+R 重新整理
Alt+← / Alt+→ 上一頁 / 下一頁
Ctrl+F 頁內搜尋(WebView2 內建)
Ctrl++ / Ctrl+- / Ctrl+0 縮放/恢復 100%(每個網站記住自己的比例)

功能

  • 介面比照 Chrome:分頁列在最上方,下面一排是 上一頁/下一頁/重新整理、網址列、擴充功能(拼圖)、 ⋮ 選單。⋮ 選單裡有新分頁、新無痕分頁、歷史紀錄、下載、書籤、顯示書籤列、重新開啟關閉的分頁、 全螢幕、開發人員工具、擴充功能、從其他瀏覽器匯入、設定、結束
  • 網址列:沒在編輯時省略 https://,左邊的圖示代表連線安全性(http:// 顯示「不安全」); 右邊的星號加入/移除書籤;按右鍵有 復原/剪下/複製/貼上/全選
  • 網址列建議:打的字符合已開著的分頁時,會出現「切換到這個分頁」,選了就切過去,不會再開一份(多一份就多一份記憶體)
  • 縮放:Ctrl++/-/滾輪調整的比例按網站記住,同網站的其他分頁一起套用,分頁被釋放後重新載入也一樣; 無痕分頁會套用,但不會記錄
  • 新分頁顯示常去的網站(還沒有歷史紀錄時顯示書籤),點中間的搜尋框就是網址列
  • 書籤、歷史紀錄、擴充功能、設定、匯入都是自己的分頁(同 Chrome 的 chrome:// 頁面),各只開一個, 再叫出來就切過去;從空白的新分頁叫出來時直接用那個分頁
  • 分頁可以拖曳換位置(釘選的分頁只在釘選區內移動),按下就切過去,和 Chrome 一樣
  • 深色模式:設定頁最上面的「外觀」。介面變成深色,有深色版面的網站也會跟著換
  • 分頁、書籤(含書籤列,顯示圖示與名稱;沒有名稱就只顯示圖示,可直接編輯名稱與網址;書籤列按右鍵有 開啟/在新分頁中開啟/編輯/刪除)、歷史紀錄、網址列建議(書籤+歷史+搜尋)、網站圖示(favicon, 匯入時也一併帶入原瀏覽器存的圖示)
  • 書籤資料夾:書籤列上的資料夾點一下展開選單(附網站圖示),子資料夾也能逐層展開;在書籤頁編輯 「資料夾」欄位即可歸檔,用 / 分層,留白=直接放在書籤列。從其他瀏覽器匯入時保留原本的資料夾, 「其他書籤」和 Chrome 一樣固定在書籤列最右邊;書籤列放不下的書籤收進右邊的 » 選單
  • 下載:使用 WebView2 內建的下載清單(Ctrl+J 或 ⋮ 選單 →「下載」)
  • 密碼與表單自動填入:WebView2 內建,第一次登入時會詢問是否儲存
  • 廣告/追蹤網域封鎖:內建一份小清單,可在 blocklist.txt 自行增加
  • 擴充功能:可直接貼 Chrome 線上應用程式商店網址安裝,也支援手動放解壓縮後的資料夾(見下方)
  • 無痕分頁:Ctrl+Shift+N、⋮ 選單或分頁右鍵選單。分頁顯示面具圖示;切到無痕分頁時整個介面 變成深色(同 Chrome 的無痕視窗),一眼就分得出來。關掉後不留 Cookie、 歷史紀錄、快取或網站圖示,也不會被記進下次要恢復的分頁
  • 關閉時記住分頁,下次開啟時恢復(恢復的分頁都是「已釋放」狀態,不佔記憶體)
  • 分頁直接貼在視窗最上方(沒有系統標題列):拖曳分頁列空白處可移動視窗,double-click 最大化, 右上角有最小化/最大化/關閉
  • 停駐式開發人員工具:F12 會在網頁下方或右側開啟(不再是另開視窗)。拖曳分隔線可調整大小; 在分隔線上按右鍵可切換停駐位置或關閉,設定頁也有「開發人員工具停駐在右側」選項
  • 設定頁改了就自動儲存(數字欄位停手 1 秒後存),不用按儲存
  • 全螢幕:網頁自己要求全螢幕時(YouTube 等影片播放器)會自動隱藏所有工具列,網頁佔滿整個螢幕; F11 也可以自己切換,Esc 離開

自動更新

啟動時會到 GitHub 看有沒有新版,有的話在背景下載好,並在上方顯示「重新啟動即可更新」。 下次啟動時會在開視窗之前把執行檔換掉,然後自動重開。

Windows 不允許覆寫執行中的程式,但允許「改名」,所以更新是:把舊的改名移開 → 新的放進原位 → 重新啟動 → 下次啟動時刪掉改名的舊檔。中途失敗會把舊的放回去,不會變成開不起來。 不想要的話把 auto_update 設成 false。

讓 LLM 操作(MCP)

設定頁的「MCP 服務」區塊打開「開啟 MCP 服務」後重新啟動,LiteBrowser 會開一個 MCP 端點,Claude 等支援 MCP 的 用戶端可以直接操作這個瀏覽器:列出分頁、開分頁、前往網址、上一頁/下一頁、重新整理、讀取頁面文字或 HTML、執行 JavaScript(可用來點按鈕、填表單)、截圖(只能截畫面上正在顯示的分頁,背景分頁要先切過去)。

  • 網址長這樣:http://127.0.0.1:<port>/mcp/<token>,設定頁的「複製網址」可以直接複製,也會寫進資料夾的 mcp-url.txt。
  • 預設只接受本機連線(127.0.0.1),而且網址帶一次性的 token,每次啟動都會換,避免其他程式亂連。
  • 位址和連接埠可以在設定頁改。改成 0.0.0.0 就能讓其他電腦連進來(把網址裡的 127.0.0.1 換成這台 電腦的 IP;第一次啟動時 Windows 防火牆會詢問是否允許,要按「允許」);但這是沒有加密的 HTTP, 拿到網址的人就能操作這個瀏覽器,包括已經登入的網站,只在信任的網路上這樣用。
  • 預設關閉。

從其他瀏覽器匯入

⋮ 選單 →「從其他瀏覽器匯入…」(設定頁的「資料」區也有)。

  • 書籤、歷史紀錄:會自動偵測 Chrome、Edge、Brave、Firefox 的設定檔,勾選後直接匯入。匯入前請先關閉該瀏覽器。
  • 密碼:基於安全考量,不直接讀取其他瀏覽器的密碼資料庫,而是用「你自己匯出的 CSV」:
    1. 在原瀏覽器的密碼設定選「匯出密碼」(會要求你驗證身分),存成 CSV。
    2. 在匯入頁按「選擇密碼 CSV 檔」。
    3. 重新啟動 LiteBrowser 一次,密碼就會寫入並可自動填入。 這種做法也能正確處理 Chrome 新版的 app-bound 加密(直接讀取會失敗)。
  • 登入用的 Cookie 不會轉移;匯入密碼後,第一次登入各網站用自動填入一鍵帶入即可。

擴充功能

從 Chrome 線上應用程式商店安裝

  1. 工具列的拼圖按鈕 → 開啟擴充功能頁

  2. 把商店頁面的網址貼進輸入框,按「安裝」

    例:https://chromewebstore.google.com/detail/read-frog-translate-learn/modkelfkcfjpgbfmnbnllalkiogfofhb (貼擴充功能 ID 本身也可以。)

  3. 下載完會自動安裝,重新整理網頁後生效

LiteBrowser 會向商店要 .crx,解開成一個資料夾放在 extensions\<擴充功能 ID>,再交給 WebView2 載入。 之後每次啟動都會沿用,不需要重新下載。

手動放資料夾

商店上沒有、或是想裝自己改過的版本時:

  1. 擴充功能頁 → 「開啟擴充功能資料夾」
  2. 把解壓縮後的擴充功能資料夾(裡面要有 manifest.json)放進去;「解壓縮全部」多包了一層資料夾也可以
  3. 按「重新載入」(不需要先開網頁分頁)

例:uBlock Origin Lite → 到 https://github.com/uBlockOrigin/uBOL-home/releases 下載 uBOLite_x.x.x.chromium.zip,解壓縮成一個資料夾放進去。

限制:WebView2 不會顯示擴充功能的工具列按鈕,所以需要點按鈕才能用的擴充功能(例如密碼管理器的彈出視窗)無法使用。

資料位置

預設在 %LOCALAPPDATA%\LiteBrowser:

檔案 內容
config.toml 設定(也可以在 ⋮ →「設定」修改)
bookmarks.json、history.json、session.json 書籤、歷史紀錄、上次的分頁
zoom.json 各網站的縮放比例
blocklist.txt 自訂封鎖網域,每行一個
favicons\ 網站圖示快取
extensions\ 擴充功能資料夾
webview2\ Cookie、快取、儲存的密碼
pending-import.json 等待下次啟動寫入的密碼 CSV 清單
litebrowser.log 錯誤紀錄(有問題時請附上)

可攜模式:在 LiteBrowser.exe 旁邊建立 portable.txt(或 data 資料夾),資料就會放在 exe 旁的 data\。 如果 VDI 登出後 %LOCALAPPDATA% 會被清空,請改用可攜模式並把 exe 放在會保留的磁碟(例如個人網路磁碟)。 也可以用環境變數 LITEBROWSER_DATA 指定資料夾。

設定(config.toml)

設定 預設 說明
max_live_tabs 2 同時保留網頁的分頁數(含目前分頁)
suspend_after_secs 30 背景分頁幾秒後凍結
discard_after_mins 15 背景分頁幾分鐘後釋放
memory_budget_mb 500 記憶體上限
adblock true 封鎖廣告/追蹤網域(重新啟動後生效)
disable_gpu false 停用 GPU 不會比較省記憶體(實測 10 個網站:開分頁時的尖峰反而更高,因為改由 SwiftShader 在 GPU 程序裡軟體算圖),而且部分網站的機器人驗證需要 WebGL,所以預設不停用(重新啟動後生效)
restore_session true 啟動時恢復上次的分頁
show_bookmarks_bar true 顯示書籤列
dark_mode false 深色模式(立即生效)
search_url Google 搜尋網址,{} 會換成搜尋文字
discard_grace_mins 5 最近看過的 2 個背景分頁在這幾分鐘內不會因為上限或記憶體而被釋放(避免切來切去一直重載)
low_memory_free_mb 250 整台機器可用記憶體低於這個值時,立刻釋放背景分頁
devtools_dock_right false 開發人員工具停駐在右側(false=下方)
auto_update true 啟動時檢查 GitHub 有沒有新版,有就先下載好
mcp_enabled false 開啟 MCP 服務讓 LLM 操作(重新啟動後生效)
mcp_host 127.0.0.1 MCP 監聽的 IP;0.0.0.0=其他電腦也能連(重新啟動後生效)
mcp_port 0 MCP 連接埠,0=自動選一個沒被用的
extra_browser_args 空 額外的 Chromium 參數(進階)

開發

cargo test                     # 核心邏輯的單元測試(任何平台都能跑)
cargo build --release          # 只能在 Windows 上產生可執行檔

程式結構:

檔案 內容
ui/app.slint 整個介面
src/app.rs 分頁、事件處理、把狀態推到介面
src/webview.rs WebView2 封裝(建立、事件、凍結、擴充功能、封鎖)
src/crx.rs 從 Chrome 線上應用程式商店下載並解開 .crx
src/tabs.rs 凍結/釋放策略(純邏輯,有測試)
src/memory.rs 計算整個瀏覽器程序樹的記憶體
src/win.rs Slint 視窗與 WebView2 子視窗之間的 Win32 處理
其他 設定、書籤/歷史、網址判斷、快捷鍵、封鎖清單

發佈

每次 push,GitHub Actions 都會在 Windows 上建置並把 exe 存成 Artifact,可以先下載測試。 確認可用後打 tag 推上去,就會自動建立 Release:

git tag v0.2.0
git push origin v0.2.0

授權

GPL-3.0-only(見 LICENSE)。介面使用 Slint,並以其 GPL-3.0 授權條款使用。

About

Lightweight tabbed browser for low-memory Windows/VDI. Rust + Slint UI on Edge WebView2; keeps only a few tabs live and freezes or discards the rest. Chrome Web Store extensions, Chrome/Edge/Firefox import, built-in MCP server for LLM control.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages