TL;DR

  • RC Desktop은 Windows 11 WSL 컨테이너 프리뷰(WSLC)에서 실행되는 컨테이너를 관리하는 Rust·Slint 기반 앱으로, Docker Desktop이나 Rancher Desktop 같은 기능을 작은 앱으로 제공함.
  • 컨테이너·이미지·볼륨·네트워크 관리와 로그 확인, 셸 실행, 새 컨테이너 배포를 지원하며 Compose 스택은 rcompose로 처리함.
  • wslc.exe 명령은 동시 호출 시 ERROR_SHARING_VIOLATION (0x80070020)이 발생할 수 있어 단일 큐에서 실행하고, 오류 발생 시 백오프를 적용해 재시도함.
  • 설치 프로그램은 관리자 권한 없이 사용자별로 앱과 rcompose를 설치하며, x64와 ARM64를 지원하고 설치 없이 실행할 수 있는 압축 파일도 제공함.
  • 시스템 트레이 상주, Windows 시작 시 자동 실행, WSLC 세션 상태 확인과 정리 기능을 제공하며, 소스 빌드에는 Rust 1.80 이상이 필요함.

RC Desktop 소개

  • RC Desktop은 WSL Containers(wslc.exe)에서 실행되는 컨테이너를 관리하는 소형 Windows 앱임.
  • Docker Desktop이나 Rancher Desktop과 비슷한 기능을 제공하되, Electron 앱을 포함하지 않도록 Rust와 Slint로 구현했으며, 빠르게 시작되고 메모리 사용량이 적으며 내부적으로 wslc.exe를 호출함.
  • 초기 단계의 앱이며 개인 사용을 위해 만들어져 거친 부분이 있을 수 있음.

주요 기능

  • 컨테이너 목록을 표시하며, Compose 프로젝트를 스택 단위로 묶어 한 번에 시작하거나 중지할 수 있고, Compose의 down처럼 컨테이너와 네트워크를 제거하면서 볼륨은 유지함.
  • 컨테이너 시작, 중지, 재시작, 제거와 로그 및 검사 결과 확인을 지원함.
  • Portainer 방식의 새 컨테이너 배포를 세 가지 방식으로 지원함.
  • 폼에서 이름, 이미지, 포트, 환경 변수, 볼륨, 네트워크, CPU·메모리 제한, 실행 옵션을 입력하며, 이에 대응하는 wslc run 명령 미리보기를 제공함. 이미지의 ‘Run’ 버튼은 입력값이 미리 채워진 폼을 엶.
  • Compose에서는 docker-compose.yml을 붙여 넣거나 열어 배포하며, rcompose up -d 실행 결과를 앱에 표시함. wslc에는 자체 Compose 명령이 없으며, rcompose는 RC Desktop에 포함됨. 설치되어 있지 않으면 앱이 사용자별 설치를 제안하며, 체크섬을 검증하고 관리자 권한을 요구하지 않음.
  • docker run 명령을 붙여 넣으면 해당 명령을 wslc run으로 변환함.
  • Windows Terminal을 통해 컨테이너 셸을 열 수 있음.
  • 이미지 목록 확인, 이미지 가져오기와 제거, 볼륨 및 네트워크 목록 확인과 삭제를 지원함.
  • 공개된 포트는 링크로 표시되며, 링크를 열면 브라우저에서 http://localhost:<port>로 이동함.
  • WSLC 페이지에서 런타임 버전과 세션(wslc info)을 확인할 수 있으며, 컨테이너·이미지·네트워크·볼륨 정리(prune), wslc 설정 파일 바로 가기, 문서 링크를 제공함.
  • WSL 세션 상태를 표시하고 앱이 관리자 권한으로 실행 중일 때 경고함.
  • 앱 창을 닫아도 시스템 트레이에서 실행을 유지하며, 툴팁에 실행 중인 컨테이너 수를 표시함. 트레이 메뉴에는 문제가 발생했을 때 사용할 wsl --shutdown 바로 가기가 있음.
  • 설정 페이지, 트레이 메뉴 또는 설치 프로그램에서 Windows 시작 시 실행을 설정할 수 있으며, 자동 실행 시 트레이로 바로 시작함.

동시 실행 처리

  • wslc는 동시에 호출되는 명령을 처리하는 데 문제가 있으며, 두 명령이 동시에 실행되면 ERROR_SHARING_VIOLATION (0x80070020)이 발생할 수 있음.
  • 앱은 모든 명령을 단일 큐에서 실행하고 해당 오류가 발생하면 백오프를 적용해 재시도함.

설치

  • rcdesktop-setup.exe를 내려받아 실행하면 관리자 권한 없이 사용자 계정에 RC Desktop을 설치함.
  • 설치 항목에는 Compose 스택용 rcompose, 시작 메뉴 바로 가기, 제거 프로그램이 포함되며, 선택적으로 Windows 시작 시 RC Desktop을 실행할 수 있음.
  • x64와 ARM64를 지원하며, 선택적으로 rcompose를 PATH에 추가해 터미널에서도 사용할 수 있음.
  • 설치 프로그램을 원하지 않으면 릴리스에 포함된 rcdesktop-x86_64-pc-windows-msvc.zip 또는 ARM64용 압축 파일을 풀어 rcdesktop.exe를 실행하면 됨. rcompose.exe는 같은 폴더에 있어야 함.
  • Windows 11과 WSL 컨테이너 프리뷰(wslc.exe)가 필요함.

소스에서 빌드

  • 최신 Rust 툴체인인 Rust 1.80 이상이 필요하며, 릴리스 모드 실행은 cargo run --release로 수행함.
  • wslc 없이 UI를 작업하거나 가짜 데이터로 확인하려면 목(mock) 모드를 사용할 수 있음. cargo run -- --mock으로 실행하거나 RCDESKTOP_MOCK 환경 변수를 1로 설정한 뒤 실행함.
  • 테스트는 cargo test로 실행함.

코드 구성

  • ui/: 메인 창, 테마, 구성 요소와 각 화면별 Slint 파일.
  • src/wslc/: 명령 큐, 출력 파싱, 목 클라이언트 등 wslc.exe와 통신하는 코드.
  • src/domain/: 컨테이너, 이미지, 볼륨, 네트워크, 세션의 기본 타입.
  • src/rcompose.rs: Compose 스택용 rcompose 탐색, 설치, 실행.
  • src/app.rs: Tokio 워커와 Slint 이벤트 루프를 연결하는 코드.
  • src/tray.rs: 시스템 트레이 아이콘.

라이선스

  • MIT 라이선스임.