Skip to main content

Manjaro on a Dell XPS 15

Here are my steps switching from Windows to Manjaro Linux on a Dell XPS 15 9500.

Basic installation​

  • Backed up my Windows system
  • Installed Manjaro Gnome using Ventoy
  • Once booted, update pacman mirrors
    sudo pacman-mirrors -c de,at
  • Enable the AUR + Flatpak with updates in the Pamac GUI and upgrade all packages
    • Add flathub: flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Rendering setup​

Resolve hibernation and sleep issues​

The default installation had issues waking up after being in suspend or hibernation state. The following actions solved the problem for me:

  • Changing some boot options
    • I also added sysrq_always_enabled=1 here, to enable the REISUB method, just in case
    • sudo update-grub
  • Enabling early KMS start of the Intel and Nvidia modules
    • Add i915 and nvidia nvidia_modeset nvidia_uvm nvidia_drm to the MODULES=(...) array in /etc/mkinitcpio.conf
    • sudo mkinitcpio -P

Use X and disable Wayland​

Edit /etc/gdm/custom.conf, and uncomment #WaylandEnable=false, because Wayland

  • has no message API between windows, so CopyQ doesn't work
  • is still not supported by a lot of apps and XWayland is blurry on HiDPI (Sommilier could be ported here)
  • disables hardware acceleration in some apps
  • forces VSync
  • doesn't work with optimus manager

Enable fractional scaling​

sudo pacman -S mutter-x11-scaling
gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
sudo systemctl restart gdm # note, that this will close all apps

Setup optimus manager​

pamac install base-devel optimus-manager gdm-prime
sudo cp /usr/share/optimus-manager.conf /etc/optimus-manager

Editing these configs will create a tear free experience:

/etc/optimus-manager/optimus-manager.conf
driver=intel # modesetting is recommended for newer hardware, but then tearfree only works with xorg-server-git for now
tearfree=yes
options=overclocking, triple_buffer

Also, applying the following settings will enable dynamic power management and hybrid graphics, but one should read this guide first:

/etc/optimus-manager/optimus-manager.conf
startup_mode=hybrid
dynamic_power_management=fine

Now, after runnning systemctl restart gdm optimus-manager, the desktop will begin to use gdm-prime and start optimus-manager using hybrid graphics right away. (reboot if this fails)

Pretty GDM and plymouth​

The following procedures will remove all Manjaro ads from the boot process and the login screen.

Apply some nice settings to GDM​

  • pamac install gdm-settings
  • Click three dots -> Load session settings
  • Login Screen -> Disable "Enable Logo"
  • Apply

Change the plymouth theme​

  • plymouth-set-default-theme --list and pick a theme
  • Set DeviceScale=2 in /etc/plymouth/plymouthd.conf for HiDPI
  • sudo plymouth-set-default-theme -R spinner

Setting up the fingerprint sensor​

The device is on the list of unsupported devices, but it works tho with the libfprint-2-tod1-xps9300 driver from the AUR.

This will install the driver:

pamac remove fprintd
pamac install libfprint-tod-git libfprint-2-tod1-xps9300-bin
pamac install fprintd

Then setup your fingerprint in Settings -> Users

Fixing scroll issues with libinput and HiDPI mice​

Some X apps might ignore scroll events when the scroll direction changes and HiDPI scrolling is enabled. xev can be used to track this behaviour, even when evtest shows different events.

This solution worked by creating the following file:

/etc/libinput/local-overrides.quirks
[Logitech MX Master 3 USB]
MatchVendor=0x046D
MatchProduct=0x4082
ModelInvertHorizontalScrolling=1
AttrEventCode=-REL_WHEEL_HI_RES;-REL_HWHEEL_HI_RES;

[Logitech MX Master 3]
MatchVendor=0x46D
MatchProduct=0xB023
ModelInvertHorizontalScrolling=1
AttrEventCode=-REL_WHEEL_HI_RES;-REL_HWHEEL_HI_RES;

Now after running systemctl restart gdm, the issues were fixed.

Configuring Gnome settings​

  • Set a nice wallpaper
  • Shortcuts
    • Super + Arrow Up: Maximize window
    • Super + Arrow Down: Restore window
    • Super + E: nautilus --new-window
    • Super + T: gnome-terminal
    • Super + V: copyq "menu('clipboard', 20)"
    • Super + .: emoji-picker
  • Configure cursor speed
  • Gnome Extensions
    • Just Perfection
      • Preset: Super Minimal
      • Panel in Overview: On
      • OSD: On
      • Workspace Popup: On
      • Workspace Switcher: On
      • Animation: Fastest
  • Configure user dirs in ~/.config/user-dirs.dirs

Configuring additional apps​

  • pamac install brave-browser copyq neovim nvim-packer-git visual-studio-code-bin ttf-ms-win11-auto steam-native-runtime bitwarden speedtest-cli minecraft-launcher whatsapp-for-linux tree platformio neofetch mutter-x11-scaling cowsay x11-emoji-picker cuda-tools teams-for-linux youtube-dl nm-connection-editor vmware-workstation wireshark-qt dotnet-sdk python-pip rustup lldb go libreoffice-still android-sdk android-studio autojump bluez-utils-compat cabextract gdlauncher-bin linux-wifi-hotspot nvidia-container-runtime-bin python2-bin sqlite teamviewer usb_modeswitch xxd-standalone tensorflow cuda cudnn xcursor-breeze noto-fonts downgrade virt-manager

  • Set VS Code terminal.integrated.fontFamily to MesloLGS NF or NotoSansMono Nerd Font

  • Change cursor in Tweaks to Xcursor-breeze

  • Add myself to the wireshark group
    sudo usermod -a -G wireshark $USER

  • Install a resolve crack for mp4 codecs

    • Override desktop file to execute app with prime-run
  • VMWare setup

  • Rust setup

    • rustup default stable
    • rustup target add i686-unknown-linux-gnu
    • cargo install cargo-watch
  • VirtManager setup

    • To use VirtManager without root, set unix_sock_group = "libvirt" in /etc/libvirt/libvirtd.conf and run:
      newgrp libvirt
      sudo usermod -a -G libvirt $USER
    • Enable and start the daemon and the default network:
      sudo systemctl enable libvirtd
      sudo systemctl start libvirtd
      sudo virsh net-autostart default
      sudo virsh net-start default
  • League of Legends

    • Install lutris with pamac install lutris (with gamemode gamescope vkd3d wine winetricks xorg-xgamma and their lib32 versions)
    • Configure Lutris -> Wine Settings -> System Options
      • Set the Default installation folder to ~/.local/share/games
      • Enable NVIDIA Prime Render Offload
    • Install from https://lutris.net/games/league-of-legends/
  • pamac install nvm

    • Follow setup instructions
  • Setup mysql and platformio

  • ...

  • Switch to Fedora and Wayland