15 KiB
Beesquit dotfiles (Hyprland + Neovim + Archlinux)
These dotfiles are the full hyprland config with all the main parts configured. I find the keybinds and workflow with those quite comfortable and easy to understand and use.
[Screenshots to add]
Table of contents
Components
| Component | Purpose | Config location | Notes |
|---|---|---|---|
| hyprland | Window manager | ~/.config/hypr/ | Dwindle layout. Luafication in progress |
| waybar | Bottom panel | ~/.config/waybar/ | Requires en_GB locale installed |
| rofi | Universal selector | ~/.config/rofi/ | Acts as a selector in different cases |
| dunst | Notification daemon | ~/.config/dunst/ | Scripts are laying with hyprland config |
| awww | Wallpaper manager | ~/.config/hypr/ | Configured with hypland config |
| hyprlock | Lockscreen manager | ~/.config/hypr/hyprlock.conf | Wallpaper configured with hyprland |
| hypridle | Idle daemon | ~/.config/hypr/hypridle.conf | Just handles idling |
| kitty | Terminal emulator | ~/.config/kitty/ | The ctrl+v is bound to the "paste" action |
| thunar | GUI file manager | No special config | GTK theme "Colloid-Transparent-Dracula" |
| neovim | Text/code editor | ~/.config/nvim/ | Powered by Lazyvim and stylized as an IDE |
| yazi | Terminal file manager | ~/.config/yazi | More vim-like hotkey styling |
| fastfetch | System fetcher | ~/.config/fastfetch | Supports different custom logos for any os |
| bash | Shell | ~/.config/bash (or ~/.bash_profile) | Bash doesn't have zsh autocomplete I hate |
| yadm | Dotfiles manager | No special config | Better alternative to chezmoi |
Palette
You can find the full colors document at the ~/.config/hypr/docs/colors.md. Most colors are based of the Jinx and Violet hair colors from the "Arcane" animated series:
Jinx Blue: #0661b4
Vi Red: #a9124d
And the most-used colors are the brighter shades of those:
Blue: #6aa0d2
Red: #cb7194
Features
Bash
- Loooots of aliases
- Simple yet useful prompt
- Immediate and infinite history saving
- Zoxide, pyenv and some other utilities integration
Hyprland
- Gnome styled workspace switching
- Keyboard controls
- Dwindle styled splitting
- JetBrainsMono Nerd font
Rofi
- The app selector
- The network-manager wrapper as well as VPN manager (supports sing-box, wireguard, netbird)
- Clipboard manager
Waybar
- Icon to show current workspace number
- The "caffeine" button to suppress hypridle sleeping.
- The "projector" button to prevent laptop from sleeping when closing the lid.
- Currently playing song integration
- Calendar on hover over current time
Kitty
- Transparent background
- Catppuccin-Mocha theme
- Cursor trailing
ctrl+vbound to the paste action- Additional mouse buttons support
Neovim
- IDE-like environment
- System clipboard
- Commands
:qa,:wqa,:wcan now be written from upper case (like:Qa,:WQA)
Yazi
- More vim-like binds
- Smart pasting
Keybinds
Notes
- The meta key is the same key as the "Windows" key on windows or "Command" key on macOS or "Super" on some linuxes.
- All the "hjkl" binds should also work with "arrow" keys.
- You can also use some mouse binds for to interact with hyprland
The hyprland keybinds:
Navigation
| Combination | Action |
|---|---|
| meta+a/d | Move to closest existing workspace on left/right |
| meta+ctrl+a/d | Move 1 workspace to the left/right |
| meta+shift+a/d | Move focused window to the closest existing workspace on left/right |
| meta+ctrl+shift+a/d | Move focused window 1 workspace to the left/right |
| meta+hjkl | Focus on window to the left/down/up/right |
| meta+shift+hjkl | Move focused window to the left/down/up/right |
| meta+ctrl+hjkl | Make focused window bigger on the left/down/up/right |
| meta+f | Toggle focused window maximize mode |
| meta+shift+f | Toggle focused window fullscreen mode |
| meta+t | Toggle split layout for window groups |
| meta+shift+t | Swap tiled window groups |
| meta+p | Toggle focused window pseudo tiling |
| meta+shift+p | Toggle focused window floating mode |
| meta+tab | Swap workspaces between monitors |
| alt+tab | Cycle between windows |
| meta+0 | Focus on monitor start workspace (usually 100) |
| alt+shift/shift+alt | Change keyboard layout |
General
| Combination | Action |
|---|---|
| meta+F1 | Toggle performance mode (disables blur, shadows, etc) |
| meta+q | Open terminal (kitty) |
| meta+e | Open thunar file manager |
| meta+r | Open rofi app manager |
| meta+shift+r | Open rofi network manager |
| meta+v | Open rofi clipboard manger |
| meta+s | Open hyprpicker |
| meta+shift+s | Make partial screenshot |
| meta+c | Clear dunst notifications |
| meta+`(backtick) | Lock session with hyprlock |
| meta+w | Toggle waybar |
| meta+shift+w | Toggle quickshell |
| meta+shift+c | Kill focused window |
| meta+shift+m | Exit Hyprland |
Neovim
| Combination | Action |
|---|---|
| ctrl+hjkl | Focus on window to the left/down/up/right |
| F2 | Toggle neotree |
| space+f+g | Show telescope live-grep menu |
| space+h | Show harpoon menu |
| space+a | Add current file to harpoon |
| space+l | Remove current file to harpoon |
| space+shift+l | Clear all harpoon marks |
| shift+h/l | Switch to next/previous harpoon mark |
| F3 | Copy path to the current file |
| F4 | Copy current file filename |
| shift+\ | Comment out active line |
| ' (apostrophe) | Play "q" macros (same as @q) |
| ctrl+o | Go back |
| ctrl+shift+i | Go forward |
| gd | Go to definition |
| space+e | Paste shell command output |
| space+w | Delete all trailing spaces in the current file |
| @+/ | Clear search |
| shift+c (neotree) | Convert file into directory with the same name |
| shift+f (neotree) | Toggle hidden files |
| h/l (neotree) | Open/close node |
Yazi
| Combination | Action |
|---|---|
| :+q+enter | Exit yazi |
| :+q+a+enter | Exit yazi |
| ; | Open shell |
| gr | Go to / |
| ge | Go to /etc |
| gu | Go to /usr |
| gv | Go to /var |
| ga | Go to /run/media/$USER |
| gc | Go to ~/.config |
| gd | Go to ~/Downloads |
| gp | Go to ~/Pictures |
| shift+v | Select files |
| shift+f | Maxize preview pane |
Multimedia
Default multimedia keys are bound to the actions they are considered to do.
Issues
- The config is partially legacy. Some parts need rewriting to
lua - The "focus on start workspace" always uses workspace number 100 on any monitor
- Notifications are often showed on wrong display
- Neovim sometimes triggers warnings for no reason
- No simple wallpaper selector present
- Waybar can sometimes fail to update charging status
- Waybar looks bad on desktop (without brightness and battery)
- Brightness changing is not available for hdmi, dp, etc connected displays
- Fastfetch shows the run script instead of the users shell
- Uwsm can be phased out
Setup
WARNING!
The config setup script will overwrite the dotfiles for some programs!
Please backup your config first!
Quick guide
To install the base config run following commands:
sudo pacman -S --noconfirm --needed git
git clone https://git.frik.su/beesquit/dotfiles
./dotfiles/config-scripts/install-config.sh
Details
The base installation script creates basic directory structure, bash "edit config" dir, installs the packages, imports dotfiles and sets some default apps.
The bash installation script is located at the:
~/config-scripts/install-config.sh
You can also then install yay with this script:
~/config-scripts/install-yay.sh
If you are using this config on the desktop (and especially if you are planning to play games) - you can use one more script to install software pack I find useful for this scenario:
~/config-scripts/install-additional.sh
Keep in mind that gnome styled workspace switching "gnome style" is achieved by the use of the hyprnome package which is available in the AUR. It is installed in the "additional" script, but you can also install it manually
yay -S --needed --noconfirm hyprnome
Installed packages list
Base/system packages
- General:
git,base-devel,less,jq,inetutils,python,bash,zoxide,yadm - Hyprland&core:
hyprland,uwsm,brightnessctl,wl-clipboard - XDG Portals:
xdg-desktop-portal-hyprland,xdg-desktop-portal,xdg-desktop-portal-gtk,xdg-desktop-portal-wlr
UI/Graphics
- Launchers&bars:
rofi,waybar,dunst - Idle&lock:
hypridle,hyprlock - Wallpaper&color:
awww,hyprpicker - Screenshots:
grim,slurp - Font:
ttf-jetbrains-mono-nerd - GTK settings:
nwg-look
Terminal & editors
- Terminal:
kitty - File managers:
yazi,thunar+ plugins,gvfs+ all backends (mtp, afc, nfs, smb, goa, wsdd, dnssd, gphoto2) - Editors:
neovim,vi,vim,nano - Editors additions:
tree-sitter-cli,ripgrep,fzf
Utilities
- Tools:
nmap,btop - Fun:
fastfetch,cowsay
Additional (optional user apps)
- Net:
wireguard-tools,netbird-bin - Audio:
pavucontrol,pamixer - Different apps:
firefox,telegram,qbittorrent,opencode - Media:
spotify,gimp,obs-studio - Office:
obsidian-bin,libreoffice-fresh - DM:
sddm - Helpers:
hyprnome,git-credential-manager-bin
Optional (gaming)
- Apps:
discord - Launchers:
steam,prismlauncher - Libs:
wine
Configuration
The hyprland config has "arbitrary_settings.conf" file in which you can set wallpaper for desktop and lockscreen, set bluring for lockscreen and toggle "gnome" styled workspace switching.
Other than that the configs are pretty plain and easy to change.
Tricks used in the config
Features
- Gnome-styled workspace switching - skips empty workspaces between workspaces with opened windows. It is implemented with a
hyprnomepackage and is ignored if the package is not present - You can switch between modes on the host using
mode-localandmode-remote. It toggles OSC-52 profile and some more features making the workflow via ssh to that host more comfortable and integrated - You can manage additional aliases using
aliasm,aliasd,aliasr,aliasscommands - Projector key at the waybar is implemented using
systemd-inhibit. Allows the laptop to not go to sleep on the lid close. It does not inhibit sleeping due to the idle timeout - for that you can use thecaffeinebutton which inhibits the idle sleeping