From 1a39ddde490465888117d32190c5eb13acc14ca7 Mon Sep 17 00:00:00 2001 From: Trianta <56975502+Trimutex@users.noreply.github.com> Date: Tue, 16 Jan 2024 18:33:53 -0600 Subject: [PATCH] Added waybar --- update.sh | 3 + waybar/config.json | 125 ++++++++++++++++++++++++++++++++++ waybar/mocha.css | 37 ++++++++++ waybar/scripts/get_weather.sh | 19 ++++++ waybar/scripts/poweroff.sh | 27 ++++++++ waybar/scripts/spotify.sh | 18 +++++ waybar/style.css | 92 +++++++++++++++++++++++++ 7 files changed, 321 insertions(+) create mode 100755 waybar/config.json create mode 100755 waybar/mocha.css create mode 100755 waybar/scripts/get_weather.sh create mode 100755 waybar/scripts/poweroff.sh create mode 100755 waybar/scripts/spotify.sh create mode 100755 waybar/style.css diff --git a/update.sh b/update.sh index a70f56d..fd00092 100755 --- a/update.sh +++ b/update.sh @@ -6,3 +6,6 @@ echo "Syncing dotfiles with hypr..." rsync --recursive ~/.config/hypr $(dirname "$0") echo "Syncing dotfiles with nvim..." rsync --recursive ~/.config/nvim $(dirname "$0") +echo "Syncing dotfiles with waybar..." +rsync --recursive ~/.config/waybar $(dirname "$0") +echo "Syncing complete!" diff --git a/waybar/config.json b/waybar/config.json new file mode 100755 index 0000000..bc8f6a1 --- /dev/null +++ b/waybar/config.json @@ -0,0 +1,125 @@ +[ + { + "name": "main", + "layer": "top", + "position": "top", + "height": 34, + "spacing": 4, + "margin-top": 10, + "margin-bottom": 0, + "output": "DP-2", + "modules-left": [ + "wireplumber", + "disk", + "memory", + "cpu", + "temperature" + ], + "modules-center": ["wlr/taskbar"], + "modules-right": [ + "hyprland/workspaces", + "tray", + "custom/weather", + "network#ethernet", + "clock", + "custom/poweroff" + ], + "clock": { + "interval": 1, + "format": "{:%H:%M:%S}", + "format-alt": "{:%Y-%m-%d}", + "tooltip-format": "{:%Y %B}\n{calendar}" + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "disk": { + "format": " {}%", + "tooltip-format": "{used} / {total} used" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "memory": { + "format": " {}%", + "tooltip-format": "{used:0.1f}G / {total:0.1f}G used" + }, + "temperature": { + "critical-threshold": 80, + "format": " {icon} {temperatureC}°C ", + "format-icons": ["", "", "", "", ""], + "hwmon-path": "/sys/class/thermal/thermal_zone2/temp" + }, + "network#ethernet": { + "interface": "enp*", + "format-ethernet": "", + "format-wifi": "", + "format-linked": "", + "format-disconnected": "", + "tooltip-format": "{ifname}: {ipaddr}/{cidr}", + "on-click": "nm-connection-editor" + }, + "sway/mode": { + "format": "{}" + }, + "hyprland/workspaces": { + "format": "{name}", + "sort-by-number": true, + "all-outputs": true + }, + "wlr/taskbar": { + "format": "{name}", + "icon-size": 32, + "tooltip": false, + "on-click": "activate", + "on-click-right": "close", + "all-outputs": true, + "ignore-list": [ + "xwaylandvideobridge" + ], + "rewrite": { + "(.*)Firefox Web Browser": "", + "(.*)Discord": "", + "(.*)Alacritty": "", + "Steam(.*)": "", + "(.*)Spotify": "" + } + }, + "wireplumber": { + "format": " {volume}%", + "format-muted": " 0%", + "on-click": "pavucontrol", + "on-click-right": "helvum", + "max-volume": 100, + "scroll-step": 5 + }, + "tray": { + "icon-size": 21, + "spacing": 10 + }, + "custom/spotify": { + "interval": 1, + "return-type": "json", + "exec": "~/.config/waybar/scripts/spotify.sh", + "exec-if": "pgrep spotify", + "escape": true + }, + "custom/poweroff": { + "tooltip": false, + "format": " ", + "on-click": "bash $HOME/.config/waybar/scripts/poweroff.sh" + }, + "custom/weather": { + "exec": "$HOME/.config/waybar/scripts/get_weather.sh Belleville+Illinois", + "return-type": "json", + "format": "{}", + "tooltip": true, + "interval": 3600 + } + } +] diff --git a/waybar/mocha.css b/waybar/mocha.css new file mode 100755 index 0000000..98e218a --- /dev/null +++ b/waybar/mocha.css @@ -0,0 +1,37 @@ +/* +* +* Catppuccin Mocha palette +* Maintainer: rubyowo +* +*/ + +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; + +@define-color text #cdd6f4; +@define-color subtext0 #a6adc8; +@define-color subtext1 #bac2de; + +@define-color surface0 #313244; +@define-color surface1 #45475a; +@define-color surface2 #585b70; + +@define-color overlay0 #6c7086; +@define-color overlay1 #7f849c; +@define-color overlay2 #9399b2; + +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color sapphire #74c7ec; +@define-color sky #89dceb; +@define-color teal #94e2d5; +@define-color green #a6e3a1; +@define-color yellow #f9e2af; +@define-color peach #fab387; +@define-color maroon #eba0ac; +@define-color red #f38ba8; +@define-color mauve #cba6f7; +@define-color pink #f5c2e7; +@define-color flamingo #f2cdcd; +@define-color rosewater #f5e0dc; diff --git a/waybar/scripts/get_weather.sh b/waybar/scripts/get_weather.sh new file mode 100755 index 0000000..7278b23 --- /dev/null +++ b/waybar/scripts/get_weather.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# get_weather.sh +for i in {1..5} +do + text=$(curl -s "https://wttr.in/$1?format=1") + if [[ $? == 0 ]] + then + text=$(echo "$text" | sed -E "s/\s+/ /g") + tooltip=$(curl -s "https://wttr.in/$1?format=4") + if [[ $? == 0 ]] + then + tooltip=$(echo "$tooltip" | sed -E "s/\s+/ /g") + echo "{\"text\":\"$text\", \"tooltip\":\"$tooltip\"}" + exit + fi + fi + sleep 2 +done +echo "{\"text\":\"error\", \"tooltip\":\"error\"}" diff --git a/waybar/scripts/poweroff.sh b/waybar/scripts/poweroff.sh new file mode 100755 index 0000000..3f5d4c7 --- /dev/null +++ b/waybar/scripts/poweroff.sh @@ -0,0 +1,27 @@ +#!/bin/bash +case $(wofi -d -L 6 -l 3 -W 100 -x -100 -y 10 \ + -D dynamic_lines=true << EOF | sed 's/^ *//' + Shutdown + Reboot + Log off + Sleep + Lock + Cancel +EOF +) in + "Shutdown") + systemctl poweroff + ;; + "Reboot") + systemctl reboot + ;; + "Sleep") + systemctl suspend + ;; + "Lock") + loginctl lock-session + ;; + "Log off") + hyprctl dispatch exit + ;; +esac diff --git a/waybar/scripts/spotify.sh b/waybar/scripts/spotify.sh new file mode 100755 index 0000000..c00622b --- /dev/null +++ b/waybar/scripts/spotify.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +class=$(playerctl metadata --player=spotify --format '{{lc(status)}}') +icon="" + +if [[ $class == "playing" ]]; then + info=$(playerctl metadata --player=spotify --format '{{artist}} - {{title}}') + if [[ ${#info} > 40 ]]; then + info=$(echo $info | cut -c1-40)"..." + fi + text=$info" "$icon +elif [[ $class == "paused" ]]; then + text=$icon +elif [[ $class == "stopped" ]]; then + text="" +fi + +echo -e "{\"text\":\""$text"\", \"class\":\""$class"\"}" diff --git a/waybar/style.css b/waybar/style.css new file mode 100755 index 0000000..a5dae49 --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,92 @@ +@import "mocha.css"; + +* { + border: none; + border-radius: 0px; + min-height: 0; + font-size: 15px; + font-family: "Hack Nerd Font"; + /*background: @base;*/ +} + +window#waybar { + background-color: transparent; + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +#workspaces button { + border-radius: 20px; +} + +#workspaces button:hover { + color: black; + border-bottom: 3px solid #ffffff; +} + +#mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +/* Sections */ + +.modules-left, +.modules-center, +.modules-right { + border-radius: 20px; + border: 3px solid @crust; + padding: 0 10px; +} + +#clock, +#cpu, +#disk, +#memory, +#network, +#temperature, +#taskbar, +#tray, +#workspaces, +#wireplumber, +#custom-poweroff, +#custom-weather, +#custom-spotify { + padding: 0 10px; +} + +.modules-left { + background-image: linear-gradient(90deg, @base, @surface0, @surface2); +} + +.modules-center { + background-image: linear-gradient(270deg, @base, @overlay2, @base); +} + +.modules-right { + background-image: linear-gradient(270deg, @base, @surface0, @surface2); +} + +#wireplumber{ + color: @sapphire; +} +#disk { + color: @peach; +} +#memory { + color: @teal; +} +#cpu { + color: @lavender; +} +#temperature { + color: @sky; +} +#taskbar button { + color: @rosewater; +}