Compare commits

..

51 Commits

Author SHA1 Message Date
b1376e1cea Merge pull request #20 from caperren/working-branch
Working branch
2025-11-07 15:04:45 -08:00
3f83fc9d57 Also make phone stay awake in rdp mode 2025-11-07 15:04:14 -08:00
f536cea5c3 Skip fullscreen option on phonerdp 2025-11-07 14:59:57 -08:00
3d5c6a443b Added phonerdp desktop entry 2025-11-07 14:58:10 -08:00
283f9ad213 Re-enabled nvtop, nopasswd for nvtop, properly enable kitty with remote control, streamdeck now uses alltop, alltop desktop entry, j4-dmenu-desktop as wrapper for bemenu so that desktop entries show, fixed desktop entry location 2025-11-07 14:55:22 -08:00
513cf526d8 Added pinta for quick cropping and rotating of images 2025-11-06 17:40:00 -08:00
069de41562 Added quick command and desktop file to start an abd screen mirroring session for my android phone 2025-11-05 11:48:16 -08:00
5bf0216460 Switched flameshot for custom grim/wl-copy/swappy pipeline, new printscr shortcuts, minor refactoring of some modules, spotify_player swap for streamdeck, new area for hyprland scripts 2025-11-03 20:58:20 -08:00
62a324a746 Merge pull request #19 from caperren/working-branch
Fix kitty accidentally launching glances
2025-10-31 20:06:19 -07:00
e380f07018 Fix kitty accidentally launching glances 2025-10-31 20:05:23 -07:00
424a74773f Merge pull request #18 from caperren/working-branch
General cleanup and refactoring, added glances with config, managed streamdeck config and created new ui for it
2025-10-31 19:59:53 -07:00
064a996b73 Added gimp, removed glances desktop, created new managed streamdeck config with logos 2025-10-31 19:58:39 -07:00
20e338c380 Added streamdeck config and icons to home-manager, moved jetbrains toolbox desktop entry to dotfiles 2025-10-31 16:23:55 -07:00
57b5471d58 Added glances as all-in-one system monitor, initial config, desktop entry 2025-10-31 14:51:27 -07:00
c53b236d5b Merge pull request #17 from caperren/working-branch
Revert nrs alias usage, add imv viewer and set as default
2025-10-31 12:43:27 -07:00
aa5037b107 Add imv viewer, set as default 2025-10-31 12:41:25 -07:00
1de9399021 Reverted nrs alias usage 2025-10-31 01:34:28 -07:00
5748f4b2e7 Merge pull request #16 from caperren/working-branch
Trace versions of rebuild and update commands, fixes, firefox as default web handler
2025-10-30 11:01:52 -07:00
8a573b1726 Added trace versions of nix rebuild and update, fixed a font name that was changed, commented nvtop for failing build, switched btop to cuda variant 2025-10-30 10:57:17 -07:00
6d59c86b02 Make firefox default web link application, added new potential background 2025-10-29 20:49:37 -07:00
f3843fd686 Merge pull request #15 from caperren/working-branch
Added qt5ct, xev, added theming to bemenu, new background (unused), b…
2025-10-28 10:00:17 -07:00
e71e9c7a1d Added qt5ct, xev, added theming to bemenu, new background (unused), background folder refactor 2025-10-28 09:59:30 -07:00
5e44c0e28c Merge pull request #14 from caperren/working-branch
Added okular as default pdf, full texlive environment for resumes
2025-10-27 23:06:55 -07:00
6b43a528f9 Added okular as default pdf, full texlive environment for resumes 2025-10-27 15:31:20 -07:00
cdb9b3f2f8 Merge pull request #13 from caperren/working-branch
Removed slack autostart, changes to spotify and glava, bemenu over wofi app launcher
2025-10-27 12:53:09 -07:00
8f05b33391 Move spotify and create glava desktop entries within home manager, switch to bemenu from wofi, add official spotify client 2025-10-27 12:51:33 -07:00
b7ba045305 Remove slack autostart 2025-10-25 23:07:13 -07:00
c631417ec5 Merge pull request #12 from caperren/working-branch
Added inav-configurator, removed deadbeef and davinci resolve, temp r…
2025-10-25 11:08:21 -07:00
702907d454 Added inav-configurator, removed deadbeef and davinci resolve, temp removal of rpi-imager for build failure, new git user syntax 2025-10-25 11:07:00 -07:00
f15568d031 Merge pull request #11 from caperren/working-branch
More tools for rc hobby, programming, and starting slack by default on the laptop
2025-09-16 15:24:18 -07:00
76405677a0 More rc tools to hobby rc 2025-09-16 15:15:06 -07:00
ffdbf536b5 Add slack to startup app on laptop 2025-09-16 15:04:06 -07:00
cce655e475 Added more tools for rc hobby programming and config. 2025-09-14 21:32:46 -07:00
f536023a14 Merge pull request #10 from caperren/working-branch
Removed abandoned workspace_swipe hyprland option.
2025-09-14 21:24:03 -07:00
e8357a95ee Removed abandoned workspace_swipe hyprland option. 2025-09-14 21:23:22 -07:00
cb1249357d Merge pull request #9 from caperren/working-branch
Updates to programming packages, rofi, and new hobby rc group
2025-09-14 21:13:48 -07:00
5aa036def8 Updated to current rofi package naming, and py314 without "Full" suffix 2025-09-14 21:12:01 -07:00
1b45ef06f1 Added ground station software for hobby rc flying 2025-09-04 21:21:12 -07:00
692558b7b8 Add gnumake 2025-09-04 12:22:04 -07:00
ae61c718e6 Merge pull request #8 from caperren/waybar-wallpaper-misc-tweaks
Waybar wallpaper misc tweaks
2025-09-04 12:21:33 -07:00
fcf8b46e38 Add and cleanup media creation 2025-09-04 12:20:45 -07:00
88366d7dbe Media creation and desktop tweaks 2025-09-04 12:11:07 -07:00
972ca7186a Merge pull request #7 from caperren/waybar-wallpaper-misc-tweaks
Waybar wallpaper misc tweaks
2025-09-03 19:42:34 -07:00
7943950c79 Removed nwg-displays 2025-09-03 19:41:28 -07:00
b3a27173eb Commented out failing builds 2025-09-03 18:09:39 -07:00
f6087ae017 Added slack, buildable netextender, default jetbrains mono font 2025-09-03 18:09:28 -07:00
c18257042d Tweaked waybar config for a prettier setup, added hyprpaper and black default background, improved nus/nrs 2025-09-03 18:09:26 -07:00
93ac73b583 Cleanup, added more radio items, tweaks to displaylink 2025-09-02 22:38:25 -07:00
56c18519b3 Merge pull request #5 from caperren/jetbrains-thunar-waybar
Better theming, lock and idle control, wofi desktop launchers, brightness and volume defaults
2025-07-02 01:12:27 -07:00
17495207aa Default brightness for screen and keyboard on laptop, default audio volume level for all systems 2025-07-01 23:57:51 -07:00
b138866194 Add desktop file for spotify-player, jetbrains-toolbox, autostart hypridle, dotfiles for hypridle, idle_inhibitor configs, gtk app dark theme 2025-07-01 23:50:29 -07:00
71 changed files with 2351 additions and 154 deletions

