Compare commits
3
Commits
dbe9df5e12
...
current
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc83738296 | ||
|
|
a39015bc31 | ||
|
|
b1f7165880 |
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 348 KiB |
@@ -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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
@@ -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"
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
Reference in new issue
Block a user