Desktop Setup - cephi-sui/dotfiles GitHub Wiki
PipeWire is a multimedia framework which supports all sound servers.
sudo pacman -Syu pipewire pipewire-audio pipewire-alsa pipewire-jack pipewire-pulse wireplumbersudo pacman -Syu gnu-free-fonts noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra nerd-fontssudo pacman -Syu alacritty firefox mpvsudo pacman -Syu nmap openbsd-netcat| Compositor | Hyprland |
| Cursor | Bibata |
| Display Manager | SDDM |
| Policy Kit | KDE |
| Status Bar | Waybar |
| Application Launcher & Menu | Fuzzel |
| Notifications | SwayNotificationCenter |
| Screenshot |
Grimblast (using grim, slurp, hyprpicker) |
| Wallpaper | swww (+ waypaper) |
| Lockscreen | Hyprlock |
Browser
sudo pacman -Syu firefox- Terminal out-of-the-box:
sudo pacman -Syu kitty
- Terminal that requires editing
~/.config/hypr/hyprland.conf:sudo pacman -Syu alacritty
Dolphin (File Browser) + Ark (Archive Browser)
sudo pacman -Syu dolphin dolphin-plugins kdegraphics-thumbnailers libheif qt5-imageformats kdesdk-thumbnailers ffmpegthumbs taglib kompare arkPavucontrol (Audio Device Control)
sudo pacman -Syu pavucontrolBluetui (Bluetooth Device Control)
sudo pacman -Syu bluetuisudo pacman -Syu hyprland sddm wl-clipboard wtype && sudo systemctl enable sddmTo get X11 applications to scale properly, go to the scaling section of this repo's ~/.config/hypr/hyprland.conf
- QT: Env variable
QT_SCALE_FACTOR(float) - GTK: Env variable
GDK_SCALE(integer)
For Electron applications either:
- Add
--force-device-scale-factor=<float>to the.desktopin/usr/share/applications/ - Just use
ctrl++in the application itself.
sudo pacman -Syu xdg-desktop-portal-hyprland xdg-desktop-portal-kde xdg-desktop-portal-gtk xwaylandvideobridge qt5-wayland qt6-wayland jqInstall media and brightness controls.
sudo pacman -Syu playerctl brightnessctlIf desired, install wev ( ctrl + c to exit ) to determine keycodes for ~/.config/hypr/hyprland.conf
For screenshots, the grimblast script will freeze the screen using
hyprpicker, select a region using slurp, and screenshot using grim.
sudo pacman -Syu grim slurpparu -S hyprpickerPull this repo https://github.com/hyprwm/contrib/ and run make install.
cd ~/Downloads/git && git clone https://github.com/hyprwm/contrib.git && cd contrib/grimblast && sudo make installsudo pacman -Syu polkit-kde-agent
~/.config/hypr/hyprland.conf
exec-once=/usr/lib/polkit-kde-authentication-agent-1Install iio-hyprland, which will pull iio-sensor-proxy as a dependency.
paru -S iio-hyprlandRun hyprctl monitors to obtain desired monitor for rotation.
It may be necessary to specify the monitor in
~/.config/hypr/hyprland.conflike so.
monitor = $mainMoni,preferred,auto,autoRun the programs at startup.
~/.config/hypr/hyprland.conf
exec-once = iio-sensor-proxy & iio-hyprlandsudo pacman -Syu hyprlockSwaylock can be run with the following command:
swaylock --daemonize --indicator-caps-lock --show-failed-attemptsThis command will get called with the fuzzel-power-menu script (see below).
Fuzzel is a smaller, faster application launcher than Rofi, while still providing the base dmenu functionality necessary.
sudo pacman -Syu fuzzel
~/.config/hypr/hyprland.conf
bindr = $mainMod, Super_L, exec, killall fuzzel || fuzzelSee below.
Bemoji has history built-in and sends the emoji list via dmenu. Requires wtype to type the emoji.
It also allows for easily adding new entries like kaomoji :D
paru -S bemojiBemoji is run with Fuzzel as its picker.
BEMOJI_PICKER_CMD="fuzzel -d" bemoji -tc
~/.config/hypr/hyprland.conf
bind = $mainMod, 60, exec, killall fuzzel; BEMOJI_PICKER_CMD="fuzzel -d" bemoji -t # Super + .A basic, custom-made nmcli frontend script stored in ~/.config/fuzzel/ using Material Design icons to match the riced Waybar.
A script stored in ~/.config/fuzzel/ which makes use of swaylock (see above).
One fun way to call this menu is via the power button.
To do so, modify /etc/systemd/logind.conf to ignore the power key.
Then bind the power key in Hyprland.
~/.config/hypr/hyprland.conf
bind = , XF86PowerOff, exec, ~/.config/fuzzel/fuzzel-power-menuWaybar is a simple GTK-based status bar.
sudo pacman -Syu waybar- Uncomment the layer top line so that waybar appears on top of windows
- Remove/add desired modules
- Replace "sway" with "hyprland"
- Change "focused" to "active" when referring to workspaces
- https://www.reddit.com/r/hyprland/comments/12gn52e/comment/jfofgv4/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button Monitor-independent workspaces idea which is turned into a script for these dotfiles.
Cliphist is a program that stores clipboard history that can be read out later.
sudo pacman -Syu cliphist
~/.config/hypr/hyprland.conf
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
bind = $mainMod, V, exec, killall fuzzel; cliphist list | fuzzel -d | cliphist decode | wl-copySwayNotificationCenter is a nice GTK-based notification center which supports widgets for various purposes, like music.
paru -S swaync
~/.config/hypr/hyprland.conf
exec-once = swaync
bind = $mainMod, N, exec, swaync-client -t -sw- Static:
sudo pacman -Syu hyprpaper
- Animated:
paru -S swww waypaper-git
sudo pacman -Syu xdg-utilsSet default application for given filetype:
xdg-mime default <application>.desktop <filename>Open a file using the default application:
xdg-open <filename>Minimum GNOME install:
sudo pacman -Syu gdm baobab evince gnome-characters gnome-console gnome-control-center gnome-disk-utility gnome-font-viewer gnome-keyring gnome-menus gnome-session gnome-settings-daemon gnome-shell gnome-shell-extensions gvfs gvfs-goa gvfs-gphoto2 gvfs-mtp gvfs-nfs gvfs-smb loupe nautilus snapshot sushi tecla xdg-desktop-portal-gnome xdg-user-dirs-gtk gnome-tweaks gnome-browser-connector dconf-editorRemove X button on the top right.
gsettings set org.gnome.desktop.wm.preferences button-layout appmenuTurn off system bell.
gsettings set org.gnome.Console audible-bell falseSet Window Focus on Hover
gsettings set org.gnome.desktop.wm.preferences focus-mode sloppy
gsettings set org.gnome.desktop.wm.preferences auto-raise trueChange keybinds.
gsettings set org.gnome.desktop.wm.keybindings close "['<Super>q']"
gsettings set org.gnome.settings-daemon.plugins.media-keys home "['<Super>e']"
gsettings set org.gnome.settings-daemon.plugins.media-keys control-center "['<Super>i']"
gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['<Super>z']"
gsettings set org.gnome.shell.keybindings show-screenshot-ui "['<Super><Shift>s']"
gsettings set org.gnome.shell.keybindings screenshot "['Print']"
gsettings set org.gnome.shell.keybindings screenshot-window "['<Super>Print']"
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "<Super>Return"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "kgx"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "Console"
for i in {1..9}; do gsettings set org.gnome.shell.keybindings switch-to-application-$i "[]"; done
for i in {1..10}; do gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-$i "['<Super>$(($i % 10))']"; done
for i in {1..10}; do gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-$i "['<Super><Shift>$(($i % 10))']"; done
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-down "['<Super><Shift><Ctrl>Down']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-left "['<Super><Shift><Ctrl>Left']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-right "['<Super><Shift><Ctrl>Right']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-up "['<Super><Shift><Ctrl>Up']"Extensions
gnome-extensions enable [email protected]
gnome-extensions enable [email protected]
gnome-extensions enable [email protected]