View File

@@ -36,11 +36,14 @@
../../modules/application-groups/android.nix
../../modules/application-groups/downloads.nix
../../modules/application-groups/gaming.nix
../../modules/application-groups/hobby-rc.nix
../../modules/application-groups/homelab.nix
../../modules/application-groups/media.nix
../../modules/application-groups/media-creation.nix
../../modules/application-groups/pcb-design.nix
../../modules/application-groups/productivity.nix
../../modules/application-groups/programming.nix
../../modules/application-groups/radio.nix
../../modules/application-groups/social.nix
../../modules/application-groups/system-utilities.nix
../../modules/application-groups/virtualization.nix

View File

@@ -32,11 +32,14 @@
../../modules/application-groups/android.nix
../../modules/application-groups/downloads.nix
../../modules/application-groups/gaming.nix
../../modules/application-groups/hobby-rc.nix
../../modules/application-groups/homelab.nix
../../modules/application-groups/media.nix
../../modules/application-groups/media-creation.nix
../../modules/application-groups/pcb-design.nix
../../modules/application-groups/productivity.nix
../../modules/application-groups/programming.nix
../../modules/application-groups/radio.nix
../../modules/application-groups/social.nix
../../modules/application-groups/system-utilities.nix
../../modules/application-groups/virtualization.nix

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
gallery-dl
transmission_4-qt
yt-dlp
];

View File

@@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
programs.qgroundcontrol.enable = true;
environment.systemPackages = with pkgs; [
inav-configurator
mission-planner
];
}

View File

@@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
audacity
darktable
inkscape
kdePackages.kdenlive
obs-studio
pinta
];
}

View File

@@ -26,18 +26,15 @@
};
environment.systemPackages = with pkgs; [
deadbeef
vlc
sox
audacity
glava
spotify-player
gimp
imv
plex-desktop
projectm_3
obs-studio
darktable
# Encountering build failures
# plex-desktop
sox
spotify
spotify-player
vlc
];
}

View File

@@ -2,7 +2,7 @@
{
environment.systemPackages = with pkgs; [
kicad
pcb2gcode
#pcb2gcode
];
}

View File

@@ -2,5 +2,7 @@
{
environment.systemPackages = with pkgs; [
obsidian
kdePackages.okular
texliveFull
];
}

