순수한 WPF(Windows Presentation Foundation)는 리눅스에서 작동하지 않습니다.
그 이유는 WPF가 가속화를 위해 Windows의 DirectX를 사용하며, 내부적으로 **Windows API(User32, GDI+ 등)**에 매우 강하게 결합되어 있기 때문입니다. 마이크로소프트가 .NET Core/5+를 통해 .NET 자체는 오픈 소스화하고 크로스 플랫폼으로 만들었지만, WPF와 WinForms 라이브러리는 윈도우 전용으로 남겨두었습니다.
하지만 C#과 XAML 기술을 그대로 활용하여 리눅스용 데스크톱 프로그램을 만들 수 있는 확실한 대안들이 있습니다.
WPF 개발자에게 가장 익숙하고 강력한 도구입니다.
.dotnet 템플릿을 통해 쉽게 시작할 수 있습니다.Wine을 사용할 수 있습니다. 하지만 .NET 프레임워크 설치가 까다롭고, UI 렌더링 성능이 떨어지거나 오류가 발생할 확률이 매우 높습니다.리눅스 개발 환경(예: Ubuntu)에서 dotnet SDK를 설치하고 Avalonia 템플릿을 사용해 보시면 WPF 개발 경험을 그대로 이어가실 수 있을 것입니다.
Avalonia UI를 개발하고 관리하는 주체는 에스토니아에 본사를 둔 **'AvaloniaUI OÜ'**라는 기업입니다.
주요 특징은 다음과 같습니다.
Avalonia UI 프레임워크 자체는 MIT 라이선스를 따르는 오픈 소스 프로젝트입니다. 누구나 무료로 사용할 수 있으며, 전 세계 개발자들이 기여하고 있습니다. 하지만 'AvaloniaUI OÜ' 회사는 이 생태계를 유지하기 위해 다음과 같은 유료 서비스와 제품을 제공하며 수익을 창출합니다.
Avalonia UI는 **'AvaloniaUI OÜ'**라는 전문 기업이 주도하는 오픈 소스 프로젝트입니다. 이들은 단순한 오픈 소스 관리를 넘어, XPF라는 제품을 통해 "기존 WPF 앱의 리눅스 이식"을 사업화하고 있는 기업이기도 합니다.
만약 질문하신 목적이 **"이미 개발된 방대한 WPF 프로그램을 수정 없이 리눅스에서 돌리는 것"**이라면, 이 회사의 Avalonia XPF라는 제품을 조사해 보시는 것이 가장 정확한 방법입니다. (단, XPF는 유료 상용 라이선스입니다.)
Avalonia UI로 개발할 때 사용할 수 있는 도구는 매우 다양하며, 리눅스에서 개발하느냐 윈도우에서 개발하느냐에 따라 선택지가 달라집니다. 가장 대중적인 순서대로 소개해 드립니다.
리눅스, macOS, 윈도우 어디서든 사용할 수 있는 유료 IDE입니다.
무료이며 리눅스에서도 아주 잘 작동하는 가벼운 도구입니다.
윈도우에서 개발하여 리눅스로 배포하는 환경이라면 가장 익숙한 도구입니다.
# Avalonia 템플릿 설치
dotnet new install Avalonia.Templates
# 새 프로젝트 생성
dotnet new avalonia.app -o MyAvaloniaApp
F12를 누르면 브라우저의 '개발자 도구'처럼 현재 UI의 속성, 레이아웃, 데이터 바인딩 상태를 실시간으로 확인하고 수정할 수 있는 도구가 앱 내부에 포함되어 있습니다. (매우 강력한 기능입니다.)WPF 개발자라면: XAML 작성 방식이나 데이터 바인딩(MVVM) 구조가 거의 같아서 도구만 적응하시면 금방 리눅스용 앱을 만드실 수 있습니다.
Avalonia UI를 배우기 위한 가장 좋은 자료들을 단계별로 정리해 드립니다. Avalonia는 공식 문서가 매우 잘 되어 있는 편입니다.
가장 먼저 확인해야 할 단계별 가이드입니다.
특정 기능을 어떻게 구현하는지 코드 조각(Snippets) 위주로 보고 싶을 때 유용합니다.
Avalonia에서 제공하는 모든 UI 컨트롤(Button, ListBox, DataGrid 등)이 어떻게 생겼고 어떻게 작동하는지 한눈에 볼 수 있는 데모 앱입니다.
WPF 경험이 있으시다면 아래 차이점만 먼저 파악하셔도 습득 속도가 매우 빠릅니다.
{Binding ...} 대신 {CompiledBinding ...} 사용을 권장합니다. (데이터 타입을 미리 지정)Button.h1, StackPanel > TextBlock)을 사용합니다.F12를 눌러서 UI 요소의 마진, 패딩, 바인딩 값을 즉석에서 수정해보는 연습을 꼭 해보세요. 개발 시간이 획기적으로 줄어듭니다.처음 시작하신다면 공식 문서의 **[Music Store 앱 만들기]**를 처음부터 끝까지 따라해보시는 것을 가장 강력하게 추천드립니다.
네, Avalonia UI로 모바일 앱(Android, iOS) 개발이 가능합니다.
Avalonia UI는 버전 11.0(2023년 출시)부터 **'Single Codebase, Everywhere'**를 슬로건으로 내걸고 데스크톱뿐만 아니라 모바일과 웹브라우저까지 완벽하게 지원하기 시작했습니다.
모바일 개발과 관련한 주요 특징은 다음과 같습니다.
Avalonia Cross-Platform Application 템플릿을 선택하면, 하나의 솔루션 안에 데스크톱, 안드로이드, iOS 프로젝트가 함께 생성됩니다.C# 모바일 개발의 공식 표준인 .NET MAUI와 비교하면 다음과 같은 차이가 있습니다.
| 구분 | .NET MAUI | Avalonia UI |
|---|---|---|
| UI 렌더링 | 플랫폼별 네이티브 컨트롤 사용 | 자체 엔진(Skia)으로 직접 그림 |
| 디자인 일관성 | OS마다 조금씩 다를 수 있음 | 모든 플랫폼에서 완전히 동일함 |
| 리눅스 지원 | 공식 지원 안 함 (커뮤니티 지원) | 공식적으로 매우 강력하게 지원 |
| 학습 곡선 | 새로운 MAUI 방식 학습 필요 | WPF 개발자에게 매우 익숙함 |
장점:
단점:
만약 **"리눅스용 데스크톱 프로그램을 만들면서, 같은 코드로 안드로이드나 iOS 앱도 출시하고 싶다"**는 목표가 있다면 Avalonia UI는 현재 가장 훌륭한 선택지 중 하나입니다.
시작하시려면 터미널에서 다음 명령어로 템플릿을 설치해 보세요:
dotnet new install Avalonia.Templates
그 후 Avalonia Cross-Platform Application 프로젝트를 생성하여 구조를 살펴보시는 것을 추천합니다.
Avalonia UI와 **코틀린 멀티플랫폼(Kotlin Multiplatform, 이하 KMP)**은 현재 크로스 플랫폼 시장에서 가장 주목받는 기술들이지만, **"어떤 플랫폼을 주력으로 하느냐"**에 따라 완성도와 활성도의 평가가 완전히 달라집니다.
결론부터 말씀드리면, 데스크톱(리눅스/윈도우)이 주력이라면 Avalonia UI가, 모바일(Android/iOS)이 주력이라면 KMP가 더 우위에 있습니다.
상세한 비교는 다음과 같습니다.
| 구분 | Avalonia UI | Kotlin Multiplatform (Compose MP) |
|---|---|---|
| 데스크톱 (Win/Linux/Mac) | 매우 높음. 처음부터 데스크톱을 위해 설계되었으며, 리눅스 지원은 현존 최강입니다. | 보통. JetBrains가 만들었으나, 데스크톱 UI의 세밀한 기능은 Avalonia보다 부족할 수 있습니다. |
| 모바일 (Android/iOS) | 보통. 버전 11부터 정식 지원하지만, 모바일 특유의 생태계 대응은 이제 막 성숙해지는 단계입니다. | 높음. KMP의 로직 공유는 이미 완성형이며, UI(Compose)도 iOS에서 안정권(Stable)에 진입했습니다. |
| 웹 (WebAssembly) | 지원함 (상당히 안정적) | 지원함 (현재 활발히 개발 중) |
KMP (Kotlin Multiplatform):
Avalonia UI:
Avalonia UI (UI 중심 공유):
KMP (비즈니스 로직 중심 공유):
이런 경우라면 Avalonia UI를 선택하세요:
이런 경우라면 KMP를 선택하세요:
현재 **전체적인 인지도와 커뮤니티 규모(활성화)**는 KMP가 더 큽니다. 하지만 질문하신 취지가 **"리눅스에서 작동하는 C# 프로그램"**에서 시작된 것이라면, 그 분야에서는 Avalonia UI가 KMP보다 훨씬 더 성숙하고 강력한 도구임을 확실히 말씀드릴 수 있습니다.