linux下的dwm的基本安裝配置

DWM

dwm(Dynamic Window Manager)由suckless.org開源社區主導,是一款可以在linux上運行的動態窗口管理器(wm)。其他知名的如i3wm,awesome均是基於dwm改編。

軟件名稱 軟件平臺 上線時間 最近更新時間 軟件語言 開發商 軟件權授 軟件版本 軟件大小
dwm 類Unix平臺 2011年11月4日 2019年2月3日 英文 suckless.org MIT/X Consortium license 6.2 66 KB

1.產生背景

許多(開源)黑客爲獲得大量代碼而感到自豪,因爲他們相信自己編寫的代碼行越多,取得的進步就越大。他們取得的進步越多,他們就越熟練。這簡直是一種錯覺。

實際上,大多數黑客並不在乎代碼質量。因此,如果他們得到解決問題的工作,他們就會堅持下去。如果在整個生命週期中將這種軟件開發應用於相同的源代碼,那麼我們將剩下大量代碼,完全固定的代碼結構和有缺陷的系統設計。這是因爲在開發過程中缺乏概念上的清晰性和完整性。

代碼複雜性臃腫,難以使用且完全不一致的軟件的根源,是使用複雜的代碼,問題將以次優的方式解決,寶貴的資源被無休止地束縛着,性能減慢了,並且漏洞變得司空見慣。唯一的解決方案是廢棄整個項目並從頭開始重寫它。

壞消息:高質量的重寫很少發生,因爲黑客爲寫大量代碼而感到自豪。他們認爲他們瞭解代碼的複雜性,因此無需重寫它。他們將自己視爲策劃者,瞭解其他人永遠都希望掌握的內容。對於這些類型,複雜的軟件是理想的選擇。

巧妙的想法很簡單。巧妙的軟件很簡單。簡單性是Unix哲學的核心。您刪除的代碼行越多,您取得的進展就越多。隨着軟件中代碼行數的減少,您變得越熟練,軟件的吸引力就越小。[1]

2.發展歷程

dwm補丁提交日誌

3.主要功能

基礎功能鍵

Mod1Mask – 鍵盤左邊的Alt鍵

Mod4Mask – 鍵盤上的Win鍵

這個兩個功能鍵是dwm的靈魂所在。如果您想讓您的手指不離開鍵盤,那麼您應該嘗試着自己定義快捷鍵。而dwm默認綁定的一套快捷鍵是使用Mod1Mask,但是與很多IDE衝突。

不排除您覺得Mod1Mask更爲方便。因此您完全可以定義兩套快捷鍵。Mod4Mask用於啓動一些軟件,而Mod1Mask用於切換桌面。Mod4Mask用於啓動軟件,這個操作不會太頻繁;Mod1Mask用於切換桌面,這樣在使用dwm的過程中,您可以使用大拇指+數字鍵的組合很方便在不同的tag之間切換。

操作邏輯

dwm有3種模式:

  • tiled layout
  • floating layout
  • monocle layout

tiled layout 是指軟件的窗體可以自由的調節大小,位置。

floating layout 中,dwm維護了一個棧,這個模式下開過多的窗口會導致dwm崩潰。

monocle layout 中,軟件被最大化顯示到一個tag中。

默認鍵位綁定

以下的Alt指鍵盤左邊的Alt

  • Alt + 1~9 切換到tag 1~ 9
  • Alt + Shift + c 關閉當前窗口
  • Alt + Shift + 1~9 把當前窗口移動到tag 1~9
  • Alt + Shift + 0 把當前窗口移動到所有tag
  • Alt + Shift + q 銷燬此dwm進程

float layout:

  • Alt + Enter 切換窗體棧的主次位置
  • Alt + j/k 切換聚焦窗體

tiled layout:

  • Alt + j/k 上下切換窗體

monocle layout:

  • Alt + j/k 上下切換窗體

  • Alt + p 啓動程序

    • 您需要額外安裝dmenu。
  • Alt + Shift + Return 啓動終端st
    *您需要額外安裝st。

三個白色終端的問題

如果您沒有這個問題請跳過。

如果您遇到了這個問題,請編輯/etc/X11/xinit/xinitrc,並註釋掉這三行,就像這樣:

#xclock -geometry 50x50-1+1 & 
#xterm -geometry 80x50+494+51 & 
#xterm -geometry 80x20+494-0 &

實現透明

您需要額外安裝窗口渲染器,並在後臺默認啓動。如:xcompmgr,picom。

解決IDEA不能正常顯示的問題

編輯文件~/.xinitrc。如果沒有,請創建它。

加入下面三行。注意,您需要先安裝wmname。這個軟件是suckless.org爲了解決Java應用程序在dwm下無法正常顯示的問題而創建的。您可以在您的包裹管理器中下載。或者在suckless.org官網下載源代碼,編譯安裝。[2]

export _JAVA_AWT_WM_NONREPARENTING=1
exec $1
wmname LG3D

設置右邊的狀態信息

一個簡單的設置如下圖:
在這裏插入圖片描述

您可以在~/.xinitrc中添加如下shell命令:

while true; do
# do some things
######################################################
#電池 
left=$(cat /sys/class/power_supply/BAT1/capacity)%
status=$(cat /sys/class/power_supply/BAT1/status)
if [[ $status == D* ]];then
    status='未充電'
else 
    status='充電中'
fi
xsetroot -name "$(date +"%F %R" )[$status]:$left"
sleep 2s
 
######################################################
# do some things end 
done &

此腳本可以每隔2s動態的刷新時間和電池的狀態信息。
您也可以定義其他的狀態信息。

參考資料

1.Philosophy .suckless.org[引用日期2020-05-25]

2.idea-dwm .CSDN.2020-03-18[引用日期2020-05-25]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章