Jak na Linuxu (skoro) pohodlně spustit Windows aplikaci

Jak na Linuxu (skoro) pohodlně spustit Windows aplikaci
Zajímalo by mě, kolik vody (jestli nám nelžou) je potřeba na vygenerování jednoho takového krásného náhledového obrázku 🤔

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.

✳️
Pojem "hloupý uživatel" neznamená, že by byl člověk hloupý. Správně by to mělo být "koncový (průměrný) uživatel". Jen mi to nezní tak vtipně a navíc koncoví uživatelé občas dělají hloupé věci ¯\_(ツ)_/¯

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).

Přelomová designer funkce v PowerPointu kvůli které vzniká tento post.

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.

Krásná a nádherná plocha virtuálního Windows 11 (paradoxně) v prohlížeči na adrese http://127.0.0.1:8006

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
Test FreeRDP

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)
Instalační program WinApps

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

Instalační program WinApps

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:

Seznam aplikací v prostředí GNOME
Spuštěný PowerPoint v prostředí GNOME

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:

Vytvoření zkratky pomocí Alacarte
Vlastní zkratka

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á.

WinApps Launcher zkratka

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:

Ano, na GNOME se to takhle hezky buguje a je atm černé pozadí.

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í.