
桌面應(yīng)用操作系統(tǒng)【免費下載鏈接】qtile:cookie: A full-featured, hackable tiling window manager written and configured in Python (X11 Wayland)項目地址https://gitcode.com/gh_mirrors/qt/qtile點擊查看免費下載導(dǎo)讀本文基于 docs/manual/install/ubuntu.rst 與其父級安裝指南 docs/manual/install/index.rst系統(tǒng)講解在 Ubuntu / Debian 系列發(fā)行版上安裝、配置與啟動 Qtile 的完整路徑——包括新版發(fā)行版的軟件包直裝方案、舊版發(fā)行版的系統(tǒng)依賴準備、基于uv tool的現(xiàn)代 Python 工具鏈安裝方式以及 X11 / Wayland 雙后端的啟動方法與硬件權(quán)限udev 規(guī)則配置。讀完本文你可以在一臺全新的 Ubuntu 或 Debian 機器上從零把 Qtile 跑起來并接入自己的登錄管理器。Qtile 是一個使用 Python 編寫和配置的全功能平鋪窗口管理器Tiling Window Manager同時支持 X11 與 Wayland 兩種后端倉庫描述見 README.rst。由于它完全用 Python 驅(qū)動安裝環(huán)節(jié)的核心就是把系統(tǒng)依賴和 Python 環(huán)境準備到位。本文按照官方文檔的順序把從系統(tǒng)包到 Python 工具鏈、從啟動方式到硬件權(quán)限的全部環(huán)節(jié)串起來并結(jié)合倉庫源碼給出可驗證的實現(xiàn)細節(jié)。一、兩種安裝時代先判斷你的發(fā)行版版本ubuntu.rst明確區(qū)分了兩個階段安裝前請先確認自己的發(fā)行版版本新版發(fā)行版Debian 13Ubuntu 25.04倉庫已經(jīng)打包了 Qtile直接使用系統(tǒng)包管理器安裝即可。每個發(fā)行版發(fā)布版本對應(yīng)的 Qtile 具體版本號可以分別到packages.debian.org或packages.ubuntu.com的軟件包搜索頁關(guān)鍵詞qtile查詢。舊版發(fā)行版Debian / Ubuntu 11系統(tǒng)倉庫中沒有 Qtile 本體但提供了運行 Qtile 所需的全部系統(tǒng)依賴Qtile 本身需要從 PyPI 或 GitHub 倉庫安裝。因此本指南的默認前提是舊版發(fā)行版場景這同時也覆蓋了新版發(fā)行版中想使用比系統(tǒng)包更新的 Qtile的情況。二、系統(tǒng)級依賴準備舊版發(fā)行版從一份最小化的 Debian/Ubuntu 安裝出發(fā)官方文檔給出的系統(tǒng)包清單如下sudo apt install xserver-xorg xinit sudo apt install libpangocairo-1.0-0 sudo apt install uv # 如果你的發(fā)行版沒有 uv 包可以嘗試官方安裝腳本 # curl -LsSf https://astral.sh/uv/install.sh | sh這三組包分別解決三個問題包名作用對應(yīng)源碼層xserver-xorgxinit提供 X11 顯示服務(wù)器與startx/xinit啟動鏈路是 X11 后端運行的前提libqtile/backend/x11/libpangocairo-1.0-0提供 Pango Cairo 的 C 庫Qtile 用它把文本繪制到 bar 和 popup 上libqtile/pangocffi.py、libqtile/pango_ffi.pyuv極速 Python 包管理器官方推薦的 Qtile 安裝工具鏈pyproject.toml需要注意的是libpangocairo-1.0-0是 C 庫層面的依賴python3-cairocffi才是 Python 綁定層兩者都要裝齊Qtile 的 bar 才能正常渲染文字。完整依賴對照表index.rst中給出了 Qtile 運行時的核心依賴與 Ubuntu 包名的完整對照表。Qtile 可以運行在兩種后端之一X11 或 Wayland因此只需要滿足其中一個后端的依賴依賴Ubuntu 包名用途核心依賴CFFIpython3-cffibar 與 popup 的 C 接口綁定cairocffipython3-cairocffi在 bar 和 popup 上繪圖libpangocairolibpangocairo-1.0-0在 bar 和 popup 上書寫文本dbus-fast--可選通過 dbus 發(fā)送通知X11 后端X serverxserver-xorgX11 后端xcffibpython3-xcffibX11 后端必需Wayland 后端wlrootslibwlroots-devWayland 后端見下文說明wayland-scanner--為 Wayland 后端生成 C 頭文件wayland-protocolswayland-protocols額外的標準 Wayland 協(xié)議從 pyproject.toml 的[project]段可以看到當前倉庫聲明的強制 Python 依賴為requires-python 3.12 dependencies [ cairocffi 1.7.0, cffi 1.1.0, xcffib 1.4.0, ]也就是說任何后端場景下 cairocffi、cffi、xcffib 三者都會隨包安裝Ubuntu 側(cè)的python3-cffi/python3-cairocffi對應(yīng)的是系統(tǒng)層面的同名包如果你采用uv tool安裝見下文Qtile 會被裝入獨立的環(huán)境這些 Python 依賴由uv自行解決系統(tǒng)包只需保證libpangocairo-1.0-0這類 C 庫到位。關(guān)于 Wayland 依賴還有一個重要提醒原文明確強調(diào)wlroots 處于快速開發(fā)迭代中部分發(fā)行版打包的 wlroots 版本可能過舊Qtile 官方在努力跟進最新的 wlroots release。如果你的發(fā)行版 wlroots 版本太舊導(dǎo)致 Wayland 后端無法啟動優(yōu)先考慮從較新的發(fā)行版?zhèn)}庫或源碼構(gòu)建 wlroots。Python 解釋器CPython 與 PyPy官方對 Python 解釋器的支持策略index.rst是始終支持 CPython 最近三個版本同時通常支持 PyPy 的最新穩(wěn)定版。當前倉庫在 pyproject.toml 中聲明requires-python 3.12分類器classifiers明確標注支持 CPython 3.12 / 3.13 以及 PyPy。兩者的取舍官方給出如下結(jié)論PyPy對會被反復(fù)執(zhí)行多次的 Python 代碼片段通常比對應(yīng)版本的 CPython 更快CPython啟動速度更快且對外部 C 擴展庫的兼容性更好。配置文件中能否使用某些 Python 語言特性會受解釋器版本影響這是兩個解釋器之間最主要的實際差異。三、用 uv 工具鏈安裝 Qtile裝好系統(tǒng)依賴后安裝 Qtile 本體最推薦的方式是uv tooluv tool會把 Qtile 裝進獨立環(huán)境并為其創(chuàng)建可執(zhí)行命令入口# 安裝穩(wěn)定版來自 PyPI uv tool install qtile # 附帶依賴集安裝 uv tool install qtile[widgets] # 安裝全部 widget 依賴 uv tool install qtile[all] # 安裝全部可選依賴從 GitHub 源碼安裝qtile-git想跟進最新開發(fā)版官方推薦直接 clone 倉庫后用uv tool安裝git clone https://github.com/qtile/qtile.git cd qtile uv tool install . # 最小依賴 uv tool install .[dev,widgets,optional-core] # 全部依賴關(guān)于第二行的 extras 名稱倉庫 pyproject.toml 中[project.optional-dependencies]實際定義的鍵為dev、optional_core、widgets、docs。optional-core與optional_core在 extras 歸一化規(guī)則PEP 685下等價均可使用。各 extras 的組成以當前倉庫為準為extra包含內(nèi)容用途widgetsimaplib2、keyring、mailbox、psutil、pulsectl、pulsectl_asyncio、python-mpd2、pyxdg、xmltodict、aiohttp各類 widget 的第三方依賴郵件、媒體、系統(tǒng)監(jiān)控等optional_coredbus-fast、libcst、setproctitle、prompt_toolkit通知dbus、進程名設(shè)置、REPL 等可選核心能力devcoverage、pytest 系列、mypy、pre-commit、PyGObject 等開發(fā)與測試工具鏈docssphinx、libcst 等構(gòu)建文檔其中setproctitle對應(yīng)源碼 libqtile/scripts/start.py 中的rename_process()安裝了它Qtile 進程標題會被設(shè)為qtile從而可以直接killall qtile未安裝時該函數(shù)靜默失敗不影響運行。給 Qtile 環(huán)境補裝額外的 Python 模塊Qtile 的配置是 Python 代碼你很可能想在配置里 import 一些第三方模塊。由于uv tool會創(chuàng)建獨立的工具環(huán)境任何要在配置中使用的 Python 模塊都必須裝進同一個環(huán)境。官方文檔給出兩種做法1. 安裝時一并指定推薦最清晰# 從 PyPI 安裝額外包qtile[widgets] 等 extras 同樣適用 uv tool install --with package-name qtile # 從 GitHub 倉庫安裝 uv tool install --with githttps://github.com/elParaguayo/qtile-extras/ . # 從自定義 requirements 文件安裝 uv tool install --with-requirements /path/to/requirements.txt .2. 安裝后補裝官方明確指出安裝后再往uv tool環(huán)境里補包并沒有被官方正式支持但以下命令在實踐中可用cd $(uv tool dir)/qtile uv pip install package-name四、啟動 QtileX11 場景index.rst總結(jié)了四種進入 Qtile 會話的方式由易到難排列如下。方式一通過登錄管理器顯示管理器菜單最常規(guī)的方式是在 X 會話管理器的菜單中加入 Qtile 條目——在/usr/share/xsessions目錄下創(chuàng)建qtile.desktop文件。倉庫自帶的 resources/qtile.desktop 內(nèi)容如下[Desktop Entry] NameQtile CommentQtile Session Exec/usr/bin/qtile start TypeApplication Keywordswm;tiling復(fù)制到目標位置后SDDM、LightDM、GDM 等顯示管理器的會話選擇列表里就會出現(xiàn) Qtile 條目。方式二自定義 X session適合做啟動前預(yù)處理當你需要在 Qtile 啟動前執(zhí)行自定義初始化例如把 Caps Lock 映射為 Control、設(shè)置桌面壁紙、加載鍵盤映射等可以走自定義 X session創(chuàng)建custom.desktop內(nèi)容與qtile.desktop類似但Exec/etc/X11/xsession編寫自己的~/.xsession在文件末尾調(diào)用 Qtile。這種方式允許你用任意參數(shù)啟動 Qtile官方倉庫的 qtile-examples 中有大量社區(qū)成員分享的~/.xsession示例可供參考。方式三無顯示管理器直接從 ~/.xinitrc 啟動如果機器上沒有安裝任何顯示管理器在~/.xinitrc末尾加入一行即可exec qtile start使用exec讓 Qtile 取代 shell 進程成為會話主進程會話結(jié)束時進程自然退出。方式四崩潰自愈循環(huán)特殊情況在非常特殊的場景下例如 Qtile 在會話中頻繁崩潰官方建議用循環(huán)包裹啟動命令從而在崩潰后自動拉起、保住已運行的應(yīng)用while true; do qtile doneqtile start 的可選參數(shù)源碼級從 libqtile/scripts/start.py 可以看到qtile start子命令支持以下參數(shù)在自定義 session 或.xinitrc中組合使用參數(shù)含義-b, --backend指定后端可選項為libqtile.backend.CORES中的鍵即 x11 / wayland-c, --config path使用指定配置文件默認由 libqtile/utils.py 的get_config_file()定位-d, --use-default-config使用內(nèi)置默認配置源碼中會解析內(nèi)置默認配置模板路徑-s, --socket path為 IPC 指定 socket 路徑-n, --no-spawn不自動啟動應(yīng)用Qtile 重啟時使用--with-state pickle載入序列化的 QtileState重啟時恢復(fù)布局等狀態(tài)此外libqtile/scripts/main.py 為全局命令定義了通用參數(shù)-l/--log-levelDEBUG/INFO/WARNING/ERROR/CRITICAL默認 WARNING與-p/--log-path以及-v/--version。同文件還注冊了shell、top、run_cmd、cmd_obj、check、migrate、launch、repl、x11_identify_output等子命令模塊安裝完成后可運行qtile --help查看完整命令樹。一個值得留意的細節(jié)start.py中若指定的配置文件不存在Qtile 會嘗試把內(nèi)置的默認配置模板復(fù)制到該路徑日志提示Copied default_config.py to ...也就是說首次啟動沒有配置文件也不會白屏它會先給你一份可運行的默認配置。五、Wayland 后端除了作為 X11 窗口管理器Qtile 也可以作為 Wayland 合成器運行。倉庫的 Wayland 后端實現(xiàn)在 libqtile/backend/wayland/底層基于 wlroots 合成器庫。在 Wayland 依賴齊全的前提下從 TTY 直接啟動或在已有的 X11 / Wayland 會話內(nèi)以嵌套窗口方式啟動qtile start -b wayland從 libqtile/scripts/start.py 的make_qtile()可以確認后端選擇邏輯-b未指定時通過libqtile.backend.detect_backend()自動探測顯式指定后端后若檢測到缺少必需 Python 依賴會列出缺失項并退出。-b的合法取值即libqtile.backend.CORES的鍵。與 X11 場景類似登錄管理器也可以使用 Wayland 會話文件在/usr/share/wayland-sessions下創(chuàng)建qtile-wayland.desktop。倉庫自帶的 resources/qtile-wayland.desktop 內(nèi)容為[Desktop Entry] NameQtile (Wayland) CommentQtile Session Execqtile start -b wayland TypeApplication Keywordswm;tilingWayland 場景還有幾點官方提醒XWaylandQtile 支持 XWayland 運行 X11-only 程序前提是 wlroots 編譯時帶上了 XWayland 支持、且系統(tǒng)裝有 XWaylandXWayland 會在首次需要時自動啟動。已知問題可參考倉庫 issue #3675切換焦點后指針事件偶發(fā)傳播到錯誤窗口。配置按后端區(qū)分若希望同一份配置在不同后端下采用不同設(shè)置可以像 docs/manual/wayland.rst 中那樣讀取當前后端名from libqtile import qtile if qtile.core.name x11: term urxvt elif qtile.core.name wayland: term footWayland 下 wlroots 的版本兼容性是重點見第二節(jié)末尾的提醒更多 Wayland 運行細節(jié)參見 docs/manual/wayland.rst。六、udev 規(guī)則讓硬件 widget 獲得寫權(quán)限Qtile 有多個 widget 負責管理硬件——LCD 背光、鍵盤背光、電池充電閾值——它們通過內(nèi)核暴露的 sysfs 端點/sys/class/...工作。要讓這些 widget 能寫入對應(yīng)文件需要給 Qtile 授予寫權(quán)限官方為此在倉庫中維護了一份 udev 規(guī)則文件 resources/99-qtile.rules。從源碼安裝的用戶應(yīng)將其安裝到/etc/udev/rules.d/官方給出的安裝命令# 把倉庫內(nèi)的 udev 規(guī)則文件復(fù)制到正確位置讓 udev 生效 cat ./resources/99-qtile.rules | sudo tee /etc/udev/rules.d/99-qtile.rules這份規(guī)則文件做了三件事對照 resources/99-qtile.rules 內(nèi)容LCD 背光對SUBSYSTEMbacklight的設(shè)備把/sys/class/backlight/%k/brightness開放為ow對應(yīng) widget 實現(xiàn)見 libqtile/widget/backlight.py鍵盤背光對SUBSYSTEMleds的設(shè)備開放/sys/class/leds/%k/brightness電池充電閾值按 ACPI 驅(qū)動名asus-wmi、dell-laptop、huawei-wmi、lg-laptop、msi-ec、samsung-galaxybook、system76_acpi、thinkpad_acpi、toshiba_acpi在設(shè)備加載時開放charge_control_start_threshold/charge_control_end_threshold兩個 sysfs 文件對應(yīng) widget 實現(xiàn)見 libqtile/widget/battery.py。規(guī)則文件中的注釋也透露了兩個實戰(zhàn)細節(jié)一是充電閾值文件由驅(qū)動加載時創(chuàng)建而非電池被識別時創(chuàng)建因此規(guī)則里把設(shè)備名硬編碼為BAT0——如果你有多個電池可以按相同格式手動追加 BAT1 的規(guī)則二是這些驅(qū)動的清單含 Linux 內(nèi)核版本號會在規(guī)則文件中定期更新核對使用前建議先確認自己內(nèi)核對應(yīng)的驅(qū)動名。七、安裝后的驗證與常見問題安裝完成后可以按以下順序自查確認命令可用qtile --version應(yīng)輸出版本號由 libqtile/scripts/main.py 的-v分支提供確認后端依賴直接執(zhí)行qtile start若缺失后端必需 Python 依賴libqtile/scripts/start.py 的make_qtile()會打印缺失項并以退出碼 1 結(jié)束檢查配置文件語法與內(nèi)容倉庫內(nèi)置了配置檢查工具libqtile/scripts/check.py可用于校驗?zāi)愕膥/.config/qtile/config.py日志定位通過-l DEBUG與-p 路徑打開更詳細日志方便排查啟動失敗start.py啟動時也會把 Qtile 版本與庫路徑寫入日志xsession 無效時確認qtile.desktop位于/usr/share/xsessions且Exec中的路徑與which qtile一致例如uv tool安裝時入口通常位于~/.local/bin/qtileresources/qtile.desktop 中寫的是/usr/bin/qtile start實際路徑不一致時可改用不帶絕對路徑的qtile start或qtile-generic.desktop寫法見 resources/qtile-generic.desktop。小結(jié)在 Ubuntu / Debian 上部署 Qtile 的完整鏈路可以歸納為四步先判斷發(fā)行版是否自帶 Qtile 包Debian 13 / Ubuntu 25.04 可直裝再按后端選型補齊系統(tǒng)依賴X11 需要xserver-xorgxinitpython3-xcffibWayland 需要 wlroots 系列兩者共用libpangocairo-1.0-0隨后用uv tool install安裝 Qtile 本體與附加模塊最后選定啟動方式顯示管理器菜單、自定義 xsession、.xinitrc或崩潰循環(huán)并按需安裝 resources/99-qtile.rules 釋放硬件 widget 權(quán)限。全部過程都以本倉庫的 docs/manual/install/ubuntu.rst 和 docs/manual/install/index.rst 為官方基準源碼與資源文件可在上文各鏈接處繼續(xù)深入查閱。贊分享桌面應(yīng)用操作系統(tǒng)【免費下載鏈接】qtile:cookie: A full-featured, hackable tiling window manager written and configured in Python (X11 Wayland)項目地址https://gitcode.com/gh_mirrors/qt/qtile點擊查看免費下載相關(guān)推薦高效視頻編輯神器3分鐘全面掌握Avidemux2開源視頻編輯器高效視頻編輯神器3分鐘全面掌握Avidemux2開源視頻編輯器 Avidemux2是一款專業(yè)級的開源視頻編輯軟件提供跨平臺視頻剪輯、編碼轉(zhuǎn)換和濾鏡處理功能。桌面應(yīng)用操作系統(tǒng)在 iOS Share 與 Action 擴展中集成 OpenMedKit 端側(cè)文本脫敏在 iOS Share 與 Action 擴展中集成 OpenMedKit 端側(cè)文本脫敏 OpenMedKit 為 iOS 提供了一套可直接復(fù)用的 Share桌面應(yīng)用操作系統(tǒng)Qtile 文檔體系與入門指南用 Python 編寫和配置的平鋪窗口管理器X11 WaylandQtile 文檔體系與入門指南用 Python 編寫和配置的平鋪窗口管理器X11 Wayland 本文是 Qtile 官方文檔入口 docs/ind桌面應(yīng)用操作系統(tǒng)上一篇推薦開源項目Taplo —— 強大的TOML工具包下一篇Destiny高級技巧處理循環(huán)依賴、測試文件和鏈接文件的完整方案創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考