Mặt tối của bức tranh khảm (III): XMonad

Có vẻ như tôi đã cầu nguyện rất nhiều và chính vì vậy mà cho đến hôm nay tôi không đặt nặng một milimet nào. Như tôi đã hứa một lúc hôm nay tôi sẽ chia nhỏ xmonad.hs của tôi mà tôi đã chuẩn bị đặc biệt cho dịp này. Tệp này và các tệp cấu hình khác có trong Dán, cụ thể là màu sắc của bảng điều khiển, cài đặt cửa sổ y thanh trên cùng.

Bạn có thể tải chúng xuống từ đó và mở chúng trong trình soạn thảo văn bản yêu thích của bạn.

Trước

Trong trường hợp bạn đang thắc mắc, máy tính để bàn của tôi là một Openbox nhỏ trên nền Debian ổn định. Bỏ qua quá trình cài đặt phân phối vào lúc này, bạn nên xác minh rằng các gói cần thiết có trong kho lưu trữ. Hãy làm điều này (nhớ rằng tôi đang sử dụng Debian):

Sudo aptitude cài đặt ghc xmonad xmobar gmrun dmenu

Và sẵn sàng. Chúng tôi vừa cài đặt, theo thứ tự xuất hiện; Glasgow Haskell Compiler phụ trách biên dịch và thông dịch Haskell; XMonad, trình quản lý cửa sổ, XMobar là một thanh trình bày thông tin về hệ thống và một số trình khởi chạy chương trình, dmenu và gmrun; vui lòng đã được định cấu hình để XMonad khởi chạy chúng với Mod + P và Mod + Shift + P.

Và đây là những gì máy tính để bàn của tôi trông như thế nào. Tôi đặt nó để chúng ta có một điểm so sánh và mô phỏng một số thứ mà tôi đã định cấu hình trong một môi trường tối giản hơn.

Không có gì đặc biệt

Nhưng bất ngờ. XMonad chào đón chúng tôi như thế này. Trong ảnh chụp, tôi đã mở gmrun, để bạn có thể thấy rằng nó không bị hỏng:

Không có gì ngoạn mục

Và chúng tôi muốn nó trông như thế này, đã được định cấu hình và mọi thứ:

Vậy vâng

Ảnh chụp màn hình cho thấy một thiết bị đầu cuối đang chạy ncmpcpp, một ứng dụng khách MPD cho thiết bị đầu cuối; và một phiên GVim, cả hai đều có màu của bảng màu năng lượng mặt trời ánh sáng. Làm được điều này không thực sự khó và thậm chí Vim và urxvt đã sẵn sàng trên hệ thống của tôi.

Các xmonad.hs, thật đáng sợ!

Không có gì. Cấu hình bạn sắp xem cực kỳ đơn giản và cơ bản. Nó sẽ hoạt động trên tất cả các hệ thống với XMonad 0.9.1, mặc dù 0.10 đã có sẵn. Cũng sợ, rất sợ:

- Cấu hình Xmonad - Như bạn thấy, nó khá đơn giản import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "nitrogen --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3 ", focusBorderColor =" # 002b26 ", workspaces = wrk}` addedKeys` [((mod4Mask, xK_v), spawn "gvim"), ((mod4Mask, xK_c), spawn "mpc toggle"), ((mod4Mask, xK_a) , sinh ra "mpc trước"), ((mod4Mask, xK_s), sinh ra "mpc tiếp theo")] - Kết thúc cấu hình. Đơn giản, dễ dàng và sạch sẽ.

Chuyện gì đã xảy ra ở đây?

Nếu họ đã phục hồi sau cơn sợ hãi, chúng tôi có thể thấy rằng cấu hình của chúng tôi chỉ đạt 30 dòng mã. Tôi sẽ giải thích từng phần một, tại sao nếu bạn sao chép và dán đoạn này, XMonad sẽ biên dịch chương trình chúng ta vừa viết. Sẵn sàng?

Phần phụ thuộc

Gần đầu tệp có ba dòng bắt đầu bằng từ khóa nhập khẩu. Như trong các ngôn ngữ lập trình khác, nó gửi trình biên dịch để tìm mô-đun mà nó muốn và nó cung cấp cho nó các chức năng của mô-đun may mắn. Hãy cùng xem lại:

nhập XMonad Nhập XMonad.Util.EZConfig nhập XMonad.Util.Run

Chương trình của chúng tôi sử dụng ba phần phụ thuộc. Phần đầu tiên mang đến cho chúng ta các chức năng riêng của XMonad, phần thứ hai và thứ ba sẽ giúp chúng tôi sau này xác định các phím tắt và chạy chương trình. Cứ đi đi.

Biến

