From 084100c5574ca592c3b1c4cf17de668f559b879e Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Thu, 13 Jun 2024 16:30:12 +0200 Subject: [PATCH] More hyprland setup, add waybar --- homes/x86_64-linux/julian@aspi/default.nix | 1 + modules/home/hyprland/default.nix | 66 ++++- modules/home/hyprland/style-dracula.css | 265 +++++++++++++++++++++ packages/open-messaging/default.nix | 31 +++ systems/x86_64-linux/aspi/default.nix | 4 +- 5 files changed, 360 insertions(+), 7 deletions(-) create mode 100644 modules/home/hyprland/style-dracula.css create mode 100644 packages/open-messaging/default.nix diff --git a/homes/x86_64-linux/julian@aspi/default.nix b/homes/x86_64-linux/julian@aspi/default.nix index b62e8c9..f39a605 100644 --- a/homes/x86_64-linux/julian@aspi/default.nix +++ b/homes/x86_64-linux/julian@aspi/default.nix @@ -74,6 +74,7 @@ ## My scripts pkgs.frajul.deploy-to-pianopi pkgs.frajul.edit-config + pkgs.frajul.open-messaging ] ++ lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; }) [ ./fonts.nix diff --git a/modules/home/hyprland/default.nix b/modules/home/hyprland/default.nix index 99074e6..3a57b84 100644 --- a/modules/home/hyprland/default.nix +++ b/modules/home/hyprland/default.nix @@ -37,11 +37,59 @@ in home.packages = with pkgs; [ wofi xfce.thunar - wlogout - waybar hyprlock + hyprpicker + hyprcursor ]; + programs.waybar = { + enable = true; + systemd.enable = true; + style = builtins.readFile ./style-dracula.css; + settings = { + mainBar = { + layer = "top"; + position = "bottom"; + height = 30; + output = [ + "eDP-1" + "HDMI-A-1" + ]; + modules-left = [ + "hyprland/workspaces" + "hyprland/submap" + ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ + # "mpd" + # "idle_inhibitor" + "pulseaudio" + # "network" + "power-profiles-daemon" + "cpu" + "memory" + # "temperature" + # "backlight" + # "keyboard-state" + "battery" + # "battery#bat2" + "clock" + "tray" + ]; + + # "sway/workspaces" = { + # disable-scroll = true; + # all-outputs = true; + # }; + }; + }; + }; + + programs.wlogout.enable = true; # can be configured + # services.hypridle.enable = true; # can be configured + + services.network-manager-applet.enable = true; + wayland.windowManager.hyprland = { # Whether to enable Hyprland wayland compositor enable = true; @@ -62,10 +110,8 @@ in # Autostart exec-once = [ - "nm-applet" - "waybar" + # "nm-applet" "firefox" - "hyprlock" ]; # Environment Variables @@ -121,7 +167,14 @@ in }; # Window rules - windowrulev2 = "suppressevent maximize, class:.*"; # You'll probably like this. + windowrulev2 = [ + "suppressevent maximize, class:.*" + "workspace 1, class:firefox" + "workspace 9, class:nheko" + "workspace 9, class:org.telegram.desktop" + "workspace 10, class:thunderbird" + "float, class:qalculate-gtk" + ]; # Workspace rules workspace = [ @@ -158,6 +211,7 @@ in "$mod, E, exec, thunar" "$mod, Return, exec, alacritty" "$mod, B, exec, firefox" + "$mod, C, exec, qalculate-gtk" # other commands "$mod, Escape, exec, wlogout -p layer-shell" diff --git a/modules/home/hyprland/style-dracula.css b/modules/home/hyprland/style-dracula.css new file mode 100644 index 0000000..66c6b1e --- /dev/null +++ b/modules/home/hyprland/style-dracula.css @@ -0,0 +1,265 @@ +/* Keyframes */ + +@keyframes blink-critical { + to { + /*color: @white;*/ + background-color: @critical; + } +} + + +/* Styles */ + +/* Colors (gruvbox) */ +@define-color black #282828; +@define-color red #cc241d; +@define-color green #98971a; +@define-color yellow #d79921; +@define-color blue #458588; +@define-color purple #b16286; +@define-color aqua #689d6a; +@define-color gray #a89984; +@define-color brgray #928374; +@define-color brred #fb4934; +@define-color brgreen #b8bb26; +@define-color bryellow #fabd2f; +@define-color brblue #83a598; +@define-color brpurple #d3869b; +@define-color braqua #8ec07c; +@define-color white #ebdbb2; +@define-color bg2 #504945; + + +@define-color warning @bryellow; +@define-color critical @red; +@define-color mode @black; +@define-color unfocused @bg2; +@define-color focused @braqua; +@define-color inactive @purple; +@define-color sound @brpurple; +@define-color network @purple; +@define-color memory @braqua; +@define-color cpu @green; +@define-color temp @brgreen; +@define-color layout @bryellow; +@define-color battery @aqua; +@define-color date @black; +@define-color time @white; + +/* Reset all styles */ +* { + border: none; + border-radius: 0; + min-height: 0; + margin: 0; + padding: 0; + box-shadow: none; + text-shadow: none; + icon-shadow: none; +} + +/* The whole bar */ +#waybar { + background: rgba(40, 40, 40, 0.8784313725); /* #282828e0 */ + color: @white; + font-family: JetBrains Mono, Siji; + font-size: 10pt; + /*font-weight: bold;*/ +} + +/* Each module */ +#battery, +#clock, +#cpu, +#language, +#memory, +#mode, +#network, +#pulseaudio, +#temperature, +#tray, +#backlight, +#idle_inhibitor, +#disk, +#user, +#mpris { + padding-left: 8pt; + padding-right: 8pt; +} + +/* Each critical module */ +#mode, +#memory.critical, +#cpu.critical, +#temperature.critical, +#battery.critical.discharging { + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + animation-name: blink-critical; + animation-duration: 1s; +} + +/* Each warning */ +#network.disconnected, +#memory.warning, +#cpu.warning, +#temperature.warning, +#battery.warning.discharging { + color: @warning; +} + +/* And now modules themselves in their respective order */ + +/* Current sway mode (resize etc) */ +#mode { + color: @white; + background: @mode; +} + +/* Workspaces stuff */ +#workspaces button { + /*font-weight: bold;*/ + padding-left: 2pt; + padding-right: 2pt; + color: @white; + background: @unfocused; +} + +/* Inactive (on unfocused output) */ +#workspaces button.visible { + color: @white; + background: @inactive; +} + +/* Active (on focused output) */ +#workspaces button.focused { + color: @black; + background: @focused; +} + +/* Contains an urgent window */ +#workspaces button.urgent { + color: @black; + background: @warning; +} + +/* Style when cursor is on the button */ +#workspaces button:hover { + background: @black; + color: @white; +} + +#window { + margin-right: 35pt; + margin-left: 35pt; +} + +#pulseaudio { + background: @sound; + color: @black; +} + +#network { + background: @network; + color: @white; +} + +#memory { + background: @memory; + color: @black; +} + +#cpu { + background: @cpu; + color: @white; +} + +#temperature { + background: @temp; + color: @black; +} + +#language { + background: @layout; + color: @black; +} + +#battery { + background: @battery; + color: @white; +} + +#tray { + background: @date; +} + +#clock.date { + background: @date; + color: @white; +} + +#clock.time { + background: @time; + color: @black; +} + +#custom-arrow1 { + font-size: 11pt; + color: @time; + background: @date; +} + +#custom-arrow2 { + font-size: 11pt; + color: @date; + background: @layout; +} + +#custom-arrow3 { + font-size: 11pt; + color: @layout; + background: @battery; +} + +#custom-arrow4 { + font-size: 11pt; + color: @battery; + background: @temp; +} + +#custom-arrow5 { + font-size: 11pt; + color: @temp; + background: @cpu; +} + +#custom-arrow6 { + font-size: 11pt; + color: @cpu; + background: @memory; +} + +#custom-arrow7 { + font-size: 11pt; + color: @memory; + background: @network; +} + +#custom-arrow8 { + font-size: 11pt; + color: @network; + background: @sound; +} + +#custom-arrow9 { + font-size: 11pt; + color: @sound; + background: transparent; +} + +#custom-arrow10 { + font-size: 11pt; + color: @unfocused; + background: transparent; +} diff --git a/packages/open-messaging/default.nix b/packages/open-messaging/default.nix new file mode 100644 index 0000000..e3dc72c --- /dev/null +++ b/packages/open-messaging/default.nix @@ -0,0 +1,31 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # You also have access to your flake's inputs. + inputs, + + # All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers + # programmatically or you may add the named attributes as arguments here. + pkgs, + stdenv, + ... +}: + +pkgs.writeShellApplication { + name = "open-messaging"; + + runtimeInputs = with pkgs; [ + nheko + telegram-desktop + thunderbird + ]; + + text = '' + nheko & + sleep 0.1 + telegram-desktop & + sleep 0.1 + thunderbird & + ''; +} diff --git a/systems/x86_64-linux/aspi/default.nix b/systems/x86_64-linux/aspi/default.nix index 717d7c5..ba460b5 100644 --- a/systems/x86_64-linux/aspi/default.nix +++ b/systems/x86_64-linux/aspi/default.nix @@ -104,7 +104,7 @@ # Enable the XFCE Desktop Environment. services.xserver.displayManager.gdm.enable = true; - # services.displayManager.sddm.wayland.enable = true; + # services.displayManager.sddm.wayland.enable = true; # services.xserver.desktopManager = { # xterm.enable = false; # xfce = { @@ -135,6 +135,8 @@ hardware.pulseaudio.enable = false; security.polkit.enable = true; + security.pam.services.hyprlock = { }; + # Sound security.rtkit.enable = true; services.pipewire = {