View File

@@ -1,20 +1,21 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
vscode-with-extensions
nixfmt-rfc-style
platformio
jetbrains-toolbox
arduino-ide
python311Full
dfu-util
gcc
gnumake
jetbrains-toolbox
nix-update
nixfmt-rfc-style
nixos-generators
nodejs
# platformio
python314
stm32cubemx
stm32flash
python3Full
nix-update
nixos-generators
teensy-udev-rules
vscode-with-extensions
];
services.udev.extraRules = ''

View File

@@ -3,6 +3,7 @@
hardware.rtl-sdr.enable = true;
environment.systemPackages = with pkgs; [
chirp
soapysdr
soapyrtlsdr
];

View File

@@ -1,9 +1,8 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
telegram-desktop
discord
slack
telegram-desktop
];
}

View File

@@ -1,26 +1,25 @@
{ config, pkgs, ... }:
{
hardware.keyboard.qmk.enable = true;
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
programs.thunar.enable = true;
programs.thunar.plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
services.gvfs.enable = true; # Mount, trash, and other functionalities
services.tumbler.enable = true; # Thumbnail support for images
programs.ydotool.enable = true;
services.glances.enable = true;
services.gvfs.enable = true; # Mount, trash, and other functionalities
services.hardware.openrgb.enable = true;
services.openssh.enable = true;
services.printing.enable = true;
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
hardware.keyboard.qmk.enable = true;
services.hardware.openrgb.enable = true;
services.tumbler.enable = true; # Thumbnail support for images
environment.systemPackages = with pkgs; [
btop
btop-cuda
desktop-file-utils
dnsutils
ffmpeg-full
@@ -31,9 +30,12 @@
imagemagick
iotop
jq
kdePackages.qt6ct
killall
kitty
swappy
lf
minicom
ncdu
networkmanager
networkmanagerapplet
@@ -42,7 +44,7 @@
openrgb-with-all-plugins
pciutils
rofi-bluetooth
rpi-imager
# rpi-imager # <- Build Failure
rpiboot
s-tui
scrcpy
@@ -53,6 +55,7 @@
usbutils
util-linux
wget
xev
xfce.mousepad
];

View File

@@ -0,0 +1,71 @@
# TODO: This was hacked together until it worked...Clean it up before merging
{
description = "SonicWall NetExtender Flake";
outputs =
{ self, nixpkgs, ... }:
let
systems = [ "x86_64-linux" ];
neVersion = "10.3.0-21";
neUrl = "https://software.sonicwall.com/NetExtender/NetExtender-linux-amd64-${neVersion}.tar.gz";
# ✅ Define the overlay function directly
overlay = final: prev: {
netextender = prev.stdenv.mkDerivation rec {
pname = "netextender";
version = neVersion;
src = prev.fetchurl {
url = neUrl;
sha256 = "sha256-pnF/KRQMAcPnTj0Ni+sKKkw+H72WHf2iYVkWsWNCndc=";
};
nativeBuildInputs = [
prev.autoPatchelfHook
prev.makeWrapper
];
buildInputs = [
prev.openssl_3
prev.zlib
prev.gtk2
prev.pango
prev.cairo
prev.xorg.libX11
];
unpackPhase = "tar -xzf $src";
installPhase = ''
mkdir -p $out/bin
BIN_CLI=$(find . -type f -iname nxcli -perm -111 | head -n1)
BIN_SVC=$(find . -type f -iname neservice -perm -111 | head -n1)
install -Dm755 "$BIN_CLI" $out/bin/nxcli
install -Dm755 "$BIN_SVC" $out/bin/neservice
ln -sf nxcli $out/bin/netextender
ln -sf neservice $out/bin/nxservice
for exe in nxcli neservice; do
wrapProgram $out/bin/$exe \
--prefix LD_LIBRARY_PATH : ${prev.lib.makeLibraryPath buildInputs}
done
'';
};
};
in
{
overlays = {
x86_64-linux = overlay;
};
packages = {
x86_64-linux =
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ overlay ];
};
in
{
default = pkgs.netextender;
netextender = pkgs.netextender;
};
};
};
}

View File

