iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0

python

選擇用python是因為語法簡單,套件多,正因為比較簡單所以可以注重在學習框架本身,不需要分心處理指針,記憶體那些的
我是用uv管理python依賴和環境的
我之前已經有repo了 所以跳過uv的部分 不知道的可以看這裡uv的文檔
專案的依賴和python版本:

zixgggg@watermelon:~/i4$ uv tree
Using CPython 3.13.5 interpreter at: /usr/bin/python3.13
Resolved 3 packages in 12ms
i4wm v0.1.0
└── python-xlib v0.33
    └── six v1.17.0

X環境

開一個終端輸入echo $DISPLAY輸出預設的顯示編號應該是:0

zixgggg@watermelon:~$ echo $DISPLAY
:0

如果不是的話應該沒關係

我們還需要一個沒被佔用的顯示編號(這裡用:1
再開一個終端設定DISPLAY,把他設定成:1或其他沒被佔用的顯示編號

zixgggg@watermelon:~$ DISPLAY=:1

再次確認DISPLAY變數

zixgggg@watermelon:~$ echo $DISPLAY
:1

設定成功
兩個終端先不要關掉

Xephyr

為了不影響當前的X環境我們要用Xephyr
Xephyr這個工具簡單來說就是可以在當前X環境再開一個X環境 在這裡的目的像是當虛擬環境用
剛剛的兩個終端--:0是拿來用Xephyr的,:1是用來在Xephyr的虛擬環境中操作的
:0的終端輸入:

Xephyr :1

他就會開啟一個全黑的視窗 這就是我們要開發WM的環境
https://ithelp.ithome.com.tw/upload/images/20260904/20183970wo1sUvIrkh.png

可以加-screen選項控制Xephyr開啟的視窗大小

:1的終端測試一下 隨便用指令開一個視窗

zixgggg@watermelon:~$ echo $DISPLAY
:1
zixgggg@watermelon:~$ alacritty

你就會看到剛剛Xephyr的視窗裡面有開啟的視窗
https://ithelp.ithome.com.tw/upload/images/20260904/201839707BsmVfslm9.png

我開了一個alacritty終端在裡面

之後開發要執行像是

uv run main.py

之類的讓我們寫的WM在裡面跑

結論

我們今天弄好了python和X的環境(注意每次都要設定一個:1(或其他沒被佔用的顯示編號)的終端好讓Xephyr開啟),明天就要開始寫了:D


上一篇
Day 1|簡單開頭
下一篇
Day 3|基本Xlib結構(?
系列文
用python做一個X11 WM14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言