Giới thiệu
Tiling Window Manager rất tiện dụng (thực dụng, không màu mè). Màn hình làm việc tựa như một IDE với các ô ngăn ra (tiling) chứ không phải là các cửa sổ chồng chéo (stacked). Trên Internet có rất nhiều bài viết về tính tiện dụng và hiệu quả của nó, nhất là hiện nay phổ biến màn hình lớn (19 inch trở lên), màn hình wide, và dùng nhiều màn hình (http://en.wikipedia.org/wiki/Tiling_window_manager). Trên Linux, có một số loại như dwm, xmonad, wmii, ion3,... Cá nhân tôi rất thích dwm với cơ chế Dynamic Tiling (lợp động) cộng với Window Tagging (dùng tag chứ không phải dùng Workplace), và ion3 với cơ chế Manual Tiling (lợp bằng tay) cộng với Tabbed Window (cửa sổ tab kiểu như FireFox). Xin viết ra đây quá trình cài đặt trên Debian Lenny và Ubuntu 8.10.
dwm
Cài đặt dwm đòi hỏi một chút kỹ năng lập trình C++, vì chương trình này cung cấp dưới dạng mã nguồn (source code). Cấu hình cũng đặt thẳng vào mã nguồn. Download mã nguồn trực tiếp từ website của tác giả (http://dwm.suckless.org/). Hiện nay là version 5.3.1. Có thể cài thêm một số mở rộng (patch). Tôi dùng thêm bstack (bottom stack).
Sau khi chạy tar zxvf dwm-5.3.1.tar.gz thì chạy áp phần patch bstack vào. Phần patch này sửa file config.def.h và tạo thêm file bstack.c. Chạy cp config.def.h config.h để tạo file cấu hình (cấu hình đặt trong mã nguồn này), sau đó ta chỉnh sửa file config.h theo ý của mình (đặt phím nóng, mầu, v.v) Gọi là sửa mã nguồn vậy, chứ chỉnh sửa nó không khó khăn gì mấy, vì tác giả soạn chương trình khá rõ ràng dễ sửa ở file này.
Sau đó chạy make để dịch chương trình. Lưu ý là dwm dùng thư viện (library) xinerama, vì vậy ngoài trình dịch (compiler) C++ cùng thư viện chuẩn (standard) còn cần thêm xinerama (apt-get install libxinerama-dev). Vậy là xong phần biên dịch. Tôi *không* cài dwm vào hệ thống (system wide) mà chỉ cài ở mức người dùng.
Tiếp đến, khai báo dwm cho hệ thống để chương trình login đồ hoạ (như gdm, kdm, xdm) biết: tạo file /usr/share/xsessions/my-dwm.desktop với nội dung như sau:
[Desktop Entry] Encoding=UTF-8 Type=XSession Exec=startdwm TryExec=startdwm Name=My DWM Comment=DWM window manager
Và tạo file /usr/local/bin/startdwm với nội dung như sau:
#!/bin/bash exec ~/.dwm/startup
Sau đó chạy chmod +x /usr/local/bin/startdwm. Nghĩa là, người dùng nào muốn dùng DWM thì phải tạo chương trình khởi động ~/.dwm/startup. Ví dụ, chương trình startup của tôi có nội dung như sau:
#!/bin/bash export PATH=$PATH:$HOME/bin export XMODIFIERS="@im=SCIM" function my_dwm () { while true ; do MEM_USAGE=`free -m` MY_STATUS=`echo $MEM_USAGE | cut -d ' ' -f 7,10,13,16,18,20` MY_TIME=`date +'[%I:%M %a %d]'` echo $MY_TIME $MY_STATUS sleep 60 done | dwm &>/dev/null & } export -f my_dwm my_dwm gnome-settings-daemon &>/dev/null & urxvtd -f -o -q &>/dev/null urxvtc -bc -tn rxvt +sb -bg black \ -fg rgb:c/c/c -cr green -sl 2222 &>/dev/null & scim -d &>/dev/null & stardict &>/dev/null & #xscreensaver -no-splash &>/dev/null & #xsetroot -solid black #xsetroot -solid SlateGray #xset r rate 200 45 ## the 'last' application exec lxpanel &>/dev/null
Như vậy là tôi dùng lxpanel (chương trình có menu hệ thống và systray) làm chương trình 'cuối'. Muốn logout thì cần phải killall lxpanel. Tôi dùng gnome để đặt cấu hình cho GTK, bàn phím, chuột, v.v. Hơi nặng một chút. Có thể dùng gtk-theme-switch và chỉnh bàn phím, màu màn hình nền bằng xset và xsetroot.
ion3
Cài ion3 bằng lệnh apt-get install ion3.
Cấu hình của ion3 đều được đặt ở /etc/X11/ion3/. Đó là các chương trình viết trên ngôn ngữ lua. Cần sửa cấu hình nào thì copy phần đó về ~/.ion3/ rồi sửa đi là xong. Tôi cần sửa 3 files: cfg_ion.lua gồm các cấu hình cơ sở, cfg_dock.lua gồm cấu hình phần docking kiểu như Window Maker, và look.lua gồm cấu hình về màu sắc và các chi tiết giao diện (skin). Nội dung cfg_ion.lua như sau:
-- -- Ion main configuration file -- dopath("cfg_debian") META="Mod4+" ALTMETA="Mod4+Control+" XTERM="urxvt -bc -tn rxvt +sb -bg black -fg rgb:c/c/c -cr green -sl 2222" ALTXTERM=XTERM.." -fn 9x15" ioncore.set{ } dopath("cfg_ioncore") dopath("cfg_kludges") dopath("cfg_layouts") dopath("mod_query") dopath("mod_menu") dopath("mod_tiling") --dopath("mod_statusbar") dopath("mod_dock") dopath("mod_sp") --dopath("cfg_debian_ext") -- -- TD personalization -- function td_toggle_topbar(curmod) if curmod == 'tiled' then return 'tiled-alt' end if curmod == 'tiled-alt' then return 'tiled' end if curmod == 'floating' then return 'floating-alt' end if curmod == 'floating-alt' then return 'floating' end if curmod == 'transient' then return 'transient-alt' end if curmod == 'transient-alt' then return 'transient' end if curmod == 'unknown' then return 'unknown-alt' end if curmod == 'unknown-alt' then return 'unknown' end return 'tiled' end defbindings("WFrame", { kpress(META.."F10", "_:set_mode(td_toggle_topbar(_:mode()))"), kpress(META.."slash", "ioncore.exec_on(_, 'my-text-assistant')"), kpress(META.."F2", "ioncore.exec_on(_, ALTXTERM)"), kpress(ALTMETA.."L", "ioncore.exec_on(_, 'gnome-screensaver-command --lock')"), })
Trong cfg_dock.lua tôi dùng embedded thay cho floating. Còn file look.lua là copy từ một trong các file /etc/X11/ion3/look_*lua rồi chỉnh theo sở thích là xong.
Cũng có thể tạo cơ chế startup cho ion3 tương tự như đã làm với đwm. Ví dụ nội dung ~/.ion3/startup như sau:
#!/bin/bash ## export PATH=$PATH:$HOME/bin export XMODIFIERS="@im=SCIM" export XIM=SCIM export GTK_IM_MODULE=scim-bridge export QT_IM_MODULE=scim-bridge ## docker -wmaker &>/dev/null & wmnetmon &>/dev/null & wmbubble -d &>/dev/null & wmtime &>/dev/null & xscreensaver -no-splash &>/dev/null & gnome-settings-daemon &>/dev/null & urxvt -bc -tn rxvt +sb -bg black \ -fg rgb:c/c/c -cr green -sl 2222 &>/dev/null & scim -d &>/dev/null & stardict &>/dev/null & ## the 'last' application exec ion3 &>/dev/null
Tham chiếu:
- http://en.wikipedia.org/wiki/Tiling_window_manager
- http://en.wikipedia.org/wiki/Dwm
- http://en.wikipedia.org/wiki/Ion_(window_manager)
- http://dwm.suckless.org/
- http://modeemi.fi/~tuomov/ion/
- http://www.xsnake.net/howto/dwm/dwm-eng.php
- http://0x80.org/blog/?p=72
- http://users.skynet.be/six/gpure/tech/linux/debian.html
Không có nhận xét nào:
Đăng nhận xét