diff --git a/README.md b/README.md index ab1be72..b6ada6f 100644 --- a/README.md +++ b/README.md @@ -134,9 +134,11 @@ nixos/ | `$mod + F` | Browser | | `$mod + N` | Notes | | `$mod + Shift + A` | App launcher | +| `$mod + Alt + A` | Toggle sidebar | | `$mod + Q` | Kill apps (Steam/Pomodoro to special workspace) | | `$mod + L` | Lock screen | -| `$mod + Shift + S` | Screenshot | +| `$mod + Shift + S` | Screenshot a window| +| `F11` | Screenshot the whole screen| ### Multimedia & System | Key | Action | diff --git a/flake.lock b/flake.lock index 6c4df7b..d786808 100755 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,51 @@ { "nodes": { + "caelestia-cli": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772764582, + "narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "4bcd42f482d038b98145b0b03388244b68b7d35d", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": "caelestia-cli", + "nixpkgs": [ + "nixpkgs-unstable" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1775480688, + "narHash": "sha256-0Bs5Z39ziq/ZSF3TJIQePVhdy3CjdKvQbbq/gLTRCqw=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "612f828b9f84ca0dda76ce009c3ff64f75c5733e", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -87,8 +133,30 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772925576, + "narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=", + "ref": "refs/heads/master", + "rev": "15a84097653593dd15fad59a56befc2b7bdc270d", + "revCount": 750, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { + "caelestia-shell": "caelestia-shell", "home-manager": "home-manager", "nixos-grub-themes": "nixos-grub-themes", "nixpkgs": "nixpkgs_2", diff --git a/flake.nix b/flake.nix index c640e42..e98160f 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,10 @@ url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; + caelestia-shell = { # based on quickshell. See https://github.com/caelestia-dots/shell + url = "github:caelestia-dots/shell"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; }; # never got nixvim to wokrs. ): # nixvim = { @@ -22,6 +26,7 @@ nixpkgs-unstable, home-manager, nixos-grub-themes, + caelestia-shell, ... } @ inputs: let system = "x86_64-linux"; diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index 30c799d..b7ca817 100755 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -48,7 +48,7 @@ users = { tomasr = ./home.nix; }; - extraSpecialArgs = {inherit pkgs-unstable;}; + extraSpecialArgs = {inherit inputs pkgs-unstable;}; }; environment.pathsToLink = [ @@ -201,7 +201,6 @@ tomato-c # pomodoro timer pavucontrol # PulseAudio Volume Control #hyprshot - grim # Grab images from a Wayland compositor Used for quickshell screenshot tool xdg-utils mailcap pkgs-unstable.vimPluginsUpdater # used for building plugins @@ -235,10 +234,7 @@ deadnix alejandra cling # c interpreter used for coding -# libs or apps for quickshell - libsForQt5.qt5.qtgraphicaleffects mprisence - kdePackages.qt5compat gif-for-cli # lsp texlab diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 3c10a02..4dfb166 100755 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -15,14 +15,16 @@ ../../modules/home-manager/ssh.nix ../../modules/home-manager/fastfetch.nix ../../modules/home-manager/hyprland.nix - ../../modules/home-manager/wlogout.nix # logout utility - ../../modules/home-manager/rofi.nix # launcher and keybindings helper + #../../modules/home-manager/wlogout.nix # logout utility + ../../modules/home-manager/rofi.nix # used for keybinds and for clipboard #notifications are now manager with quickshell../../modules/home-manager/swaync.nix # notification daemon ../../modules/home-manager/neovim.nix # dont use nixvim. broken #../../modules/home-manager/neovim2.nix # ./neovim2.nix uses vim plug instead of the nix repository as with ./neovim.nix see the begining of neovim2 for an explanation ../../modules/home-manager/rclone.nix #../../modules/home-manager/waybar.nix - ../../modules/home-manager/quickshell.nix # used for widgets, waybar and notifications + #../../modules/home-manager/quickshell.nix # used for widgets, waybar and notifications # i migrated to caelestia-shell + inputs.caelestia-shell.homeManagerModules.default + ../../modules/home-manager/caelestia.nix # caelestia shell is based on quickshell #../../modules/home-manager/oh-my-posh.nix # zsh customizer ../../modules/home-manager/oh-my-zsh.nix # another zsh customizer ../../modules/home-manager/hypridle.nix @@ -80,9 +82,10 @@ (pkgs.callPackage ../../modules/scripts/trimmer.nix {}) #(pkgs.callPackage ../../modules/scripts/obsidianbackup.nix {}) # periodically syncs obsidian's note to kdrive #(pkgs.callPackage ../../modules/scripts/obsidianprofiles.nix {}) # fzf vault selector # obsidian was replaced with a custom solution - (pkgs.callPackage ../../modules/scripts/QSsysinfo.nix {}) - (pkgs.callPackage ../../modules/scripts/QSnotifycache.nix {}) - (pkgs.callPackage ../../modules/scripts/QSnotifyhistory.nix {}) + # no longer used scripts for quickshell. see caelestia-shell + #(pkgs.callPackage ../../modules/scripts/QSsysinfo.nix {}) + #(pkgs.callPackage ../../modules/scripts/QSnotifycache.nix {}) + #(pkgs.callPackage ../../modules/scripts/QSnotifyhistory.nix {}) #pkgs pkgs.gruvbox-gtk-theme pkgs.biber diff --git a/modules/home-manager/caelestia.nix b/modules/home-manager/caelestia.nix new file mode 100644 index 0000000..6783d87 --- /dev/null +++ b/modules/home-manager/caelestia.nix @@ -0,0 +1,497 @@ +{ + config, + pkgs, + pkgs-unstable, + caelestia-shell, + ... +}: { + # set profile picture in ~/.face + programs.caelestia = { + enable = true; + systemd = { + enable = false; # if you prefer starting from your compositor + target = "graphical-session.target"; + environment = []; + }; + settings = { # default config https://github.com/caelestia-dots/shell?tab=readme-ov-file#example-configuration + appearance = { + mediaGifSpeedAdjustment = 300; + sessionGifSpeed = 0.7; + anim = { + duration = { + scale = 1; + }; + }; + font = { + family = { + clock = "Rubik"; # (TODO figure out those fonts) + material = "Material Symboles Rounded"; + mono = "CaskaydiaCove NF"; + sans = "Rubik"; + }; + size = { + scale = 1; + }; + }; + padding = { + scale = 1; + }; + rounding = { + scale = 1; + }; + spacing = { + scale = 1; + }; + transparency = { + enabled = false; + base = 0.85; + layeres = 0.4; + }; + }; + general = { + logo = "caelestia"; + apps = { + terminal = [ "kitty" ]; # default foot + audio = [ "pavucontrol" ]; + playback = [ "mpv" ]; # what's that? + explorer = [ "nautilus" ]; # default thunar + }; + battery = { + wanLevels = [ + { + level = 20; + title = "Low battery"; + message = "You might want to plug in a charger"; + icon = "battery_android_frame_2"; + } + { + level = 10; + title = "Did you see the previous message?"; + message = "You should probably plug in a charger now"; + icon = "battery_android_frame_1"; + } + { + level = 5; + title = "Critical battery level"; + message = "PLUG THE CHARGER RIGHT NOW!!"; + icon = "battery_android_alert"; + critical = true; + } + ]; + criticalLevel = 3; + }; + idle = { + lockBeforeSleep = true; + inhibitWhenAudio = true; + timeouts = [ + { + timeout = 180; + idleAction = "lock"; + } + { + timeout = 300; + idleAction = "dpms off"; # what's that? + returnAction = "dpms on"; + } + { + timeout = 600; + idleAction = [ "systemctl" "suspend-then-hibernate" ]; + } + ]; + }; + }; + background = { + desktopClock = { + enabled = false; + scale = 1.0; + position = "bottom-right"; + shadow = { + enabled = true; + opacity = 0.7; + blur = 0.4; + }; + background = { + enabled = false; + opacity = 0.7; + blur = true; + }; + invertColors = false; + }; + enabled = true; #ptet changer ca pour wallpaper + visualiser = { + blur = false; + enabled = false; + autohide = true; + rounding = 1; + spacing = 1; + }; + }; + bar = { + activeWindow = { + compact = false; + inverted = false; + showOnHover = true; + }; + clock = { + background = false; + showDate = false; + showIcon = true; + }; + dragThreshold = 20; + entries = [ + { + id = "logo"; + enabled = true; + } + { + id = "workspaces"; + enabled = true; + } + { + id = "spacer"; + enabled = true; + } + { + id = "activeWindow"; + enabled = true; + } + { + id = "spacer"; + enabled = true; + } + { + id = "tray"; + enabled = true; + } + { + id = "clock"; + enabled = true; + } + { + id = "statusIcon"; + enbaled = true; + } + { + id = "power"; + enabled = true; + } + ]; + persistent = true; + popouts = { + activeWindow = true; + statusIcon = true; + tray = true; + }; + scrollActions = { + brightness = true; + workspaces = true; + volume = true; + }; + showOnHover = true; + status = { + showAudio = false; + showBattery = true; + showBluetooth = true; + showKbLayout = false; + showMicrophone = false; + showNetwork = true; + showWifi = true; + showLockStatus = true; + }; + tray = { + background = false; + compact = false; + iconSubs = []; + recolour = false; + }; + workspaces = { + activeIndicator = true; + activeLabel = "󰮯"; + activeTrail = false; + label = " "; + occupiedBg = false; + occpiedLabel = "󰮯"; + perMonitorWorkspaces = true; + showWindows = true; + shown = 5; + specialWorkspaceIcons = [ + { + name = "steam"; + icon = "sports_esports"; + } + ]; + windowIcons = [ + { + regex = "steam(_app_(default|[0-9]+))?"; + icon = "sports_esports"; + } + ]; + }; + excludedScreens = [ "" ]; # default says "" those this work? + }; + border = { + rounding = 25; + thickness = 10; + }; + dashboard = { + enabled = true; + dragThreshold = 50; + mediaUpdateInterval = 500; + showOnHover = true; + }; + launcher = { + actionsPrefix = ">"; + actions = [ + { + name = "Calculator"; + icon = "calculate"; + description = "Do simple math equations (powered by Qalc)"; + command = [ "autocomplete" "calc" ]; + enabled = true; + dangerous = false; + } + { + name = "Scheme"; # to remove + icon = "palette"; + description = "Change the current colour scheme"; + command = [ "autocomplete" "scheme" ]; + enabled = true; + dangerous = false; + } + { + name = "Wallpaper"; # to remove + icon = "image"; + description = "Change the current wallpaper"; + command = [ "autocomplete" "wallpaper" ]; + enabled = true; + dangerous = false; + } + { + name = "Variant"; # to remove + icon = "colors"; + description = "Change the current scheme variant"; + command = [ "autocomplete" "variant" ]; + enabled = true; + dangerous = false; + } + { + name = "Transparency"; + icon = "opacity"; + description = "Change shell transparency"; + command = [ "autocomplete" "transparency" ]; + enbaled = false; + dangerous = false; + } + { + name = "Random"; # to remove + icon = "casino"; + description = "Switch to a random wallpaper"; + command = [ "caelestia" "wallpaper" "-r" ]; + enabled = true; + dangerous = false; + } + { + name = "Light"; # to remove + icon = "light_mode"; + description = "Change the scheme to light mode"; + command = [ "setMode" "light" ]; + enabled = true; + dangerous = false; + } + { + name = "Dark"; # to remove + icon = "dark_mode"; + description = "Change the scheme to dark mode"; + command = [ "setMode" "dark" ]; + enabled = true; + dangerous = false; + } + { + name = "Shutdown"; + icon = "power_settings_new"; + description = "Shutdown the system"; + command = [ "systemctl" "poweroff" ]; + enabled = true; + dangerous = true; + } + { + name = "Reboot"; + icon = "cached"; + description = "Reboot the system"; + command = [ "systemctl" "reboot" ]; + enabled = true; + dangerous = true; + } + { + name = "Lock"; # does this work with ly? + icon = "lock"; + description = "Log out of the current session"; + command = [ "loginctl" "terminate-user" "" ]; + enabled = true; + dangerous = true; + } + { + name = "Sleep"; + icon = "bedtime"; + description = "Suspend then hibernate"; + command = [ "systemctl" "suspend-then-hibernate" ]; + enabled = true; + dangerous = false; + } + { + name = "Settings"; # to remove -- > we want to do every config with nix + icon = "settings"; + description = "Configure the shell"; + command = [ "caelestia" "shell" "controlCenter" "open" ]; + enabled = true; + dangerous = false; + } + ]; + dragThreshold = 50; + vimKeybinds = false; # intersting to put to true + enableDangerousActions = false; # set to true + maxShown = 7; + maxWallpapers = 9; + specialPrefix = "@"; + useFuzzy = { # should try + apps = false; + actions = false; + schemes = false; + variants = false; + wallpapers = false; + }; + showOnHover = false; + favouriteApps = []; + hiddenApps = []; + }; + lock = { + recolourLogo = false; # what's that + hideNotifs = false; + }; + notifs = { + actionOnClick = false; + clearThreshold = 0.3; + defaultExpireTimeout = 5000; + expantThreshold = 20; + openeExpanded = false; + expire = false; + }; + osd = { # whats that + enabled = true; + enableBrightness = true; + enableMicrophone = false; + hideDelay = 2000; + }; + paths = { + mediaGif = "root:/assets/bongocat.gif"; + sessionGif = "root:/assets/kurukuru.gif"; + noNotifsPic = "root:/assets/dino.png"; + lockNoNotifsPic = "root:/assets/dino.png"; + wallpaperDir = "~/Pictures/Wallpapers"; + lyricsDir = "~/Music/lyrics"; + }; + services = { + audioIncrement = 0.1; + brightnessIncrement = 0.1; + maxVolume = 1.0; + defaultPlayer = "Spotify"; + gpuType = ""; + #playerAliases: [ { "from": "com.github.th_ch.youtube_music", "to": "YT Music" } ]; # how to put this into nix language? + weatherLocation = ""; + useFahrenheit = false; + useFahrenheitPerformance = false; + useTwelveHourClock = false; + smartScheme = true; + visualisersBars = 45; + }; + session = { + dragThreshold = 30; # what does dragThreshold do? + enabled = true; + vimKeybinds = false; # maybe set to true? + icons = { + logout = "logout"; + shutdown = "power_settings_new"; + hibernate = "downloading"; # find a better icon + reboot = "cached"; + }; + commands = { + logout = [ "loginctl" "terminate-user" ]; + shutdown = [ "systemctl" "poweroff" ]; + hibernate = [ "systemctl" "hibernate" ]; + reboot = [ "systemctl" "reboot" ]; + }; + }; + sidebar = { + dragThreshold = 80; + enabled = true; + }; + # is there a way to get some system info? + utilities = { + enabled = true; + maxToasts = 4; # what's that? + toasts = { + audioInputChanged = true; + audioOutputChanged = true; + capsLockChanged = true; + chargingChanged = true; + configLoaded = true; + dndChanged = true; + gameModeChanged = true; + kbLayoutChanged = true; + kbLimit = true; + numLockChanged = true; + vpnChanged = true; + nowPlaying = false; + }; + }; + vpn = { + enabled = false; # default true + provider = [ + { + # default example-configuration + name = "wireguard"; + interface = "your-connection-name"; + displayName = "wireguard (Your VPN)"; + enabled = false; + } + ]; + }; + quickToggles = [ + { + id = "wifi"; + enabled = true; + } + { + id = "bluetooth"; + enabled = true; + } + { + id = "mic"; + enabled = true; + } + { + id = "settings"; + enabled = true; # should desactivate + } + { + id = "gameMode"; + enabled = true; # should remap my performance mode + } + { + id = "dnd"; # what's that? + enabled = true; + } + { + id = "vpn"; + enabled = false; # default true; + } + ]; + }; + cli = { + enable = true; # Also add caelestia-cli to path + settings = { + theme.enableGtk = true; + }; + }; +}; +} diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix index 25f8ac9..f28a97f 100644 --- a/modules/home-manager/hyprland.nix +++ b/modules/home-manager/hyprland.nix @@ -72,7 +72,8 @@ in { # █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀ # █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█ - # binds to do + # caelestia shell drawers toggle dashboard + # caelestia shell drawers toggle utilities bind = [ #hyprland/utility keybindings @@ -109,7 +110,8 @@ in { "$mod+Shift, 0, movetoworkspace, 10" "$mod+Ctrl+Alt, Right, movetoworkspace, r+1" "$mod+Ctrl+Alt, Left, movetoworkspace, r-1" - "$mod, Backspace, exec, wlogout -b 4 -T 600 -B 600" + #"$mod, Backspace, exec, wlogout -b 4 -T 600 -B 600" + "$mod, Backspace, exec, caelestia shell drawers toggle session" "$mod+Shift+Ctrl, Left, movewindow, l" "$mod+Shift+Ctrl, Right, movewindow, r" "$mod+Shift+Ctrl, Up, movewindow, u" @@ -129,25 +131,30 @@ in { "$mod, E, exec, $file" "$mod, F, exec, $browser" "$mod, N, exec, $notes" - "$mod+Shift, A, exec, rofi -show drun" + #"$mod+Shift, A, exec, rofi -show drun" + "$mod+Shift, A, exec, caelestia shell drawers toggle launcher" "$mod, Q, exec, custom-dontkillsteam" #"Ctrl+Alt, W, exec, pkill waybar || waybar" - "$mod, L, exec, swaylock -eFLK -i ${wallpaper}" + "Ctrl+Alt, W, exec, caelestia shell drawers toggle sidebar" + #"$mod, L, exec, swaylock -eFLK -i ${wallpaper}" + "$mod, L, exec, caelestia shell lock lock" #"$mod, F11, exec, hyprshot -m window" - #", F11, exec, hyprshot -m output" + ", F11, exec, caelestia screenshot" #"$mod_SHIFT, S, exec, hyprshot -m region --clipboard only" - "$mod_SHIFT, S, exec, qs ipc call screenshot toggle" + # "$mod_SHIFT, S, exec, qs ipc call screenshot toggle" + "$mod_SHIFT, S, exec, caelestia shell picker open" # framework 16 rgb macropad "Ctrl+$mod, 6, exec, custom-killall" # pos 1 1 killall apps except focused one "Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode # reloads the autostart programs # pos 3 1 - "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'" + # we passed to caelestia-shell and stoped using that + /*"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'" "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'" "Ctrl+$mod, 4, exec, kitty -e 'custom-launch'" "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T " "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'" - #"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center - "Ctrl+Alt, 1, exec, qs ipc call notifications toggle" + #"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center + "Ctrl+Alt, 1, exec, qs ipc call notifications toggle" */ "Ctrl+$mod, 3, exec, pavucontrol" # pos 1 2 audiocontrol "Ctrl+$mod, 5, exec, gnome-characters" # pos 2 2 special chars "Ctrl+Alt, 8, exec, hyprpicker | tee >(wl-copy) | cliphist store" # pos 3 2 colorpicker diff --git a/other/quickshell/README.md b/other/quickshell/README.md new file mode 100644 index 0000000..471bd29 --- /dev/null +++ b/other/quickshell/README.md @@ -0,0 +1 @@ +no longer used. I migrated to caelestia-shell