diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
new file mode 100644
index 0000000..b473cde
--- /dev/null
+++ b/.config/waybar/config.jsonc
@@ -0,0 +1,136 @@
+{
+ "reload_style_on_change": true,
+ "layer": "top",
+ "position": "top",
+ "margin-top": 6,
+ "margin-right": 8,
+ "margin-left": 8,
+ "spacing": 6,
+
+ "modules-left": ["custom/power-menu", "niri/workspaces", "group/player"],
+ "modules-center": ["clock"],
+ "modules-right": [
+ "tray",
+ "niri/language",
+ "cpu",
+ "memory",
+ "group/system-indicators"
+ ],
+
+ "custom/power-menu": {
+ "format": " ",
+ "tooltip": false
+ },
+
+ "niri/workspaces": {
+ "on-click": "activate",
+ "format": "{icon}",
+ "format-icons": {
+ "default": ""
+ }
+ },
+
+ // Player
+ "group/player": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/player-icon",
+ "mpris",
+ "custom/player-prev",
+ "custom/player-play-pause",
+ "custom/player-next"
+ ]
+ },
+ "custom/player-icon": {
+ "format": " "
+ },
+ "custom/player-prev": {
+ "format": "",
+ "on-click": "playerctl previous",
+ "tooltip": false,
+ "interval": 0
+ },
+ "custom/player-play-pause": {
+ "exec": "~/.config/waybar/player-play-pause.sh",
+ "on-click": "playerctl play-pause",
+ "tooltip": false,
+ "interval": 0,
+ "return-type": "json"
+ },
+ "custom/player-next": {
+ "format": "",
+ "on-click": "playerctl next",
+ "tooltip": false,
+ "interval": 0
+ },
+ "mpris": {
+ "format": "{artist} {title}",
+ "max-length": 32,
+ "tooltip": false
+ },
+
+
+
+ "clock": {
+ "format": "{:L%R %a %d}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode" : "month",
+ "weeks-pos" : "",
+ "on-scroll" : 1,
+ "format": {
+ "months": "{}",
+ "days": "{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ }
+ },
+
+ "tray": {
+ "icon-size": 14,
+ "spacing": 10
+ },
+ "niri/language": {
+ "format": " {short}"
+ },
+ "cpu": {
+ "format": " {usage}%",
+ "on-click": "alacritty -e btop",
+ "tooltip": false
+ },
+ "memory": {
+ "format": " {percentage}%",
+ "on-click": "alacritty -e btop",
+ "tooltip": false
+ },
+
+ // System Indicators
+ "group/system-indicators": {
+ "orientation": "horizontal",
+ "modules": ["network", "wireplumber"]
+ },
+ "network": {
+ "format-icons": ["", "", "", "", ""],
+ "format": "{icon}",
+ "format-wifi": "{icon}",
+ "tooltip-format-wifi": "{essid}\n⇣{bandwidthDownBytes}\n⇡{bandwidthUpBytes}",
+ "format-ethernet": "",
+ "tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
+ "format-disconnected": "",
+ "tooltip-format-disconnected": "Нет подключения",
+ "interval": 3,
+ "on-click": "kitty --class waybar -e impala -m station"
+ },
+ "wireplumber": {
+ "scroll-step": 5,
+ "format": "{icon}",
+ "format-muted": "",
+ "format-icons": {
+ "default": ["", "", ""]
+ },
+ "tooltip": false,
+ "on-click": "kitty --class waybar -e wiremix"
+ }
+
+}
diff --git a/.config/waybar/config.jsonc.save b/.config/waybar/config.jsonc.save
new file mode 100644
index 0000000..387f610
--- /dev/null
+++ b/.config/waybar/config.jsonc.save
@@ -0,0 +1,78 @@
+// -*- mode: jsonc -*-
+{
+ "layer": "top",
+ "position": "top",
+ "height": 30,
+ "width": "auto",
+ "spacing": 4,
+ "modules-left": [
+ "hyprland/workspaces"
+ ],
+ "modules-right": [
+ "custom/spotify",
+ "tray",
+ "hyprland/language",
+ "network",
+ "wireplumber",
+ "clock"
+ ],
+ "hyprland/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": true,
+ "warp-on-scroll": false,
+ "format": "{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 20,
+ "spacing": 10,
+ // "icons": {
+ // "blueman": "bluetooth",
+ // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
+ // }
+ },
+ "clock": {
+ "format": "{:%H:%M}",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%d.%m.%Y}"
+ },
+ "hyprland/language": {
+ "format-en": "EN",
+ "format-ru": "RU"
+ },
+ "network": {
+ "format-wifi": "",
+ "format-ethernet": "",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "wireplumber": {
+ "max-volume": 100,
+ ""
+ "scroll-step": 2,
+ "format": "{icon} {volume}%",
+ "format-muted": "",
+ "format-icons": ["", "", ""],
+ "on-click": "helvum"
+ },
+ "custom/spotify": {
+ "exec": "/usr/bin/python3 ~/.config/waybar/mediaplayer.py --player spotify",
+ "format": "{}",
+ "return-type": "json",
+ "on-click": "playerctl --player=spotify play-pause",
+ "on-scroll-up": "playerctl previous",
+ "on-scroll-down": "playerctl next",
+ "smooth-scrolling-threshold": 4.0
+ }
+ }
diff --git a/.config/waybar/player-play-pause.sh b/.config/waybar/player-play-pause.sh
new file mode 100644
index 0000000..67f916f
--- /dev/null
+++ b/.config/waybar/player-play-pause.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+# Получаем статус плеера
+status=$(playerctl status 2>/dev/null)
+
+if [ "$status" == "Playing" ]; then
+ icon="" # Pause
+elif [ "$status" == "Paused" ]; then
+ icon="" # Play
+else
+ icon="" # Нет плеера / stopped (можешь другой значок)
+fi
+
+# Выводим JSON для Waybar
+echo "{\"text\": \"$icon\", \"class\": \"$status\"}"
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..18c757f
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,130 @@
+* {
+ margin: 0;
+ padding: 0;
+}
+
+window#waybar {
+ color: #c0caf5;
+ background: alpha(#24283b, .85);
+ border-radius: 24px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-size: 16px;
+ font-weight: 600;
+}
+
+.modules-left { margin-left: 4px; }
+.modules-right { margin-right: 4px; }
+
+#workspaces,
+#player,
+#clock,
+#tray,
+#language,
+#cpu,
+#memory,
+#system-indicators {
+ background-color: #414868;
+ border-radius: 16px;
+ padding: 0 12px;
+ margin: 3px 0;
+}
+
+#workspaces button {
+ all: unset;
+ min-width: 12px;
+ margin: 10px 6px;
+ border-radius: 999px;
+ background-color: #c0caf5;
+ transition: all .2s ease;
+}
+
+#workspaces button label { font-size: 0; }
+
+#workspaces button.active {
+ min-width: 36px;
+ background-color: #7C86FF;
+}
+
+#workspaces button.empty {
+ color: #565f89;
+ background-color: #565f89;
+}
+
+tooltip {
+ font-size: 16px;
+ background-color: #414868;
+ color: @text;
+ border: 3px solid #565f89;
+ outline: none;
+ box-shadow: none;
+}
+
+tooltip * {
+ outline: none;
+ box-shadow: none;
+ border: none;
+}
+
+tooltip label { margin: 12px; }
+
+#custom-player-icon {
+ color: #7C86FF;
+ margin-right: 6px;
+}
+
+#mpris { margin-right: 16px; }
+
+#custom-player-play-pause {
+ margin: 2px 8px;
+ padding: 0 9px;
+ color: #24283b;
+ background-color: #7C86FF;
+ border-radius: 999px;
+ transition: all .1s ease;
+}
+
+#custom-player-play-pause:hover { background-color: #c0caf5; }
+#custom-player-prev:hover { color: #7aa2f7; }
+#custom-player-next:hover { color: #7aa2f7; }
+
+#clock { padding: 5px 12px; }
+
+#network {
+ margin: 3px 3px 3px 0;
+ min-width: 16px;
+ border-radius: 16px;
+ padding-left: 4px;
+ padding-right: 6px;
+}
+
+#network.disabled { color: #565f89; }
+#network.disconnected { color: #f7768e; }
+#network.linked { color: #c0caf5; }
+#network.wifi,
+#network.ethernet { color: #7C86FF; }
+
+#wireplumber {
+ min-width: 16px;
+ margin: 3px 0;
+ border-radius: 16px;
+ padding: 0 6px 0 3px;
+}
+
+#custom-power-menu {
+ min-width: 32px;
+ margin: 3px 0;
+ padding-left: 7px;
+ border-radius: 16px;
+ background-color: #414868;
+ color: #7C86FF;
+}
+
+#network:hover,
+#wireplumber:hover,
+#language:hover,
+#cpu:hover,
+#memory:hover,
+#clock:hover,
+#custom-power-menu:hover{
+ background-color: #565f89;
+}