選擇用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
開一個終端輸入echo $DISPLAY輸出預設的顯示編號應該是:0
zixgggg@watermelon:~$ echo $DISPLAY
:0
如果不是的話應該沒關係
我們還需要一個沒被佔用的顯示編號(這裡用:1)
再開一個終端設定DISPLAY,把他設定成:1或其他沒被佔用的顯示編號
zixgggg@watermelon:~$ DISPLAY=:1
再次確認DISPLAY變數
zixgggg@watermelon:~$ echo $DISPLAY
:1
設定成功
兩個終端先不要關掉
為了不影響當前的X環境我們要用Xephyr
Xephyr這個工具簡單來說就是可以在當前X環境再開一個X環境 在這裡的目的像是當虛擬環境用
剛剛的兩個終端--:0是拿來用Xephyr的,:1是用來在Xephyr的虛擬環境中操作的
在:0的終端輸入:
Xephyr :1
他就會開啟一個全黑的視窗 這就是我們要開發WM的環境
-screen選項控制Xephyr開啟的視窗大小在:1的終端測試一下 隨便用指令開一個視窗
zixgggg@watermelon:~$ echo $DISPLAY
:1
zixgggg@watermelon:~$ alacritty
你就會看到剛剛Xephyr的視窗裡面有開啟的視窗
之後開發要執行像是
uv run main.py
之類的讓我們寫的WM在裡面跑
我們今天弄好了python和X的環境(注意每次都要設定一個:1(或其他沒被佔用的顯示編號)的終端好讓Xephyr開啟),明天就要開始寫了:D