290 lines
15 KiB
Markdown
290 lines
15 KiB
Markdown
# 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
|