Compare commits
50 Commits
b1341b7920
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ec778781d | |||
| 30425fa1e4 | |||
| b55b45f25e | |||
| 6bb29b7539 | |||
| 3481125919 | |||
| 798ecf40a2 | |||
| eabcc3de6b | |||
| bf9d570ff3 | |||
| 2c3c58e92d | |||
| bc2c508969 | |||
| 8b12bc3a3b | |||
| e628456780 | |||
| 3c463300b5 | |||
| 984027efcb | |||
| 1c12506728 | |||
| 568a81a94d | |||
| 9ee3da3100 | |||
| fab1c53cb3 | |||
| f29cf5e920 | |||
| 3ef8420a21 | |||
| 7805b3c98d | |||
| ccb5b1ab96 | |||
| c65c286606 | |||
| 34ce514c75 | |||
| 6e6376eee9 | |||
| d3617c3866 | |||
| 378cc51cc3 | |||
| 1bd5bebcda | |||
| d96970bc8d | |||
| 4bf3764855 | |||
| af00cb8735 | |||
| 1ba46fb540 | |||
| 6796b1a28f | |||
| 88575db93b | |||
| c14d09c169 | |||
| 939e9fbc88 | |||
| 93f9c77ad3 | |||
| 337b2f1ffd | |||
| cd1126b2ea | |||
| 22e667051a | |||
| b1f76d6ac2 | |||
| f171fe16fb | |||
| dac5c77bed | |||
| 4b3fd8bfa6 | |||
| 0506b1fa6d | |||
| d91355f602 | |||
| d5ce4b4b19 | |||
| e36719997a | |||
| e972fa387d | |||
| d88f49732c |
13
.config/Code/User/extensions.txt
Normal file
13
.config/Code/User/extensions.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
github.copilot-chat
|
||||
ms-azuretools.vscode-containers
|
||||
ms-python.debugpy
|
||||
ms-python.python
|
||||
ms-python.vscode-pylance
|
||||
ms-python.vscode-python-envs
|
||||
ms-vscode-remote.remote-containers
|
||||
ms-vscode.cmake-tools
|
||||
ms-vscode.cpp-devtools
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cpptools-extension-pack
|
||||
ms-vscode.cpptools-themes
|
||||
tomoki1207.pdf
|
||||
8
.config/Code/User/settings.json
Normal file
8
.config/Code/User/settings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"explorer.confirmDragAndDrop": false,
|
||||
"python.defaultInterpreterPath": "/sbin/python3.14",
|
||||
"git.autofetch": true,
|
||||
"explorer.confirmDelete": false,
|
||||
"git.confirmSync": false,
|
||||
"editor.fontSize": 12
|
||||
}
|
||||
@@ -46,7 +46,7 @@ decoration {
|
||||
animations {
|
||||
enabled = yes
|
||||
|
||||
# Light, fast easing — no bounce, no drag
|
||||
bezier = overshoot, 0.22, 0.61, 0.36, 1.15
|
||||
bezier = breeze, 0.22, 0.61, 0.36, 1.0
|
||||
|
||||
# Windows: quick, soft, intentional
|
||||
@@ -54,15 +54,14 @@ animations {
|
||||
animation = windowsOut, 1, 4, breeze, slidefade
|
||||
|
||||
# Workspaces: airy glide, finishes fast
|
||||
animation = workspaces, 1, 5, breeze, slide
|
||||
animation = workspaces, 1, 4, overshoot, slidefade
|
||||
|
||||
# Subtle polish
|
||||
animation = fade, 1, 4, breeze
|
||||
animation = windowsMove, 1, 3, breeze
|
||||
animation = windowsMove, 1, 1, breeze
|
||||
animation = border, 1, 3, breeze
|
||||
}
|
||||
|
||||
gesture = 3, horizontal, workspace
|
||||
|
||||
gesture = 3, down, fullscreen, 1
|
||||
|
||||
|
||||
|
||||
5
.config/hypr/hypridle.conf
Normal file
5
.config/hypr/hypridle.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock
|
||||
before_sleep_cmd = loginctl lock-session
|
||||
}
|
||||
|
||||
@@ -9,10 +9,15 @@ $browser = brave
|
||||
exec-once = /usr/lib/xdg-desktop-portal-hyprland &
|
||||
exec-once = /usr/lib/xdg-desktop-portal &
|
||||
exec-once = hyprpaper
|
||||
exec-once = hypridle
|
||||
exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
|
||||
exec = gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-dark" # for GTK3 apps
|
||||
|
||||
misc:initial_workspace_tracking=1
|
||||
misc {
|
||||
force_default_wallpaper = 0
|
||||
disable_hyprland_logo = true
|
||||
initial_workspace_tracking = 1
|
||||
}
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
@@ -25,9 +30,9 @@ env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
env = NVD_BACKEND,direct
|
||||
env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps# Theme
|
||||
|
||||
exec-once = waybar
|
||||
exec-once = nextcloud
|
||||
exec-once = hyprctl setcursor Breeze 24
|
||||
exec-once = waybar
|
||||
exec-once = hyprctl setcursor breeze 24
|
||||
|
||||
source = ~/.config/hypr/input.conf
|
||||
source = ~/.config/hypr/keybinds.conf
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
splash = false
|
||||
preload = ~/.wallpapers/liminal.png
|
||||
wallpaper = ,~/.wallpapers/liminal.png
|
||||
|
||||
@@ -7,17 +7,25 @@ input {
|
||||
|
||||
follow_mouse = 1
|
||||
accel_profile = flat
|
||||
force_no_accel=2
|
||||
|
||||
sensitivity = 1
|
||||
sensitivity = 0.75
|
||||
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
scroll_factor = 0.2
|
||||
scroll_factor = 0.45
|
||||
}
|
||||
}
|
||||
|
||||
device {
|
||||
name = logitech-usb-receiver
|
||||
name = logitech-pro-x-1
|
||||
sensitivity = 0
|
||||
}
|
||||
|
||||
gestures {
|
||||
workspace_swipe_cancel_ratio = 0
|
||||
workspace_swipe_min_speed_to_force = 10
|
||||
}
|
||||
|
||||
|
||||
gesture = 3, horizontal, scale: 0.1, workspace
|
||||
gesture = 3, down, fullscreen
|
||||
|
||||
@@ -47,16 +47,18 @@ bindel = $mainMod, L, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = $mainMod, K, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Volume
|
||||
bindl = , F4, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindl = , F5, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindl = , F6, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindl = , F7, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindl = , F6, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindl = , F7, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindl = , F8, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindl = , F9, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
|
||||
# Playback (requires playerctl)
|
||||
bindl = , F2, exec, playerctl previous
|
||||
bindl = , F1, exec, playerctl play-pause
|
||||
bindl = , F3, exec, playerctl next
|
||||
bindl = , F3, exec, playerctl previous
|
||||
bindl = , F4, exec, playerctl play-pause
|
||||
bindl = , F5, exec, playerctl next
|
||||
|
||||
bindl = , switch:on:Lid Switch, exec, hyprctl dispatch dpms off
|
||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
||||
|
||||
bind = SUPER CTRL, left, swapwindow, l
|
||||
bind = SUPER CTRL, right, swapwindow, r
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"pulseaudio",
|
||||
"bluetooth",
|
||||
"custom/micmute",
|
||||
"battery",
|
||||
"custom/power"
|
||||
@@ -62,6 +63,16 @@
|
||||
"on-click-right": "pavucontrol"
|
||||
},
|
||||
|
||||
"bluetooth": {
|
||||
"format": " {num_connections}",
|
||||
"format-connected": " {num_connections}",
|
||||
"format-disabled": "",
|
||||
"tooltip-format-connected": "{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": " {device_alias} ({device_battery_percentage}%)",
|
||||
"on-click": "blueman-manager",
|
||||
"on-click-right": "bluectl power toggle"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"interval":2,
|
||||
"states": {
|
||||
|
||||
@@ -1,148 +1,238 @@
|
||||
@define-color Buttons #262522;
|
||||
@define-color Buttonshover #4d4a44;
|
||||
@define-color Text #A69F92;
|
||||
/* ============================================================
|
||||
WAYBAR STYLE — Dark Industrial / Refined Utility
|
||||
Palette: deep charcoal base, amber accents, cool greys
|
||||
============================================================ */
|
||||
|
||||
|
||||
/* --- Global Styles --- */
|
||||
/* ── Root Variables ───────────────────────────────────────── */
|
||||
* {
|
||||
font-family: "JetBrainsMono Nerd Font Propo";
|
||||
font-size: 14px;
|
||||
min-height: 25px;
|
||||
padding-right: 0px;
|
||||
padding-left: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
/* --- Waybar Container --- */
|
||||
#waybar {
|
||||
background: transparent;
|
||||
color: #c6d0f5;
|
||||
margin: 0px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* --- Left Modules (Individual, Fully Rounded Blocks - With Horizontal Spacing & Simple Hover) --- */
|
||||
#workspaces,
|
||||
#cpu,
|
||||
#memory{
|
||||
background-color: @Buttons;
|
||||
padding: 0.3rem 0.7rem;
|
||||
margin: 5px 0px; /* 5px top/bottom margin, 0px left/right (base for individual control) */
|
||||
border-radius: 10px; /* These modules are always rounded */
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
||||
min-width: 0;
|
||||
font-size: 13px;
|
||||
border: none;
|
||||
/* Transition for background-color and color only */
|
||||
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* ── Bar ──────────────────────────────────────────────────── */
|
||||
window#waybar {
|
||||
background: rgba(10, 10, 14, 0);
|
||||
color: #dcdce8;
|
||||
}
|
||||
|
||||
/* ── Tooltip ──────────────────────────────────────────────── */
|
||||
tooltip {
|
||||
background: #0e0e12;
|
||||
border: 1px solid rgba(255, 180, 60, 0.35);
|
||||
color: #dcdce8;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
color: #dcdce8;
|
||||
}
|
||||
|
||||
/* ── Shared Module Base ───────────────────────────────────── */
|
||||
#clock,
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#bluetooth,
|
||||
#battery,
|
||||
#tray,
|
||||
#custom-micmute,
|
||||
#custom-power {
|
||||
padding: 6px 12px;
|
||||
margin: 5px 0;
|
||||
color: #dcdce8;
|
||||
background: rgba(10, 10, 14, 0.3);
|
||||
transition: color 0.2s ease, background 0.2s ease;
|
||||
}
|
||||
|
||||
/* ── Separator dots between modules ──────────────────────── */
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#bluetooth,
|
||||
#custom-micmute,
|
||||
#battery {
|
||||
border-left: 1px solid rgba(255, 255, 255, 0);
|
||||
}
|
||||
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════
|
||||
LEFT — System Info: Clock · CPU · Memory
|
||||
═══════════════════════════════════════════════════════════ */
|
||||
|
||||
#clock {
|
||||
font-family: "JetBrainsMono Nerd Font Propo";
|
||||
font-weight: 400;
|
||||
font-size: 12.5px;
|
||||
color: #f0de9c;
|
||||
letter-spacing: 0.04em;
|
||||
padding-left: 0.4em;
|
||||
border-left: 3px solid rgba(255, 180, 60, 0.3);
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: #b8d8ee;
|
||||
}
|
||||
|
||||
#cpu:hover {
|
||||
color: #d8f0ff;
|
||||
background: rgba(160, 196, 216, 0.14);
|
||||
}
|
||||
|
||||
#memory {
|
||||
margin: 5px 10px;
|
||||
color: #b0d4be;
|
||||
}
|
||||
|
||||
#memory:hover {
|
||||
color: #ceeede;
|
||||
background: rgba(157, 191, 173, 0.14);
|
||||
}
|
||||
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════
|
||||
CENTER — Workspaces
|
||||
═══════════════════════════════════════════════════════════ */
|
||||
|
||||
#workspaces {
|
||||
padding: 0px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* Simple Hover effects for individual left modules - BRIGHTER COLOR */
|
||||
#cpu:hover, #memory:hover {
|
||||
background-color: @Buttonshover; /* Brighter highlight */
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: @Text;
|
||||
border-radius: 10px; /* Workspaces buttons are always rounded */
|
||||
padding: 0.3rem 0.6rem;
|
||||
background: transparent;
|
||||
transition: all 0.2s ease-in-out;
|
||||
border: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @Text;
|
||||
background-color: rgba(153, 209, 219, 0.1);
|
||||
font-family: 'JetBrains Nerd Font Propo';
|
||||
font-size: 12px;
|
||||
padding: 2px 10px;
|
||||
margin: 4px 2px;
|
||||
color: #6e6e88;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
transition: all 0.15s ease;
|
||||
min-width: 32px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: @Buttonshover; /* Reference bright hover color */
|
||||
color: @Text;
|
||||
color: #c0c0d8;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-color: rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
|
||||
/* --- Center Module (Individual, Fully Rounded Block - With Simple Hover) --- */
|
||||
#clock {
|
||||
background-color: @Buttons;
|
||||
padding: 0.3rem 0.7rem;
|
||||
margin: 5px 0px;
|
||||
margin-left: 7px;
|
||||
margin-right: 10px;
|
||||
border-radius: 10px; /* This module is always rounded */
|
||||
min-width: 0;
|
||||
border: none;
|
||||
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
||||
#workspaces button.active {
|
||||
color: #f0c060;
|
||||
background: rgba(255, 180, 60, 0.14);
|
||||
border-color: rgba(255, 180, 60, 0.5);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #f08080;
|
||||
background: rgba(240, 80, 80, 0.15);
|
||||
border-color: rgba(240, 80, 80, 0.45);
|
||||
}
|
||||
|
||||
|
||||
/* Simple Hover effect for clock module - BRIGHTER COLOR */
|
||||
#clock:hover {
|
||||
background-color: @Buttonshover; /* Brighter highlight */
|
||||
/* ═══════════════════════════════════════════════════════════
|
||||
RIGHT — Audio · Bluetooth · Mic · Battery · Power
|
||||
═══════════════════════════════════════════════════════════ */
|
||||
|
||||
/* ── Tray ─────────────────────────────────────────────────── */
|
||||
#tray {
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: rgba(240, 120, 60, 0.25);
|
||||
}
|
||||
|
||||
/* ── Audio ────────────────────────────────────────────────── */
|
||||
#pulseaudio {
|
||||
color: #c4bce8;
|
||||
}
|
||||
|
||||
#pulseaudio:hover {
|
||||
color: #e0d8ff;
|
||||
background: rgba(176, 168, 216, 0.14);
|
||||
}
|
||||
|
||||
/* ── Bluetooth ────────────────────────────────────────────── */
|
||||
#bluetooth {
|
||||
color: #90c8f0;
|
||||
}
|
||||
|
||||
#bluetooth.connected {
|
||||
color: #70d8ff;
|
||||
}
|
||||
|
||||
#bluetooth:hover {
|
||||
background: rgba(128, 184, 224, 0.14);
|
||||
}
|
||||
|
||||
/* ── Microphone Mute ──────────────────────────────────────── */
|
||||
#custom-micmute {
|
||||
color: #b0d4be;
|
||||
}
|
||||
|
||||
#custom-micmute.muted {
|
||||
color: #585870;
|
||||
}
|
||||
|
||||
/* --- Right Modules (Single, Seamless Bar ) --- */
|
||||
#custom-power:hover,
|
||||
#pulseaudio:hover,
|
||||
#battery:hover,
|
||||
#tray:hover,
|
||||
#custom-micmute:hover {
|
||||
background-color: @Buttonshover;
|
||||
}
|
||||
|
||||
#cpu, #memory {
|
||||
color: @Text;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: @Text;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
|
||||
#tray, #battery, #pulseaudio, #custom-power, #custom-micmute {
|
||||
background-color: @Buttons;
|
||||
color: @Text;
|
||||
border-radius: 10px;
|
||||
padding: 0.7rem;
|
||||
margin: 0.35rem;
|
||||
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
margin-right: 11px;
|
||||
background: rgba(157, 191, 173, 0.14);
|
||||
}
|
||||
|
||||
/* ── Battery ──────────────────────────────────────────────── */
|
||||
#battery {
|
||||
color: @Text;
|
||||
color: #b8dc98;
|
||||
}
|
||||
#battery.charging {
|
||||
color: @Text;
|
||||
|
||||
#battery.charging,
|
||||
#battery.plugged {
|
||||
color: #d4f098;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: @Text;
|
||||
color: #eecb68;
|
||||
}
|
||||
|
||||
|
||||
/* --- Tooltip Styles --- */
|
||||
tooltip {
|
||||
background-color: #1a1b26;
|
||||
color: #dddddd;
|
||||
padding: 5px 12px;
|
||||
margin: 5px 0px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
|
||||
font-size: 12px;
|
||||
#battery.critical:not(.charging) {
|
||||
color: #f07060;
|
||||
animation: battery-pulse 1.5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes battery-pulse {
|
||||
0% {
|
||||
opacity: 1;
|
||||
}
|
||||
50% {
|
||||
opacity: 0.4;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
#battery:hover {
|
||||
background: rgba(168, 204, 136, 0.14);
|
||||
}
|
||||
|
||||
/* ── Power Button ─────────────────────────────────────────── */
|
||||
#custom-power {
|
||||
color: #d07070;
|
||||
font-size: 14px;
|
||||
padding: 2px 14px 2px 12px;
|
||||
margin-right: 8px;
|
||||
border-right: 3px solid rgba(255, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
#custom-power:hover {
|
||||
color: #f09090;
|
||||
background: rgba(200, 60, 60, 0.2);
|
||||
}
|
||||
|
||||
36
.config/wlogout/layout
Normal file
36
.config/wlogout/layout
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"label" : "lock",
|
||||
"action" : "loginctl lock-session",
|
||||
"text" : "Lock",
|
||||
"keybind" : "l"
|
||||
}
|
||||
{
|
||||
"label" : "hibernate",
|
||||
"action" : "systemctl hibernate",
|
||||
"text" : "Hibernate",
|
||||
"keybind" : "h"
|
||||
}
|
||||
{
|
||||
"label" : "logout",
|
||||
"action" : "hyprctl dispatch exit",
|
||||
"text" : "Logout",
|
||||
"keybind" : "e"
|
||||
}
|
||||
{
|
||||
"label" : "shutdown",
|
||||
"action" : "systemctl poweroff",
|
||||
"text" : "Shutdown",
|
||||
"keybind" : "s"
|
||||
}
|
||||
{
|
||||
"label" : "suspend",
|
||||
"action" : "systemctl suspend",
|
||||
"text" : "Suspend",
|
||||
"keybind" : "u"
|
||||
}
|
||||
{
|
||||
"label" : "reboot",
|
||||
"action" : "systemctl reboot",
|
||||
"text" : "Reboot",
|
||||
"keybind" : "r"
|
||||
}
|
||||
50
.config/wlogout/style.css
Normal file
50
.config/wlogout/style.css
Normal file
@@ -0,0 +1,50 @@
|
||||
* {
|
||||
background-image: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(12, 12, 12, 0.9);
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
border-color: black;
|
||||
text-decoration-color: #FFFFFF;
|
||||
color: #FFFFFF;
|
||||
background-color: #1E1E1E;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
}
|
||||
|
||||
button:focus, button:active, button:hover {
|
||||
background-color: #3700B3;
|
||||
outline-style: none;
|
||||
}
|
||||
|
||||
#lock {
|
||||
background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png"));
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png"));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png"));
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png"));
|
||||
}
|
||||
@@ -1,3 +1,10 @@
|
||||
[user]
|
||||
email = dylanseandefaoite@gmail.com
|
||||
name = Dylan De Faoite
|
||||
[filter "lfs"]
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
[core]
|
||||
autocrlf = input
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB |
@@ -3,4 +3,11 @@
|
||||
2) Add `monitors.conf` in `~/.config/hypr/` for your specific monitor setup
|
||||
|
||||
# Packages
|
||||
- Used `pacman -Qqen > packages.txt` to get all explicit packages
|
||||
- Used `sudo pacman -Qqen` to get all explicit offical packages
|
||||
- Used `sudo pacman -Qqem` to get all explicit unofficial AUR packages
|
||||
## Meaning
|
||||
- `-Q`: Query local package database
|
||||
- `-q`: Quiet flag, print only package name
|
||||
- `-e`: Only show **explicitly** installed packages
|
||||
- `-n`: Native packages only
|
||||
- `-m`: Foreign packages only
|
||||
|
||||
234
bootstrap.sh
234
bootstrap.sh
@@ -1,5 +1,235 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# birch-dots bootstrap.sh
|
||||
# Goes from a bare Arch install to a fully configured Hyprland desktop.
|
||||
# Run as your normal user (with sudo access), NOT as root.
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PKG_DIR="$REPO_ROOT/packages"
|
||||
|
||||
# Colours
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}==>${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[!]${NC} $*"; }
|
||||
die() { echo -e "${RED}[✗]${NC} $*"; exit 1; }
|
||||
|
||||
# Guard: must not run as root
|
||||
[[ "$EUID" -ne 0 ]] || die "Run as your normal user, not root."
|
||||
|
||||
# =============================================================================
|
||||
# 1. SYSTEM SETUP
|
||||
# =============================================================================
|
||||
|
||||
log "Setting locale (en_IE.UTF-8)"
|
||||
sudo sed -i 's/^#en_IE.UTF-8 UTF-8/en_IE.UTF-8 UTF-8/' /etc/locale.gen
|
||||
sudo locale-gen
|
||||
echo "LANG=en_IE.UTF-8" | sudo tee /etc/locale.conf > /dev/null
|
||||
|
||||
log "Setting keymap (uk)"
|
||||
echo "KEYMAP=uk" | sudo tee /etc/vconsole.conf > /dev/null
|
||||
|
||||
log "Setting timezone (Europe/Dublin)"
|
||||
sudo ln -sf /usr/share/zoneinfo/Europe/Dublin /etc/localtime
|
||||
sudo hwclock --systohc
|
||||
|
||||
log "Setting hostname"
|
||||
read -rp " Enter hostname [dylanvm]: " HOSTNAME
|
||||
HOSTNAME="${HOSTNAME:-dylanvm}"
|
||||
echo "$HOSTNAME" | sudo tee /etc/hostname > /dev/null
|
||||
sudo tee /etc/hosts > /dev/null <<EOF
|
||||
127.0.0.1 localhost
|
||||
::1 localhost
|
||||
127.0.1.1 $HOSTNAME.localdomain $HOSTNAME
|
||||
EOF
|
||||
|
||||
# =============================================================================
|
||||
# 2. NETWORKING
|
||||
# =============================================================================
|
||||
|
||||
log "Enabling NetworkManager"
|
||||
sudo systemctl enable --now NetworkManager
|
||||
|
||||
# =============================================================================
|
||||
# 3. PACMAN SETUP
|
||||
# =============================================================================
|
||||
|
||||
log "Configuring pacman (colour + parallel downloads)"
|
||||
sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
|
||||
sudo sed -i 's/^#ParallelDownloads.*/ParallelDownloads = 5/' /etc/pacman.conf
|
||||
|
||||
log "Enabling multilib repo"
|
||||
sudo sed -i '/\[multilib\]/,/Include/s/^#//' /etc/pacman.conf
|
||||
|
||||
log "Updating mirrors and syncing package database"
|
||||
sudo pacman -Sy --noconfirm reflector 2>/dev/null || true
|
||||
sudo reflector --country Ireland,Germany --age 12 --protocol https \
|
||||
--sort rate --save /etc/pacman.d/mirrorlist 2>/dev/null \
|
||||
|| warn "reflector failed, using existing mirrorlist"
|
||||
sudo pacman -Syyu --noconfirm
|
||||
|
||||
# =============================================================================
|
||||
# 4. PACMAN PACKAGES
|
||||
# =============================================================================
|
||||
|
||||
log "Installing pacman packages"
|
||||
for file in "$PKG_DIR"/pacman/*.txt; do
|
||||
log " → $(basename "$file")"
|
||||
while IFS= read -r pkg; do
|
||||
[[ -z "$pkg" || "$pkg" == \#* ]] && continue
|
||||
sudo pacman -S --needed --noconfirm "$pkg" \
|
||||
|| warn " Skipping pacman package not found: $pkg"
|
||||
done < "$file"
|
||||
done
|
||||
|
||||
# =============================================================================
|
||||
# 5. ZSH AS DEFAULT SHELL
|
||||
# =============================================================================
|
||||
|
||||
log "Setting zsh as default shell"
|
||||
chsh -s /bin/zsh
|
||||
|
||||
# =============================================================================
|
||||
# 6. YAY (AUR HELPER)
|
||||
# =============================================================================
|
||||
|
||||
log "Installing yay"
|
||||
if ! command -v yay &>/dev/null; then
|
||||
tmpdir=$(mktemp -d)
|
||||
git clone https://aur.archlinux.org/yay.git "$tmpdir/yay"
|
||||
pushd "$tmpdir/yay" > /dev/null
|
||||
makepkg -si --noconfirm
|
||||
popd > /dev/null
|
||||
rm -rf "$tmpdir"
|
||||
else
|
||||
log " yay already installed, skipping"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 7. AUR PACKAGES
|
||||
# =============================================================================
|
||||
|
||||
log "Installing AUR packages"
|
||||
for file in "$PKG_DIR"/aur/*.txt; do
|
||||
log " → $(basename "$file")"
|
||||
while IFS= read -r pkg; do
|
||||
[[ -z "$pkg" || "$pkg" == \#* ]] && continue
|
||||
yay -S --needed --noconfirm "$pkg" \
|
||||
|| warn " Skipping AUR package not found: $pkg"
|
||||
done < "$file"
|
||||
done
|
||||
|
||||
# =============================================================================
|
||||
# 8. POWERLEVEL10K
|
||||
# =============================================================================
|
||||
|
||||
log "Installing Powerlevel10k"
|
||||
if [[ ! -d "$HOME/powerlevel10k" ]]; then
|
||||
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
|
||||
"$HOME/powerlevel10k"
|
||||
else
|
||||
log " powerlevel10k already present, skipping"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 9. DOTFILES
|
||||
# =============================================================================
|
||||
|
||||
log "Deploying dotfiles from repo into HOME"
|
||||
# Copy everything except git internals, system/, packages/, bootstrap.sh
|
||||
rsync -av --exclude='.git' \
|
||||
--exclude='system/' \
|
||||
--exclude='packages/' \
|
||||
--exclude='bootstrap.sh' \
|
||||
--exclude='README.md' \
|
||||
--exclude='dotfiles_log.txt' \
|
||||
"$REPO_ROOT/" "$HOME/"
|
||||
|
||||
# Make scripts executable
|
||||
find "$HOME/.config" -name "*.sh" -exec chmod +x {} \;
|
||||
|
||||
# =============================================================================
|
||||
# 10. SYSTEM CONFIG FILES (SDDM etc.)
|
||||
# =============================================================================
|
||||
|
||||
log "Applying SDDM configuration"
|
||||
sudo mkdir -p /etc/sddm.conf.d
|
||||
sudo cp -a system/sddm.conf.d /etc/
|
||||
sudo cp -a system/sddm /etc/
|
||||
sudo cp -a "$REPO_ROOT/system/sddm.conf.d/." /etc/sddm.conf.d/
|
||||
sudo cp -a "$REPO_ROOT/system/sddm/." /etc/sddm/
|
||||
sudo chown -R root:root /etc/sddm.conf.d /etc/sddm
|
||||
sudo chmod 644 /etc/sddm.conf.d/*.conf
|
||||
sudo chmod +x /etc/sddm/scripts/Xsetup 2>/dev/null || true
|
||||
|
||||
log "Enabling SDDM"
|
||||
sudo systemctl enable sddm
|
||||
|
||||
# =============================================================================
|
||||
# 11. SERVICES
|
||||
# =============================================================================
|
||||
|
||||
log "Enabling system services"
|
||||
sudo systemctl enable bluetooth
|
||||
sudo systemctl enable docker
|
||||
sudo usermod -aG docker "$USER"
|
||||
sudo systemctl enable earlyoom 2>/dev/null || true
|
||||
|
||||
# =============================================================================
|
||||
# 12. MONITOR CONFIG (machine-specific)
|
||||
# =============================================================================
|
||||
|
||||
MONITORS_CONF="$HOME/.config/hypr/monitors.conf"
|
||||
if [[ ! -f "$MONITORS_CONF" ]]; then
|
||||
warn "No monitors.conf found — creating a safe default (single monitor)"
|
||||
cat > "$MONITORS_CONF" <<'EOF'
|
||||
# Auto-generated default — replace with your actual monitor config.
|
||||
# See: https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = , preferred, auto, 1
|
||||
EOF
|
||||
warn "Edit ~/.config/hypr/monitors.conf before starting Hyprland."
|
||||
else
|
||||
log "monitors.conf already exists, skipping"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 13. VSCODE EXTENSIONS
|
||||
# =============================================================================
|
||||
|
||||
EXTENSIONS_FILE="$HOME/.config/Code/User/extensions.txt"
|
||||
if command -v code &>/dev/null && [[ -f "$EXTENSIONS_FILE" ]]; then
|
||||
log "Installing VS Code extensions"
|
||||
while IFS= read -r ext; do
|
||||
code --install-extension "$ext" --force 2>/dev/null || true
|
||||
done < "$EXTENSIONS_FILE"
|
||||
else
|
||||
warn "VS Code not found or extensions.txt missing — skipping"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 14. WALLPAPER DIRECTORY
|
||||
# =============================================================================
|
||||
|
||||
log "Creating wallpaper directory"
|
||||
mkdir -p "$HOME/.wallpapers"
|
||||
warn "Add wallpapers to ~/.wallpapers/ for hyprpaper + wofi selector to work."
|
||||
|
||||
# =============================================================================
|
||||
# DONE
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}============================================${NC}"
|
||||
echo -e "${GREEN} Bootstrap complete!${NC}"
|
||||
echo -e "${GREEN}============================================${NC}"
|
||||
echo ""
|
||||
echo " Next steps:"
|
||||
echo " 1. Edit ~/.config/hypr/monitors.conf for your display layout"
|
||||
echo " 2. Add wallpapers to ~/.wallpapers/"
|
||||
echo " 3. Run p10k configure after first zsh launch"
|
||||
echo " 4. Reboot"
|
||||
echo ""
|
||||
|
||||
21
common-issues.md
Normal file
21
common-issues.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Creating a new user
|
||||
1) Login to root account
|
||||
2) Type `useradd -m -G wheel -s /bin/bash <NAME>`
|
||||
3) Install `sudo` and `nvim`
|
||||
4) Type `EDITOR=nvim visudo`
|
||||
5) Uncomment the line `# %wheel ALL=(ALL:ALL) ALL`
|
||||
- Towards the end of the file
|
||||
|
||||
# Broken Internet Access on VM
|
||||
- This works for a VM with `enp1s0` link.
|
||||
```
|
||||
ip addr add 192.168.122.100/24 dev enp1s0
|
||||
ip route add default via 192.168.122.1
|
||||
echo "nameserver 8.8.8.8" > /etc/resolv.conf
|
||||
ping 8.8.8.8
|
||||
```
|
||||
- Then install dhcpcd
|
||||
```
|
||||
pacman -S dhcpcd
|
||||
systemctl enable --now dhcpcd@enp1s0
|
||||
```
|
||||
3
packages/aur/apps.txt
Normal file
3
packages/aur/apps.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
brave-bin
|
||||
play-timer
|
||||
spotify
|
||||
2
packages/aur/desktop.txt
Normal file
2
packages/aur/desktop.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
sddm-sugar-candy-git
|
||||
wlogout
|
||||
4
packages/aur/dev.txt
Normal file
4
packages/aur/dev.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
visual-studio-code-bin
|
||||
intellij-idea-ultimate-edition
|
||||
bruno
|
||||
jre-openjdk
|
||||
1
packages/aur/fonts.txt
Normal file
1
packages/aur/fonts.txt
Normal file
@@ -0,0 +1 @@
|
||||
apple-fonts
|
||||
@@ -1,11 +1,7 @@
|
||||
chromium
|
||||
discord
|
||||
obsidian
|
||||
anki
|
||||
libreoffice-fresh
|
||||
foliate
|
||||
file-roller
|
||||
kate
|
||||
nextcloud-client
|
||||
cmatrix
|
||||
quickshell
|
||||
@@ -1,8 +1,5 @@
|
||||
hyprland
|
||||
hyprpaper
|
||||
hyprcursor
|
||||
hyprlang
|
||||
hyprutils
|
||||
waybar
|
||||
wofi
|
||||
mako
|
||||
@@ -19,26 +16,21 @@ pavucontrol
|
||||
pipewire-alsa
|
||||
pipewire-jack
|
||||
pipewire-pulse
|
||||
wireplumber
|
||||
xdg-desktop-portal-hyprland
|
||||
xdg-desktop-portal-wlr
|
||||
qt5ct
|
||||
qt6ct
|
||||
qt6-wayland
|
||||
adw-gtk-theme
|
||||
breeze
|
||||
inter-font
|
||||
ttf-0xproto-nerd
|
||||
ttf-jetbrains-mono-nerd
|
||||
ttf-noto-nerd
|
||||
woff2-font-awesome
|
||||
lxappearance
|
||||
kvantum-qt5
|
||||
sddm
|
||||
sddm-sugar-candy-git
|
||||
libva-nvidia-driver
|
||||
nvidia-open
|
||||
nvidia-settings
|
||||
nvidia-utils
|
||||
lib32-nvidia-utils
|
||||
sof-firmware
|
||||
alsa-utils
|
||||
blueman
|
||||
@@ -48,3 +40,4 @@ geoclue
|
||||
imagemagick
|
||||
webkit2gtk
|
||||
xorg-xrandr
|
||||
earlyoom
|
||||
@@ -1,6 +1,6 @@
|
||||
git
|
||||
git-lfs
|
||||
neovim
|
||||
vim
|
||||
tmux
|
||||
fzf
|
||||
btop
|
||||
@@ -13,6 +13,7 @@ python
|
||||
python-pip
|
||||
python-pipx
|
||||
python-pydbus
|
||||
python-virtualenv
|
||||
npm
|
||||
jdk21-openjdk
|
||||
maven
|
||||
@@ -21,8 +22,9 @@ docker
|
||||
docker-compose
|
||||
postgresql
|
||||
postgresql-libs
|
||||
libdwarf
|
||||
nmap
|
||||
ncdu
|
||||
ufw
|
||||
sshfs
|
||||
nvidia-container-toolkit
|
||||
rsync
|
||||
10
packages/pacman/fonts.txt
Normal file
10
packages/pacman/fonts.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
inter-font
|
||||
ttf-0xproto-nerd
|
||||
ttf-jetbrains-mono-nerd
|
||||
ttf-noto-nerd
|
||||
woff2-font-awesome
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
noto-fonts-cjk
|
||||
ttf-dejavu
|
||||
ttf-liberation
|
||||
@@ -5,3 +5,4 @@ obs-studio
|
||||
gpu-screen-recorder
|
||||
gpu-screen-recorder-ui
|
||||
wf-recorder
|
||||
yt-dlp
|
||||
Reference in New Issue
Block a user