Jak na Linuxu (skoro) pohodlně spustit Windows aplikaci
S příchodem Windows 11 jsem se definitivně rozloučil s oknama a dal volný průchod nejmenované linuxové distribuci, kterou jsem je nahradil. Myslím si, že pro někoho, kdo programuje a chce se ve věcích vrtat o trochu víc než průměrný (STRAŠNĚ RÁD používám pojem hloupý uživatel*) uživatel, to není vůbec špatná věc.
Co nejhoršího se může stát? Člověk špatně nainstaluje zavaděč (přece nechci bootovat), omylem si zcihluje systém... Tohle jsou věci, které způsobí obvykle lidská blbost (prostě to tak je). Protože... s velkou mocí přichází velká zodpovědnost. Wow. Prostě je to něco za něco. Člověk má nad svým strojem větší moc, ale uživatelská přívětivost nebo softwarová výbava může zezačátku drhnout (pro člověka zvyklého jenom na Windows - to já naštěstí nejsem). A to je důvod proč jsem zjistil, že si chci na Linuxovou distribuci nainstalovat PowerPoint (ne že bych nebyl spokojen s OnlyOffice, ale chybí mi tam Designer funkce, aby ta prezentace vizuálně za něco stála).

Proto vznikl tento návod, jak pomocí projektu WinApps spustit skoro nativně Windows aplikace v Linuxovém prostředí. Díky WinApps (cituju) můžete "spouštějte aplikace pro Windows (včetně Microsoft 365 a Adobe Creative Cloud) na GNU/Linuxu s KDE Plasma, GNOME nebo XFCE, které jsou integrovány tak hladce, jako by byly nativní pro daný operační systém". To prostě znamená že pohodlně a bez problému.
1) Konfigurace virtálního Windows kontejneru
Prvním krokem je konfigurace virtuálního Windows, ze kterého se budou aplikace spouštět. V principu se totiž aplikace spustí na virtuálním Windowsu na vašem počítači a obsah okna je vzdálenou plochou přenášen tak, aby to vypadalo, že se jedná o nativní program. (Jde dokonce nakonfigurovat i spouštění na již existující vzdálené ploše bez použití lokální virtualizace, já ale budu virtualizovat lokálně pomocí Dockeru)
Virtuální Windows může být realizován třemi způsoby: Docker, Podman nebo libvirt. V tomto návodu použiju Docker, protože už na svém počítači mám nainstalovaný Docker Engine. Popíšu zde instalaci na Arch Linux, poklud máte jiný operační systém, zde je originální návod.
Vytvoření virtuálního Windows pomocí Dockeru
Tato část vychází z originálního návodu pro instalaci Windows.
Předpokládejme, že už máte nainstalovaný Docker Engine (dokumentace k instalaci).
Vytvořte si nový adresář (například winapps) pro konfiguraci Windows a v něm vytvořte soubor compose.yaml podle šablony Docker Compose. Pomocí následujícího příkazu spustíte instalaci:
sudo docker compose --file ./compose.yaml up
Po stažení Docker obrazu se spustí kontejner a začne připravovat nejnovější verzi Windows (verze jde také nastavit v compose.yml). V konzoli se po chvíli čekání vypíše "WinApps | ❯ Windows started successfully, visit http://127.0.0.1:8006/ to view the screen..." a virtuální Windows je hotový. Na uvedené adrese nůžete navštívit plochu.

V terminálu teď můžete Windows vypnout pomocí CTRL+C.
2) Instalace potřebných balíků
Tímto příkazem nainstalujte další potřebné balíky pro spuštění WinApps:
sudo pacman -Syu --needed -y curl dialog freerdp git iproute2 libnotify openbsd-netcat
3) Konfigurační soubor WinApps
Vytvořte konfikurační soubor ~/.config/winapps/winapps.conf s následujícím obsahem.
4) Test FreeRDP připojení
Následujícím příkazem můžete otestovat připojení na vzdálenou plochu (Windows musí běžet). Uživatelské jméno a heslo si samozřejmě nahraďte svým.
xfreerdp3 /u:"MyWindowsUser" /p:"MyWindowsPassword" /v:127.0.0.1 /cert:tofu

Pokud se objeví chyba, zkuste nápovědu v originálním návodu.
5) Instalace požadovaných aplikací
Teď je čas nainstalovat programy, které chcete spouštět. Já jsem zvolil MS Office, který jsem pro vzdělávací účely stáhl a aktivoval pomocí projektu Microsoft-Activation-Scripts společně s Windows. Instalace aplikací se provádí stejně, jako by se jednalo o standartní Windows instalaci. Samozřejmě přes otevřené testovací FreeRDP. Po ukončení instalace můžete okno FreeRDP zavřít.
6) Instalace WinApps
V dalsím kroku nainstalujeme samotnou aplikaci WinApps. Instalace se spustí jednoduchým příkazem:
bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh)

Zde pokračujte Install > Current user > Manual (instalace aplikací) > Choose specific oficially supported applications to set up

Zde mezerníkem vyberte software, pro který chcete vytvořit zkratku ve vašem systému, a dokončete ionstalaci. A je to! Nyní máte mezi svými aplikacemi přidané zvolené Windows aplikace:


