# 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](#Components) - [Palette](#Palette) - [Features](#Features) - [Keybinds](#Keybinds) - [Issues](#Issues) - [Setup](#Setup) - [Configuration](#Configuration) - [Extra](#Extra) # 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: ```hex Jinx Blue: #0661b4 Vi Red: #a9124d ``` And the most-used colors are the brighter shades of those: ```hex 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+v` bound to the paste action - Additional mouse buttons support ## Neovim - IDE-like environment - System clipboard - Commands `:qa`, `:wqa`, `:w` can 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: ```sh 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: ```sh ~/config-scripts/install-config.sh ``` You can also then install yay with this script: ```sh ~/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: ```sh ~/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 ```sh 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 `hyprnome` package and is ignored if the package is not present - You can switch between modes on the host using `mode-local` and `mode-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`, `aliass` commands - 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 the `caffeine` button which inhibits the idle sleeping