Fix hyprland

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

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

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

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

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

View File

@ -442,7 +442,7 @@ local globalkeys = gears.table.join(
-- awful.key({ modkey, "Control" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
awful.key({ modkey }, "b", function()
awful.spawn("floorp")
awful.spawn("zen-browser")
end, { description = "open browser", group = "launcher" }),
awful.key({ modkey }, "n", function()
awful.spawn("alacritty -e yazi")
@ -594,6 +594,10 @@ local clientbuttons = gears.table.join(
c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.move(c)
end),
awful.button({ modkey, "shift" }, 1, function(c)
c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.resize(c)
end),
awful.button({ modkey }, 3, function(c)
c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.resize(c)

View File

@ -57,7 +57,7 @@ update_ms = 500
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "memory"
proc_sorting = "cpu direct"
#* Reverse sorting order, True or False.
proc_reversed = False

129
config/eww.bak/eww.scss Normal file
View File

@ -0,0 +1,129 @@
$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
font-family: "JetBrainsMono NF";
}
//Global Styles
.bar,
.bar-1 {
background-color: $bg;
color: $text;
font-weight: bold;
}
// Styles on classes (see eww.yuck for more information)
.sidestuff slider {
all: unset;
}
.metric scale trough highlight {
all: unset;
background-color: $love;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: $highlight_med;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 1px;
margin-right: 2px;
}
.metric scale trough highlight {
all: unset;
// background-color: $subtle;
background-color: $foam;
color: $base;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: $highlight_med;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 1px;
margin-right: 2px;
}
.label-ram {
font-size: large;
}
.music {
&.playing {
color: $pine;
}
&.paused {
color: $muted;
}
}
.workspaces {
.current {
color: $pine;
}
}
.icon-module {
& > &__icon {
margin-right: 5px;
}
}
.cpu {
&.warning {
color: $gold;
}
&.danger {
color: $love;
}
}
.battery {
&.warning {
color: $gold;
}
&.critical {
color: $love;
}
&.Charging {
color: $pine;
}
}
.network {
&.disconnected {
color: $love;
}
}
.workspaces button:hover {
background: $highlight_med;
}

244
config/eww.bak/eww.yuck Normal file
View File

@ -0,0 +1,244 @@
;; Variables
(defpoll clock_time :interval "5m" "date +\%I")
(defpoll clock_minute :interval "5s" "date +\%M")
(defpoll clock_date :interval "10h" "date '+%d/%m'")
(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 | 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 workspace "scripts/workspace")
(defvar eww "$HOME/.local/bin/eww/eww -c $HOME/.config/eww/bar")
(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)
(bright)
time
date
))
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "1" "bash ~/.config/eww/scripts/get-active-workspace")
(defwidget workspaces []
(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 music []
(box :class "music ${music_status == "Playing" ? "playing" : "paused"}"
:orientation "h"
:space-evenly false
:halign "center"
(button :onclick "sp play" {music != "" ? "${music}" : ""})))
(defwidget icon-module [icon ?class ?visible]
(box :class "${class} icon-module"
: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}"
;; },
(defwindow bar
:monitor 0
:exclusive true
:geometry (geometry
:x "0%"
:y "0%"
:width "100%"
: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%"
:width "100%"
:height "10px"
:anchor "top center")
:reserve (struts :side "top" :distance "4%")
(bar))
(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 "${brightness_percent < 30 ? "☼": "☀"}"
: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 {}%" )))))

View File

@ -0,0 +1,21 @@
#!/usr/bin/env bash
function clamp {
min=$1
max=$2
val=$3
python -c "print(max($min, min($val, $max)))"
}
direction=$1
current=$2
if test "$direction" = "down"
then
target=$(clamp 1 10 $(($current+1)))
echo "jumping to $target"
hyprctl dispatch workspace $target
elif test "$direction" = "up"
then
target=$(clamp 1 10 $(($current-1)))
echo "jumping to $target"
hyprctl dispatch workspace $target
fi

View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'

View File

View File

View File

@ -0,0 +1,3 @@
#!/bin/sh
hyprctl activewindow -j | jq --raw-output .title
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 awk -F '>>|,' '/^activewindow>>/{print $3}'

View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
spaces (){
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)})'
}
spaces
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
spaces
done

View File