@@ -1,5 +1,14 @@
{ config, pkgs, ... }:
{
boot = {
extraModulePackages = [ config.boot.kernelPackages.evdi ];
initrd = {
# List of modules that are always loaded by the initrd.
kernelModules = [
"evdi"
];
};
};
services.xserver.videoDrivers = [
"displaylink"
"modesetting"

View File

@@ -1,11 +1,19 @@
{ config, pkgs, ... }:
{
fonts.fontDir.enable = true;
fonts.fontconfig.enable = true;
fonts.fontconfig.antialias = true;
fonts.fontconfig = {
enable = true;
antialias = true;
defaultFonts = {
monospace = [ "JetBrains Mono" ];
sansSerif = [ "JetBrains Mono" ];
serif = [ "JetBrains Mono" ];
};
};
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-emoji
noto-fonts-color-emoji
liberation_ttf
fira-code
fira-code-symbols

View File

@@ -1,52 +1,46 @@
{ config, pkgs, ... }:
{
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.xserver = {
enable = true;
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
programs.hyprlock.enable = true;
programs.waybar.enable = true;
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.hypridle.enable = true;
services.xserver.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
programs.hyprlock.enable = true;
services.hypridle.enable = true;
environment.systemPackages = with pkgs; [
waybar
dunst
libnotify
rofi-wayland
nwg-look
nwg-displays
slurp
grim
arandr
bemenu
dunst
grim
hyprpaper
hyprpicker
j4-dmenu-desktop
kanshi
libnotify
mako
nwg-look
rofi
slurp
swayimg
wl-clipboard
wlogout
flameshot
wofi
swayimg
hyprpicker
kanshi
mako
(pkgs.waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
}))
];
}

View File

@@ -22,10 +22,15 @@
programs.bash.shellAliases = {
# Nix rebuild, switch
nrs = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }";
nrs = "bash -c \"cd /etc/nixos && sudo nixos-rebuild switch --flake .#$(hostname) ; exit\"";
# with tracing
tnrs = "bash -c \"cd /etc/nixos && sudo nixos-rebuild switch --show-trace --flake .#$(hostname) ; exit\"";
# Nix flake update, rebuild, switch
nus = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)";
nus = "bash -c \"cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname) ; exit\"";
# with tracing
tnus = "bash -c \"cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --show-trace --flake .#$(hostname) ; exit\"";
# Special cleanup, needed when efi partition runs out of space. Deletes all but the last five generations.
# Remember to make that partition bigger in the future...

View File

@@ -4,6 +4,7 @@
enable = true;
extraRules = [
{
groups = [ "wheel" ];
commands = [
{
command = "${pkgs.systemd}/bin/reboot";
@@ -14,7 +15,16 @@
options = [ "NOPASSWD" ];
}
];
groups = [ "wheel" ];
}
{
users = [ "caperren" ];
commands = [
{
command = "${pkgs.nvtopPackages.full}/bin/nvtop";
options = [ "NOPASSWD" "SETENV" ];
}
];
}
];
};

View File

@@ -3,7 +3,9 @@ let
hyprlandConfigPath = ./. + "/dotfiles/hyprland/${config.networking.hostName}";
kanshiConfigPath = ./. + "/dotfiles/kanshi/${config.networking.hostName}";
spotifyPlayerAppTomlTextTemplate = builtins.readFile ./dotfiles/spotify-player/app.toml;
spotifyPlayerAppTomlText = builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ] spotifyPlayerAppTomlTextTemplate;
spotifyPlayerAppTomlText =
builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ]
spotifyPlayerAppTomlTextTemplate;
waybarConfigPath = ./. + "/dotfiles/waybar/${config.networking.hostName}";
in
{
@@ -31,15 +33,114 @@ in
programs.git = {
enable = true;
userName = "Corwin Perren";
userEmail = "caperren@gmail.com";
settings.user = {
name = "Corwin Perren";
email = "caperren@gmail.com";
};
};
programs.bash.enable = true;
programs.bemenu.enable = true;
programs.kitty = {
enable = true;
font.name = "JetBrains Mono";
settings = {
allow_remote_control = true;
};
};
# Assets/scripts
home.file.".config/streamdeck-ui/icons".source = ./dotfiles/streamdeck/icons;
home.file.".config/hypr/scripts".source = ./dotfiles/.config/hypr/scripts;
# Application config files
home.file.".config/glances/glances.conf".source = ./dotfiles/.config/glances/glances.conf;
home.file.".config/hypr/hypridle.conf".source = ./dotfiles/hypridle/hypridle.conf;
home.file.".config/hypr/hyprpaper.conf".source = ./dotfiles/hyprpaper/hyprpaper.conf;
home.file.".config/hypr/backgrounds/black.png".source = ./dotfiles/hyprpaper/backgrounds/black.png;
home.file.".config/hypr/hyprland-common.conf".source = ./dotfiles/hyprland/hyprland-common.conf;
home.file.".config/hypr/hyprland.conf".source = hyprlandConfigPath + "/hyprland.conf";
home.file.".config/kanshi/config".source = kanshiConfigPath + "/config";
home.file.".config/streamdeck-ui/.streamdeck_ui_link.json" = {
source = ./dotfiles/streamdeck/.streamdeck_ui.json;
# Copy the symlinked version to its final location, otherwise it has no write permissions
# on the config file, which breaks the entire app
onChange = ''
cat ~/.config/streamdeck-ui/.streamdeck_ui_link.json > ~/.streamdeck_ui.json
chmod 600 ~/.streamdeck_ui.json
'';
force = true;
};
home.file.".config/spotify-player/app.toml".text = spotifyPlayerAppTomlText;
home.file.".config/waybar/config".source = waybarConfigPath + "/config";
home.file.".config/waybar/style.css".source = ./dotfiles/waybar/style.css;
home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout;
# Desktop entry files so bemenu can find them
home.file.".local/share/applications/alltop.desktop".source =
./dotfiles/.local/share/applications/alltop.desktop;
home.file.".local/share/applications/glava.desktop".source =
./dotfiles/.local/share/applications/glava.desktop;
home.file.".local/share/applications/phonerdp.desktop".source =
./dotfiles/.local/share/applications/phonerdp.desktop;
home.file.".local/share/applications/spotify-player.desktop".source =
./dotfiles/.local/share/applications/spotify-player.desktop;
# Custom bash aliases
home.shellAliases = {
# Phone remote desktop over usb (adb), with some default flags I want
phonerdp = "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake";
# Streamdeck isn't easy to manually edit, so make a save command to copy any updates to the repo
savestreamdeck = "cp ~/.streamdeck_ui.json ~/.nixos-configs/users/caperren/dotfiles/streamdeck/.streamdeck_ui.json";
# Nice to have an alias if I ever want to launch this from cmdline, or see the dbus help string
screenshot = "~/.config/hypr/scripts/screenshot.sh";
};
# Theming
gtk = {
enable = true;
theme = {
name = "Adwaita-dark"; # Or another dark theme
package = pkgs.gnome-themes-extra;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "Bibata-Modern-Ice";
package = pkgs.bibata-cursors;
};
font.name = "JetBrains Mono 11";
};
home.sessionPath = [
"$HOME/.local/share"
];
home.sessionVariables = {
GTK_THEME = "Adwaita-dark";
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = [ "okularApplication_pdf.desktop" ];
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
"image/*" = [ "imv.desktop" ];
};
};
xresources.properties = {
"Xft.font" = "JetBrains Mono";
};
};
}

