diff --git a/conf.yml b/conf.yml index e44f6d9..a502153 100644 --- a/conf.yml +++ b/conf.yml @@ -16,6 +16,7 @@ ~/.config/waybar: ~/.config/i3status-rust: ~/.config/rofi: + ~/.config/hypr: ~/.zshrc: ~/.p10k.zsh: diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..3a5b7bf --- /dev/null +++ b/configuration.nix @@ -0,0 +1,188 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "ytnix"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + networking.wireless.iwd = { + enable = true; + settings = { + Rank = { + BandModifier2_4GHz = 0.0; + }; + }; + }; + networking.networkmanager.wifi.backend = "iwd"; + + # Set your time zone. + time.timeZone = "America/Toronto"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n.defaultLocale = "en_US.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # useXkbConfig = true; # use xkb.options in tty. + # }; + + # Enable the X11 windowing system. + #services.xserver.enable = true; + + + + + # Configure keymap in X11 + # services.xserver.xkb.layout = "us"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + # hardware.pulseaudio.enable = true; + # OR + services.pipewire = { + enable = true; + pulse.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + services.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.yt = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + shell = pkgs.zsh; + packages = with pkgs; [ + firefox + ungoogled-chromium + librewolf + bitwarden-desktop + bitwarden-cli + aerc + delta + fzf + zoxide + eza + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + tmux + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + neovim + git + python3 + grim + slurp + wl-clipboard + mako + tree + kitty + rofi-wayland + rofimoji + cliphist + borgbackup + jq + brightnessctl + alsa-utils + nixd + veracrypt + kdePackages.dolphin + bluetuith + libimobiledevice + ]; + + # 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: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.05"; # Did you read the comment? + + services.gnome.gnome-keyring.enable = true; + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + services.displayManager.defaultSession = "sway"; + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + programs.waybar.enable = true; + programs.zsh.enable = true; + security.sudo.wheelNeedsPassword = false; + + fonts.packages = with pkgs; [ + nerdfonts + ]; + nixpkgs.config.allowUnfree = true; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + services.blueman.enable = true; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; +} + diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d80694c --- /dev/null +++ b/flake.nix @@ -0,0 +1,19 @@ +{ + description = "A very basic flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs }: + let + lib = nixpkgs.lib; + in { + nixosConfigurations = { + ytnix = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ./configuration.nix ]; + }; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..364f972 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,54 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/c6098a16-c8a6-4a97-8648-6f46ca919d13"; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/29B7-F46D"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..2c56a0a --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,209 @@ +monitor=,preferred,auto,1 +$terminal = kitty +$fileManager = dolphin +$menu = rofi -show drun + +exec-once = nm-applet & +exec-once = waybar & +exec-once = mako & + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + +general { + gaps_in = 5 + gaps_out = 5 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + resize_on_border = false + allow_tearing = false + layout = master +} + +decoration { + rounding = 5 + + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + blur { + enabled = true + size = 3 + passes = 1 + vibrancy = 0.1696 + } +} + +animations { + enabled = yes, please :) + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# workspace = w[tv1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = rounding 0, floating:0, onworkspace:f[1] + +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_status = slave + mfact = 0.5 +} + +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( +} + + +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = ctrl:nocaps + kb_rules = + numlock_by_default = true + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + } +} + +gestures { + workspace_swipe = false +} + +################### +### KEYBINDINGS ### +################### + +$mainMod = SUPER +$shiftMod = SUPER_SHIFT +$altMod = SUPER_ALT +$ctrlMod = SUPER_CTRL + +bind = $mainMod, return, exec, $terminal +bind = $ctrlMod, Q, killactive, +bind = $shiftMod, E, exit, +bind = $mainMod, space, togglefloating, +bind = $mainMod, D, exec, $menu +bind = $mainMod, E, layoutmsg, swapwithmaster master + +# apps +bind = $altMod, F, exec, $fileManager +bind = $altMod, B, exec, librewolf +bind = $mainMod, P, exec, bitwarden + +# Move focus with mainMod + arrow keys +bind = $mainMod, H, movefocus, l +bind = $mainMod, L, movefocus, r +bind = $mainMod, K, movefocus, u +bind = $mainMod, J, 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 + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 1%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 1%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# 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)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +workspace = 2, on-created-empty:librewolf diff --git a/kitty/kitty.conf b/kitty/kitty.conf index b7d3785..471c019 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -1,5 +1,5 @@ -font_family Spleen 16x32 -font_size 14 +font_family RobotoMono Nerd Font +font_size 13 enable_audio_bell no kitty_mod ctrl+shift diff --git a/nix/configuration.nix b/nix/configuration.nix new file mode 100644 index 0000000..f9ed51a --- /dev/null +++ b/nix/configuration.nix @@ -0,0 +1,117 @@ +{ config, lib, pkgs, ... }: + +{ + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "ytnix"; + networking.networkmanager.enable = true; + # disable 2.4 GHz cause i have a shitty wireless card + # that interferes with bluetooth otherwise + networking.wireless.iwd = { + enable = true; + settings = { + Rank = { + BandModifier2_4GHz = 0.0; + }; + }; + }; + networking.networkmanager.wifi.backend = "iwd"; + time.timeZone = "America/Toronto"; + + services.pipewire = { + enable = true; + pulse.enable = true; + }; + + services.libinput.enable = true; + + users.users.yt = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.zsh; + packages = with pkgs; [ + firefox + ungoogled-chromium + librewolf + bitwarden-desktop + bitwarden-cli + aerc + delta + fzf + zoxide + eza + fastfetch + ]; + }; + + environment.systemPackages = with pkgs; [ + tmux + vim + wget + neovim + git + python3 + grim + slurp + wl-clipboard + mako + tree + kitty + rofi-wayland + rofimoji + cliphist + borgbackup + jq + brightnessctl + alsa-utils + nixd + veracrypt + kdePackages.dolphin + bluetuith + libimobiledevice + networkmanagerapplet + ]; + + system.stateVersion = "24.05"; + + services.gnome.gnome-keyring.enable = true; + programs.gnupg.agent.enable = true; + + # programs.sway = { + # enable = true; + # wrapperFeatures.gtk = true; + # }; + services.displayManager.defaultSession = "hyprland"; + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + programs.waybar.enable = true; + programs.zsh.enable = true; + security.sudo.wheelNeedsPassword = false; + + fonts.packages = with pkgs; [ + nerdfonts + ]; + nixpkgs.config.allowUnfree = true; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + services.blueman.enable = true; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + programs.hyprland = { + enable = true; + # withUWSM = true; + }; +} + diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..1720cb2 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/flake.nix b/nix/flake.nix new file mode 100644 index 0000000..d80694c --- /dev/null +++ b/nix/flake.nix @@ -0,0 +1,19 @@ +{ + description = "A very basic flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs }: + let + lib = nixpkgs.lib; + in { + nixosConfigurations = { + ytnix = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ./configuration.nix ]; + }; + }; + }; +} diff --git a/nix/hardware-configuration.nix b/nix/hardware-configuration.nix new file mode 100644 index 0000000..364f972 --- /dev/null +++ b/nix/hardware-configuration.nix @@ -0,0 +1,54 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/c6098a16-c8a6-4a97-8648-6f46ca919d13"; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/17870658-6118-46af-837f-70c9175e09c3"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/29B7-F46D"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/rofi/config.rasi b/rofi/config.rasi index 0b158df..3a0151c 100644 --- a/rofi/config.rasi +++ b/rofi/config.rasi @@ -155,4 +155,4 @@ configuration { } } -@theme "/usr/share/rofi/themes/gruvbox-dark.rasi" +@theme "/nix/store/nkjjc70cidfc3wbpas7kqr7agasma59c-rofi-1.7.5+wayland3/share/rofi/themes/gruvbox-dark.rasi" diff --git a/sway/config b/sway/config index 5daa7b4..9b48062 100644 --- a/sway/config +++ b/sway/config @@ -18,7 +18,7 @@ set $bg #000000 set $fg #ffffff set $fgi #888888 -set $wallpaper $HOME/wallpapers/nasamute.png +set $wallpaper $HOME/wallpapers/animegirl.jpg set $lock swaylock -f -i $wallpaper output * bg $wallpaper fill @@ -28,7 +28,7 @@ smart_borders on focus_follows_mouse yes bindsym $mod+Return exec $term -bindsym $mod+q kill +bindsym $mod+Ctrl+q kill bindsym $mod+d exec $menu bindsym $mod+Shift+c reload bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' @@ -42,7 +42,7 @@ bindsym $mod+$alt+f exec dolphin bindsym $mod+$alt+p exec pomatez bindsym $mod+$alt+e exec evolution bindsym $mod+$alt+c exec korganizer -bindsym $mod+p exec bitwarden-desktop +bindsym $mod+p exec bitwarden bindsym $mod+$left focus left bindsym $mod+$down focus down diff --git a/waybar/config b/waybar/config index 9a30054..afb4ece 100644 --- a/waybar/config +++ b/waybar/config @@ -1,55 +1,85 @@ { - "modules-left": ["sway/workspaces", "sway/window", "sway/mode"], - "modules-right": ["tray", "pulseaudio", "backlight", "network", "battery", "clock"], - "clock": { - "tooltip-format": "{:%Y %B}\n{calendar}", - "format": "{:%b %d(%H:%M) 󰃰}" + "layer": "top", // Waybar on highest layer so tooltips go over windows + "output": "eDP-1", // Set output to primary monitor + "height": 40, // Set height to avoid jumping due to active workspace indicator + + "margin-left": 4, + "margin-right": 4, + "margin-top": 4, + "modules-left": ["hyprland/workspaces", "clock#time", "clock#date", "battery"], // Sets modules for the left of the bar + "modules-center": ["hyprland/window"], // Set modules for the center of the bar + "modules-right": ["tray", "temperature", "cpu", "memory", "wireplumber"], // Set modules for the right of the bar + "clock#time": { + "format": "{:%H:%M:%S}", + "interval": 1, }, - "backlight": { - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] + "clock#date": { + "format": "{:%d/%m/%Y}", + "tooltip-format": "{calendar}", + "interval": 360, + "calendar": { + "mode": "month", + "mode-mon-col": 4, + "weeks-pos": "right", + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}", + }, + }, }, "battery": { + "interval": 60, "states": { - "warning": 30, - "critical": 15 + "warning": 40, + "critical": 20, }, - "format": "{capacity}% {icon}", - "format-charging": "{capacity}% 󰢝", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - "format-icons": ["", "", "", "", ""] + "format": "{icon} {capacity}%", + "format-icons": [ + "", + "", + "", + "", + "", + ], + "format-charging": "󱐌 {capacity}%", }, - "pulseaudio": { - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": "󰝟 {icon} {format_source}", - "format-muted": "󰝟 {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "󱠰", - "headset": "󰋎", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" + "cpu": { + "format": "{usage}%", + "interval": 4, }, - "network": { - "format": "{ifname}", - "format-wifi": "Connected ", - "format-ethernet": "{ipaddr}/{cidr} 󰈀", - "format-disconnected": "Disconnected 󱛅", //An empty format will hide the module. - "tooltip-format": "{ifname} via {gwaddr} 󰛳", - "tooltip-format-wifi": "{essid} ({signalStrength}%) ", - "tooltip-format-ethernet": "{ifname} ", - "tooltip-format-disconnected": "Disconnected", - "max-length": 50 + "memory": { + "format": "{used}GiB", + "interval": 4, + }, + "temperature": { + "hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input", + "critical-threshold": 80, + "format": "{temperatureC}°C", + "format-critical": "{temperatureC}°C", + "interval": 4, + }, + "wireplumber": { + "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}%", + "format-muted": "󰝟 Muted", + "format-icons": ["", "", ""], + "on-click": "pavucontrol", + "interval": 4, + }, + "hyprland/window": { + "max-length": 64, }, "tray": { - "spacing": 10 + "icon-size": 22, + "spacing": 6, + }, + "hyprland/workspaces": { + "disable-scroll": true, + "on-click": "activate", } } diff --git a/waybar/style.css b/waybar/style.css index 2253ac7..9e8205c 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -1,102 +1,70 @@ -* { - border: none; - border-radius: 0; - font-family: RobotoMono Nerd Font; - font-size: 14px; - font-weight: 500; +.module, +#clock.date, +#clock.time, +#workspaces button { + background: transparent; + padding: 0 10px; + font-family: SpaceMono Nerd Font; + font-weight: 900; + font-size: 13pt; + color: #c0caf5; } +/* main waybar */ window#waybar { - background-color: #282828; - color: #ebdbb2; - transition-property: background-color; - transition-duration: 0.5s; - border-bottom: solid 0px #3c3836; + background: rgba(26, 27, 38, 0.75); + border: 2px solid #414868; } -window#waybar.hidden { - opacity: 0.2; +/* when hovering over modules */ +tooltip { + background: #1e1e2e; + border-radius: 0; +} + +#workspaces { + padding-right: 0; } #workspaces button { - padding: 0 5px; - color: #ebdbb2; - border-radius: 5px; + padding: 2px; } +#clock { + padding-right: 100px; +} + + +/* Sets active workspace to have a solid line on the bottom */ +#workspaces button.active { + border-bottom: 2px solid #7aa2f7; + border-radius: 0; + margin-top: 2px; + transition: none; +} + +/* More workspace stuff for highlighting on hover */ #workspaces button.focused { - background-color: #ebdbb2; - color: #282828; - border-bottom: none; + color: #a6adc8; } #workspaces button.urgent { - background-color: #cc241d; + color: #f7768e; } -widget > * { - margin-top: 6px; - margin-bottom: 6px; +#workspaces button:hover { + background: #11111b; + color: #cdd6f4; } -.modules-left > widget > * { - margin-left: 12px; - margin-right: 12px; +/* Hide window module when not focused on window or empty workspace */ +window#waybar.empty #window { + padding: 0; + margin: 0; + opacity: 0; } -.modules-left > widget:first-child > * { - margin-left: 6px; -} - -.modules-left > widget:last-child > * { - margin-right: 18px; -} - -.modules-right > widget > * { - padding: 0 12px; - margin-left: 0; - margin-right: 0; - color: #282828; - background-color: #ebdbb2; -} - -.modules-right > widget:first-child > * { - border-radius: 5px 0 0 5px; -} - -.modules-right > widget:last-child > * { - border-radius: 0 5px 5px 0; - margin-right: 6px; -} - -#mode { - background: transparent; - color: #fb4934; -} - -@keyframes blink { - to { - color: #ebdbb2; - } -} - -#battery.critical:not(.charging) { - animation-name: blink; - animation-duration: 1s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} - -label:focus { - background-color: #282828; -} - -tooltip { - border-radius: 5px; - background: #504945; -} - -tooltip label { - color: #ebdbb2; +/* Set up rounding to make these modules look like separate pills */ +#tray { + margin-right: 4px; }