View File

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)
(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.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}")))))))
(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 music []
(box :class "music ${music_status == "Playing" ? "playing" : "paused"}"
:orientation "h"
:space-evenly false
:halign "center"
(button :onclick "sp play" {music != "" ? "${music}" : ""})))
(defwidget icon-module [icon ?class ?visible]
(box :class "${class} icon-module"
: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" ? "" :
(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 ? "" :
""}"
: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'")
(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
""))))
(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 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 {}%" )))))
(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 ⚠" : ""}")))
;; Music
(defwidget music []
(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" ""))))))
;; "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}"
;; },
(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"
:class "center_modules"
(window)))
(defwidget bar_1 []
(box :class "bar"
:orientation "h"
(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

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

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

View File

@ -1,6 +1,6 @@
[General]
contrastOpacity=188
drawColor=#ffffff
drawColor=#ff0000
drawThickness=3
filenamePattern=%Y-%m-%d_%H-%M-%S
saveAfterCopy=true

View File

@ -15,11 +15,8 @@
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# monitor=,preferred,auto,auto
monitor=,prefered,auto,1.5
monitor=DP-1,disable
#monitor=HDMI-A-1,highres,auto-up,1,mirror,eDP-1
monitor=eDP-1,prefered,auto,1.5
monitor=DP-1,prefered,auto,1
###################
### MY PROGRAMS ###
@ -31,6 +28,7 @@ monitor=DP-1,disable
$terminal = alacritty
$fileManager = $terminal -e yazi
$menu = wofi --show drun -ib
$browser = zen-browser
#################
@ -41,10 +39,10 @@ $menu = wofi --show drun -ib
# Or execute your favorite apps at launch like this:
exec-once=pipewire & pipewire-pulse & wireplumber & eww daemon & eww open bar & dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY XAUTHORITY
exec-once=nextcloud & /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & xrdb "$XDG_CONFIG_HOME/x11/xresources" & syncthing & transmission-daemon & dunst & hyprpaper
exec-once=[workspace 1 silent] floorp
exec-once=[workspace 8 silent] discord & kotatogram-desktop
exec-once=[workspace 9 silent] spotify
exec-once=nextcloud & /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & xrdb "$XDG_CONFIG_HOME/x11/xresources" & transmission-daemon & dunst & hyprpaper
exec-once=[workspace 1 silent] $browser
exec-once=[workspace 8 silent] vesktop & kotatogram-desktop
exec-once=[workspace 9 silent] spotify-launcher
# Source a file (multi-file configs)
source=~/.config/hypr/rose-pine.conf
@ -68,7 +66,7 @@ env = HYPRCURSOR_SIZE,24
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 20
gaps_out = 10
border_size = 2
@ -88,6 +86,7 @@ general {
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 5
# rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
@ -222,6 +221,7 @@ bind = $mainMod, P, exec, $menu
bind = $mainMod, F, fullscreen
bind = $mainMod, M, bringactivetotop
bind = $mainMod, A, pin
bind = $mainMod, B, exec, $browser
#bind = $mainMod, O, split-changemonitor, +1
# bind = $mainMod, P, pseudo, # dwindle
# bind = $mainMod, J, togglesplit, # dwindle
@ -329,6 +329,11 @@ bind = $mainMod ALT, P, exec, hyprpicker -a # colorpicker
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
# windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
# windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
@ -340,11 +345,13 @@ windowrulev2 = opacity 0.95, class:thunderbird
windowrulev2 = workspace 8, class:discord
windowrulev2 = opacity 0.95, class:discord
windowrulev2 = workspace 8, class:vesktop
windowrulev2 = opacity 0.95, class:vesktop
windowrulev2 = workspace 8, class:Ripcord
windowrulev2 = workspace 8, class:TelegramDesktop
windowrulev2 = opacity 0.95, class:TelegramDesktop
windowrulev2 = workspace 8, class:kotatogramdesktop
windowrulev2 = opacity 0.95, class:kotatogramdesktop
windowrulev2 = workspace 8, title:Kotatogram
windowrulev2 = opacity 0.95, title:Kotatogram
windowrulev2 = opacity 0.9, class:teams-for-linux
windowrulev2 = workspace 5, class:Ferdium
windowrulev2 = opacity 0.9, class:Ferdium
@ -367,3 +374,4 @@ windowrulev2 = float, class:galculator
windowrulev2=float,title:^(flameshot)
windowrulev2=move 0 0,title:^(flameshot)
windowrulev2=suppressevent fullscreen,title:^(flameshot)

View File

@ -1,265 +0,0 @@
# This is an example Hyprland config file.
#
# Refer to the wiki for more information.
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=eDP-1,2880x1800@120,auto,1.5
#monitor=,preferred,auto-up,1
monitor=DP-1,disable
#monitor=HDMI-A-1,highres,auto-up,1,mirror,eDP-1
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
env = HYPRLAND_INSTANCE_SIGNATURE,/tmp/hypr
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
exec-once = pipewire & pipewire-pulse & wireplumber & eww daemon & eww open bar & nextcloud & /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & xrdb "$XDG_CONFIG_HOME/x11/xresources" & spotifyd --no-daemon & syncthing & transmission-daemon & dunst & dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY XAUTHORITY & hyprpaper
exec-once=[workspace 1 silent] floorp
exec-once=[workspace 8 silent] discord & kotatogram-desktop
exec-once=[workspace 9 silent] spotify
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
source=~/.config/hypr/rose-pine.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = lv
kb_variant =
kb_model =
kb_options = caps:escape
kb_rules =
numlock_by_default = true
repeat_rate = 50
repeat_delay = 300
follow_mouse = 1
touchpad {
natural_scroll = yes
disable_while_typing = false
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
debug {
disable_logs = false
enable_stdout_logs = true
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = $rose
col.inactive_border = $muted
layout = master
}
plugin {
split-monitor-workspaces {
count = 10
}
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 5
# blur = yes
# blur_size = 4
# blur_passes = 1
# blur_new_optimizations = on
# drop_shadow = yes
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = $highlightMed
}
animations {
enabled = no
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for moreqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ctqt6ct
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_status = master
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = on
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
#device:epic mouse V1 {
#sensitivity = -0.5
#}
# Example windowrule v1
windowrulev2 = fullscreen, class:mpv
windowrulev2 = opacity 0.95, class:thunderbird
windowrulev2 = workspace 8, class:discord
windowrulev2 = opacity 0.95, class:discord
windowrulev2 = workspace 8, class:Ripcord
windowrulev2 = workspace 8, class:TelegramDesktop
windowrulev2 = opacity 0.95, class:TelegramDesktop
windowrulev2 = workspace 8, class:kotatogramdesktop
windowrulev2 = opacity 0.95, class:kotatogramdesktop
windowrulev2 = opacity 0.9, class:teams-for-linux
windowrulev2 = workspace 5, class:Ferdium
windowrulev2 = opacity 0.9, class:Ferdium
windowrulev2 = workspace 9, class:Spotify
windowrulev2 = opacity 0.9, class:Spotify
windowrulev2 = tile, class:Spotify
windowrulev2 = opacity 0.95, class:qbittorrent
windowrulev2 = opacity 0.95, class:lutris
windowrulev2 = opacity 0.95, class:pacfinder
windowrulev2 = opacity 0.9, class:Bitwarden
windowrulev2 = opacity 0.9, class:kdeconnect
# windowrulev2 = workspace 8, class:^()$
# Example windowrule v2
windowrulev2 = move 100%-250 100%-250, class:galculator
windowrulev2 = size 250 250, class:galculator
windowrulev2 = float, class:galculator
windowrulev2=float,title:^(flameshot)
windowrulev2=move 0 0,title:^(flameshot)
windowrulev2=suppressevent fullscreen,title:^(flameshot)
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, B ,exec, floorp
bind = $mainMod, Return, exec, alacritty
bind = $mainMod SHIFT, Q, killactive
# bind = $mainMod SHIFT CTRL, Q, exit
bind = $mainMod, N, exec, alacritty -e lfrun
bind = $mainMod CTRL, SPACE, togglefloating
bind = $mainMod, P, exec, wofi --show drun -ib
bind = $mainMod, F, fullscreen
bind = $mainMod, M, bringactivetotop
bind = $mainMod, A, pin
#bind = $mainMod, O, split-changemonitor, +1
# Resize window
bind = $mainMod, L, splitratio, 0.05
bind = $mainMod, H, splitratio, -0.05
# Move focus with mainMod + arrow keys
bind = $mainMod, K, cyclenext
bind = $mainMod, J, cyclenext, prev
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
#bind = $mainMod, 1, split-workspace, 1
#bind = $mainMod, 2, split-workspace, 2
#bind = $mainMod, 3, split-workspace, 3
#bind = $mainMod, 4, split-workspace, 4
#bind = $mainMod, 5, split-workspace, 5
#bind = $mainMod, 6, split-workspace, 6
#bind = $mainMod, 7, split-workspace, 7
#bind = $mainMod, 8, split-workspace, 8
#bind = $mainMod, 9, split-workspace, 9
#bind = $mainMod, 0, split-workspace, 10
#
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
#bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
#bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
#bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
#bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
#bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
#bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
#bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
#bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
#bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
#bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, right, workspace, e+1
bind = $mainMod, left, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod CTRL, mouse:272, resizewindow
bind = $mainMod SHIFT, J, movewindow, d
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, H, movewindow, l
# bind = $mainMod CTRL, P, exec, wayshot -f "$(HOME)/Pictures/screenshots/$(date + '%s.png')" -s "$(slurp -f '%x %y %w %y')" --stdout | wl-copy
# bind = $mainMod CTRL, P, exec, wayshot -s "$(slurp -f '%x %y %w %y')" --stdout | wl-copy
# bind = $mainMod, , exec, wayshot -f "$(HOME)/Pictures/screenshots/$(date + '%s.png')"
bind = CTRL, PRINT, exec, hyprshot -m region
bind = , PRINT, exec, hyprshot -m output
bind = SHIFT, PRINT, exec, hyprshot -m window
bind = $mainMod ALT, P, exec, hyprpicker -a # colorpicker
# Control keybinds
bindel = , XF86MonBrightnessUp, exec, doas brightnessctl set +2% # increase brightness by 2%
bindel = , XF86MonBrightnessDown, exec, doas brightnessctl set 2%- # decrease brightness by 2%
bindel = , XF86AudioRaiseVolume, exec, pulsemixer --change-volume +2 # increase volume by 2
bindel = , XF86AudioLowerVolume, exec, pulsemixer --change-volume -2 # decrease volume by 2
bindel = , XF86AudioMute, exec, pulsemixer --toggle-mute # mute volume
bindel = , XF86AudioPlay, exec, playerctl -a play-pause # pause/play everything
bindel = $mainMod, Space, exec, hyprlock
bindl = , switch:Lid Switch, exec, hyprlock

0
config/lf/cleaner Normal file → Executable file
View File

0
config/lf/lfrc Normal file → Executable file
View File

0
config/nsxiv/exec/image-info Normal file → Executable file
View File

0
config/nsxiv/exec/key-handler Normal file → Executable file
View File

0
config/nsxiv/exec/nsxiv-url Normal file → Executable file
View File

0
config/nsxiv/exec/thumb-info Normal file → Executable file
View File

0
config/nsxiv/exec/win-title Normal file → Executable file
View File

View File

@ -37,7 +37,7 @@ export WM="awesome"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_RUNTIME_DIR="$HOME/.cache/xdgr"
# export XDG_RUNTIME_DIR="$HOME/.cache/xdgr"
export XDG_STATE_HOME="$HOME/.local/share"
export HYPRSHOT_DIR="$HOME/Pictures/screenshots"

2
config/x11/opt-apps Normal file → Executable file
View File

@ -1,6 +1,6 @@
#!/bin/sh
autostart="picom nextcloud transmission-daemon floorp discord syncthing mullvad-vpn spotify-launcher kotatogram-desktop easyeffects"
autostart="picom nextcloud transmission-daemon zen-browser vesktop syncthing mullvad-vpn spotify-launcher kotatogram-desktop easyeffects"
for program in $autostart; do
pidof -sx "$program" || "$program" &

View File

@ -145,6 +145,7 @@ eval "$(starship init zsh)"
eval "$(fzf --zsh)"
eval "$(uv generate-shell-completion zsh)"
eval "$(uvx --generate-shell-completion zsh)"
eval "$(zoxide init zsh)"
[[ -r ~/.local/share/zsh/plugins/znap/znap.zsh ]] ||
git clone --depth 1 -- \

0
dotter Normal file → Executable file
View File

0
dotter.arm Normal file → Executable file
View File

0
dotter.exe Normal file → Executable file
View File