최근 많은 개발자들이 효율적이고 유연한 윈도우 관리 시스템을 찾고 있습니다. 특히, 기존의 전통적인 윈도우 매니저들이 갖고 있는 설정의 번거로움과 비효율성을 개선하고자 하는 움직임이 보이고 있습니다. 이런 점에서 OXWM은 매력적인 대안으로 떠오르고 있습니다. OXWM은 Zig 언어로 작성된 동적 윈도우 매니저로, 기존의 dwm에서 영감을 받아 더 발전된 기능을 제공합니다. 이 글에서는 OXWM의 주요 기능, 설치 방법, 기본 사용법을 살펴보고, 실제로 어떻게 활용할 수 있을지에 대해 이야기해보겠습니다.

OXWM의 주요 기능과 특징

OXWM은 사용자 친화적인 설정을 제공하며, 기존의 suckless 철학을 탈피하여 보다 직관적인 사용 경험을 제공합니다. 다음은 OXWM의 주요 기능입니다.

1. 직관적인 Lua API

OXWM은 Lua 스크립트를 사용하여 설정할 수 있는 기능을 제공합니다. 이를 통해 사용자는 코드를 쉽게 이해하고 수정할 수 있습니다. 또한, 설정을 수정한 후 즉각적인 반영이 가능하여 재부팅 없이도 환경을 최적화할 수 있습니다.

2. 핫 리로딩 지원

OXWM은 설정 파일을 수정한 후 Mod+Shift+R 키 조합으로 즉시 적용할 수 있는 핫 리로딩 기능을 제공합니다. 이를 통해 사용자는 설정 변경을 보다 쉽게 반영할 수 있습니다.

3. 사용자 정의 가능한 상태 표시줄

OXWM은 사용자가 원하는 상태 정보를 표시할 수 있는 상태 표시줄을 지원합니다. 이를 통해 RAM 사용량, 시간 등 다양한 정보를 실시간으로 확인할 수 있습니다.

4. 기본값 및 LSP 지원

OXWM은 최적화된 기본값을 제공하며, LSP(언어 서버 프로토콜)를 통한 코드 완성 기능도 지원합니다. 이를 통해 사용자는 보다 효율적으로 스크립트를 작성할 수 있습니다.

OXWM 설치하기

OXWM은 여러 리눅스 배포판에서 쉽게 설치할 수 있습니다. 아래는 NixOS와 Arch Linux에서의 설치 방법입니다.

NixOS에서 설치하기

  1. configuration.nix 파일에 다음 코드를 추가합니다.
  2.     { config, pkgs, ... }:
        
        {
          services.xserver.windowManager.oxwm.enable = true;
        }
  3. 시스템을 재구성하고 로그인합니다.
  4. sudo nixos-rebuild switch
  5. 최초 실행 시 ~/.config/oxwm/config.lua 파일이 자동 생성됩니다. 이 파일을 수정한 후 Mod+Shift+R로 리로드합니다.
  6. Arch Linux에서 설치하기

  7. AUR에서 설치합니다.
  8. yay -S oxwm-git
  9. 수동으로 설치하는 경우 필요한 패키지를 설치합니다.
  10. sudo pacman -S zig libx11 libxft freetype2 fontconfig libxinerama
  11. 소스에서 빌드하려면 다음 명령어를 실행합니다.
  12. git clone https://github.com/tonybanters/oxwm
    cd oxwm
    zig build -Doptimize=ReleaseSmall

    기본 사용법

    OXWM의 설정 파일은 Lua로 작성됩니다. 기본 설정을 수행하는 방법은 다음과 같습니다.

  13. 기본 옵션 설정:
  14.     -- 기본 옵션 설정
        oxwm.set_terminal("st")
        oxwm.set_modkey("Mod4")
        oxwm.set_tags({ "1", "2", "3", "4", "5", "6", "7", "8", "9" })
  15. 테두리 및 색상 구성:
  16.     -- 테두리 설정
        oxwm.border.set_width(2)
        oxwm.border.set_focused_color("#6dade3")
        oxwm.border.set_unfocused_color("#bbbbbb")
  17. 간격 설정:
  18.     -- 간격 설정
        oxwm.gaps.set_enabled(true)
        oxwm.gaps.set_inner(5, 5)  -- 수평, 수직
        oxwm.gaps.set_outer(5, 5)
  19. 키 바인딩 추가:
  20.     -- 키 바인딩 설정
        oxwm.key.bind({ "Mod4" }, "Return", oxwm.spawn("st"))
        oxwm.key.bind({ "Mod4" }, "Q", oxwm.client.kill())
        oxwm.key.bind({ "Mod4", "Shift" }, "Q", oxwm.quit())
  21. 상태 표시줄 설정:
    -- 상태 표시줄 블록 추가
    oxwm.bar.set_blocks({
        oxwm.bar.block.datetime({
            format = "{}",
            date_format = "%H:%M",
            interval = 60,
            color = "#0db9d7",
            underline = true,
        }),
        oxwm.bar.block.ram({
            format = "RAM: {used}/{total} GB",
            interval = 5,
            color = "#7aa2f7",
            underline = true,
        }),
    })

실무에서의 활용 시나리오

개발 환경에서 OXWM을 사용하는 것은 여러모로 유용합니다. 예를 들어, 다수의 터미널 창을 동시에 열어야 하는 상황에서 OXWM의 태그 시스템을 활용하면 각 작업을 효율적으로 관리할 수 있습니다. 또한, 상태 표시줄에 RAM 사용량을 표시함으로써 시스템 자원을 실시간으로 모니터링하며 작업할 수 있습니다.

비슷한 도구와의 비교

OXWM과 유사한 도구로는 i3, bspwm 등이 있습니다. 이들 도구는 각각 고유의 장점이 있지만, OXWM은 Lua API를 통한 간편한 설정과 핫 리로딩 기능으로 인해 더욱 직관적인 사용자 경험을 제공합니다. 특히, Zig 언어의 성능을 활용하여 보다 경량화된 환경을 제공하는 점에서 OXWM은 새로운 선택지가 될 수 있습니다.

마무리

OXWM은 직관적인 설정과 효율적인 작업 관리를 통해 개발자들에게 유용한 도구가 될 것입니다. 특히, 윈도우 관리에 있어 번거로움이 많았던 사용자들에게 새로운 경험을 선사할 것입니다. 만약 여러분이 더 나은 윈도우 환경을 원하신다면 OXWM을 한 번 사용해 보시기 바랍니다.

GitHub에서 OXWM을 확인하시고, 프로젝트에 참여하거나 문서를 살펴보세요: OXWM GitHub