Đó là công việc và để làm gì? Hãy đánh giá kỹ mã hơn:

wrk = ["A", "C", "G", "T"]

công việc là một biến, tương đương với danh sách bốn phần tử, tất cả các chuỗi; bởi vì danh sách Haskell chỉ chấp nhận một loại mục. Nếu bạn đang thắc mắc tại sao tôi lại chọn bốn chữ cái đó cho máy tính để bàn của mình, thì tôi nhớ bốn cơ sở nucleic của DNA.
Tên chỉ là một chữ viết tắt, và chúng tôi có thể đặt nó là myWorkspaces, pepitoRojo hoặc bất cứ thứ gì, miễn là nó bắt đầu bằng chữ thường và chúng tôi chỉ định nó trong phần tiếp theo.
Ở đây bắt đầu điều tốt về việc có một ngôn ngữ lập trình hoàn chỉnh theo ý của chúng ta, bởi vì chúng ta có thể xác định màu của cửa sổ từ một biến:

windowColor = "#FFFFFF"

Hoặc thậm chí tạo một hàm trả về màu sắc theo tâm trạng của chúng ta:

moodColor m | m == "Sad" = "# b0c4f6" - Cái gì đó giống như màu xanh lam | m == "Angry" = "# ba3f3f" - Cái gì đó giống như màu đỏ | m == "Happy" = "# 8bff7e" --Một cái gì đó giống màu xanh lá cây | nếu không thì = "#FFFFFF" - Màu trắng, cho những ngày trung lập

Và nhiều hơn nữa. Bạn đã cảm thấy sức mạnh trên ngón tay của mình chưa? Một điều. Nếu bạn không hiểu chuyện gì đã xảy ra, hãy nghĩ rằng đây là cấu trúc riêng của Haskell mà chúng tôi gọi là bảo vệ và về cơ bản nó giống như một cây if-then-else, nhưng có tổ chức hơn và đẹp hơn. Và đừng lo lắng, mã do tôi viết và nó hoạt động tốt.

Phần chính

Từ dòng cho biết chính = làm chúng tôi bắt đầu xác định hành vi của XMonad. Hãy bình tĩnh xem nó.

Bắt đầu mọi thứ

Điều này có thể đạt được theo nhiều cách, nhưng để tránh sự phụ thuộc và làm cho mã sạch hơn, mặc dù rõ ràng hơn, tôi đã chọn điều này:

xmproc <- spawnPipe "xmobar" spawn "nitrogen --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

Dòng đầu tiên bắt đầu XMobar, có tệp cấu hình mà chúng ta sẽ thấy sau.
Sau đó, chúng tôi bắt đầu một số thứ cần thiết đối với tôi, một hình nền đẹp (giống như trong ảnh chụp màn hình đầu tiên), một con quỷ khiến urxvt chạy như gió, con quỷ của mpd -mà chơi nhạc của tôi ngay từ đầu và tôi không bao giờ đóng - và một điều khiển âm lượng. Đúng vậy. Cú pháp giống nhau nếu bạn muốn bắt đầu những gì bạn cần.

Điều chỉnh cuối cùng

Ở đây chúng tôi xác định một số thứ thường chỉ là sở thích cá nhân. Ví dụ: tôi thích sử dụng phím Super vô dụng bình thường (hiệu quả là một cửa sổ) thay vì Alt, nhưng đó là sở thích của tôi. Nếu bạn muốn quay lại Super, hãy bỏ dòng đầu tiên.

- ... xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3", focusBorderColor = "# 002b26", workspaces = wrk} - ...

Sau đó, chúng tôi xác định thiết bị đầu cuối của mình, urxvtc, bởi vì đó là những gì chúng tôi gọi là khách hàng của con quỷ mà chúng tôi đã chạy trước đó. Những thứ khác, như danh sách không gian làm việc, mà chúng ta có thể đưa vào những thứ như:

, workspaces = ["H", "O", "L", "A"], workspaces = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], vùng làm việc = [" 1: web "," 2: nhạc "," 3: dung lượng chưa sử dụng "," 4: Ufff "]

Và những thứ khác mà quá trình xử lý danh sách chuỗi của Haskell cho phép chúng tôi.
Độ dày của đường viền chỉ là một số nguyên và nếu chúng ta muốn thay đổi màu của cửa sổ được tập trung bởi hàm tâm trạngMàu sắc mà chúng tôi vừa tạo, bởi vì chúng tôi để biến như thế này:

--..., focusBorderColor = moodColor "Hạnh phúc" - ...

$ Trên dòng xmonad ... nó chỉ là một ứng dụng của các hàm liên kết đúng, tức là chúng ta lưu một vài dấu ngoặc đơn. 😀

