A Linux Remote-Work Setup
Set up a full Linux remote-work environment: multi-monitor displays, Zoom/Teams/Element video calls, WireGuard/OpenVPN, calendar sync, and a password manager.
Before you start
- ▸A working Linux desktop installation with a Wayland or X11 session
- ▸Sudo or root access for installing packages
- ▸VPN credentials (.conf or .ovpn file) from your employer or VPN provider
- ▸Google or Microsoft account credentials for calendar sync
Working remotely on Linux is entirely viable — often superior to other platforms — but it requires deliberate setup. This guide walks through multi-monitor configuration, video conferencing tools, VPN connectivity, calendar sync, and a password manager workflow. Each section is self-contained so you can tackle only what you need.
Multi-Monitor Configuration
On Wayland (GNOME, KDE Plasma 6, Sway), monitor layout is handled natively without X11's xrandr. On X11 sessions, xrandr is still the standard tool.
Wayland: GNOME
Open Settings → Displays. Drag monitors to match your physical layout, set resolution and refresh rate per display, then click Apply. Changes persist via ~/.config/monitors.xml.
Wayland: KDE Plasma 6
Use System Settings → Display and Monitor. Plasma stores layout in ~/.local/share/kscreen/. Hot-plugging is handled automatically.
X11: xrandr
Query connected outputs first:
xrandr --query
Place a second monitor to the right of the primary:
xrandr --output HDMI-1 --auto --right-of eDP-1
To make this persistent across reboots, drop it into ~/.profile or a dedicated autostart script. Replace output names with those shown by --query on your machine.
Scaling on HiDPI mixed setups
Mixed-DPI setups (one HiDPI laptop, one 1080p external) are tricky. On GNOME Wayland, enable fractional scaling:
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
On KDE Plasma 6, fractional scaling is stable by default — set it per-display in the Display settings panel.
Video Conferencing
Zoom
Zoom ships an official .deb and .rpm. Download the current release from zoom.us/download.
Debian/Ubuntu:
sudo apt install ./zoom_amd64.deb
Fedora/RHEL family:
sudo dnf install ./zoom_x86_64.rpm
Arch:
paru -S zoom
Zoom on Wayland now uses native Wayland by default in recent versions. If screen sharing is broken, force it:
WAYLAND_DISPLAY=wayland-0 zoom
If that still fails, switch your session to X11 or install the xdg-desktop-portal-gnome / xdg-desktop-portal-kde package, which enables PipeWire-based screen sharing.
Microsoft Teams
The official Teams Linux client was discontinued in 2023. Use Teams for Web in a Chromium-based browser, which supports camera, microphone, and screen sharing via WebRTC. Alternatively, install the community-maintained teams-for-linux wrapper:
# Arch
paru -S teams-for-linux-bin
# Flatpak (all distros)
flatpak install flathub com.github.IsmaelMartinez.teams_for_linux
The Flatpak requires xdg-desktop-portal for screen sharing under Wayland.
Element (Matrix)
Element is the primary open-source alternative for team chat and video calls.
# Flatpak
flatpak install flathub im.riot.Riot
# Arch
paru -S element-desktop
# Debian/Ubuntu — add the official repo
curl -fsSL https://packages.element.io/debian/element-io-archive-keyring.gpg \
| sudo tee /usr/share/keyrings/element-io-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian default main" \
| sudo tee /etc/apt/sources.list.d/element-io.list
sudo apt update && sudo apt install element-desktop
Camera and microphone: PipeWire
Modern distros use PipeWire as the audio/video server. Verify it is running:
systemctl --user status pipewire pipewire-pulse
If either is inactive:
systemctl --user enable --now pipewire pipewire-pulse
List audio devices with:
pactl list short sources
VPN
WireGuard is the recommended protocol for new setups. OpenVPN and Cisco AnyConnect are covered for workplaces that require them.
WireGuard
# Debian/Ubuntu
sudo apt install wireguard
# Fedora
sudo dnf install wireguard-tools
# Arch
sudo pacman -S wireguard-tools
Place your .conf file (provided by your admin) in /etc/wireguard/wg0.conf, then:
sudo systemctl enable --now wg-quick@wg0
If you prefer a GUI, NetworkManager's WireGuard plugin works on all distros:
# Debian/Ubuntu
sudo apt install network-manager-openvpn-gnome
# Import a .conf via nmcli
sudo nmcli connection import type wireguard file /etc/wireguard/wg0.conf
OpenVPN
# Debian/Ubuntu
sudo apt install openvpn network-manager-openvpn-gnome
# Fedora
sudo dnf install openvpn NetworkManager-openvpn-gnome
Import your .ovpn profile through Network Settings → VPN → Import from file, or via CLI:
sudo nmcli connection import type openvpn file company.ovpn
Cisco AnyConnect / OpenConnect
OpenConnect is an open-source AnyConnect-compatible client:
sudo apt install openconnect network-manager-openconnect-gnome # Debian/Ubuntu
sudo dnf install openconnect NetworkManager-openconnect-gnome # Fedora
Connect via terminal: sudo openconnect vpn.company.com, or configure it through the NetworkManager VPN panel.
Calendar
Most remote workers need to sync with Google Calendar or Microsoft Exchange/M365.
GNOME: GNOME Calendar + Online Accounts
Go to Settings → Online Accounts and add your Google or Microsoft account. GNOME Calendar, GNOME Contacts, and Evolution mail all read from this shared backend automatically. For Exchange on-premises, use Evolution directly — it has native EWS (Exchange Web Services) support.
KDE: Kontact + Akonadi
Install the full groupware suite:
sudo apt install kontact akonadi-calendar-tools # Debian/Ubuntu
sudo dnf install kontact # Fedora
Add CalDAV (Google) or EWS (Exchange) accounts through Kontact → Settings → Configure KMail → Accounts. Google requires an app password if 2FA is enabled.
Thunderbird + Lightning (cross-distro)
Thunderbird includes calendar support natively since version 115 ("Supernova"). Add Google Calendar via Calendar → New Calendar → On the Network → Google Calendar. For Exchange, install the Owl for Exchange extension (paid) or configure EWS manually.
Password Manager
Bitwarden
Bitwarden is open-source, cross-platform, and has strong Linux support. Install the desktop client:
# Flatpak (recommended, always up to date)
flatpak install flathub com.bitwarden.desktop
# Arch
paru -S bitwarden
# Snap
snap install bitwarden
Install the browser extension in Firefox or Chromium from their respective extension stores. The CLI is available for scripting:
sudo apt install bitwarden-cli # Debian/Ubuntu via Bitwarden's repo
bw login
bw get password mysite.com
KeePassXC
KeePassXC is the go-to offline option. It integrates with browsers via the KeePassXC-Browser extension and supports SSH agent unlock.
sudo apt install keepassxc # Debian/Ubuntu
sudo dnf install keepassxc # Fedora
sudo pacman -S keepassxc # Arch
Enable SSH agent integration under Tools → Settings → SSH Agent so that your SSH keys unlock with your vault password.
Verification
- Run
xrandr --query(X11) or check Display Settings (Wayland) to confirm all monitors are detected at correct resolutions. - Test camera and mic in Zoom or Element's pre-call screen before a real meeting.
- After connecting via VPN, verify your exit IP:
curl https://ifconfig.me— it should match your VPN server's IP. - Check calendar sync by creating a test event on your phone and confirming it appears on the Linux calendar within a few minutes.
- Log in to a website using your password manager browser extension to confirm autofill is working.
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Screen share black in Zoom/Teams | Missing portal backend | Install xdg-desktop-portal-gnome or -kde, then log out and back in |
| No audio in video calls | PipeWire not running or wrong default device | Run systemctl --user restart pipewire pipewire-pulse; check pactl list short sources |
| Second monitor not detected | Display connector not active | Run xrandr --auto on X11; hot-unplug and replug cable; check journalctl -b | grep drm for driver errors |
| WireGuard tunnel up but no traffic | DNS or routing not configured | Check wg show for handshake timestamp; verify DNS = and AllowedIPs = in your .conf |
| Calendar not syncing | Token expired or firewall blocking CalDAV port | Re-authenticate in Online Accounts / Kontact; ensure port 443 is open through VPN split-tunnel |
Frequently asked questions
- Does Zoom work properly on Wayland without switching to X11?
- Yes, modern Zoom versions support native Wayland, but screen sharing requires xdg-desktop-portal-gnome (GNOME) or xdg-desktop-portal-kde (KDE) to be installed. After installing the portal package, log out and back in.
- Is there a supported Microsoft Teams desktop client for Linux?
- Microsoft discontinued the official Teams Linux client in 2023. The recommended alternatives are Teams in a Chromium-based browser (full WebRTC support) or the community-maintained teams-for-linux Flatpak.
- How do I stop my VPN from routing all traffic, keeping local services accessible?
- Configure split tunneling in your WireGuard .conf by setting AllowedIPs to only your company's subnets rather than 0.0.0.0/0. For OpenVPN, ask your admin to push a split-tunnel configuration or remove redirect-gateway def1 from your profile.
- Can I sync Google Calendar without giving GNOME my Google account password?
- Yes. GNOME Online Accounts uses OAuth2, so you authenticate in a browser and a token is stored — your actual password is never saved locally. For Thunderbird, you will need to generate a Google app password only if your account has 2FA and you add it as a CalDAV account manually.
- Is Bitwarden safe to use as a cloud password manager on Linux?
- Bitwarden uses end-to-end encryption; your vault is encrypted locally before upload and Bitwarden's servers never see your master password. If you prefer full control, you can self-host the Vaultwarden server on your own infrastructure.
Related guides
Linux Clipboards Explained (+ Clipboard Managers)
Learn the difference between Linux's PRIMARY and CLIPBOARD selections, use xclip, xsel, and wl-clipboard from the terminal, and manage history with GPaste or Klipper.
Configure LibreOffice for Daily Use
Configure LibreOffice for daily use: set default save formats for MS Office interop, tune autosave, install fonts, and add productivity extensions.
Configure the Touchpad and Multitouch Gestures
Configure Linux touchpad behavior and multitouch gestures using libinput, libinput-gestures, and native GNOME and KDE Plasma settings on both Wayland and X11.
Wayland vs X11: How to Choose and Configure Each
Know when to run Wayland or X11, how to check your current session, switch at login with GDM/SDDM/LightDM, and handle NVIDIA and XWayland edge cases.