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ụ:
awful.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)
Tham khảo thêm file config của tôi ở  đây

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

Vim - The Text Editor (Part I)