commit 00455dbb03fa1e69c7d63195df338d4ab821a068 Author: Charles Date: Sun Mar 23 19:15:40 2025 -0700 add: all files diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..c053a8a --- /dev/null +++ b/configuration.nix @@ -0,0 +1,257 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, lib, inputs, specialArgs, options, modulesPath }: +let + unstable = import { config = { allowUnfree = true; }; }; +in +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.systemd-boot.configurationLimit=4; + boot.loader.efi.canTouchEfiVariables = true; + boot.kernelModules = ["i2c-dev"]; + services.udev.extraRules = '' + KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" + ''; + + networking.hostName = "lcom"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Los_Angeles"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + #services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.charles = { + isNormalUser = true; + description = "Charles"; + extraGroups = [ "networkmanager" "wheel" "i2c" "dialout" "docker" ]; + packages = with pkgs; [ + # thunderbird + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + programs.hyprland.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + git + go + htop + iotop + man-pages + man-pages-posix + python3 + vim + vim-full + vscode + unzip + qemu + google-chrome + pavucontrol + + #discord + discord-canary + unstable.pkgs.signal-desktop + nixfmt-rfc-style # for formatting nix files + meld + + godot_4 # game dev stuff + gimp + blender + peek + + kitty # for hyprland + waybar + #ags + rubik + bibata-cursors + swww + fcitx5 + hypridle + easyeffects + wl-clipboard + #cliphist + clipse + #inputs.fufexan-dotfiles.packages."x86_64-linux".packageName + inputs.ags.packages."x86_64-linux".agsWithTypes + ddcutil + anyrun + gtksourceview + tofi + hyprpicker + dunst + wlogout + hyprlock + pamixer + + grimblast + #kdePackages.xwaylandvideobridge + xwaylandvideobridge + + blueman + brightnessctl + + helvum + easyeffects + + (pkgs.wrapOBS { + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + obs-gstreamer + obs-vaapi + obs-vkcapture + ]; + }) + #obs-studio + #obs-studio-plugins.obs-gstreamer + #obs-studio-plugins.obs-vaapi + #obs-studio-plugins.obs-vkcapture + vlc + + kdePackages.qtstyleplugin-kvantum + ]; + + fonts.packages = with pkgs; [ + jetbrains-mono + fira-code-nerdfont + nerdfonts + ]; + + virtualisation.waydroid.enable = true; + virtualisation.docker.enable = true; + + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ + glib + nss + nspr + dbus + atk + libdrm + gtk3 + pango + ]; + programs.steam = { + enable = true; + localNetworkGameTransfers.openFirewall = true; + }; +# programs.obs-studio = { +# enable = true; +# plugins = with pkgs.obs-studio-plugins; [ +# wlrobs +# obs-backgroundremoval +# obs-pipewire-audio-capture +# obs-gstreamer +# obs-vaapi +# obs-vkcapture +# ]; +# }; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + services.logind.extraConfig = '' + HandlePowerKey=ignore + ''; + services.displayManager.sddm.enable = true; + services.displayManager.sddm.wayland.enable = true; + services.desktopManager.plasma6.enable = true; + programs.ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + networking.firewall.allowedTCPPorts = [ 8000 ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the N.ixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.05"; # Did you read the comment? + +} diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf new file mode 100644 index 0000000..2369db8 --- /dev/null +++ b/hypr/hypridle.conf @@ -0,0 +1,27 @@ +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 # 1min. + on-timeout = brightnessctl -s set 5 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +listener { + timeout = 300 # 5min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 900 # 25min + 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 = 3600 # 120min + on-timeout = systemctl suspend # suspend pc +} diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..86d5476 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,411 @@ +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1,mirror,DP-1 +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$fileManager = nautilus +$menu = tofi-drun -c ~/.config/tofi/configA --drun-launch=true +#$browser = thorium-browser --enable-features=UseOzonePlatform --ozone-platform=wayland +$browser = firefox +$notes = obsidian +$editor = code +$editor-alt = subl +$colorPicker = hyprpicker + +# --enable-features=UseOzonePlatform --ozone-platform=wayland use this flag to launch CEF/Electron apps in wayland + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +exec-once=/usr/lib/polkit-kde-authentication-agent-1 #Polkit to manage passwords +exec-once=/usr/bin/dunst +exec-once=waybar # topbar +exec-once = swww-daemon # wallpaper +#exec-once = swww img ~/p3/simple-hyprland/assets/backgrounds/cat_leaves.png --transition-fps 255 --transition-type outer --transition-duration 0.8 +exec-once = swww img /home/charles/Pictures/Backgrounds/space.jpg --transition-fps 255 --transition-type outer --transition-duration 0.8 +#exec-once = wl-paste --type text --watch cliphist store # clipboard +#exec-once = wl-paste --type image --watch cliphist store +#exec-once = rm "$HOME/.cache/cliphist/db" #it'll delete history at every restart +exec-once = hypridle +exec-once = clipse -listen +# exec-once = xwaylandvideobridge & +exec-once = waydroid session start & + +exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +# exec-once = $terminal +exec-once = nm-applet & +# exec-once = waybar & hyprpaper & firefox + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + +# Firefox +# env = MOZ_ENABLE_WAYLAND,1 + +# Nvidia +env = LIBVA_DRIVER_NAME,nvidia +env = XDG_SESSION_TYPE,wayland +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia # remove if firefox crashes +env = NVD_BACKEND,direct +env = ELECTRON_OZONE_PLATFORM_HINT,auto + +# QT +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORMTHEME,qt5ct +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_STYLE_OVERRIDE,kvantum + +# Toolkit Backend Variables +env = GDK_BACKEND,wayland,x11,* +env = SDL_VIDEODRIVER,wayland +env = CLUTTER_BACKEND,wayland + +# XDG Specifications +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 5 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg + col.inactive_border = rgb(24273A) rgb(24273A) rgb(24273A) rgb(27273A) 45deg + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 10 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 3 + new_optimizations = true + vibrancy = 0.1696 + ignore_opacity = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = true + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + # bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + # animation = windows, 1, 7, myBezier + # animation = windowsOut, 1, 7, default, popin 80% + # animation = border, 1, 10, default + # animation = borderangle, 1, 8, default + # animation = fade, 1, 7, default + # animation = workspaces, 1, 6, default + + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 0, 1, liner + animation = borderangle, 0, 30, liner, loop + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( + disable_splash_rendering = true + vrr = 0 +} + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + # force_no_accel = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + middle_button_emulation = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + +#################### +### KEYBINDINGSS ### +#################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, return, exec, $terminal +bind = $mainMod, T, exec, $terminal +bind = $mainMod, W, exec, $browser +bind = $mainMod, O, exec, $notes +bind = $mainMod, C, exec, $editor +bind = $mainMod, S, exec, $editor-alt +bind = $mainMod, Q, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, F, togglefloating, +bind = $mainMod, D, exec, $menu +# bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +bind = SUPER, E, exec, jome -d | wl-copy #Emojipicker + clipboard copy + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +#bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Move/resize windows + Mouse +bindm = $mainMod, Z, movewindow +bindm = $mainMod, X, resizewindow + +# Resize windows +binde = $mainMod+Shift, Right, resizeactive, 30 0 +binde = $mainMod+Shift, Left, resizeactive, -30 0 +binde = $mainMod+Shift, Up, resizeactive, 0 -30 +binde = $mainMod+Shift, Down, resizeactive, 0 30 + + +# Clipboard +# bind = SUPER, V, exec, cliphist list | tofi -c ~/.config/tofi/configV | cliphist decode | wl-copy + +# Colour Picker +bind = $mainMod, P, exec, $colorPicker | wl-copy + +# Screen locking +bind = SUPER, L, exec, hyprlock + +# wlogout +bind = SUPER, ESCAPE, exec, wlogout + +# waybar +bind = Ctrl, Escape, exec, killall waybar || waybar # toggle waybar + +# Screenshot +# add --cursor flag to include cursor also, --freeze flag to freeze before selection +bind = , Print, exec, grimblast --notify copysave screen # Entire screen + clipboard copy +bind = SUPER, Print, exec, grimblast --notify copysave active # current Active window only + clipboard copy +bind = SUPER ALT, Print, exec, grimblast --notify copysave area # Select area to take screenshot + +# Volume and Media Control +bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 +bind = , XF86AudioLowerVolume, exec, pamixer -d 5 +bind = , XF86AudioMicMute, exec, pamixer --default-source -m +bind = , XF86AudioMute, exec, pamixer -t +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioPause, exec, playerctl play-pause +bind = , XF86AudioNext, exec, playerctl next +bind = , XF86AudioPrev, exec, playerctl previous + +# Screen brightness +bind = , XF86MonBrightnessUp, exec, brightnessctl s +5% +bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%- + +bind = , xf86poweroff , exec, archlinux-logout + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +## Use hyprctl clients to look for window class + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +windowrule = float, ^(jome)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +windowrulev2 = opacity 0.90 0.90,class:^(Thorium-browser)$ +windowrulev2 = opacity 0.80 0.80,class:^(Code)$ +windowrulev2 = opacity 0.80 0.80,class:^(Arduino IDE)$ +windowrulev2 = opacity 0.80 0.80,class:^(dev.warp.Warp)$ +windowrulev2 = opacity 0.80 0.80,class:^(obsidian)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(kitty)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.gnome.Nautilus)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$ +windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$ +windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$ +windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ +windowrulev2 = opacity 0.70 0.70,class:^(Spotify)$ +windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$ + +windowrulev2 = float,class:^(kvantummanager)$ +windowrulev2 = float,class:^(qt5ct)$ +windowrulev2 = float,class:^(qt6ct)$ +windowrulev2 = float,class:^(nwg-look)$ +windowrulev2 = float,class:^(org.kde.ark)$ +windowrulev2 = float,class:^(pavucontrol)$ +windowrulev2 = float,class:^(blueman-manager)$ +windowrulev2 = float,class:^(nm-applet)$ +windowrulev2 = float,class:^(nm-connection-editor)$ +windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ + +windowrulev2 = float, class:(clipse) +windowrulev2 = size 622 652, class:(clipse) + +bind = SUPER, V, exec, $terminal --class clipse -e clipse + +# windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. + +# layerrule = blur,waybar +layerrule = ignorezero,tofi +layerrule = ignorezero, dunst +layerrule = blur,dunst diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf new file mode 100644 index 0000000..72572ea --- /dev/null +++ b/hypr/hyprlock.conf @@ -0,0 +1,75 @@ +background { + monitor = + path = ~/.config/assets/backgrounds/cat_leaves_blurred.png # only png supported for now +} + +input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgb(a6adc8) + inner_color = rgb(11111b) + font_color = rgb(a6adc8) + fade_on_empty = true + fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. + placeholder_text = Input Password... # Text rendered in the input box when it's empty. + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgb(204, 136, 34) + fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color + fail_text = $FAIL ($ATTEMPTS) # can be set to empty + fail_transition = 100 # transition time in ms between normal outer_color and fail_color + capslock_color = -1 + numlock_color = -1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + swap_font_color = false # see below + position = 0, -20 + halign = center + valign = center +} + +label { + monitor = + text = cmd[update:1000] echo "$TIME" + color = rgba(a6adc8) + font_size = 55 + font_family = Fira Semibold + position = -100, 40 + halign = right + valign = bottom + shadow_passes = 5 + shadow_size = 10 +} + +label { + monitor = + text = Hello + color = rgba(a6adc8) + font_size = 20 + font_family = Fira Semibold + position = -100, 160 + halign = right + valign = bottom + shadow_passes = 5 + shadow_size = 10 +} + +image { + monitor = + path = ~/.config/assets/backgrounds/cat_pacman.png + size = 280 # lesser side if not 1:1 ratio + rounding = -1 # negative values mean circle + border_size = 4 + border_color = rgb(a6adc8) + rotate = 0 # degrees, counter-clockwise + reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2 +# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F + position = 0, 200 + halign = center + valign = center +} \ No newline at end of file diff --git a/waybar/config.jsonc b/waybar/config.jsonc new file mode 100644 index 0000000..cdcc528 --- /dev/null +++ b/waybar/config.jsonc @@ -0,0 +1,148 @@ +{ + "layer": "top", + "position": "top", + "mode": "dock", + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + "height": 0, + "modules-left": [ + "memory", + "cpu", + "pulseaudio", + "pulseaudio#microphone", + "hyprland/window" + ], + "modules-center": [ + "hyprland/workspaces" + ], + "modules-right": [ + "tray", + "network", + "battery", + "backlight", + "clock" + ], + + "hyprland/window": { + "format": "{}" + }, + + "hyprland/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "on-click": "activate" + //"format": "{icon}", + }, + + "tray": { + "icon-size": 13, + "spacing": 10 + }, + + "clock": { + "format": "{:%A  %Y-%m-%d  %I:%M:%S %p}", + "interval": 1, + "rotate": 0, + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}", + "days": "{}" + } + } + }, + + "backlight": { + "device": "intel_backlight", + "format": "{icon} {percent}%", + "format-icons": ["󰃞", "󰃟", "󰃠"], + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "min-length": 6 + }, + + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": ["󰂃", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + + "pulseaudio": { + "format": "{icon} {volume}%", + "tooltip": false, + "format-muted": " Muted", + "on-click": "pamixer -t", + "on-scroll-up": "pamixer -i 1", + "on-scroll-down": "pamixer -d 1", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["","", "", ""] + } + }, + + "pulseaudio#microphone": { + "format": "{format_source}", + "format-source": " {volume}%", + "format-source-muted": " Muted", + "on-click": "pamixer --default-source -t", + "on-scroll-up": "pamixer --default-source -i 5", + "on-scroll-down": "pamixer --default-source -d 5", + "scroll-step": 5 + }, + + "memory": { + "states": { + "c": 90, // critical + "h": 60, // high + "m": 30 // medium + }, + "interval": 10, + "format": "󰾆 {used}GB", + "format-m": "󰾅 {used}GB", + "format-h": "󰓅 {used}GB", + "format-c": " {used}GB", + "format-alt": "󰾆 {percentage}%", + "max-length": 10, + "tooltip": true, + "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}GB/{total:0.1f}GB" + }, + + "cpu": { + "interval": 10, + "format": "󰍛 {usage}%", + "format-alt": "{icon0}{icon1}{icon2}{icon3}", + "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] + }, + + "network": { + "tooltip": true, + "format-wifi": " {essid}", + "format-ethernet": "󰈀 ", + "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", + "format-linked": "󰈀 {ifname} (No IP)", + "format-disconnected": "󰖪 ", + "tooltip-format-disconnected": "Disconnected", + "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "interval": 2 + } +} diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..39b92f2 --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,123 @@ +* { + border: none; + border-radius: 0; + font-family: JetBrainsMono Nerd Font, monospace; + font-weight: bold; + font-size: 14px; + min-height: 0; +} + +window#waybar { + background: rgba(21, 18, 27, 0); + color: #cdd6f4; +} + +#workspaces button { + padding: 5px; + color: #555869; + margin-right: 5px; +} + +#workspaces button.active { + color: #a6adc8; +} + +#workspaces button.focused { + color: #a6adc8; + background: #eba0ac; + border-radius: 10px; +} + +#workspaces button.urgent { + color: #11111b; + background: #a6e3a1; + border-radius: 10px; +} + +#workspaces button:hover { + background: #cdd6f4; + color: #11111b; + border-radius: 10px; +} + +#window, +#clock, +#battery, +#pulseaudio, +#network, +#cpu, +#memory, +#workspaces, +#tray, +#backlight { + background: #1e1e2e; + padding: 0px 10px; + margin: 3px 0px; + margin-top: 5px; + /* border: 1px solid #181825; */ +} + +#backlight { + border-radius: 10px 0px 0px 10px; +} + +#tray { + border-radius: 10px; + margin-right: 10px; +} + +#workspaces { + background: #1e1e2e; + border-radius: 10px; + margin-left: 10px; + padding-right: 0px; + padding-left: 5px; +} + +#cpu { + border-radius: 0px 10px 10px 0px; + margin-right: 10px; +} + +#memory { + border-radius: 10px 0px 0px 10px; +} + +#window { + border-radius: 10px; + margin-left: 60px; + margin-right: 60px; +} + +#clock { + color: #a6adc8; + border-radius: 10px 10px 10px 10px; + margin-left: 5px; + border-right: 0px; +} + +#network { + color: #a6adc8; + border-radius: 10px 0px 0px 10px; + +} + +#pulseaudio { + color: #a6adc8; + border-left: 0px; + border-right: 0px; +} + +#pulseaudio.microphone { + color: #a6adc8; + border-radius: 0px 10px 10px 0px; + border-left: 0px; + border-right: 0px; + margin-right: 5px; +} + +#battery { + color:#a6adc8; + border-radius: 0px 10px 10px 0px; + margin-right: 10px; +}