Compare commits

..
3 Commits
Author SHA1 Message Date
wfalkowski dc83738296 Include KVJ GTK theme 2026-10-15 21:38:12 +00:00
wfalkowski a39015bc31 Add current desktop wallpaper 2026-10-15 21:37:37 +00:00
wfalkowski b1f7165880 README.md 2026-10-15 21:36:08 +00:00
5 changed files with 313 additions and 22 deletions

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

+18 -22
View File
@@ -1,44 +1,40 @@
# Gentoo Hyprland dotfiles
# Gentoo / Hyprland
My desktop setup lives here: a mostly keyboard-driven Hyprland session, a narrow Quickshell bar down the left edge, and a restrained charcoal palette with steel-blue accents. The configs are tuned to my machine, so expect to adjust paths and hardware-specific bits before using them elsewhere.
The configs I use on my Gentoo machine. Hyprland runs the session; Quickshell supplies the bar and desktop controls. The look is deliberately plain: near-black surfaces, a muted blue accent, small gaps, and Maple Mono in the terminal.
![Desktop with the Quickshell side bar and media notification](screenshots/desktop.png)
## What’s in the repo
## Configs
| Path | What it configures |
| Directory | Contents |
| --- | --- |
| `.config/hypr/` | Hyprland layout, animations, key bindings, monitor defaults, and startup commands |
| `.config/quickshell/` | The bar, app launcher, wallpaper picker, system tray, quick settings, and power menu |
| `.config/foot/` | Foot terminal font, spacing, scrollback, key bindings, and matching colors |
| `.config/fish/` | Interactive shell defaults, including a quiet greeting and `vim` alias |
| `.config/fastfetch/` | System summary shown in the terminal |
| `.config/hypr/` | Hyprland Lua config, key bindings, layout, animations, startup, and wallpaper settings |
| `.config/quickshell/` | Bar, launcher, wallpaper picker, tray, status panels, and power menu |
| `.config/foot/` | Foot terminal settings and color palette |
| `.config/fish/` | Interactive shell defaults and aliases |
| `.config/fastfetch/` | Fastfetch module layout |
| `themes/KVJ/` | GTK 2 and GTK 3 theme files |
## The desktop
## Session details
Hyprland uses a compact dwindle layout, small gaps, subtle borders, and short window animations. `SUPER+E` opens Foot, `SUPER+D` opens the Quickshell launcher, and `SUPER+P` opens the wallpaper picker. The config also binds workspace navigation, media keys, volume, brightness, screenshots, and power actions.
Hyprland uses the dwindle layout with 5 px inner gaps, 10 px outer gaps, and a one-pixel border. `SUPER+E` launches Foot, `SUPER+D` opens the launcher, and `SUPER+P` opens the wallpaper picker. Media keys control playback, volume, and brightness; Print takes a full screenshot, while Shift+Print starts a region capture.
Quickshell handles the things I want at a glance or one click away: workspace and status indicators, audio and media controls, Wi-Fi and Bluetooth, battery and brightness, night light, calendar, tray menus, and power controls. Its panels share Foot’s dark colors, with blue for focus and olive green for battery status.
The Quickshell bar sits on the left. Its panels cover audio devices and playback, Wi-Fi, Bluetooth, battery, brightness, night light, and the system tray. There’s also a calendar, wallpaper browser, and power menu. The same palette appears in Foot and the Quickshell panels.
![Battery and brightness panel](screenshots/battery-panel.png)
![Audio devices and volume controls](screenshots/audio-panel.png)
Foot uses Maple Mono at 9 pt, 14 px padding, and a 10,000-line scrollback. The palette carries through to Quickshell; Fish keeps startup quiet, while Fastfetch prints the system summary when I need it.
Foot uses Maple Mono at 9 pt, 14 px padding, and 10,000 lines of scrollback. Fish starts without a greeting; Fastfetch provides the machine summary when run from the terminal.
![Volume on-screen display](screenshots/volume-osd.png)
## Software
- **Session and shell:** Gentoo Linux, Hyprland, Quickshell, Fish
- **Terminal and system display:** Foot, Fastfetch
- **Desktop services:** Hyprpaper, PipeWire, NetworkManager, BlueZ
- **Controls and utilities:** `pactl`, `wpctl`, `playerctl`, `brightnessctl`, `hyprsunset`, `nmcli`, `bluetoothctl`, `grim`, `slurp`, and `wl-clip-persist`
Gentoo Linux, Hyprland, Quickshell, Fish, Foot, Fastfetch, and Hyprpaper make up the session. Quickshell talks to PipeWire through `pactl` and its PipeWire module; NetworkManager and BlueZ provide network and Bluetooth control. Other commands used by the configs include `playerctl`, `wpctl`, `brightnessctl`, `hyprsunset`, `grim`, `slurp`, and `wl-clip-persist`.
The config expects Maple Mono, the Bibata Modern Classic cursor, and a GTK theme named `KVJ`. It also calls `~/.local/bin/wallpaper-set` and looks for wallpapers in `~/Pictures/Wallpapers`; those aren’t included here. Some actions use `doas`, so review those commands and your `doas` rules before enabling them.
## Adapting it
## Using these files
The current plant wallpaper is included at [`Pictures/Wallpaper/wallhaven-d5dkjm.jpg`](Pictures/Wallpaper/wallhaven-d5dkjm.jpg). The `KVJ` GTK 2/3 theme lives in [`themes/KVJ/`](themes/KVJ/); install it with `mkdir -p ~/.themes && cp -a themes/KVJ ~/.themes/`. Hyprland sets `GTK_THEME=KVJ`.
Clone the repo and copy the `.config` directories you want into your home directory. There’s no install script; check the paths and commands in `hyprland.lua` and `shell.qml` first, since several are specific to my setup.
Keep API keys, passwords, private keys, and machine-specific secrets out of the repo. Store those in a local, untracked file or a password manager.
The live config expects wallpapers in `~/Pictures/Wallpapers`, and changes them through `~/.local/bin/wallpaper-set`. It also expects the Bibata Modern Classic cursor and uses `doas` for power and WireGuard actions. Check those paths, programs, and privileges before copying the files to another machine.
+63
View File
@@ -0,0 +1,63 @@
# KVJ — GTK 2 theme. Uses GTK 2's built-in style without an engine.
gtk-color-scheme = "bg_color:#151515\nfg_color:#D0D0D0\nbase_color:#181818\ntext_color:#D0D0D0\nselected_bg_color:#6C99BB\nselected_fg_color:#F5F5F5\ntooltip_bg_color:#181818\ntooltip_fg_color:#D0D0D0"
gtk-font-name = "Liberation Mono 10"
gtk-icon-theme-name = "Adwaita"
style "kvj-foot-default" {
xthickness = 1
ythickness = 1
bg[NORMAL] = "#151515"
bg[PRELIGHT] = "#282828"
bg[ACTIVE] = "#303030"
bg[SELECTED] = "#6C99BB"
bg[INSENSITIVE] = "#181818"
fg[NORMAL] = "#D0D0D0"
fg[PRELIGHT] = "#F5F5F5"
fg[ACTIVE] = "#F5F5F5"
fg[SELECTED] = "#F5F5F5"
fg[INSENSITIVE] = "#757575"
base[NORMAL] = "#181818"
base[PRELIGHT] = "#202020"
base[ACTIVE] = "#303030"
base[SELECTED] = "#6C99BB"
base[INSENSITIVE] = "#181818"
text[NORMAL] = "#D0D0D0"
text[PRELIGHT] = "#F5F5F5"
text[ACTIVE] = "#F5F5F5"
text[SELECTED] = "#F5F5F5"
text[INSENSITIVE] = "#757575"
}
style "kvj-foot-entry" = "kvj-foot-default" {
base[NORMAL] = "#151515"
base[ACTIVE] = "#202020"
text[NORMAL] = "#D0D0D0"
text[SELECTED] = "#F5F5F5"
}
style "kvj-foot-button" = "kvj-foot-default" {
bg[NORMAL] = "#202020"
bg[PRELIGHT] = "#282828"
bg[ACTIVE] = "#303030"
bg[SELECTED] = "#6C99BB"
}
style "kvj-foot-menu" = "kvj-foot-default" {
bg[NORMAL] = "#181818"
bg[PRELIGHT] = "#282828"
bg[ACTIVE] = "#303030"
bg[SELECTED] = "#303030"
fg[SELECTED] = "#6C99BB"
}
widget_class "*" style "kvj-foot-default"
widget_class "*Entry*" style "kvj-foot-entry"
widget_class "*TextView*" style "kvj-foot-entry"
widget_class "*Text*" style "kvj-foot-entry"
widget_class "*Button*" style "kvj-foot-button"
widget_class "*Menu*" style "kvj-foot-menu"
widget_class "*MenuItem*" style "kvj-foot-menu"
+222
View File
@@ -0,0 +1,222 @@
/* KVJ — GTK 3 theme, matched to foot.ini and Quickshell tokens. */
@define-color theme_bg_color #151515;
@define-color theme_fg_color #D0D0D0;
@define-color theme_base_color #181818;
@define-color theme_text_color #D0D0D0;
@define-color theme_selected_bg_color #6C99BB;
@define-color theme_selected_fg_color #F5F5F5;
@define-color theme_unfocused_bg_color #181818;
@define-color theme_unfocused_fg_color #D0D0D0;
@define-color theme_unfocused_base_color #151515;
@define-color theme_unfocused_text_color #D0D0D0;
@define-color borders #2F2F2F;
@define-color borders_focus #454545;
@define-color surface #202020;
@define-color surface_hover #282828;
@define-color surface_selected #303030;
@define-color accent #6C99BB;
@define-color success #7B9246;
@define-color warning #D3A04D;
@define-color danger #A53C23;
@define-color teal #5EA8A2;
@define-color muted #757575;
* {
color: @theme_fg_color;
font-family: "Maple Mono", "Liberation Mono", monospace;
-GtkWidget-focus-line-width: 1;
-GtkWidget-focus-padding: 2;
}
window,
window.background,
.background {
background-color: @theme_bg_color;
color: @theme_fg_color;
}
label:disabled,
button:disabled,
entry:disabled,
textview text:disabled {
color: @muted;
}
entry,
spinbutton,
combobox entry,
textview text,
treeview.view,
list row,
.view {
background-color: @theme_base_color;
color: @theme_text_color;
border-color: @borders;
border-radius: 0;
caret-color: #F5F5F5;
outline-color: @accent;
}
entry:focus,
spinbutton:focus,
combobox:focus,
textview:focus,
treeview.view:focus,
button:focus {
border-color: @borders_focus;
box-shadow: inset 0 0 0 1px @accent;
}
selection,
entry selection,
textview text selection,
treeview.view:selected,
row:selected,
.view:selected {
background-color: @theme_selected_bg_color;
color: @theme_selected_fg_color;
}
button,
combobox button,
spinbutton button,
toolbar button {
background-color: @surface;
color: @theme_fg_color;
border: 1px solid @borders;
border-radius: 0;
box-shadow: none;
padding: 5px 9px;
}
button:hover,
combobox button:hover,
spinbutton button:hover,
toolbar button:hover {
background-color: @surface_hover;
border-color: @borders_focus;
}
button:active,
button:checked,
button:selected,
modelbutton:checked {
background-color: @surface_selected;
border-color: @borders_focus;
}
button.suggested-action,
button.suggested-action:hover {
background-color: @accent;
color: #151515;
border-color: @accent;
}
button.destructive-action,
button.destructive-action:hover {
background-color: @danger;
color: #F5F5F5;
border-color: @danger;
}
menu,
.menu,
popover,
popover.background,
tooltip,
tooltip.background {
background-color: #181818;
color: @theme_fg_color;
border: 1px solid @borders;
border-radius: 0;
box-shadow: none;
}
menuitem,
modelbutton,
popover modelbutton {
background-color: transparent;
color: @theme_fg_color;
border-radius: 0;
padding: 5px 9px;
}
menuitem:hover,
menuitem:focus,
modelbutton:hover,
modelbutton:focus,
popover modelbutton:hover {
background-color: @surface_hover;
color: #F5F5F5;
outline-color: @accent;
}
menuitem:checked,
modelbutton:checked {
background-color: @surface_selected;
color: @accent;
}
headerbar,
toolbar {
background-color: #181818;
color: @theme_fg_color;
border: 0;
border-bottom: 1px solid @borders;
border-radius: 0;
box-shadow: none;
}
headerbar button {
padding: 4px 8px;
}
scrollbar trough {
background-color: #151515;
border-radius: 0;
}
scrollbar slider {
background-color: #505050;
border: 1px solid @borders;
border-radius: 0;
min-width: 7px;
min-height: 7px;
}
scrollbar slider:hover {
background-color: @accent;
}
progressbar trough,
levelbar trough {
background-color: @surface;
border: 1px solid @borders;
border-radius: 0;
}
progressbar progress,
levelbar block.filled {
background-color: @accent;
border-radius: 0;
}
switch,
check,
radio {
background-color: @surface;
border: 1px solid @borders;
border-radius: 0;
}
switch:checked,
check:checked,
radio:checked {
background-color: @accent;
border-color: @borders_focus;
color: #151515;
}
*:backdrop {
color: @theme_unfocused_fg_color;
}
+10
View File
@@ -0,0 +1,10 @@
[Desktop Entry]
Name=KVJ
Type=X-GNOME-Metatheme
Comment=Square-edged dark GTK theme based on the Foot and Quickshell palette
Encoding=UTF-8
[X-GNOME-Metatheme]
GtkTheme=KVJ
IconTheme=Adwaita
CursorTheme=Adwaita