Các phím tắt bàn phím

Ở cuối tệp, chúng tôi có một danh sách các bộ chứa một số phím tắt, trong trường hợp này, chúng khởi chạy GVim, tạm dừng hoặc phát nhạc và tiến hoặc trì hoãn nó. Đó là nó. Hàm addKeys có trong mô-đun thứ hai mà chúng tôi nhập và các dấu phía sau làm cho nó thực thi theo kiểu của hàm div (/) như 1/2 chứ không phải div 1 2, giúp dễ đọc hơn. Nên nó là:

- ...} `addKeys` [((mod4Mask, xK_v), sinh sản" gvim "), ((mod4Mask, xK_c), sinh sản" mpc toggle "), ((mod4Mask, xK_a), sinh sản" mpc trước ") , ((mod4Mask, xK_s), sinh ra "mpc next")]

.Xmobarrc

Cấu hình {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Top , lowOnStart = False, command = [Run Com "echo" ["$ USER"] "username" 864000, Run Com "hostname" ["-s"] "hostname" 864000, Run Com "mpc current" [""] "mpd" 10, Ngày chạy "% a% b% d" "date" 36000, Ngày chạy "% H:% M" "time" 10, Chạy StdinReader], sepChar = "'", alignSep = "} {" , template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"

Điều này sẽ hoạt động, và nó thực sự có hiệu quả. Cú pháp phức tạp hơn một chút và tốt nhất là bạn nên tự phân tích để hiểu nó. Vì vậy, tôi sẽ chỉ giới hạn bản thân khi nói với bạn rằng chúng tôi đang mô tả các lệnh, các tùy chọn của chúng và một số cài đặt bổ sung, sẽ được hiển thị trong XMobar.
Dòng mẫu có tất cả các thao tác và tôi đã nghĩ ra một mẹo để thể hiện bài hát tôi đang nghe. Thủ thuật này và một thủ thuật để thay đổi bài hát cho các phím tắt yêu cầu mpc, một ứng dụng khách mpd có thể thực thi từ thiết bị đầu cuối.

Kết luận

Đó là nó, tôi nghĩ. Chúng tôi đã xem xét tệp XMonad chính và bắt đầu học Haskell cho dù chúng tôi có muốn hay không. Nếu bạn muốn tiếp tục, có một hướng dẫn rất tốt để bắt đầu.
Trong phần tiếp theo, chúng ta sẽ khám phá các trình quản lý không lập trình được, cụ thể là Spectrwm / Scrotwm. Hẹn gặp lại bạn.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   ivanovblack dijo

    !Tuyệt diệu!

    Spectrwm lần sau? !Vâng thưa ngài!

  2.   TheSandman86 dijo

    Hướng dẫn rất tốt, nó trông rất thú vị, tôi muốn xem qua, mặc dù tôi cảm thấy thoải mái hơn với Openbox của mình.

  3.   chống dijo

    Rất tiếc, tôi đã bỏ lỡ việc xác định vị trí của các tệp này, nhưng khi tôi chỉnh sửa bài đăng, nó sẽ gửi cho tôi thông báo lỗi:
    Lỗi nghiêm trọng: Gọi đến hàm không xác định get_header () trong /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php trên dòng
    Nếu ai đó có thể chỉnh sửa nó, họ sẽ làm như thế này:

    Tệp cấu hình chính: ~ / .xmonad / xmonad.hs
    Tệp Xmobarrc: ~ / .xmobarrc
    Tệp cấu hình bảng điều khiển: ~ / .Xdefaults
    ????

    1.    chống dijo

      Tôi dường như không thể chỉnh sửa bài viết của chính mình. Tôi cũng không thể tìm thấy tùy chọn ở bất kỳ đâu trên máy tính để bàn. Tôi có một vài lỗi, đó là nó, các bản sửa lỗi tối thiểu.

  4.   Nano dijo

    Chà, tôi thấy nó rất thú vị vì nó có hiệu quả hơn khi nói đến lập trình. Tôi muốn gây rối với Awesome vì tôi thực sự muốn học LUA.

    Nó tồn tại đối với những người trong chúng ta lập trình bằng Python Qtile, nhưng sự thật là tôi không thể làm cho nó chạy, tôi đang sử dụng Ubuntu và tôi đã cài đặt nó qua PPA và cũng từ các nguồn nhưng điều đáng tiếc là không muốn hoạt động xD

    Dù sao thì LUA cũng là thứ mà mình PHẢI học hỏi và còn gì tuyệt hơn khi được nhìn mặt nhau với kiểu ốp này.

    Hãy tiếp tục chống lại, bạn đang trên đường trở thành một Tác giả trong vòng DesdeLinux

    1.    Nano dijo

      Và vâng, tôi đang học đại học và họ không có Linux xD

      1.    chống dijo

        Cảm ơn nano. Nhưng, bạn có thể giúp tôi chỉnh sửa các bài báo sau khi chúng được xuất bản không? Tôi không thể.

        1.    nano dijo

          Vâng, bình tĩnh, để chúng khi chúng vừa vặn hơn là tôi sửa chúng

  5.   xykyz dijo

    Cảm ơn anti, chắc chắn mình sẽ thử XMonad. Tôi thấy rằng nó sử dụng những thứ Haskell cơ bản mà không cần nhiều phức tạp như bảo vệ, toán tử ứng dụng và rõ ràng là sử dụng danh sách (nếu không nó sẽ không phải là Haskell xD).

    Hãy xem nó như thế nào! 🙂

  6.   Fernando dijo

    Tôi đã sử dụng trình quản lý cửa sổ lát gạch trong một thời gian dài, Tuyệt vời. Khi có thời gian, tôi sẽ làm một bài hướng dẫn trong đó tôi hy vọng sẽ giải thích toàn bộ quá trình, từ cài đặt tuyệt vời đến cấu hình một bộ chương trình nhẹ và tạo chủ đề của riêng chúng tôi.

    Nếu không sao với bạn, khi nào có tôi có thể cho bạn biết để bạn đăng lên đây.

    Nhân tiện và với sự cho phép của bạn, tôi sẽ công khai một chút trên trang web nhỏ của mình, nếu bạn muốn bạn có thể xem, trong trường hợp bạn quan tâm đến bất kỳ ấn phẩm nào:

    http://niferniware.sytes.net

    Một lời chào!

    1.    msx dijo

      Nếu đó là Awesome 3, tôi chắc chắn quan tâm đến nó.

  7.   Fernando dijo

    Một chi tiết, phần của trang web mà tôi đã lưu trữ blog là:
    http://niferniware.sytes.net/blog/

    Tôi xin lỗi về sai lầm.

    Một cổ vũ!

    1.    sống động dijo

      Tôi thực sự thích blog của bạn… ^^

      1.    Fernando dijo

        Cảm ơn bạn rất nhiều Elav, chúng tôi đang liên hệ!

        Sự thật là theo một cách nào đó DesdeLinux Nó thôi thúc tôi tạo blog của riêng mình. Quá nhiều thời gian sử dụng Linux khiến người ta cân nhắc việc đóng góp một điều gì đó ^^

        Một lời chào!

  8.   msx dijo

    "Nếu bạn đang thắc mắc tại sao tôi lại chọn bốn chữ cái đó cho bàn làm việc của mình, thì tôi đã nhớ ra bốn cơ sở nucleic của DNA."
    Ngọt ngào, +1

    1.    chống dijo

      Tôi thực sự thích ý tưởng đặt DNA trên bàn làm việc của mình.

  9.   halonsov dijo

    Hướng dẫn xuất sắc, cảm ơn cô ấy Tôi chỉ đang thử xmonad, và tôi chỉ có thể nói một điều về nó, tôi đã yêu xmonad, tôi vẫn chưa đặt tay vào nó và nó vẫn có vẻ xuất sắc, cảm ơn bạn rất nhiều

    1.    msx dijo

      Tuyệt vời, chúng tôi hy vọng sẽ thấy tiến trình của bạn được chuyển thành một bài đăng! =)

  10.   Victor Salmeron dijo

    Một nhận xét nhỏ đối với người dạy kèm, tại thời điểm này, tôi sử dụng Debian ổn định (Squeeze) và để cài đặt dmenu, việc cài đặt dmenu không được thực hiện với dmenu aptitude install, nhưng với gói công cụ vô cùng hấp dẫn, ngược lại, hướng dẫn tuyệt vời

    1.    chống dijo

      Cùng một năng khiếu sửa chữa nó. Ngoài ra, thứ tự được hiểu rõ hơn như thế này.

  11.   tarantonium dijo

    Hướng dẫn này giả sử bạn đã cài đặt x.
    Trong trường hợp của tôi, tôi chỉ bắt đầu từ bảng điều khiển debian, vì vậy tôi phải cài đặt xorg. Sẽ ổn thôi, vì những gì chúng tôi đang tìm kiếm là một môi trường tối giản, bắt đầu từ một debian không có môi trường đồ họa, cài đặt xmonad ở chế độ đơn giản và thêm các công cụ và chương trình điều khiển, chẳng hạn như mutt, irssi, v.v.

    1.    chống dijo

      Có, Xs đã được bật. Bản thân bài đăng giải thích rằng tôi đã bắt đầu với một Debian tối thiểu đã được tạo sẵn với Openbox.