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;
+}