Windows-Light Ubuntu Setup
First Boot
On first boot, fix keyring glitch:
- killall -9 gnome-keyring-d
- cd ~/.local/share/
- mkdir ~/scratch
- mv * ~/scratch
- (reboot)
Disable suspend on lid close:
- Ref: https://askubuntu.com/questions/1513028/suspend-laptop-when-lid-is-closed-in-ubuntu-24-04
- Create /etc/systemd/logind.conf.d/99-lid-behavior.conf
- Set these settings in the file:
HandleLidSwitch=lock
HandleLidSwitchExternalPower=lock
HandleLidSwitchDocked=ignore
Firmware updates
- start > search firmware
- Run any firmware updates
Dock Setup
Install Display Link Drivers
- Download from https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu
- Despite the download being named "'DisplayLink USB Graphics Software for Ubuntu6.1-EXE.zip, when you unzip it, it is an executable that can run on ubuntu.
- unzip DisplayLink\ USB\ Graphics\ Software\ for\ Ubuntu6.1-EXE.zip
- chmod ugo+x displaylink-driver-6.1.0-17.run
- sudo ./displaylink-driver-6.1.0-17.run
- Follow the prompts
After this, all the displays (up to two displayport + vga + the laptop screen (on Dell D6000) should work on a dell dock.
Start > Settings > Display and arrange the displays to your liking, choosing the middle one as the primary, and click Apply.
Install Applications
Insync
Sync's Google drive files locally
- Install binary downloaded from webpage
- Account required per cloud account (lifetime)
- Configure drive sync location and exclusions
- Change sync location - after setting up account
- Click on the Google Account in the top Bar
- click on the arrow by My Drive
- Choose Change where the location is shown
- CHange to /home/jray/Drive (or whatever)
keepassxc
- install via snap
- Put kbdx files in drive for syncing
- synced kbdx files work across linux and android
- Will replace with onepassword when that is rolled out for the org.
Screenshotting tool
This was a little fiddly in 22.04, but works great in 24.04 (Wayland improvements, I assume)
- install flameshot via apt-get
- Add keyboard shortcut by going to settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts
- Super-shift-S (same as Window) to invoke sh -c "flameshot gui"
- In 22.04, because of Wayland security restrictions, when you click it, you get a popup where you have to hit share, then you can window select the area you want. This doesn't happn 24.04.
- Disable "camera sound" when screenshot happens with:
- cd /usr/share/sounds/freedesktop/stereo/
- sudo mv camera-shutter.oga disable-camera-shutter.oga
- Other notes: ksnip is an alternative to flameshot
Dropbox
- Download linux client from https://www.dropbox.com/install-linux
- Before running, install python3-gpg dependency:
- sudo apt-get install python3-gpg
- Install dropbox linux client with apt or dpkg
- Set up separate account to sync personal password safe
Slack install
For 22.04, the snap install worked fine, but not for 24.04.
- For 24.04 use the deb from:
https://slack.com/downloads/instructions/linux?ddl=1&build=deb
Better terminal
- Install Terminator with apt-get
Thunderbird
Install thunderbird with apt-get (does a snap install under the hood in 24.04)
- Copy message filters on old account from msgFilterRules.dat
Dev tools
Note we do this before the WinApps/office install because we will need docker for that.
- sudo apt-get install git
- clone the nloop repo and use bootstrap.sh to install task
- run task install:docker to install task and docker, it will fail. Run it manually with no version restriction:
- cd /tmp
- ./get-docker.sh
- run task install:docker-add-user
- Reboot
- Install the amazon-ecr-credentials-helper:
sudo apt install amazon-ecr-credential-helper
VScode
- Install from deb: https://code.visualstudio.com/download
Zoom
- Already installed
- Pre-setup headphones and microphone
- Add backgrounds
Winapps and Office install
Following instructions from https://github.com/winapps-org/winapps
- mkdir -p ~/.config/winapps
- cd ~/.config/winapps
- copy docker-compose and winapps.conf files in ~/.config/winapps and fix the username/passwords
- docker compose --file ./compose.yaml up
- (this takes a long time the first time)
- When the log gets to Windows started succesfully, visit http://127.0.0.1:8006/ to view the screen.., then open that URL to track the windows installation process. Eventually you should get to a desktop:

- Close the RDP window
- ctrl-c in the terminal where you ran docker compose, and see the docker container being torn down.
- Rerun in a detached state:
docker compose --file compose.yaml up -d
- install deps with sudo apt install -y curl dialog git iproute2 libnotify-bin netcat-openbsd
- Note: do not install freerdp3-x11 in the above command
- flatpak install flathub com.freerdp.FreeRDP
- Y to accept changes
- sudo flatpak override --filesystem=home com.freerdp.FreeRDP
- d
- Install winapps with
bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh) - Follow the prompts:
- Install
- Current User
- Manual
- (There will be some install steps here - if they fail, see troubleshooting)
- Skip setting up any officially supported applications
- Select which applications to set up
- In "Which other applications would you like to set up" check none and hit okay
- You should see INSTALLATION COMPLETE
- Now there should be a Windows icon available in your start menu. Run it.
- Start the Microsoft store (there's no browser in the tiny image)
- Install Firefox
- Use firefox to install chrome
- Start Menu > Search "default apps" > open default apps > choose Google Chome and make it the default browser.
- Launch Chrome and turn off all the ad bullshit
- Navigate to http://outlook.office365.us/
- Sign in with Microsoft
- Click on the 9-dot menu and choose "Microsoft 365", then choose Install Apps > Microsoft 365 Apps
- Navigate to the Downloads folder and run OfficeSetup.exe with administrator privileges
- After the install finishes, run Word or Excel and sign in with ecr-defense.ai credentials. Be sure to choose "Stay signed in to all my apps"
- Use the tools as needed. – in the browser, find something to open and choose … > Open > Open in App to open it outside the browser, or set up OneDrive to sync more files locally.
Troubleshooting
If the docker build can't launch windows
If you have trouble starting windows (e.g. you open the RDP window from the link and it's stuck at the bootloader, make sure that you have the latest docker image with docker pull ghcr.io/dockur/windows
- Ref: this issue that occurred when I was trying to set this up with 4.28 and was fixed days later in 4.30
If the winapps installation fails, there might be something like:

Couple of things to try. After each, retry the winapps install command.
Bad certificate:
If you look at the log file and there are certificate warnings in the log, remove the old certificate. Because it's a flatpack install, this is something like:
rm ~/.var/app/com.freerdp.FreeRDP/config/freerdp/server/127.0.0.1_3389.pem
Already logged in:
If the log has something like
12:58:51:631] [2:00000003] [INFO][com.freerdp.client.x11] - [xf_logon_error_info]: Logon Error Info LOGON_WARNING [LOGON_MSG_BUMP_OPTIONS]
Then you need to log out in the window image. Try opening: http://127.0.0.1:8006/ in the browser. Click Start > (user icon) > Sign Out
Fix desktop layout
Use gnome extensions to change the LAF of the desktop to be more like Windows:
- dashboard looks more like the Windows taskbar
- start menu looks more like the windows start menu
- task icons are collected in the lower right
- dialog buttons are moved to the bottom of dialog windows
- win-shift-S takes a screenshot
- win-shift-C samples a color and copies it to the dashboard (MS Powertoys has this)
Steps:
- sudo apt-get install flatpak
- sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install flathub com.mattjakeman.ExtensionManager
- Install these extensions:

- Arcmenu settings to get a windows-menu-like experience:
- Choose Windows Layout from the menu layout options

- Configure the start icon color and type


- In display settings, make the middle monitor or the main monitor the primary and apply these settings.
- Turn off "show on every monitor" and choose the primary monitor.
- Panel screen position -> bottom
- Configure the other settings like this:

- Style settings

- Behavior settings - defaults
- Actions: Set Click Action to Cycle through Windows
- Fine Tune: Set Tray Item Padding and Status Icon Padding to 0px
- Set shortcut tsuper+shift+c (windows power toy equivalent)
- Install the fluent theme then choose "Fluent-dark-compact" it in Tweaks > appearance for Shell and Application themes
- Windows config and hotkeys
- Window tiling tool and workspace hotkeys
- Win-left and win-right work okay out of the box, except they don't move the window to the next monitor.
- Appearance/Icons - yaru-blue-dark
- Mouse&Touchpad/ - middle click paste off
- Start > Settings > Power and uncheck Automatic Screen Brightness (the behavior is very annoying)
- ctrl+. makes an e. (Ubuntu 22.04 only, change this in Gnome Tweaks on 24.04) Fix with gsettings set org.freedesktop.ibus.panel.emoji hotkey "[]"
- Dialog buttons are at the top of dialogs. Move to to the bottom with:
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/DialogsUseHeader':<0>}" - Start > Settings > System > Date and Time > Time Format -> 12 hour
Github CLI with copilot
- Install github cli from repos:
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) && sudo mkdir -p -m 755 /etc/apt/keyrings && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt update && sudo apt install gh -y - sudo apt-get update
- sudo apt-get install gh
- sudo apt-get install wl-clipboard (needed for the tool to paste commands)
Auth and install plugin:
- gh auth login
- gh extension install github/gh-copilot
Test and use it to set up tab completions:
- gh copilot suggest "How do I add gh completion to my .bashrc file?"
- This gives a useful command for adding the completions:
echo 'eval "$(gh completion -s bash)"' >> ~/.bashrc
source ~/.bashrc
- Oddly, gh copilot suggest "add gh copilot aliases to .bashrc" does not do a similar good job, so just:
echo 'eval "$(gh copilot alias bash)"' >> ~/.bashrc
source ~/.bashrc
Test with:
$ ghcs how to find all yaml files
Welcome to GitHub Copilot in the CLI!
version 1.1.0 (2025-02-10)
I'm powered by AI, so surprises and mistakes are possible. Make sure to verify any generated code or suggestions, and share feedback so that we can learn and improve. For more information, see https://gh.io/gh-copilot-transparency
Suggestion:
find . -name "*.yaml"
? Select an option [Use arrows to move, type to filter]
> Copy command to clipboard
Explain command
Execute command
Revise command
Rate response
Exit
> Execute command
? Are you sure you want to execute the suggested command?
> Yes
./k8s/deployments/local/values-k3d.yaml
./k8s/deployments/local/values.yaml
….
Source Code Pro font
cd /tmp
mkdir scp && cd scp
wget https://github.com/adobe-fonts/source-code-pro/releases/download/2.042R-u%2F1.062R-i%2F1.026R-vf/OTF-source-code-pro-2.042R-u_1.062R-i.zip
unzip OTF-source-code-pro-2.042R-u_1.062R-i.zip
cp OTF/* ~/.local/share/fonts/
fc-cache -f -v
# then check the output of fc-list to verify fonts exist
fc-list | grep Adobe