View File

@@ -0,0 +1,44 @@
##############################################################################
# Custom Glances Configuration Overrides
##############################################################################
[global]
# Managed by NixOS configs
check_update=false
[percpu]
# All of my systems are 16 core
max_cpu_display=16
[ip]
# Useful for validating vpn connectivity
public_disabled=False
public_refresh_interval=300
public_api=https://ipv4.ipleak.net/json/
public_field=ip
public_template={continent_code}/{country_code}/{region_code}/{city_name}/{isp_name}
[diskio]
# Don't care about loop devices
hide=loop.*,/dev/loop.*
[smart]
disable=False
[fs]
# Nix store is duplicate of / on NixOS
hide=/nix/store
# Leaving this all commented for now as it doesn't like large number of files
#[folders]
# Home overview is helpful
#folder_1_path=/home/caperren
#folder_1_refresh=120
# Steam is normally the largest
#folder_2_path=/home/caperren/.local/share/Steam
#folder_2_refresh=120
# Then Downloads next
#folder_3_path=/home/caperren/Downloads
#folder_3_refresh=120
# With code generally coming last
#folder_4_path=/home/caperren/code
#folder_4_refresh=120

View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
# Unashamedly taken from: https://www.reddit.com/r/hyprland/comments/13ivh0c/comment/jkgk65k
# Small edits made for my particular needs
# Flags:
# r: region
# s: screen
#
# c: clipboard
# f: file
# i: interactive
# p: pixel
# Example hyprland bindings
#bind = CTRL, SUPER, ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh
#bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
#bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
#bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
#bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
#bind = SUPER SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
#bind = CTRL SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
#bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
screenshotPath=~/Pictures/screenshots
hyprpicker_launch(){
# Start hyprpicker with screen render (freeze), no fancy, no zoom
# We're just using this to lock the screen in place for grim ingest
hyprpicker -r -n -z -d >/dev/null 2>&1 &
sleep 0.5
}
hyprpicker_kill(){
killall hyprpicker >/dev/null 2>&1
}
trap hyprpicker_kill EXIT
generate_filename(){
# Make sure screenshots path exists first
if [ ! -d "$screenshotPath" ]; then
mkdir -p "$screenshotPath"
fi
echo "$screenshotPath/$(date +%Y-%m-%d_%H-%M-%S).png"
}
active_screen_grim_region(){
hyprctl -j monitors | jq -r '.[] | select(.focused) | "\(.x),\(.y) \(.width)x\(.height)"' -
}
grim_from_region() {
local filename="${1:-}"
local region="${2:-}"
hyprpicker_launch
# Get region of screen to capture, if not passed in
if [ -z "$region" ]; then
region=$(slurp -b '#000000b0' -c '#00000000') || exit 1
fi
# Start grim while screen is still frozen, kill hyprpicker, and pass through data
if [ -z "$filename" ]; then
grim -g "$region" - | {
hyprpicker_kill || true
cat
}
else
grim -g "$region" "$filename" | {
hyprpicker_kill || true
cat
}
fi
}
if [[ $1 == rc ]]; then
grim_from_region | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == rf ]]; then
grim_from_region "$(generate_filename)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == ri ]]; then
grim_from_region | swappy -f - -o "$(generate_filename)"
elif [[ $1 == sc ]]; then
grim_from_region "" "$(active_screen_grim_region)" | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == sf ]]; then
grim_from_region "$(generate_filename)" "$(active_screen_grim_region)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == si ]]; then
grim_from_region "" "$(active_screen_grim_region)" | swappy -f - -o "$(generate_filename)"
elif [[ $1 == p ]]; then
color=$(hyprpicker -a -r)
wl-copy "$color"
notify-send 'Copied to Clipboard' "$color"
else
notify-send 'Screenshot Shortcuts' "Print:\t\t\tRegion to clip
Super+Print:\t\tRegion to file
Ctrl+Print:\t\tRegion to editor
Shift+Print:\t\t\Screen to clip
Shift+Super+Print:\tScreen to file
Ctrl+Shift+Print:\tScreen to editor
Alt+Print:\t\tColor picker to clip" -t 20000
fi

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=All Top
Exec=bash -c "kitty --single-instance --detach bash -c 'kitten @ launch --type=window --title btop btop ; kitten @ launch --type=window --title nvtop nvtop'"
Icon=alltop
Terminal=false
Categories=Utilities;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Glava
Exec=glava
Icon=glava
Terminal=false
Categories=Media;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Phone RDP
Exec=bash -c "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake"
Icon=phonerdp
Terminal=false
Categories=Utilities;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Spotify Player
Exec=kitty -e spotify_player
Icon=spotify_player
Terminal=false
Categories=Media;

