diff --git a/config/HybridBar/scripts/change-active-workspace b/config/HybridBar/scripts/change-active-workspace old mode 100644 new mode 100755 diff --git a/config/HybridBar/scripts/get-active-workspace b/config/HybridBar/scripts/get-active-workspace old mode 100644 new mode 100755 diff --git a/config/HybridBar/scripts/get-window-title b/config/HybridBar/scripts/get-window-title old mode 100644 new mode 100755 diff --git a/config/HybridBar/scripts/get-workspaces b/config/HybridBar/scripts/get-workspaces old mode 100644 new mode 100755 diff --git a/config/awesome/rc-laptop.lua b/config/awesome/rc-laptop.lua index 334fefac..813d8bbf 100644 --- a/config/awesome/rc-laptop.lua +++ b/config/awesome/rc-laptop.lua @@ -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) diff --git a/config/btop/btop.conf b/config/btop/btop.conf index 185efa15..6a728033 100644 --- a/config/btop/btop.conf +++ b/config/btop/btop.conf @@ -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 diff --git a/config/eww.bak/eww.scss b/config/eww.bak/eww.scss new file mode 100644 index 00000000..eea4cef3 --- /dev/null +++ b/config/eww.bak/eww.scss @@ -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; +} diff --git a/config/eww.bak/eww.yuck b/config/eww.bak/eww.yuck new file mode 100644 index 00000000..55001ef3 --- /dev/null +++ b/config/eww.bak/eww.yuck @@ -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 {}%" ))))) diff --git a/config/eww.bak/scripts/change-active-workspace b/config/eww.bak/scripts/change-active-workspace new file mode 100755 index 00000000..3a43646e --- /dev/null +++ b/config/eww.bak/scripts/change-active-workspace @@ -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 diff --git a/config/eww.bak/scripts/get-active-workspace b/config/eww.bak/scripts/get-active-workspace new file mode 100755 index 00000000..c80f7f00 --- /dev/null +++ b/config/eww.bak/scripts/get-active-workspace @@ -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}' diff --git a/config/eww/scripts/get-music b/config/eww.bak/scripts/get-music old mode 100644 new mode 100755 similarity index 100% rename from config/eww/scripts/get-music rename to config/eww.bak/scripts/get-music diff --git a/config/eww/scripts/get-network b/config/eww.bak/scripts/get-network old mode 100644 new mode 100755 similarity index 100% rename from config/eww/scripts/get-network rename to config/eww.bak/scripts/get-network diff --git a/config/eww.bak/scripts/get-window-title b/config/eww.bak/scripts/get-window-title new file mode 100755 index 00000000..f246c712 --- /dev/null +++ b/config/eww.bak/scripts/get-window-title @@ -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}' diff --git a/config/eww.bak/scripts/get-workspaces b/config/eww.bak/scripts/get-workspaces new file mode 100755 index 00000000..14911c95 --- /dev/null +++ b/config/eww.bak/scripts/get-workspaces @@ -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 diff --git a/config/eww/scripts/getvol b/config/eww.bak/scripts/getvol old mode 100644 new mode 100755 similarity index 100% rename from config/eww/scripts/getvol rename to config/eww.bak/scripts/getvol diff --git a/config/eww/scripts/github b/config/eww.bak/scripts/github old mode 100644 new mode 100755 similarity index 100% rename from config/eww/scripts/github rename to config/eww.bak/scripts/github diff --git a/config/eww/eww.scss b/config/eww/eww.scss index 92692ddd..36f18843 100644 --- a/config/eww/eww.scss +++ b/config/eww/eww.scss @@ -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; } diff --git a/config/eww/eww.yuck b/config/eww/eww.yuck index 8555c32d..9f2d3d74 100644 --- a/config/eww/eww.yuck +++ b/config/eww/eww.yuck @@ -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}"))) + diff --git a/config/eww/images/mic.png b/config/eww/images/mic.png new file mode 100644 index 00000000..d77f315a Binary files /dev/null and b/config/eww/images/mic.png differ diff --git a/config/eww/images/music.png b/config/eww/images/music.png new file mode 100644 index 00000000..11804f5c Binary files /dev/null and b/config/eww/images/music.png differ diff --git a/config/eww/images/profile.png b/config/eww/images/profile.png new file mode 100644 index 00000000..0190a367 Binary files /dev/null and b/config/eww/images/profile.png differ diff --git a/config/eww/images/speaker.png b/config/eww/images/speaker.png new file mode 100644 index 00000000..79e005b7 Binary files /dev/null and b/config/eww/images/speaker.png differ diff --git a/config/eww/scripts/battery b/config/eww/scripts/battery new file mode 100755 index 00000000..0540a1b1 --- /dev/null +++ b/config/eww/scripts/battery @@ -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 + diff --git a/config/eww/scripts/change-active-workspace b/config/eww/scripts/change-active-workspace old mode 100644 new mode 100755 diff --git a/config/eww/scripts/get-active-workspace b/config/eww/scripts/get-active-workspace old mode 100644 new mode 100755 diff --git a/config/eww/scripts/get-window-title b/config/eww/scripts/get-window-title old mode 100644 new mode 100755 diff --git a/config/eww/scripts/get-workspaces b/config/eww/scripts/get-workspaces old mode 100644 new mode 100755 diff --git a/config/eww/scripts/mem-ad b/config/eww/scripts/mem-ad new file mode 100755 index 00000000..1e4cf89f --- /dev/null +++ b/config/eww/scripts/mem-ad @@ -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 diff --git a/config/eww/scripts/memory b/config/eww/scripts/memory new file mode 100755 index 00000000..217c8344 --- /dev/null +++ b/config/eww/scripts/memory @@ -0,0 +1,3 @@ +#!/bin/sh + +printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}') diff --git a/config/eww/scripts/music_info b/config/eww/scripts/music_info new file mode 100755 index 00000000..0c504fc7 --- /dev/null +++ b/config/eww/scripts/music_info @@ -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 diff --git a/config/eww/scripts/music_info.bak b/config/eww/scripts/music_info.bak new file mode 100755 index 00000000..ffafe872 --- /dev/null +++ b/config/eww/scripts/music_info.bak @@ -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 diff --git a/config/eww/scripts/pop b/config/eww/scripts/pop new file mode 100755 index 00000000..8cac2d11 --- /dev/null +++ b/config/eww/scripts/pop @@ -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 diff --git a/config/eww/scripts/wifi b/config/eww/scripts/wifi new file mode 100755 index 00000000..cec3f26a --- /dev/null +++ b/config/eww/scripts/wifi @@ -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 + diff --git a/config/eww/scripts/workspace b/config/eww/scripts/workspace new file mode 100755 index 00000000..967cf7b0 --- /dev/null +++ b/config/eww/scripts/workspace @@ -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 diff --git a/config/flameshot.ini b/config/flameshot.ini index 464875ee..a24d626e 100644 --- a/config/flameshot.ini +++ b/config/flameshot.ini @@ -1,6 +1,6 @@ [General] contrastOpacity=188 -drawColor=#ffffff +drawColor=#ff0000 drawThickness=3 filenamePattern=%Y-%m-%d_%H-%M-%S saveAfterCopy=true diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 0662f43e..125ecd65 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -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) + diff --git a/config/hypr/hyprland.conf.bak b/config/hypr/hyprland.conf.bak deleted file mode 100644 index 6331732f..00000000 --- a/config/hypr/hyprland.conf.bak +++ /dev/null @@ -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 diff --git a/config/lf/cleaner b/config/lf/cleaner old mode 100644 new mode 100755 diff --git a/config/lf/lfrc b/config/lf/lfrc old mode 100644 new mode 100755 diff --git a/config/nsxiv/exec/image-info b/config/nsxiv/exec/image-info old mode 100644 new mode 100755 diff --git a/config/nsxiv/exec/key-handler b/config/nsxiv/exec/key-handler old mode 100644 new mode 100755 diff --git a/config/nsxiv/exec/nsxiv-url b/config/nsxiv/exec/nsxiv-url old mode 100644 new mode 100755 diff --git a/config/nsxiv/exec/thumb-info b/config/nsxiv/exec/thumb-info old mode 100644 new mode 100755 diff --git a/config/nsxiv/exec/win-title b/config/nsxiv/exec/win-title old mode 100644 new mode 100755 diff --git a/config/shell/env b/config/shell/env index 1648843d..7f1d5b2b 100644 --- a/config/shell/env +++ b/config/shell/env @@ -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" diff --git a/config/x11/opt-apps b/config/x11/opt-apps old mode 100644 new mode 100755 index 4718a8a9..64fd4066 --- a/config/x11/opt-apps +++ b/config/x11/opt-apps @@ -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" & diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc index 85041120..441df479 100644 --- a/config/zsh/.zshrc +++ b/config/zsh/.zshrc @@ -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 -- \ diff --git a/dotter b/dotter old mode 100644 new mode 100755 diff --git a/dotter.arm b/dotter.arm old mode 100644 new mode 100755 diff --git a/dotter.exe b/dotter.exe old mode 100644 new mode 100755