Some programs only run on Windows: a bank’s tool, an accounts package, desktop Outlook. Vikix can run Windows 11 in a virtual machine (VM): a whole Windows computer inside a window, which tiles like any other. Its clipboard is shared with yours, its screen resizes with the window, and a folder of yours is a drive in Windows. Once Windows is there, one of its programs can also have a window of its own, without the Windows desktop around it.
It’s optional, and it’s big, so nothing is installed until you ask for it.
Your laptop doesn’t need to meet Windows 11’s own requirements: the VM has the TPM and Secure Boot it asks for, and the check for a newer processor is skipped.
Four commands, in a terminal.
vikix windows setup
It asks for your password (sudo) once, for the packages and the VM’s network. To put the VM’s disk somewhere else, such as a bigger drive: vikix windows setup --disk /path/to/folder. (vikix add windows runs the same setup: Windows is one of the features.)
vikix windows create ~/Downloads/Win11_25H2_English_x64.iso
Use your ISO’s real name (the Tab key completes it). Add --key XXXXX-XXXXX-XXXXX-XXXXX-XXXXX if you have a product key. It asks for a password for your Windows account, which is named after your Linux one.
vikix windows in the meantime.
vikix windows
Or Super+m → Windows (the VM). Log in with the password from step 2.
vikix windows (or Windows in Super+m) starts Windows if it’s off and opens its desktop. Close the window and Windows keeps running; open it again the same way.
~/Windows on this laptop is drive Z: in Windows. Put files there to use them on both sides. vikix backup covers that folder.
vikix windows stop. Reboot and Power off in Super+Shift+Escape shut Windows down properly first. Logging out leaves it running.
vikix windows status says whether it’s installed and running, and where its parts are.
vikix vm) lists every VM libvirt has, yours and the system’s, with its state, memory and CPUs. Enter on one offers what fits: open its screen, start, pause (it keeps its memory and uses no processor), save (its memory goes to disk and it switches off; the next start takes it up where it was), shut down, or switch off. From a shell: vikix vm pause windows, vikix vm save windows, vikix vm start windows.
The whole Windows desktop is the place to set Windows up and install its programs. To use one of them day to day, Vikix can show that program alone: its windows sit among yours and tile like any other, with no Windows desktop around them.
vikix windows apps setup # once: asks for your Windows password vikix windows apps # what Windows has, from its Start menu vikix windows app excel # open one ... vikix windows app excel ~/Documents/report.xlsx # ... on a file vikix windows apps add excel # put it in the launcher (Super+d)
vikix windows create) and keeps it, so the programs can log in by themselves. It starts Windows if it’s off, and installs FreeRDP, the program that draws the windows, if you don’t have it yet.
vikix windows apps prints a line for each program in Windows’ Start menu: a short name, its full name, and where it is in Windows. The short name is what the other commands take; the start of it is enough when only one program begins so. Run it again after installing a program in Windows.
Super+d under its own name, like any other. vikix windows apps remove excel takes it out again. Vikix keeps the list of what you added (~/.local/state/vikix/windows-launcher.json), so an entry that goes missing, deleted by a stray command or a program’s installer, is written again at the next vikix update, or at once by vikix windows apps restore.
A few things to know:
~/Windows as drive Z:, and from setup on ~/Documents as drive Y:. The new drive shows after Windows’ next start: vikix windows stop, then open a program again. A file in either folder opens in place; one anywhere else is refused with a message that says so, since Windows can’t see it.
~/.config/vikix/secrets/windows-password, which only you can read, and which the history of your files never records. vikix windows apps forget deletes it; setup then asks again.
Super+Ctrl+h) and the program takes the whole screen the next time it opens.
vikix-win- and the short name, so (when-window (:class "vikix-win-excel") (workspace 4)) in your rules.lisp sends Excel to workspace 4 (Rules for the desktop).
vikix windows), which shows Windows’ lock screen until you go back to it.
For the curious: this is RDP’s RemoteApp, which sends one program’s windows where Remote Desktop would send the whole screen. FreeRDP (xfreerdp3) draws each as an ordinary X window, and StumpWM tiles it. lib/windows-apps.py does the work. Everything it changes inside Windows goes through the VM’s guest agent, which the install put there, so no network service of Windows is trusted with it. The password reaches FreeRDP on its input with the other arguments (/args-from:stdin), never on a command line or in the environment, where other programs could read it. And the bar: vikix-publish-workarea in modeline.lisp writes the screen less the bar on the root window (_NET_WORKAREA, as other desktops do), and FreeRDP passes it to Windows (/workarea).
Windows reaches the internet and your home or office network. It sees this laptop only as another computer on a private network, at 192.168.122.1. What this laptop keeps to itself stays out of reach: the window manager’s Lisp connection, the printers’ settings, a local AI model. So a bad download in Windows can’t take over your desktop.
There’s nothing to set up for it: vikix windows setup does it. To reach a program on this laptop from Windows on purpose, run that program on 192.168.122.1, not on 127.0.0.1.
More memory, more processors, or a USB device handed to Windows: open the VM manager with
virt-manager -c qemu:///session
and open the windows VM’s details. Change memory and processors while Windows is shut down. A USB device is added the same way (Add Hardware → USB Host Device).
vikix windows remove
It asks first, then deletes the VM and its disk, and with them the password kept for Windows programs, their launcher entries and the list of them, if you set those up (vikix windows apps forget --all does that part alone). ~/Windows, with your files in it, stays.
create says it needs 8 GB of memoryThe laptop has less; Windows 11 won’t run well in a VM on it
vikix windows shows its screen. The install’s log is ~/.local/state/vikix/windows-install.log
Open it with vikix windows and look: Windows may be waiting on a question
vikix windows status says what’s missing
Restart Windows (Start → Restart); vikix windows status then says it’s on the private one
Give it more memory or processors (see Changing it), and close what you don’t need on both sides
vikix windows stop --force switches it off, like pulling the plug
It shows FreeRDP’s last lines; the rest is in ~/.local/state/vikix/logs/windows-app.log. If you changed your Windows password: vikix windows apps forget, then vikix windows apps setup
vikix windows app says Remote Desktop doesn’t answerRun vikix windows apps setup again: it switches it back on
The box is drawn in a way RemoteApp can’t carry across (a layered window with its own transparency). Look in the program’s own settings for a plain theme: FACTS’s Themes menu set to one draws its boxes as ordinary windows, and that is all it takes
vikix windows app says Windows has no such programvikix windows apps reads the Start menu again, for a program installed since
Your ~/.config/picom/picom.conf is from before Vikix 0.71.183: add the line "class_g ^= 'vikix-win-'" to its blur-background-exclude list
The README has how it works underneath.