View File

@@ -0,0 +1,33 @@
general {
lock_cmd = pidof hyprlock || hyprlock # Avoid starting multiple hyprlock instances
before_sleep_cmd = loginctl lock-session # Lock before suspend
after_sleep_cmd = hyprctl dispatch dpms on # To avoid having to press a key twice to turn on the display
}
listener {
timeout = 60 # 1 minute
on-timeout = brightnessctl -sd platform::kbd_backlight set 0 # Turn off keyboard backlight
on-resume = brightnessctl -rd platform::kbd_backlight # Turn on keyboard backlight
}
listener {
timeout = 180 # 3 minutes
on-timeout = brightnessctl -s set 1% # Set monitor backlight to minimum
on-resume = brightnessctl -r # monitor backlight restore
}
listener {
timeout = 600 # 10 minutes
on-timeout = loginctl lock-session # Lock screen when timeout has passed
}
listener {
timeout = 610 # 10 minutes, 10 seconds
on-timeout = hyprctl dispatch dpms off # Screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # Screen on when activity is detected after timeout has fired
}
# listener {
# timeout = 1200 # 20 minutes
# on-timeout = systemctl suspend # Suspend pc
# }

View File

@@ -1,5 +1,9 @@
# Unfortunate legacy config needed because hyprland can't hot switch variable refresh rate
monitor=eDP-2,2560x1600@165,auto,1,vrr,1
monitor = eDP-2,2560x1600@165,auto,1,vrr,1
# Source configs
source = ~/.config/hypr/hyprland-common.conf
source = ~/.config/hypr/hyprland-common.conf
# Application launch
exec-once = brightnessctl -sd platform::kbd_backlight set 1
exec-once = brightnessctl -s set 30%

View File

