Awesome Window Manager (Part 2)
How to configure Awesome WM? Let's do something!
Config:
Bước 1:
Tạo thư mục chứa file config của user
mkdir ~/.config/awesome
Copy dữ liệu default từ root về folder của user
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Bước 2:
Mở file rc.lua trong thư mục ~/.config/awesome bằng text editor (chẳng hạn gedit)
Đầu tiên sẽ là phần thư viện của awesome được gọi
-- Standard awesome library require("awful") require("awful.autofocus") require("awful.rules") -- Theme handling library require("beautiful") -- Notification library require("naughty") -- Load Debian menu entries require("debian.menu")
Tiếp tục ta có thể thấy source code được chia thành các phần như:
Error handling: Thông báo nếu xảy ra lỗi
Variable definitions: Định nghĩa các tham số như: theme, terminal, text editor, phím modkey (Mod4), layouts (Bố trí các cửa sổ làm việc theo bố cục nhất định)
Tags: Tên của các mỗi màn hình làm việc (workspace)
Menu: Menu ứng dụng của awesome ( Click Right Mouse )
Wibox: Thanh taskbar phía trên cùng
Mouse bindlings: Định nghĩa cách thức sử dụng vs chuột ( Right Mouse: open menu, Mouse Wheel Up: workspace trước, Mouse Wheel Down: workspace sau)
Key bindlings: Định nghĩa chức năng của các phím
Rules: Cho phép các chương trình chạy theo luật đã đặt ra trước, ví dụ: firefox chỉ làm việc ở Workspace thứ 3 hay chỉ chat ở wp số 4 hoặc 5
Tiếp tục đi vào chi tiết của 1 số phần đã nêu ở trên:
Variable definitons:
Có thể thay đổi theme của awesome bằng cách thay địa chỉ của theme.lua mới
beautiful.init("/usr/share/awesome/themes/default/theme.lua")
Nếu sử dụng 1 loại terminal khác (rxvt, xterm), thay đổi def của terminal thành tên tuơng ứng
terminal = "x-terminal-emulator"
Tương tự với text-editor (gedit, vim, emacs, nano...)
Phím modkey: Mod4 - Window, Mod1 - Alt
Layouts: Bố cục của từng wp sẽ đc đánh số từ 1 cho đến hết
layouts = { awful.layout.suit.floating, --1 awful.layout.suit.tile, --2 awful.layout.suit.tile.left, --3 awful.layout.suit.tile.bottom, --4 awful.layout.suit.tile.top, --5 awful.layout.suit.fair, --6 awful.layout.suit.fair.horizontal, --7 awful.layout.suit.spiral, --8 awful.layout.suit.spiral.dwindle, --9 awful.layout.suit.max, --10 awful.layout.suit.max.fullscreen, --11 awful.layout.suit.magnifier --12 }
Ví dụ: Layout 1: Hiện cửa sổ chương trình giống như Window
Layout 2: Full screen mọi cửa sổ
Layout 3: Chia screen làm 2, left + right, các cửa sổ con sẽ xuất hiện bên phải
Layout 4: Tương tự 3 nhưng chia theo top và bottom...
Tags:
Mặc định tags name của awesome khá đơn giản, chỉ bao gồm các số từ 1 đến 9 nhưng có thể thay đổi khá thoải mái trong việc đặt tên theo ý thích của mỗi người
Default
tags = {} for s = 1, screen.count() do -- Each screen has its own tag table. tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1]) end
My code
tags = {} tags.settings = { { name = "workspace", layout = layouts[2] }, { name = "file", layout = layouts[1] }, { name = "web browser", layout = layouts[1] }, { name = "pcmanfm", layout = layouts[2] }, { name = "media", layout = layouts[1] }, { name = "chat", layout = layouts[1] }, } for s = 1, screen.count() do tags[s] = {} for i, v in ipairs(tags.settings) do tags[s][i] = tag({ name = v.name }) tags[s][i].screen = s awful.tag.setproperty(tags[s][i], "layout", v.layout) end tags[s][1].selected = true end
Ở đây có thể gán mặc định layout cho mỗi screen. Ví dụ như: Khi coding thì chọn layout 2 do có thể tận dụng được tất cả vị trí của màn hình để hiển thị code...
Key bindlings:
Ở đây chỉ giới thiệu thêm về phần standard program để có thể thêm 1 số phím tắt cho ứng dụng:
awful.key({ modkey,}, "p",function () awful.util.spawn("pidgin")end),
Tương ứng với tổ hợp phím: Window + p = Pigin
Chức năng của các tổ hợp phím khác có thể thấy khá rõ trong code của rc.lua:
Ví dụ:
Tham khảo thêm file config của tôi ở đâyawful.key({ modkey, }, "Left", awful.tag.viewprev ), awful.key({ modkey, }, "Right", awful.tag.viewnext ), awful.key({ modkey, }, "Escape", awful.tag.history.restore),
Tương ứng:
Window + Left: Screen trước
Window + Right: Screen tiếp theo
Window + Escape: Screen vừa mới chuyển đến cửa sổ đang làm việc
Rules:
Đặc điểm này của awesome khá thú vị, nó cho phép 1 chương trình chỉ có thể xuất hiện ở 1 screen nhất định, mang lại trật tự cho màn hình và tăng hiệu suất công việc (giống như có nhiều màn hình vậy!)
{ rule = { class = "firefox" }, properties = { floating = true } }, -- Set Firefox to always map on tags number 3 of screen 1. { rule = { class = "Firefox" }, properties = { tag = tags[1][3] } },
Đoạn code trên sẽ đặt firefox luôn ở screen số 3 (web browser)
like mạnh, hay ấy à nha, phát huy đi thím :)
Trả lờiXóaPhần 3 chắc phải từ từ mới có :)
Xóa