Fix hyprland

This commit is contained in:
2025-02-01 21:41:53 +02:00
parent 7344a9e77a
commit 73a0cc0977
50 changed files with 1613 additions and 601 deletions

View File

@@ -1,170 +1,466 @@
$bg: #1a1b26;
$bg_dark: #16161e;
$bg_float: #16161e;
$bg_highlight: #292e42;
$bg_popup: #16161e;
$bg_search: #3d59a1;
$bg_sidebar: #16161e;
$bg_statusline: #16161e;
$bg_visual: #283457;
$black: #15161e;
$blue: #7aa2f7;
$blue0: #3d59a1;
$blue1: #2ac3de;
$blue2: #0db9d7;
$blue5: #89ddff;
$blue6: #b4f9f8;
$blue7: #394b70;
$border: #15161e;
$border_highlight: #27a1b9;
$comment: #565f89;
$cyan: #7dcfff;
$dark3: #545c7e;
$dark5: #737aa2;
$delta_add: #2c5a66;
$delta_delete: #713137;
$diff_add: #20303b;
$diff_change: #1f2231;
$diff_delete: #37222c;
$diff_text: #394b70;
$error: #db4b4b;
$fg: #c0caf5;
$fg_dark: #a9b1d6;
$fg_float: #c0caf5;
$fg_gutter: #3b4261;
$fg_sidebar: #a9b1d6;
$git_add: #449dab;
$git_change: #6183bb;
$git_delete: #914c54;
$git_ignore: #545c7e;
$gitSigns_add: #266d6a;
$gitSigns_change: #536c9e;
$gitSigns_delete: #b2555b;
$green: #9ece6a;
$green1: #73daca;
$green2: #41a6b5;
$hint: #1abc9c;
$info: #0db9d7;
$magenta: #bb9af7;
$magenta2: #ff007c;
$orange: #ff9e64;
$purple: #9d7cd8;
$red: #f7768e;
$red1: #db4b4b;
$teal: #1abc9c;
$terminal_black: #414868;
$warning: #e0af68;
$yellow: #e0af68;
$base: #191724;
$surface: #1f1d2e;
$overlay: #26233a;
$muted: #6e6a86;
$subtle: #908caa;
$text: #e0def4;
$love: #eb6f92;
$gold: #f6c177;
$rose: #ebbcba;
$pine: #31748f;
$foam: #9ccfd8;
$iris: #c4a7e7;
$highlight_low: #21202e;
$highlight_med: #403d52;
$highlight_high: #524f67;
$bg: rgba(25, 23, 37, 0.7);
* {
all: unset; //Unsets everything so you can style everything from scratch
}
//Global Styles
.bar,
.bar-1 {
background-color: rgba(22, 22, 30, 0.7);
color: $fg;
all: unset;
font-family: "JetBrainsMono NF";
font-size: 14;
}
/** General **/
.bar {
background-color: $bg;
color: $text;
}
.module {
margin: 0px 0px 0px 0px;
border-radius: 10px 16px 0px 10px;
}
/** tooltip!! **/
tooltip.background {
background-color: $bg;
border-radius: 10px;
color: #bfc9db;
}
tooltip label {
margin: 6px;
}
/** Widgets **/
.clock_time_sep {
font-size: 16;
color: #bfc9db;
margin: 0px 4px 1px 4px;
}
.clock_date {
font-size: 18;
margin: 0px 10px 0px 10px;
color: $iris;
}
clock_time {
margin: 0px 20px 0px 3px;
color: #bfc9db;
}
.clock_time {
color: #bfc9db;
margin: 0px 5px 0px 0px;
}
.membar {
color: $rose;
background-color: $highlight_med;
border-radius: 10px;
}
.batbar {
color: $pine;
background-color: $highlight_med;
border-radius: 10px;
}
.brightbar trough highlight {
background-image: linear-gradient(
to right,
$rose 30%,
#f1bf99 50%,
$gold 100% * 50
);
border-radius: 10px;
}
.volbar trough highlight {
background-image: linear-gradient(
to right,
$foam 30%,
#67a2b4 50%,
$pine 100% * 50
);
border-radius: 10px;
}
.volume_icon {
font-size: 22;
color: $foam;
margin: 0px 10px 0px 10px;
}
.module_essid {
/* font-size: 18; */
color: $foam;
margin: 0px 10px 0px 0px;
}
.module-wif {
/* font-size: 22; */
color: $foam;
border-radius: 100%;
margin: 0px 10px 0px 5px;
}
.iconmem {
color: $rose;
}
.iconbat {
color: $foam;
&__Charging {
color: $gold;
}
}
.iconbat,
.iconmem {
font-size: 15;
margin: 10px;
}
.bright_icon {
font-size: 22;
color: $rose;
margin: 0px 10px 0px 10px;
}
.separ {
color: $highlight_med;
font-weight: bold;
font-size: 22px;
margin: 0px 8px 0px 8px;
}
// Styles on classes (see eww.yuck for more information)
.mem_module {
border-radius: 16px;
margin: 0px 10px 0px 3px;
}
.sidestuff slider {
.bat_module {
border-radius: 16px;
margin: 0px 10px 0px 10px;
}
scale trough {
all: unset;
}
.metric scale trough highlight {
all: unset;
background-color: $error;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: $bg_visual;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 1px;
margin-right: 2px;
}
.metric scale trough highlight {
all: unset;
// background-color: $fg_sidebar;
background-color: $teal;
color: $bg;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: $bg_visual;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 1px;
margin-right: 2px;
}
.label-ram {
font-size: large;
}
.music {
&.playing {
color: $teal;
}
&.paused {
color: $terminal_black;
}
background-color: $overlay;
box-shadow: 0 2px 3px 2px $highlight_low;
border-radius: 16px;
min-height: 10px;
min-width: 70px;
margin: 0px 10px 0px 0px;
}
.workspaces {
.current {
color: $hint;
color: $pine;
}
}
.icon-module {
&>&__icon {
margin-right: 5px;
.song_cover_art {
background-size: cover;
background-position: center;
/* min-height: 24px; */
min-width: 24px;
margin: 10px;
border-radius: 100px;
}
.song {
color: $foam;
/* font-size: 18px; */
font-weight: bold;
margin: 3px 5px 0px 0px;
}
.song_btn_play {
color: $foam;
font-size: 28px;
margin: 3px 0px 0px 5px;
}
.song_btn_prev,
.song_btn_next {
color: #bfc9db;
font-size: 24px;
margin: 3px 0px 0px 5px;
}
// Calendar
.cal {
background-color: $bg;
font-size: 18px;
font-weight: normal;
.cal-in {
padding: 0px 10px 0px 10px;
color: $text;
.cal {
&.highlight {
padding: 20px;
}
padding: 5px 5px 5px 5px;
margin-left: 10px;
}
}
}
.cpu {
&.warning {
color: $warning;
}
&.danger {
color: $red;
}
calender {
color: $text;
}
.battery {
&.warning {
color: $warning;
}
&.critical {
color: $red;
}
&.Charging {
color: $teal;
}
calendar:selected {
color: $iris;
}
.network {
&.disconnected {
color: $error;
}
calendar.header {
color: $iris;
font-weight: bold;
}
.workspaces button:hover {
background: $bg_highlight;
calendar.button {
color: $iris;
}
calendar.highlight {
color: $iris;
font-weight: bold;
}
calendar:indeterminate {
color: #bfc9db;
}
.sys_sep {
color: $highlight_med;
font-size: 18;
margin: 0px 10px 0px 10px;
}
.sys_text_bat_sub,
.sys_text_mem_sub {
font-size: 16;
color: $text;
margin: 5px 0px 0px 25px;
}
.sys_text_bat,
.sys_text_mem {
font-size: 21;
font-weight: bold;
margin: 14px 0px 0px 25px;
}
.sys_icon_bat,
.sys_icon_mem {
font-size: 30;
margin: 30px;
}
.sys_win {
background-color: #0f0f17;
}
.sys_bat {
color: #afbea2;
background-color: $highlight_med;
border-radius: 10px;
}
.sys_mem {
color: $rose;
background-color: $highlight_med;
border-radius: 10px;
}
.sys_icon_bat,
.sys_text_bat {
color: #afbea2;
}
.sys_icon_mem,
.sys_text_mem {
color: $rose;
}
.sys_bat_box {
border-radius: 16px;
margin: 15px 10px 10px 20px;
}
.sys_mem_box {
border-radius: 16px;
margin: 10px 10px 15px 20px;
}
.music_pop {
background-color: #0f0f17;
border-radius: 16px;
}
.music_cover_art {
background-size: cover;
background-position: center;
/* min-height: 100px; */
box-shadow: 5px 5px 5px 5px #06060b;
min-width: 170px;
margin: 20px;
border-radius: 20px;
}
.music {
color: $foam;
font-size: 20px;
font-weight: bold;
margin: 20px 0px 0px -15px;
}
.music_artist {
color: $text;
font-size: 16px;
font-weight: normal;
margin: 0px 0px 0px 0px;
}
.music_btn_prev {
color: $text;
font-size: 32px;
font-weight: normal;
margin: 0px 0px 0px 0px;
}
.music_btn_play {
color: $foam;
font-size: 48px;
font-weight: normal;
margin: 0px 0px 0px 0px;
}
.music_btn_next {
color: $text;
font-size: 32px;
font-weight: normal;
margin: 0px 0px 0px 0px;
}
.music_bar scale trough highlight {
all: unset;
background-image: linear-gradient(
to right,
$foam 30%,
#67a2b4 50%,
$pine 100% * 50
);
border-radius: 24px;
}
.music_bar scale trough {
all: unset;
background-color: #232232;
box-shadow: 0 6px 5px 2px #06060b;
border-radius: 24px;
/* min-height: 13px; */
min-width: 190px;
margin: -10px 10px 20px 0px;
}
.audio-box {
background-color: #0f0f17;
border-radius: 16px;
}
.speaker_icon {
background-size: cover;
background-image: url("images/speaker.png");
background-position: center;
/* min-height: 70px; */
min-width: 75px;
margin: 10px 20px 5px 20px;
border-radius: 12px;
}
.speaker_text {
color: $foam;
font-size: 26px;
font-weight: bold;
margin: 20px 0px 0px 0px;
}
.speaker_bar scale trough highlight {
all: unset;
background-image: linear-gradient(
to right,
$foam 30%,
#67a2b4 50%,
$pine 100% * 50
);
border-radius: 24px;
}
.speaker_bar scale trough {
all: unset;
background-color: #232232;
box-shadow: 0 6px 5px 2px #06060b;
border-radius: 24px;
/* min-height: 13px; */
min-width: 120px;
margin: 0px 0px 5px 0px;
}
.mic_icon {
background-size: cover;
background-image: url("images/mic.png");
background-position: center;
/* min-height: 70px; */
min-width: 75px;
margin: 5px 20px 20px 20px;
border-radius: 12px;
}
.mic_text {
color: $foam;
font-size: 26px;
font-weight: bold;
margin: 0px 0px 0px 0px;
}
.mic_bar scale trough highlight {
all: unset;
background-image: linear-gradient(
to right,
$foam 30%,
#67a2b4 50%,
$pine 100% * 50
);
border-radius: 24px;
}
.mic_bar scale trough {
all: unset;
box-shadow: 0 6px 5px 2px #06060b;
background-color: #232232;
border-radius: 24px;
/* min-height: 13px; */
min-width: 120px;
margin: 0px 0px 20px 0px;
}

View File

@@ -1,192 +1,233 @@
(defwidget bar []
(centerbox :orientation "h"
(workspaces)
(window)
(sidestuff)))
(defwidget sidestuff []
(box
:class "sidestuff"
:orientation "h"
:space-evenly false
:halign "end"
:spacing 10
(music)
(metric
:label ""
:value volume
:onchange "pulsemixer --set-volume {}" )
;; (metric_extended
;; :label ""
;; :value brightness
;; :onchange "doas brightnessctl set {}" )
(cpu)
(github)
;; (network)
(battery)
time
date
))
;; Variables
(defpoll clock_hour :interval "5m" "date +%H")
(defpoll clock_minute :interval "2s" "date +%M")
(defpoll clock_second :interval "1s" "date +%S")
(defpoll clock_date :interval "10h" "date +%d.%m.%Y")
(defpoll clock_day :interval "10h" "date +%A")
(defpoll volume_percent :interval "3s" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
(defpoll mic_percent :interval "3s" "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
(defpoll brightness_percent :interval "5s" "brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'")
(defpoll battery :interval "15s" "./scripts/battery --bat")
(defpoll battery_status :interval "1m" "./scripts/battery --bat-st")
(defpoll memory :interval "15s" "scripts/memory")
(defpoll memory_used_mb :interval "2m" "scripts/mem-ad used")
(defpoll memory_total_mb :interval "2m" "scripts/mem-ad total")
(defpoll memory_free_mb :interval "2m" "scripts/mem-ad free")
(defvar vol_reveal false)
(defvar br_reveal false)
(defvar music_reveal false)
(defvar wifi_rev false)
(defvar time_rev false)
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "1" "bash ~/.config/eww/scripts/get-active-workspace")
(deflisten window :initial "..." "bash ~/.config/eww/scripts/get-window-title")
(defvar eww "eww")
(defpoll COL_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --COL")
(defpoll ESSID_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --ESSID")
(defpoll WLAN_ICON :interval "1m" "~/.config/eww/bar/scripts/wifi --ICON")
(defpoll song :interval "2s" "~/.config/eww/bar/scripts/music_info --song")
(defpoll song_artist :interval "2s" "~/.config/eww/bar/scripts/music_info --artist")
(defpoll current_status :interval "1s" "~/.config/eww/bar/scripts/music_info --time")
(defpoll song_status :interval "2s" "~/.config/eww/bar/scripts/music_info --status")
(defpoll cover_art :interval "2s" "~/.config/eww/bar/scripts/music_info --cover")
(defpoll calendar_day :interval "20h" "date '+%d'")
(defpoll calendar_year :interval "20h" "date '+%Y'")
;; widgets
(defwidget wifi []
(eventbox :onhover "${eww} update wifi_rev=true"
:onhoverlost "${eww} update wifi_rev=false"
(box :vexpand "false" :hexpand "false" :space-evenly "false"
(button
:class "module-wif"
:onclick "networkmanager_dmenu"
:wrap "false"
:limit-width 12
:style "color: ${COL_WLAN};" WLAN_ICON)
(revealer :transition "slideright"
:reveal wifi_rev
:duration "350ms"
(label
:class "module_essid"
:text ESSID_WLAN
:orientation "h"
)))))
(defwidget workspaces []
(eventbox :onscroll "bash ~/.config/eww/scripts/change-active-workspace {} ${current_workspace}" :class "workspaces"
(box :space-evenly true :halign "start" :spacing 5
(label :text "${workspaces}${current_workspace}" :visible false)
(for workspace in workspaces
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}"
(box :class "workspace-entry ${workspace.window > 0 ? "current" : ""}"
(label :text "${workspace.id}" :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""}" )))))))
;; (box :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""}"
;; (label :text "${workspace.id}")))))))
(eventbox :onscroll "bash ~/.config/eww/scripts/change-active-workspace {} ${current_workspace}" :class "workspaces"
(box :space-evenly true
:halign "start"
:space-evenly true
:spacing 5
(label
:text "${workspaces}${current_workspace}"
:visible false)
(for workspace in workspaces
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}"
(box :class "workspace-entry ${workspace.windows > 0 ? "occupied" : "empty"}"
(label :text "${workspace.id}" :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""}" )
)
)
)
)
)
)
(deflisten window :initial "..." "bash ~/.config/eww/scripts/get-window-title")
(defwidget window []
(box :class "window"
(label :text "${window}")))
(defwidget bat []
(box :class "bat_module" :vexpand "false" :hexpand "false"
(circular-progress :value battery
:class "batbar"
:thickness 4
(button
:class "iconbat iconbat__${battery_status}"
:limit-width 2
:tooltip "battery on ${battery}%"
:show_truncated false
:onclick "$HOME/.config/eww/bar/scripts/pop system"
:wrap false
"${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}"
))))
(defwidget mem []
(box :class "mem_module" :vexpand "false" :hexpand "false"
(circular-progress :value memory
:class "membar"
:thickness 4
(button
:class "iconmem"
:limit-width 2
:tooltip "using ${memory}% ram"
:onclick "$HOME/.config/eww/bar/scripts/pop system"
:show_truncated false
:wrap false
""))))
(defwidget sep []
(box :class "module-2" :vexpand "false" :hexpand "false"
(label :class "separ" :text "|")))
(defwidget clock_module []
(eventbox :onhover "${eww} update time_rev=true"
:onhoverlost "${eww} update time_rev=false"
(box :class "module" :space-evenly "false" :orientation "h" :spacing "3"
(label :text "${clock_hour}:${clock_minute}:${clock_second}" :class "clock_time")
(revealer :transition "slideleft"
:reveal time_rev
:duration "350ms"
(button :class "clock_date"
:onclick "$HOME/.config/eww/bar/scripts/pop calendar" "${clock_date}, ${clock_day}"
)
))))
(defwidget volume []
(eventbox :onhover "${eww} update vol_reveal=true"
:onhoverlost "${eww} update vol_reveal=false"
(box :class "module-2" :space-evenly "false" :orientation "h" :spacing "3"
(button :onclick "scripts/pop audio" :class "volume_icon" "🔈")
(revealer :transition "slideleft"
:reveal vol_reveal
:duration "350ms"
(scale :class "volbar"
:value volume_percent
:orientation "h"
:tooltip "${volume_percent}%"
:max 100
:min 0
:onchange "amixer -D pulse sset Master {}%" )))))
(defwidget bright []
(eventbox :onhover "${eww} update br_reveal=true" :onhoverlost "${eww} update br_reveal=false"
(box :class "module-2" :space-evenly "false" :orientation "h" :spacing "3"
(label :text "☼" :class "bright_icon" :tooltip "brightness")
(revealer :transition "slideleft"
:reveal br_reveal
:duration "350ms"
(scale :class "brightbar"
:value brightness_percent
:orientation "h"
:tooltip "${brightness_percent}%"
:max 100
:min 0
:onchange "brightnessctl set {}%" )))))
;; Music
(defwidget music []
(box :class "music ${music_status == "Playing" ? "playing" : "paused"}"
:orientation "h"
(eventbox :onhover "${eww} update music_reveal=true"
:onhoverlost "${eww} update music_reveal=false"
(box :class "module-2" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
(box :class "song_cover_art" :vexpand "false" :hexpand "false" :style "background-image: url('${cover_art}');")
(button :class "song" :wrap "true" :onclick "~/.config/eww/bar/scripts/pop music" song)
(revealer :transition "slideright"
:reveal music_reveal
:duration "350ms"
(box :vexpand "false" :hexpand "false" :oreintation "h"
(button :class "song_btn_prev" :onclick "~/.config/eww/bar/scripts/music_info --prev" "")
(button :class "song_btn_play" :onclick "~/.config/eww/bar/scripts/music_info --toggle" song_status)
(button :class "song_btn_next" :onclick "~/.config/eww/bar/scripts/music_info --next" ""))))))
(defwidget left []
(box :orientation "h"
:space-evenly false
:halign "end"
:class "left_modules"
(music)
(bright)
(volume)
(wifi)
(sep)
(bat)
(mem)
(sep)
(clock_module)))
(defwidget right []
(box :orientation "h"
:space-evenly false
:halign "start"
:class "right_modules"
(workspaces)))
(defwidget center []
(box :orientation "h"
:space-evenly false
:halign "center"
(button :onclick "sp play" {music != "" ? "${music}" : ""})))
:class "center_modules"
(window)))
(defwidget icon-module [icon ?class ?visible]
(box :class "${class} icon-module"
(defwidget bar_1 []
(box :class "bar"
:orientation "h"
:halign "end"
:space-evenly false
:visible {visible ?: true} ; because the argument is optional
(label :class "icon-module__icon" :text "${icon}")
(children)))
(defwidget metric [label value onchange]
(box :orientation "h"
:class "metric"
:space-evenly false
(box :class "label" label)
(scale :min 0
:max 101
:active {onchange != ""}
:value value
:onchange onchange)))
(defpoll music
:interval "1s"
"scripts/get-music")
(defpoll music_status
:interval "1s"
"sp status")
(defpoll volume
:interval "1s"
"scripts/getvol")
(defwidget metric_extended [label value onchange]
(box
:orientation "h"
:class "metric"
:space-evenly false
(box
:class "label" label)
(scale
:min 0
:max 256
:active {onchange != ""}
:value value
:onchang
:onchange onchange)))
(defpoll brightness
:interval "1s"
:class "brightness"
"brightnessctl get")
;; "format-icons": ["", "", "", "", "", "", "", "", ""],
(defwidget battery []
(icon-module
:icon "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
EWW_BATTERY.BAT0.capacity > 90 ? "" :
EWW_BATTERY.BAT0.capacity > 70 ? "" :
EWW_BATTERY.BAT0.capacity > 40 ? "" :
EWW_BATTERY.BAT0.capacity > 20 ? "" :
""}"
:class "battery ${EWW_BATTERY.BAT0.capacity > 30 ? "good" : EWW_BATTERY.BAT0.capacity > 10 ? "warning" : "critical"} ${EWW_BATTERY.BAT0.status}"
(label
:text "${EWW_BATTERY.BAT0.capacity}%")))
(defpoll time :interval "1s"
"date '+%H:%M:%S'")
(defpoll date :interval "10s"
"date '+%d.%m.%Y'")
(defpoll github_poll
:initial ""
:interval "1m" "sh ~/.config/eww/scripts/github")
(defwidget github []
(button
:onclick "xdg-open https://github.com/notifications"
(box
(icon-module
:class "github"
:icon ""
:visible {github_poll != ""})
github_poll)))
(defwidget cpu []
(icon-module
:icon ""
:class "cpu ${EWW_CPU.avg > 90 ? "danger" : EWW_CPU.avg > 60 ? "warning" : ""}"
(label
:text "${round(EWW_CPU.avg, 0)}%")))
;; (defpoll net_poll
;; :initial "..."
;; :interval "10s" "sh ~/.config/eww/scripts/get-network")
(defwidget network []
(icon-module
:icon ""
:class "network ${EWW_NET.wlan0.NET_DOWN == 0 && EWW_NET.wlan0.NET_UP == 0 ? "disconnected" : ""}"
(label
:text "${EWW_NET.wlan0.NET_DOWN == 0 && EWW_NET.wlan0.NET_UP == 0 ? "Disconnected ⚠" : ""}")))
;; "network": {
;; "format-wifi": "{essid} ({signalStrength}%) ",
;; "format-ethernet": "{ipaddr}/{cidr} ",
;; "tooltip-format": "{ifname} via {gwaddr} ",
;; "format-linked": "{ifname} (No IP) ",
;; "format-disconnected": "",
;; "format-alt": "{ifname}: {ipaddr}/{cidr}"
;; },
(right)
(center)
(left)
))
(defwindow bar
:monitor 0
:exclusive true
:geometry (geometry
:x "0%"
:y "0%"
:width "133.333%"
:height "10px"
:anchor "top center")
:reserve (struts :side "top" :distance "4%")
(bar))
(defwindow bar-1
:monitor 1
:exclusive true
:geometry (geometry
:x "0%"
:y "0%"
@@ -194,4 +235,164 @@
:height "10px"
:anchor "top center")
:reserve (struts :side "top" :distance "4%")
(bar))
:stacking "fg"
:windowtype "dock"
(bar_1))
(defwidget system []
(box :class "sys_win" :orientation "v" :space-evenly "false" :hexpand "false" :vexpand "false" :spacing 0
(box :class "sys_bat_box" :orientation "h" :space-evenly "false"
(circular-progress :value battery
:class "sys_bat"
:thickness 9
(label :text ""
:class "sys_icon_bat"
:limit-width 2
:show_truncated false
:wrap false))
(box :orientation "v" :space-evenly "false" :spacing 0 :hexpand "false" :vexpand "false"
(label :text "battery"
:halign "start"
:class "sys_text_bat"
:limit-width 9
:show_truncated false
:wrap false)
(label :text "${battery}%"
:halign "start"
:class "sys_text_bat_sub"
:limit-width 22
:show_truncated false
:wrap false)
(label :text "${battery_status}"
:halign "start"
:class "sys_text_bat_sub"
:limit-width 22
:show_truncated false
:wrap false)))
(label :text "" :class "sys_sep" :halign "center")
(box :class "sys_mem_box" :orientation "h" :space-evenly "false" :halign "start"
(circular-progress :value memory
:class "sys_mem"
:thickness 9
(label :text ""
:class "sys_icon_mem"
:limit-width 2
:show_truncated false
:wrap false
:angle 0.0))
(box :orientation "v" :space-evenly "false" :spacing 0 :hexpand "false" :vexpand "false"
(label :text "memory"
:halign "start"
:class "sys_text_mem"
:limit-width 9
:show_truncated false
:wrap false)
(label :text "${memory_used_mb} | ${memory_total_mb}mb "
:halign "start"
:class "sys_text_mem_sub"
:limit-width 22
:show_truncated false
:wrap false)
(label :text "${memory_free_mb}mb free"
:halign "start"
:class "sys_text_mem_sub"
:limit-width 22
:show_truncated false
:wrap false)))))
(defwidget cal []
(box :class "cal" :orientation "v"
(box :class "cal-in"
(calendar :class "cal"
:day calendar_day
:year calendar_year))))
(defwindow calendar
:monitor 0
:geometry (geometry :x "-20px"
:y "7%"
:anchor "top right"
:width "270px"
:height "60px")
(cal))
(defwidget audio []
(box :class "audio-box" :orientation "v" :space-evenly "false" :vexpand "false" :hexpand "false"
(box :halign "v" :space-evenly "false" :hexpand "false" :vexpand "false"
(box :class "speaker_icon" :orientation "v")
(box :orientation "v" :halign "center" :vexpand "false" :hexpand "false"
(label :class "speaker_text" :text "speaker" :valign "center" :halign "left" )
(box :class "speaker_bar" :halign "center" :vexpand "false" :hexpand "false"
(scale :value volume_percent
:space-evenly "false"
:orientation "h"
:onchange "amixer -D pulse sset Master {}%"
:tooltip "volume on ${volume_percent}%"
:max 100
:min 0))))
(label :text "" :class "audio_sep" :halign "center")
(box :halign "v" :space-evenly "false" :hexpand "false" :vexpand "false"
(box :class "mic_icon" :orientation "v")
(box :orientation "v" :halign "center" :vexpand "false" :hexpand "false"
(label :class "mic_text" :text "mic" :valign "center" :halign "left" )
(box :class "mic_bar" :halign "center" :vexpand "false" :hexpand "false"
(scale :value mic_percent
:space-evenly "false"
:orientation "h"
:tooltip "mic on ${mic_percent}%"
:onchange "amixer -D pulse sset Capture {}%"
:max 100
:min 0))))))
(defwindow audio_ctl
:monitor 0
:geometry (geometry :x "-20px"
:y "7%"
:anchor "top right"
:width "280px"
:height "60px")
(audio))
(defwindow system
:monitor 0
:geometry (geometry
:x "-20px"
:y "5%"
:anchor "top right"
:width "290px"
:height "120px")
(system))
;; Music
(defwidget music_pop []
(box :class "music_pop" :orientation "h" :space-evenly "false" :vexpand "false" :hexpand "false"
(box :class "music_cover_art" :vexpand "false" :hexpand "false" :style "background-image: url('${cover_art}');")
(box :orientation "v" :spacing 20 :space-evenly "false" :vexpand "false" :hexpand "false"
(label :halign "center" :class "music" :wrap "true" :limit-width 13 :text song)
(label :halign "center" :class "music_artist" :wrap "true" :limit-width 15 :text song_artist)
(box :orientation "h" :spacing 15 :halign "center" :space-evenly "false" :vexpand "false" :hexpand "false"
(button :class "music_btn_prev" :onclick "~/.config/eww/bar/scripts/music_info --prev" "")
(button :class "music_btn_play" :onclick "~/.config/eww/bar/scripts/music_info --toggle" song_status)
(button :class "music_btn_next" :onclick "~/.config/eww/bar/scripts/music_info --next" ""))
(box :class "music_bar" :halign "center" :vexpand "false" :hexpand "false" :space-evenly "false"
(scale :onscroll "mpc -q seek {}" :min 0 :active "true" :max 100 :value current_status)))))
;; music
(defwindow music_win
;; :monitor 0
:stacking "fg"
:focusable "false"
:screen 1
:geometry (geometry :x "0" :y "7%" :width 428 :height 104 :anchor "top center")
(music_pop))
(defwidget window []
(box :class "window"
(label :text "${window}")))

BIN
config/eww/images/mic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
config/eww/images/music.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

17
config/eww/scripts/battery Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
battery() {
BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
cat /sys/class/power_supply/${BAT}/capacity
}
battery_stat() {
BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
cat /sys/class/power_supply/${BAT}/status
}
if [[ "$1" == "--bat" ]]; then
battery
elif [[ "$1" == "--bat-st" ]]; then
battery_stat
fi

0
config/eww/scripts/change-active-workspace Normal file → Executable file
View File

0
config/eww/scripts/get-active-workspace Normal file → Executable file
View File

View File

@@ -1,5 +0,0 @@
#!/bin/bash
title="$(sp metadata | rg title| cut -d'|' -f2)"
artist="$(sp metadata | rg artist | cut -d'|' -f2)"
echo "$artist" - "$title"

View File

@@ -1,5 +0,0 @@
#!/bin/bash
line=$(nmcli connection show | rg wlan0)
echo $line

0
config/eww/scripts/get-window-title Normal file → Executable file
View File

0
config/eww/scripts/get-workspaces Normal file → Executable file
View File

View File

@@ -1,12 +0,0 @@
#!/bin/sh
if command -v pamixer &>/dev/null; then
if [ true == $(pamixer --get-mute) ]; then
echo 0
exit
else
pamixer --get-volume
fi
else
amixer -D pulse sget Master | awk -F '[^0-9]+' '/Left:/{print $3}'
fi

View File

@@ -1,4 +0,0 @@
#!/bin/sh
notifications="$(gh api notifications 2> /dev/null | jq '. | length')"
[ -z notifications ] && echo "" || echo "$notifications"

15
config/eww/scripts/mem-ad Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/sh
total="$(free -m | grep Mem: | awk '{ print $2 }')"
used="$(free -m | grep Mem: | awk '{ print $3 }')"
free=$(expr $total - $used)
if [ "$1" = "total" ]; then
echo $total
elif [ "$1" = "used" ]; then
echo $used
elif [ "$1" = "free" ]; then
echo $free
fi

3
config/eww/scripts/memory Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')

98
config/eww/scripts/music_info Executable file
View File

@@ -0,0 +1,98 @@
#!/bin/bash
# scripts by adi1090x
## Get data
STATUS="$(mpc status)"
COVER="/tmp/.music_cover.png"
MUSIC_DIR="$HOME/Music"
## Get status
get_status() {
if [[ $STATUS == *"[playing]"* ]]; then
echo ""
else
echo "奈"
fi
}
## Get song
get_song() {
song=`sp metadata | rg title | cut -d'|' -f2`
if [[ -z "$song" ]]; then
echo "Offline"
else
echo "$song"
fi
}
## Get artist
get_artist() {
artist=`mpc -f %artist% current`
if [[ -z "$artist" ]]; then
echo ""
else
echo "$artist"
fi
}
## Get time
get_time() {
time=`mpc status | grep "%)" | awk '{print $4}' | tr -d '(%)'`
if [[ -z "$time" ]]; then
echo "0"
else
echo "$time"
fi
}
get_ctime() {
ctime=`mpc status | grep "#" | awk '{print $3}' | sed 's|/.*||g'`
if [[ -z "$ctime" ]]; then
echo "0:00"
else
echo "$ctime"
fi
}
get_ttime() {
ttime=`mpc -f %time% current`
if [[ -z "$ttime" ]]; then
echo "0:00"
else
echo "$ttime"
fi
}
## Get cover
get_cover() {
ffmpeg -i "${MUSIC_DIR}/$(mpc current -f %file%)" "${COVER}" -y &> /dev/null
STATUS=$?
# Check if the file has a embbeded album art
if [ "$STATUS" -eq 0 ];then
echo "$COVER"
else
echo "images/music.png"
fi
}
## Execute accordingly
if [[ "$1" == "--song" ]]; then
get_song
elif [[ "$1" == "--artist" ]]; then
get_artist
elif [[ "$1" == "--status" ]]; then
get_status
elif [[ "$1" == "--time" ]]; then
get_time
elif [[ "$1" == "--ctime" ]]; then
get_ctime
elif [[ "$1" == "--ttime" ]]; then
get_ttime
elif [[ "$1" == "--cover" ]]; then
get_cover
elif [[ "$1" == "--toggle" ]]; then
mpc -q toggle
elif [[ "$1" == "--next" ]]; then
{ mpc -q next; get_cover; }
elif [[ "$1" == "--prev" ]]; then
{ mpc -q prev; get_cover; }
fi

View File

@@ -0,0 +1,98 @@
#!/bin/bash
# scripts by adi1090x
## Get data
STATUS="$(mpc status)"
COVER="/tmp/.music_cover.png"
MUSIC_DIR="$HOME/Music"
## Get status
get_status() {
if [[ $STATUS == *"[playing]"* ]]; then
echo ""
else
echo "奈"
fi
}
## Get song
get_song() {
song=`mpc -f %title% current`
if [[ -z "$song" ]]; then
echo "Offline"
else
echo "$song"
fi
}
## Get artist
get_artist() {
artist=`mpc -f %artist% current`
if [[ -z "$artist" ]]; then
echo ""
else
echo "$artist"
fi
}
## Get time
get_time() {
time=`mpc status | grep "%)" | awk '{print $4}' | tr -d '(%)'`
if [[ -z "$time" ]]; then
echo "0"
else
echo "$time"
fi
}
get_ctime() {
ctime=`mpc status | grep "#" | awk '{print $3}' | sed 's|/.*||g'`
if [[ -z "$ctime" ]]; then
echo "0:00"
else
echo "$ctime"
fi
}
get_ttime() {
ttime=`mpc -f %time% current`
if [[ -z "$ttime" ]]; then
echo "0:00"
else
echo "$ttime"
fi
}
## Get cover
get_cover() {
ffmpeg -i "${MUSIC_DIR}/$(mpc current -f %file%)" "${COVER}" -y &> /dev/null
STATUS=$?
# Check if the file has a embbeded album art
if [ "$STATUS" -eq 0 ];then
echo "$COVER"
else
echo "images/music.png"
fi
}
## Execute accordingly
if [[ "$1" == "--song" ]]; then
get_song
elif [[ "$1" == "--artist" ]]; then
get_artist
elif [[ "$1" == "--status" ]]; then
get_status
elif [[ "$1" == "--time" ]]; then
get_time
elif [[ "$1" == "--ctime" ]]; then
get_ctime
elif [[ "$1" == "--ttime" ]]; then
get_ttime
elif [[ "$1" == "--cover" ]]; then
get_cover
elif [[ "$1" == "--toggle" ]]; then
mpc -q toggle
elif [[ "$1" == "--next" ]]; then
{ mpc -q next; get_cover; }
elif [[ "$1" == "--prev" ]]; then
{ mpc -q prev; get_cover; }
fi

88
config/eww/scripts/pop Executable file
View File

@@ -0,0 +1,88 @@
#!/bin/bash
calendar() {
LOCK_FILE="$HOME/.cache/eww-calendar.lock"
run() {
eww open calendar
}
# Open widgets
if [[ ! -f "$LOCK_FILE" ]]; then
eww close system music_win audio_ctl
touch "$LOCK_FILE"
run && echo "ok good!"
else
eww close calendar
rm "$LOCK_FILE" && echo "closed"
fi
}
system() {
LOCK_FILE_MEM="$HOME/.cache/eww-system.lock"
run() {
eww open system
}
# Open widgets
if [[ ! -f "$LOCK_FILE_MEM" ]]; then
eww close calendar music_win audio_ctl
touch "$LOCK_FILE_MEM"
run && echo "ok good!"
else
eww close system
rm "$LOCK_FILE_MEM" && echo "closed"
fi
}
music() {
LOCK_FILE_SONG="$HOME/.cache/eww-song.lock"
run() {
eww open music_win
}
# Open widgets
if [[ ! -f "$LOCK_FILE_SONG" ]]; then
eww close system calendar
touch "$LOCK_FILE_SONG"
run && echo "ok good!"
else
eww close music_win
rm "$LOCK_FILE_SONG" && echo "closed"
fi
}
audio() {
LOCK_FILE_AUDIO="$HOME/.cache/eww-audio.lock"
run() {
eww open audio_ctl
}
# Open widgets
if [[ ! -f "$LOCK_FILE_AUDIO" ]]; then
eww close system calendar music
touch "$LOCK_FILE_AUDIO"
run && echo "ok good!"
else
eww close audio_ctl
rm "$LOCK_FILE_AUDIO" && echo "closed"
fi
}
if [ "$1" = "calendar" ]; then
calendar
elif [ "$1" = "system" ]; then
system
elif [ "$1" = "music" ]; then
music
elif [ "$1" = "audio" ]; then
audio
fi

23
config/eww/scripts/wifi Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/bash
status=$(nmcli g | \grep -oE "disconnected")
essid=$(nmcli c | \grep wlan0 | awk '{print ($1)}')
if [ $status ] ; then
icon=""
text=""
col="#575268"
else
icon=""
text="${essid}"
col="#a1bdce"
fi
if [[ "$1" == "--COL" ]]; then
echo $col
elif [[ "$1" == "--ESSID" ]]; then
echo $text
elif [[ "$1" == "--ICON" ]]; then
echo $icon
fi

11
config/eww/scripts/workspace Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
workspaces (){
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries')
seq 1 10 | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})'
}
workspaces
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
workspaces
done