Pokud chcete přidat nebo odebrat další aplikace, musíte WinApps odinstalovat a znovu ho nainstalovat.
7) Spouštění vlastních aplikací
Pro vzdělávací účely jsem podle návodu nainsaloval na Windows také starší verzi Photoshopu. A protože tato stará verze nepatří mezi podporovaný software, který je automaticky detekován a můžete si pro něj vytvořit zkratku v kroku 6, je potřeba ho spouštět manuálně. To provedeme následujícím příkazem, kde zadáme cestu k .exe souboru:
winapps manual "C:\Program Files (x86)\Adobe Photoshop CS6\Photoshop.exe"

V kombinaci s programem Alacarte si můžete (alespoň na GNOME) vytvořit vlastní zkratku a přidat ji mezi ostatní aplikace:


8) Česká klávesnice
Aby aplikace používaly českou klávesnici je třeba provést dodatečnou konfiguraci.
Jako první standartně nastavte ve Windows český jazyk a klávesnici. Pomocí následujícího příkazu lze zjistit, hexidecimální kód českého rozložení klávesnice (je to x00000405):
xfreerdp3 /list:kbd | grep Czech
V souboru ~/.config/winapps/winapps.conf pak přidejte /kbd:layout:x00000405 k RDP_FLAGS. U mě to vypadá takto (přidal jsem ještě +span):
RDP_FLAGS="/cert:tofu /sound /microphone +home-drive +span /kbd:layout:0x00000405
Po restartu Windows kontejneru by mělo české rozložení klávesnice fungovat.
9) Bonus 1: WinApps-Launcher
Určitě není pohodlné manuálně spouštět virtuální Windows přes Docker příkazy nebo přes Portainer. Proto to jde pohodlně z plochy pomocí WinApps-Launcher.
Instalace balíčku yad
Nainstalujte nbásledujícím příkazem:
sudo pacman -Syu --needed yad
Nastavení WINAPPS_SRC_DIR
Dále je třeba nastavit proměnnou prostředí WINAPPS_SRC_DIR v terminálu. Pokud jste WinApps nainstalovali pouze pro jednoho uživatele, hodnota bude ~/.local/bin/winapps-src, pokud pro celý systém, použijte /usr/local/bin/winapps-src. Nastavte přidáním tohoto řádku do souboru /etc/environment:
WINAPPS_SRC_DIR="$HOME/.local/bin/winapps-src"
Změna se projeví po restartu nebo při dalšímn přihlášení.
Zklonování projektu
Dalším krokem je zklonování WinApps-Launcheru do složky WinApps:
# Zklonování do WinApps adresáře
git clone https://github.com/winapps-org/winapps-launcher.git "${WINAPPS_SRC_DIR}/winapps-launcher"
# Nastavení spustitelnosti skriptu
sudo chmod +x "${WINAPPS_SRC_DIR}/winapps-launcher/winapps-launcher.sh"
Vytvoření zkratky
Vytvořte sopubor ~/.local/share/applications/winapps-launcher.desktop s následujícím obsahem:
[Desktop Entry] Type=Application Name=WinApps Launcher Comment=Taskbar Launcher for WinApps Exec="$WINAPPS_SRC_DIR/winapps-launcher/winapps-launcher.sh" Icon=$WINAPPS_SRC_DIR/winapps-launcher/icons/LinkIcon.svg Terminal=false Categories=Utility
Pomocí již zmíněného programu Alacarte jí můžete nastavit i ikonu, kterou ve výchozím stavu nemá.

Automatické spuštění
Pro automatické spouštění WinApps-Launcheru vytvořte soubor ~/.config/systemd/user/winapps-launcher.service:
[Unit] Description=Run 'WinApps Launcher' After=graphical-session.target default.target Wants=graphical-session.target [Service] Type=simple Environment="PATH=%h/.local/bin:%h/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Environment="LIBVIRT_DEFAULT_URI=qemu:///system" Environment="SCRIPT_PATH=$WINAPPS_SRC_DIR/winapps-launcher/winapps-launcher.sh" Environment="LANG=C" ExecStart=/bin/bash -c "\\"\$SCRIPT_PATH\\"" ExecStopPost=/bin/bash -c 'echo "[SYSTEMD] WINAPPS LAUNCHER SERVICE EXITED."' TimeoutStartSec=5 TimeoutStopSec=5 Restart=on-failure RestartSec=5 [Install] WantedBy=default.target
A spusťe službu:
systemctl --user enable winapps-launcher --now
Nyní budete mít mezi ikonkami spuštěných aplikací ikonu WinApps pro rychlý přístup k Windows a nainstalovaným programům:

10) Bonus 2: Debloat
V této poslední části se chci věnovat úpravě Windows. Kromě nastavení barevného schématu a popřípadě tapety chceme pro optimální výkon upravit některá nastavení nebo odinstalovat zbytečný "bloat" software, kterého je Windows notoricky plný.
Na to se hodí nástroje jako Win11Debloat nebo pro Windows 10 DisableWinTracking. Můžou zrychlit systém a zbaví vás zbytečných programů a sledovacích featurek.
Závěr
WinApps není dokonalý, napříkal jsem měl problém s přesouváním okna na druhý monitor, okna se zasekávají a podobně. Je ale stálě ve vývoji a je to skvělý způsob, jak spustit téměř nativně Windows aplikace na vaší oblíbené distribuci. Celkově je pro práci například s balíkem Office nebo Photoshopem dostačující.