@@ -1,14 +1,14 @@
# Always enable new monitors in automatic mode
# Always enable new monitors in automatic mode, for when kanshi doesn't know about the setup
monitor=,preferred,auto,1
# Set programs that you use
$terminal = kitty
$fileManager = thunar
$menu = wofi --show drun
$menu = j4-dmenu-desktop --dmenu='bemenu --ignorecase --line-height 22 --hf "##10AC25" --ff "##10AC25" --tf "##10AC25"' --term='kitty'
# Some default env vars.
# Some default env vars
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
env = QT_QPA_PLATFORMTHEME,qt6ct
input {
kb_layout = us
@@ -75,10 +75,6 @@ dwindle {
preserve_split = yes # you probably want this
}
gestures {
workspace_swipe = off
}
misc {
force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers
}
@@ -87,14 +83,13 @@ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
$mainMod = SUPER
bind = $mainMod, T, exec, $terminal
bind = $mainMod, C, killactive,
# Launch terminal
bind = $mainMod, T, exec, $terminal
bind = SHIFT_SUPER, Return, exec, $terminal
# Close active window
bind = $mainMod, Shift+q, killactive,
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
@@ -161,13 +156,31 @@ bindl=, XF86AudioNext, exec, playerctl next
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%-
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1%
# Screenshots
bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
bind = SUPER_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
bind = CTRL_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
# Jetbrains window rules
# Prevent initial focus for JetBrains popups
windowrulev2 = noinitialfocus, class:^jetbrains-.*$, floating:1, title:^$|^\s$|^win\d+$
# Application launch
exec-once = kanshi &
exec-once = ydotoold &
exec-once = kanshi # Automatically handles display configurations
exec-once = ydotoold # Autoclicker/autokeyboard for automation
exec-once = hypridle # Hyprland/wayland specific idle lock tool
exec-once = hyprpaper # Hyprland/wayland specific wallpaper tool
exec-once = sleep 3 && waybar
exec-once = wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 10% # Keep eardrums intact on reboot
exec-once = sleep 5 && nm-applet
exec-once = sleep 5 && blueman-applet
exec-once = sleep 5 && streamdeck -n
exec-once = sleep 5 & telegram-desktop -startintray
exec-once = waybar # Wayland specific status bar
exec-once = sleep 5 && nm-applet # Traditional notifications area
exec-once = sleep 5 && blueman-applet # Traditional bluetooth management tool
exec-once = sleep 5 && streamdeck -n # Streamdeck management tool
exec-once = sleep 5 && Telegram -startintray # Gotta keep in touch with peeps

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,5 @@
preload = ~/.config/hypr/backgrounds/black.png
wallpaper = ,~/.config/hypr/backgrounds/black.png
ipc = off
splash = false

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -2,25 +2,28 @@
"layer": "top",
"position": "top",
"modules-left": [
"custom/logo",
// "custom/logo",
"clock",
"temperature",
"disk",
"memory",
"cpu",
"hyprland/window"
"cpu"
],
"modules-center": [
"hyprland/window",
"hyprland/workspaces"
],
"modules-right": [
"tray",
"idle_inhibitor",
"pulseaudio",
"battery",
"backlight",
"custom/exit"
],
"reload_style_on_change": true,
"custom/logo": {
"format": "<span font='20'></span>",
"format": "<span font='15'></span>",
"tooltip": false
},
"hyprland/workspaces": {
@@ -38,17 +41,62 @@
"9": "9"
}
},
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": [
"",
""
]
},
"battery": {
"bat": "BAT0",
"adapter": "AC",
"interval": 10,
"full-at": 100,
"states": {
"full": 100,
"good": 75,
"warning": 30,
"critical": 15,
"empty": 5
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"temperature": {
"interval": 1,
"critical-threshold": 90,
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
]
},
"idle_inhibitor": {
"format": "<span font='16'>{icon}</span>",
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
}
},
"tooltip-format-activated": "idle-inhibitor <span color='#a6da95'>on</span>",
"tooltip-format-deactivated": "idle-inhibitor <span color='#ee99a0'>off</span>"
},
"clock": {
"format": "{:%I:%M:%S %p | %a | %F}",
"format": "{:%I:%M:%S %p} |",
"interval": 1,
"tooltip-format": "\n<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"tooltip-format": "<big>{:%I:%M:%S %p | %a | %F}</big>\n\n<tt><big>{calendar}</big></tt>",
"calendar-weeks-pos": "right",
"today-format": "<span color='#7645AD'><b><u>{}</u></b></span>",
"format-calendar": "<span color='#aeaeae'><b>{}</b></span>",
@@ -57,34 +105,37 @@
},
"disk": {
"interval": 30,
"format": " {percentage_used}%",
"path": "/"
"format": " {}%",
"tooltip-format": "{used} / {total} used"
},
"cpu": {
"format": " {usage:02}% {icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}",
"tooltip": false,
"interval": 1,
"format": " {usage}%",
"min-length": 6,
"max-length": 6,
"format-icons": [
"▁",
"",
"▃",
"",
"▅",
"",
"▇",
"█"
// green,
"<span color='#69ff94'>▁</span>",
// blue,
"<span color='#2aa9ff'>▂</span>",
// white,
"<span color='#f8f8f2'>▃</span>",
// white,
"<span color='#f8f8f2'>▄</span>",
// yellow,
"<span color='#ffffa5'>▅</span>",
// yellow,
"<span color='#ffffa5'>▆</span>",
// orange,
"<span color='#ff9977'>▇</span>",
// red,
"<span color='#dd532e'>█</span>"
]
},
"memory": {
"format": " {percentage}%"
"format": " {percentage:02}%"
},
"hyprland/window": {
"format": "( {class} )",
"rewrite": {
"(.*) - Mozilla Firefox": "🌎 $1",
"(.*) - zsh": "> [$1]"
}
},
"pulseaudio": {
"format": "{volume:02}% {icon}",
@@ -114,7 +165,7 @@
"spacing": 10
},
"custom/exit": {
"format": "",
"format": "| ",
"on-click": "wlogout -b 2",
"tooltip": false
}

