← weekly log
27 August 2026shipped

Running Omarchy on Hyper-V: Fixing Scaling & SSH

arch-linuxhyprlandomarchyhyper-vvirtualizationsshlinux

Getting Omarchy running smoothly inside Hyper-V means fixing two things by default: the display scaling, and Hyprland's IPC socket not working over SSH. This guide walks through both, plus the full VM setup, in an SSH-first workflow you can run entirely from a Windows terminal.

What you'll do:

  1. Create the VM and run the base install
  2. Get SSH working
  3. Fix the display resolution
  4. Fix Hyprland's IPC socket + force 1:1 scaling
  5. Verify everything

1. VM Creation & Base Install

Open PowerShell as Administrator on your Windows host and run the following:

Create the VM:

New-VM -Name "Omarchy" `
  -MemoryStartupBytes 4GB `
  -Generation 2 `
  -NewVHDPath "C:\Hyper-V\Omarchy.vhdx" `
  -NewVHDSizeBytes 64GB
Copy

Assign the virtual switch:

Set-VMNetworkAdapter -VMName "Omarchy" -SwitchName "Default Switch"
Copy

Set the CPU count:

Set-VMProcessor -VMName "Omarchy" -Count 4
Copy

Disable Secure Boot (required for standard Arch/Omarchy ISOs):

Set-VMFirmware -VMName "Omarchy" -EnableSecureBoot Off
Copy

Mount the ISO:

Add-VMDvdDrive -VMName "Omarchy" -Path "C:\Path\To\omarchy.iso"
Copy

Start the VM:

Start-VM -VMName "Omarchy"
Copy

Or, for a fresh setup, run all six as one script:

New-VM -Name "Omarchy" -MemoryStartupBytes 4GB -Generation 2 -NewVHDPath "C:\Hyper-V\Omarchy.vhdx" -NewVHDSizeBytes 64GB
Set-VMNetworkAdapter -VMName "Omarchy" -SwitchName "Default Switch"
Set-VMProcessor -VMName "Omarchy" -Count 4
Set-VMFirmware -VMName "Omarchy" -EnableSecureBoot Off
Add-VMDvdDrive -VMName "Omarchy" -Path "C:\Path\To\omarchy.iso"
Start-VM -VMName "Omarchy"
Copy

Open the Hyper-V Connection window, complete the graphical/scripted Omarchy installation process, and log into your user account.

2. Install & Enable SSH

Switching to SSH early eliminates the need to type commands into the Hyper-V console window. Run these in the VM's local terminal:

Install OpenSSH:

sudo pacman -Sy openssh
Copy

Start the service:

sudo systemctl start sshd
Copy

Enable it on boot:

sudo systemctl enable sshd
Copy

Get the VM's IP address:

ip a
Copy

Now minimize Hyper-V and open PowerShell on your Windows host to log in remotely:

ssh username@<VM-IP-ADDRESS>
Copy

3. Display Resolution

Hyper-V requires matching configuration at both the Linux kernel level and the Windows host level.

Append the video parameter to the Limine cmdline (over SSH):

sudo sed -i 's/cmdline:.*/& video=hyperv_fb:1920x1080/' /boot/limine.conf
Copy

Verify the change:

grep "video=hyperv_fb" /boot/limine.conf
Copy

Reboot the VM over SSH:

sudo reboot
Copy

Set the host resolution — in PowerShell as Administrator, on the Windows host:

Set-VMVideo -VMName "Omarchy" `
  -ResolutionType Single `
  -HorizontalResolution 1920 `
  -VerticalResolution 1080
Copy

4. IPC Bridge & Scaling

Reconnect via SSH once the VM boots back up:

ssh username@<VM-IP-ADDRESS>
Copy

Fix remote hyprctl socket access — SSH sessions don't inherit Hyprland's HYPRLAND_INSTANCE_SIGNATURE by default, and Omarchy aliases ls to formatted file listers (like eza), which corrupts automated path lookups. Add a clean, persistent hyprctl alias using /usr/bin/ls:

Remove any duplicate or outdated alias:

sed -i '/alias hyprctl=/d' ~/.zshrc
Copy

Add the socket locator alias:

echo 'alias hyprctl="HYPRLAND_INSTANCE_SIGNATURE=\$(/usr/bin/ls -1 /run/user/\$UID/hypr/ 2>/dev/null | head -n 1) hyprctl"' >> ~/.zshrc
Copy

Apply it to the current shell session:

source ~/.zshrc
Copy

Force 1:1 pixel scaling — Omarchy configures Hyprland via Lua files in ~/.config/hypr/ (monitors.lua, input.lua, looknfeel.lua, etc). By default it assumes a high-DPI display and applies 2x scaling — on a 1080p Hyper-V framebuffer, that halves your usable workspace.

Set the GDK scale:

sed -i 's/local omarchy_gdk_scale = .*/local omarchy_gdk_scale = 1/' ~/.config/hypr/monitors.lua
Copy

Set the monitor scale:

sed -i 's/local omarchy_monitor_scale = .*/local omarchy_monitor_scale = 1/' ~/.config/hypr/monitors.lua
Copy

Reload Hyprland to apply the changes:

hyprctl reload
Copy

If these variables have moved in a newer Omarchy release, confirm with grep -r "omarchy_gdk_scale\|omarchy_monitor_scale" ~/.config/hypr/ before running the edits.

5. Verification

Confirm that native resolution and 1:1 scaling are active. The raw hyprctl monitors output is quite verbose, so filter it down to the essentials:

hyprctl monitors | grep -E "Monitor|^\s+[0-9]+x[0-9]+@|scale:|focused:"
Copy

Expected output:

Monitor Virtual-1 (ID 0):
        1920x1080@60.00000 at 0x0
        scale: 1
        focused: yes
Copy

With SSH access, correct resolution, and 1:1 scaling all in place, the VM is fully usable as a daily-driver Hyprland environment inside Hyper-V — no more console-window fumbling required.