View File

@@ -2,14 +2,15 @@
"layer": "top",
"position": "top",
"modules-left": [
"custom/logo",
// "custom/logo",
"clock",
"temperature",
"disk",
"memory",
"cpu",
"hyprland/window"
"cpu"
],
"modules-center": [
"hyprland/window",
"hyprland/workspaces"
],
"modules-right": [
@@ -22,7 +23,7 @@
],
"reload_style_on_change": true,
"custom/logo": {
"format": "<span font='20'></span>",
"format": "<span font='15'></span>",
"tooltip": false
},
"hyprland/workspaces": {
@@ -50,32 +51,53 @@
},
"battery": {
"bat": "BAT0",
"interval": 60,
"adapter": "AC",
"interval": 10,
"full-at": 100,
"states": {
"full": 100,
"good": 75,
"warning": 30,
"critical": 15
"critical": 15,
"empty": 5
},
"format": "{capacity}% {icon}",
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
],
"max-length": 25
]
},
"temperature": {
"hwmon-path": "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon5/temp1_input",
"interval": 1,
"critical-threshold": 90,
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
]
},
"idle_inhibitor": {
"format": "<span font='16'>{icon}</span>",
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
}
},
"tooltip-format-activated": "idle-inhibitor <span color='#a6da95'>on</span>",
"tooltip-format-deactivated": "idle-inhibitor <span color='#ee99a0'>off</span>"
},
"clock": {
"format": "{:%I:%M:%S %p | %a | %F}",
"format": "{:%I:%M:%S %p} |",
"interval": 1,
"tooltip-format": "\n<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"tooltip-format": "<big>{:%I:%M:%S %p | %a | %F}</big>\n\n<tt><big>{calendar}</big></tt>",
"calendar-weeks-pos": "right",
"today-format": "<span color='#7645AD'><b><u>{}</u></b></span>",
"format-calendar": "<span color='#aeaeae'><b>{}</b></span>",
@@ -84,34 +106,37 @@
},
"disk": {
"interval": 30,
"format": " {percentage_used}%",
"path": "/"
"format": " {}%",
"tooltip-format": "{used} / {total} used"
},
"cpu": {
"format": " {usage:02}% {icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}",
"tooltip": false,
"interval": 1,
"format": " {usage}%",
"min-length": 6,
"max-length": 6,
"format-icons": [
"▁",
"",
"▃",
"",
"▅",
"",
"▇",
"█"
// green,
"<span color='#69ff94'>▁</span>",
// blue,
"<span color='#2aa9ff'>▂</span>",
// white,
"<span color='#f8f8f2'>▃</span>",
// white,
"<span color='#f8f8f2'>▄</span>",
// yellow,
"<span color='#ffffa5'>▅</span>",
// yellow,
"<span color='#ffffa5'>▆</span>",
// orange,
"<span color='#ff9977'>▇</span>",
// red,
"<span color='#dd532e'>█</span>"
]
},
"memory": {
"format": " {percentage}%"
"format": " {percentage:02}%"
},
"hyprland/window": {
"format": "( {class} )",
"rewrite": {
"(.*) - Mozilla Firefox": "🌎 $1",
"(.*) - zsh": "> [$1]"
}
},
"pulseaudio": {
"format": "{volume:02}% {icon}",
@@ -141,7 +166,7 @@
"spacing": 10
},
"custom/exit": {
"format": "",
"format": "| ",
"on-click": "wlogout -b 2",
"tooltip": false
}

View File

@@ -0,0 +1,51 @@
* {
border: none;
border-radius: 0;
font-family: "JetBrains Mono", monospace;
font-size: 14px;
box-shadow: none;
text-shadow: none;
transition-duration: 0s;
}
window {
background: rgba(0, 0, 0, 0.00);
}
#workspaces button {
padding: 0 5px;
color: rgba(217, 216, 216, 0.4);
}
#workspaces button.visible {
color: rgba(217, 216, 216, 1);
}
#workspaces button.focused {
border-top: 3px solid rgba(217, 216, 216, 1);
border-bottom: 3px solid rgba(217, 216, 216, 0);
}
#workspaces button.urgent {
color: rgba(238, 46, 36, 1);
}
#memory,
#idle_inhibitor,
#pulseaudio,
#backlight {
margin: 0 6px 0 10px;
}
#disk {
margin: 0 0 0 10px;
}
#clock {
margin: 0 6px 0 10px;
}
#custom-exit {
margin: 0 16px 0 6px;
}