diff --git a/.config/eww/bar/eww.scss b/.config/eww/bar/eww.scss
new file mode 100644
index 0000000..758ac79
--- /dev/null
+++ b/.config/eww/bar/eww.scss
@@ -0,0 +1,530 @@
+/** EWW.SCSS
+Created by saimoom **/
+*{
+ all: unset;
+ font-family: "Iosevka Nerd Font", feather;
+ // font-family: DaddyTimeMono NF;
+}
+
+// Variable Color's
+$background: #1A1B26;
+$foreground: #A9B1D6;
+
+$black: #24283B;
+$gray: #565F89;
+$red: #F7768E;
+$green: #73DACA;
+$yellow: #E0AF68;
+$blue: #7AA2F7;
+$magenta: #BB9AF7;
+$cyan: #7DCFFF;
+$white: $foreground;
+/** General **/
+.bar_class {
+ background-color: #0f0f17;
+ border-radius: 16px;
+}
+.module {
+ margin: 0px 0px 0px 0px;
+ border-radius: 10px 16px 0px 10px;
+}
+
+/** tooltip!! **/
+tooltip.background {
+ background-color: #0f0f17;
+ font-size: 18;
+ border-radius: 10px;
+ color: #bfc9db;
+}
+
+tooltip label {
+ margin: 6px;
+}
+
+
+/** Widgets **/
+
+.clock_time_sep {
+ font-size: 27;
+ color: #bfc9db;
+ margin: 0px 4px 1px 4px;
+}
+.clock_time_class, .clock_minute_class {
+ font-size: 23;
+}
+.clock_date_class {
+ font-size: 18;
+ margin: 0px 20px 0px -1px;
+ color: #d7beda;
+}
+.clock_minute_class {
+ margin: 0px 20px 0px 3px;
+ color: #bfc9db;
+}
+
+.clock_time_class {
+ color: #bfc9db;
+ font-weight: bold;
+ margin: 0px 5px 0px 0px;
+}
+
+.diskbar {
+ color: #AD5C6C;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.cpubar {
+ color: #297379;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+
+.membar {
+ color: #e0b089;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+
+
+.bat{
+ // font-family: JetBrainsMono Nerd Font;
+ font-family: Iosevka Nerd Font;
+ font-size: 1.2em;
+ padding-right: .5rem;
+ color: $blue;
+}
+.brightbar trough highlight {
+ background-image: linear-gradient(to right, #e4c9af 30%, #f2cdcd 50%, #e0b089 100% *50);
+ border-radius: 10px;
+}
+.volbar trough highlight {
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 100% *50);
+ border-radius: 10px;
+}
+.volume_icon {
+ font-size: 22;
+ color: #a1bdce;
+ margin: 0px 10px 0px 10px;
+}
+
+.module_essid {
+ font-size: 18;
+ color: #a1bdce;
+ margin: 0px 10px 0px 0px;
+}
+.module_vpn {
+ font-size: 18;
+ color: #77DD77;
+ margin: 0px 10px 0px 0px;
+}
+.module-wif {
+ font-size: 22;
+ color: #a1bdce;
+ border-radius: 100%;
+ margin: 0px 10px 0px 5px;
+}
+.iconcpu {
+ color: #297379;
+}
+
+
+.icondisk {
+ color: #AD5C6C;
+}
+
+.iconmem {
+ color: #e0b089;
+}
+.iconbat {
+ color: #afbea2;
+}
+.iconbat, .iconmem, .iconcpu, .icondisk {
+ font-size: 15;
+ margin: 10px;
+}
+.bright_icon {
+ font-size: 22;
+ color: #e4c9af;
+ margin: 0px 10px 0px 10px;
+}
+
+
+.separ {
+ color: #3e424f;
+ font-weight: bold;
+ font-size: 22px;
+ margin: 0px 8px 0px 8px;
+}
+
+.mem_module, .cpu_module, .disk_module{
+ background-color: #0f0f17;
+ border-radius: 16px;
+ margin: 0px 10px 0px 3px;
+}
+scale trough {
+ all: unset;
+ background-color: #22242b;
+ box-shadow: 0 2px 3px 2px #06060b;
+ border-radius: 16px;
+ min-height: 10px;
+ min-width: 70px;
+ margin: 0px 10px 0px 0px;
+}
+
+.works {
+ font-size: 27px;
+ // font-size: 45px;
+ font-weight: normal;
+ font-family: Iosevka Nerd Font;
+ margin: 5px 0px 0px 20px;
+ background-color: #0f0f17;
+}
+
+.0 , .01, .02, .03, .04, .05, .06, .07, .08, .09, .00,
+.011, .022, .033, .044, .055, .066, .077, .088, .099, .000 {
+ margin: 0px 10px 0px 0px;
+}
+
+/* Unoccupied */
+.0 {
+ color:#131d2c;
+}
+
+/* Occupied */
+.01, .02, .03, .04, .05, .06, .07, .08, .09, .00 {
+ color: #5c6c82;
+}
+
+/* Focused */
+.011, .022, .033, .044, .055, .066, .077, .088, .099, .000 {
+ color: #e4e6ea
+}
+
+.033.thunderbird {
+ color: #1E5EBB;
+}
+
+.066.twitter {
+ color: #1C9CEA;
+}
+
+.firefox.077 {
+ color: #DF5D00;
+}
+
+
+.twitch.088 {
+ color: #613F9F;
+}
+
+.discord.099 {
+ color:#5661EF;
+}
+
+
+.telegram.000 {
+ color: #0084C6;
+}
+
+.song_cover_art {
+ background-size: cover;
+ background-position: center;
+ min-height: 24px;
+ min-width: 24px;
+ margin: 10px;
+ border-radius: 100px;
+}
+
+.song {
+ color: #a1bdce;
+ font-size : 18px;
+ font-weight : bold;
+ margin : 3px 5px 0px 0px;
+}
+
+.song_btn_play {
+ color: #a1bdce;
+ 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: #0f0f17;
+ font-family: "JetBrainsMono Nerd Font";
+ font-size: 18px;
+ font-weight: normal;
+
+ .cal-in {
+ padding: 0px 10px 0px 10px;
+ color: #bfc9db;
+
+ .cal {
+ &.highlight {
+ padding: 20px;
+ }
+
+ padding: 5px 5px 5px 5px;
+ margin-left: 10px;
+ }
+ }
+}
+
+
+
+calendar:selected {
+ color: $blue;
+ font-size: 24px;
+ background: $background;
+}
+
+calendar.header {
+ color: $blue;
+ font-weight: bold;
+}
+
+calendar.button {
+ color: $magenta;
+}
+
+calendar.highlight {
+ color: $magenta;
+ font-weight: bold;
+}
+
+calendar:indeterminate {
+ color: $background;
+}
+
+
+
+
+
+
+
+.sys_sep {
+ color: #38384d;
+ font-size: 18;
+ margin: 0px 10px 0px 10px;
+}
+.sys_text_bat_sub, .sys_text_mem_sub {
+ font-size: 16;
+ color: #bbc5d7;
+ 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: #38384d;
+ border-radius: 10px;
+}
+.sys_mem {
+ color: #e4c9af;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.sys_icon_bat, .sys_text_bat {
+ color: #afbea2;
+}
+.sys_icon_mem, .sys_text_mem {
+ color: #e4c9af;
+}
+.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: #a1bdce;
+ font-size : 20px;
+ font-weight : bold;
+ margin : 20px 0px 0px -15px;
+}
+
+.music_artist {
+ color: #bbc5d7;
+ font-size : 16px;
+ font-weight : normal;
+ margin : 0px 0px 0px 0px;
+}
+
+.music_btn_prev, .music_btn_play, .music_btn_next {
+ font-family: Iosevka Nerd Font;
+}
+.music_btn_prev {
+ color: #bbc5d7;
+ font-size : 32px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+.music_btn_play {
+ color: #a1bdce;
+ font-size : 48px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+.music_btn_next {
+ color: #bbc5d7;
+ font-size : 32px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+
+.music_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 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: #a1bdce;
+ font-size : 26px;
+ font-weight : bold;
+ margin: 20px 0px 0px 0px;
+}
+
+.speaker_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 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: #a1bdce;
+ font-size : 26px;
+ font-weight : bold;
+ margin: 0px 0px 0px 0px;
+}
+
+.mic_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 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;
+}
+
+.audio_sep {
+ color: #38384d;
+ font-size: 18;
+ margin : 0px 0px 0px 0px;
+}
+
+
+// Powermenu
+.powermenu {
+ font-family: feather;
+ font-size: 1.3em;
+ font-weight: bold;
+}
+.button-qtres, .button-reb, .button-lock,
+.button-quit, .button-off{
+ padding: .5rem .2rem .5rem .2rem;
+ // transition: all .2s ease-in-out;
+}
+.button-off{
+ color: $red;
+}
+.button-qtres:hover, .button-reb:hover, .button-lock:hover,
+.button-quit:hover, .button-off:hover{
+ font-size: 1.2em;
+ box-shadow: inset 0 0 0 10em $background;
+}
+.button-bspres{
+ color: $green;
+}
+.button-reb{
+ color: $yellow
+}
+.button-quit{
+ color: $magenta;
+}
+.button-lock{
+ color: $blue;
+}
diff --git a/.config/eww/bar/eww.yuck b/.config/eww/bar/eww.yuck
new file mode 100644
index 0000000..f85085d
--- /dev/null
+++ b/.config/eww/bar/eww.yuck
@@ -0,0 +1,463 @@
+;; Variables
+(defpoll clock_time :interval "5s" "date +\%H")
+(defpoll clock_minute :interval "5s" "date +\%M")
+(defpoll clock_date :interval "5s" "date '+%d/%m'")
+(defpoll volume_percent :interval "3s" :run-while vol_reveal "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
+(defpoll mic_percent :interval "3s" :run-while vol_reveal "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
+(defpoll brightness_percent :interval "5s" :run-while br_reveal "brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'")
+(defpoll caps_num_scroll_indicator :interval "300ms" "scripts/indicator")
+(defvar vol_reveal false)
+(defvar bat_rev false)
+(defvar cpu_rev false)
+(defvar mem_rev false)
+(defvar disk_rev false)
+(defvar br_reveal false)
+(defvar vpn_reveal false)
+(defvar bluetooth_rev false)
+(defvar music_reveal false)
+(defvar wifi_rev false)
+(defvar time_rev false)
+(defvar power_rev false)
+(deflisten workspace "scripts/workspace")
+
+(deflisten CURRENT_LAYOUT_SYMBOL "scripts/layout")
+
+(defvar eww "$HOME/scripts/eww -c $HOME/.config/eww/bar")
+
+
+(defpoll COL_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --COL")
+(defpoll ESSID_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --ESSID")
+(defpoll VPN_NAME :interval "1s" "rofi-wireguard")
+(defpoll BLUETOOTHDEV :interval "1s" "rofi-bluetooth --status")
+(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")
+
+
+;; 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 "slideleft"
+ :reveal wifi_rev
+ :duration "350ms"
+ (label :class "module_essid"
+ :text ESSID_WLAN
+ )))))
+
+
+(defwidget workspaces []
+ (literal :content workspace))
+
+(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_time :class "clock_time_class" )
+ (label :text ":" :class "clock_time_sep" )
+ (label :text clock_minute :class "clock_minute_class")
+ (revealer :transition "slideleft"
+ :reveal time_rev
+ :duration "350ms"
+ (button :class "clock_date_class"
+ :onclick "$HOME/.config/eww/bar/scripts/pop calendar" clock_date
+ )
+ ))))
+
+(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" "${BLUETOOTHDEV=="" ? "": ""}")
+ (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 {}%" )))))
+
+;; Battery Widgets ;;
+(defwidget bat []
+ (eventbox :onhover "${eww} update bat_rev=true"
+ :onhoverlost "${eww} update bat_rev=false"
+ (box :space-evenly "false"
+ (label :class "bat"
+ :text battery
+ :tooltip "Battery: ${EWW_BATTERY["BAT0"].capacity}%")
+
+ (revealer :transition "slideleft"
+ :reveal bat_rev
+ :duration "350ms"
+ :class "bat"
+ (label :text "${battery==""? "Charging": "Battery"}: ${EWW_BATTERY["BAT0"].capacity}%"))
+ )))
+(defpoll battery :interval "1s" "scripts/battery icon")
+
+(defwidget metric [widget widget_rev value tooltip_text]
+ (eventbox
+ :onhover "${eww} update ${widget}_rev=true"
+ :onhoverlost "${eww} update ${widget}_rev=false"
+ (box :class "${widget}_module" :vexpand "false" :hexpand "false"
+ (circular-progress
+ :value value
+ :class "${widget}bar"
+ :thickness 4
+ (button
+ :class "icon${widget}"
+ :limit-width 9
+ :tooltip tooltip_text
+ :onclick "$HOME/.config/eww/bar/scripts/pop system"
+ :show_truncated false
+ :wrap false
+ (revealer
+ :transition "slideleft"
+ :reveal widget_rev
+ :duration "350ms"
+ :class "icon${widget}"
+ (label
+ :text value
+ :tooltip "${tooltip_text}: ${value}%"
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+
+(defwidget metrics []
+ (box :orientation "h"
+ :space-evenly false
+ (metric :widget "disk" :widget_rev disk_rev :value "${round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)}" :tooltip_text "Disk usage")
+ (metric :widget "cpu" :widget_rev cpu_rev :value "${round(EWW_CPU.avg, 0)}" :tooltip_text "CPU usage")
+ (metric :widget "mem" :widget_rev mem_rev :value "${round(EWW_RAM.used_mem_perc, 0)}" :tooltip_text "RAM usage")
+ ))
+
+
+(defwidget keyboard []
+ (box :class "volume_icon"
+ :orientation "v"
+ (label :text caps_num_scroll_indicator
+ :style "font-size: 7;"
+ :valign "end"
+ )
+ (label :text CURRENT_LAYOUT_SYMBOL
+ :valign "start"
+ :vexpand false
+ )
+
+ ))
+
+
+(defwidget vpn []
+ (eventbox :onhover "${eww} update vpn_reveal=true"
+ :onhoverlost "${eww} update vpn_reveal=false"
+ (box :vexpand "false" :hexpand "false" :space-evenly "false"
+ (button :class "module-wif" :timeout "10s" :onclick "rofi-wireguard --toggle" :wrap "false"
+ :limit-width 12 :style "color: ${VPN_NAME=="" ? "#3e424f": "#77DD77"};" "")
+ (revealer :transition "slideright"
+ :reveal vpn_reveal
+ :duration "350ms"
+ (button :class "module-wif" :timeout "10s" :onclick "rofi-wireguard --toggle" :wrap "false"
+ :limit-width 12 :style "color: ${VPN_NAME=="" ? "#3e424f": "#77DD77"};" VPN_NAME)
+ ))))
+
+(defwidget bluetooth []
+ (eventbox :onhover "${eww} update bluetooth_rev=true"
+ :onhoverlost "${eww} update bluetooth_rev=false"
+ (box :vexpand "false" :hexpand "false" :space-evenly "false"
+ (button :class "module-wif" :timeout "30s" :onclick "rofi-bluetooth" :wrap "false" :limit-width 12
+ :style "color: ${BLUETOOTHDEV=="" ? "#3e424f": "#77DD77"};" {BLUETOOTHDEV=="" ? "" : ""})
+ (revealer :transition "slideright"
+ :reveal bluetooth_rev
+ :duration "350ms"
+ (button :class "module-wif" :timeout "30s" :onclick "rofi-bluetooth" :wrap "false" :limit-width 12
+ :style "color: ${BLUETOOTHDEV=="" ? "#3e424f": "#77DD77"};" BLUETOOTHDEV)
+ ))))
+
+(defwidget power []
+ (eventbox :onhover "${eww} update power_rev=true"
+ :onhoverlost "${eww} update power_rev=false"
+ (box :orientation "h"
+ :space-evenly "false"
+ :vexpand "false"
+ :class "powermenu"
+ (revealer :transition "slideleft"
+ :reveal power_rev
+ :duration "550ms"
+ (box :orientation "h"
+ :space-evenly "false"
+
+ (button :class "button-qtres"
+ :tooltip "Restart qtile"
+ :onclick "scripts/qtile restart" "" )
+
+ (button :class "button-reb"
+ :tooltip "Reboot"
+ :onclick "reboot" "")
+
+ (button :class "button-quit"
+ :tooltip "Logout"
+ :onclick "scripts/qtile shutdown" "")
+
+ (button :class "button-lock"
+ :tooltip "Lock Screen"
+ :onclick "lock-screen" "")))
+
+ (button :class "button-off"
+ :tooltip "Shutdown"
+ :onclick "shutdown now" ""))))
+
+
+;; 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" :onclick "~/.config/eww/bar/scripts/pop music" song)
+ (revealer :transition "slideright"
+ :reveal music_reveal
+ :duration "350ms"
+ (box :vexpand "false" :hexpand "false" :orientation "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"
+ (keyboard)
+ (vpn)
+ (bluetooth)
+ (bright)
+ (volume)
+ (wifi)
+ (sep)
+ (metrics)
+ (bat)
+ (sep)
+ (clock_module)
+ (power)))
+
+
+(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"
+ (music)))
+
+
+(defwidget topbar []
+ (centerbox
+:orientation "h"
+ :class "bar_class"
+ (right)
+ (center)
+ (left)
+ )
+ )
+
+(defwindow bar
+ :monitor 0
+ :geometry (geometry :x "0%"
+ :y "4px"
+ :width "99%"
+ :height "50px"
+ :anchor "top center")
+ :stacking "fg"
+ :reserve (struts :distance "58px" :side "top")
+ :windowtype "dock"
+ :wm-ignore false
+ (topbar))
+
+(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 "${EWW_BATTERY["BAT0"].capacity}"
+ :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 "${EWW_BATTERY["BAT0"].capacity}%"
+ :halign "start"
+ :class "sys_text_bat_sub"
+ :limit-width 22
+ :show_truncated false
+ :wrap false)
+ (label :text "${EWW_BATTERY["BAT0"].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 "${round(EWW_RAM.used_mem_perc, 0)}"
+ :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 "${round(EWW_RAM.used_mem/1024, 0)} | ${round(EWW_RAM.total_mem/1024, 0)}mb "
+ :halign "start"
+ :class "sys_text_mem_sub"
+ :limit-width 22
+ :show_truncated false
+ :wrap false)
+ (label :text "${round(EWW_RAM.free_mem/1024,0)}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"
+ ; :onclick "echo {} is selected >> /home/sahin/caltest"
+ :show-day-names true
+ :show-heading true
+ :show-details true
+ :show-week-numbers true
+ ))))
+
+(defwindow calendar
+ :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
+ :geometry (geometry :x "-20px"
+ :y "7%"
+ :anchor "top right"
+ :width "280px"
+ :height "60px")
+ (audio))
+
+
+(defwindow system
+ :geometry (geometry :x "-20px"
+ :y "7%"
+ :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 :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x "0" :y "7%" :width 428 :height 104 :anchor "top center")
+ (music_pop))
+
diff --git a/.config/eww/bar/images/mic.png b/.config/eww/bar/images/mic.png
new file mode 100644
index 0000000..d77f315
Binary files /dev/null and b/.config/eww/bar/images/mic.png differ
diff --git a/.config/eww/bar/images/music.png b/.config/eww/bar/images/music.png
new file mode 100644
index 0000000..11804f5
Binary files /dev/null and b/.config/eww/bar/images/music.png differ
diff --git a/.config/eww/bar/images/speaker.png b/.config/eww/bar/images/speaker.png
new file mode 100644
index 0000000..79e005b
Binary files /dev/null and b/.config/eww/bar/images/speaker.png differ
diff --git a/.config/eww/bar/scripts/battery b/.config/eww/bar/scripts/battery
new file mode 100755
index 0000000..d2ad310
--- /dev/null
+++ b/.config/eww/bar/scripts/battery
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+bat=/sys/class/power_supply/BAT0/
+per="$(cat "$bat/capacity")"
+
+icon() {
+
+[ $(cat "$bat/status") = Charging ] && echo "" && exit
+
+if [ "$per" -gt "90" ]; then
+ icon=""
+elif [ "$per" -gt "80" ]; then
+ icon=""
+elif [ "$per" -gt "70" ]; then
+ icon=""
+elif [ "$per" -gt "60" ]; then
+ icon=""
+elif [ "$per" -gt "50" ]; then
+ icon=""
+elif [ "$per" -gt "40" ]; then
+ icon=""
+elif [ "$per" -gt "30" ]; then
+ icon=""
+elif [ "$per" -gt "20" ]; then
+ icon=""
+elif [ "$per" -gt "10" ]; then
+ icon=""
+elif [ "$per" -gt "0" ]; then
+ icon=""
+else
+ echo && exit
+fi
+echo "$icon"
+}
+
+percent() {
+echo $per
+}
+
+[ "$1" = "icon" ] && icon && exit
+[ "$1" = "percent" ] && percent && exit
+exit
+
diff --git a/.config/eww/bar/scripts/indicator b/.config/eww/bar/scripts/indicator
new file mode 100755
index 0000000..3946cf4
--- /dev/null
+++ b/.config/eww/bar/scripts/indicator
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+query=$(xset q | grep -Po "(?:Caps|Num|Scroll)\s+Lock:\s*(\w*)" | grep -Po "(off|on)")
+
+
+result=""
+for i in $query
+do
+ [ $i = "off" ] && result+="ﰊ "|| result+="ﰉ "
+done
+
+# somehow results are shown reversed. So i am reversing them here to fix it
+echo $result | rev | xargs
+
diff --git a/.config/eww/bar/scripts/layout b/.config/eww/bar/scripts/layout
new file mode 100755
index 0000000..780105f
--- /dev/null
+++ b/.config/eww/bar/scripts/layout
@@ -0,0 +1,9 @@
+#!/bin/bash
+xprop -spy -root _XKB_RULES_NAMES | while read -r line; do
+ variant=$(echo $line | cut -d',' -f4 | tr -d '"')
+ if [[ "$variant" == " cdhpt" ]]; then
+ echo ""
+ else
+ echo ""
+ fi
+done
diff --git a/.config/eww/bar/scripts/music_info b/.config/eww/bar/scripts/music_info
new file mode 100755
index 0000000..ffafe87
--- /dev/null
+++ b/.config/eww/bar/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=`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/bar/scripts/pop b/.config/eww/bar/scripts/pop
new file mode 100755
index 0000000..cc2f3ca
--- /dev/null
+++ b/.config/eww/bar/scripts/pop
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+calendar() {
+LOCK_FILE="$HOME/.cache/eww-calendar.lock"
+EWW_BIN="$HOME/scripts/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open calendar
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system music_win audio_ctl
+ touch "$LOCK_FILE"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close calendar
+ rm "$LOCK_FILE" && echo "closed"
+fi
+}
+
+
+system() {
+LOCK_FILE_MEM="$HOME/.cache/eww-system.lock"
+EWW_BIN="$HOME/scripts/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open system
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_MEM" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close calendar music_win audio_ctl
+ touch "$LOCK_FILE_MEM"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system
+ rm "$LOCK_FILE_MEM" && echo "closed"
+fi
+}
+
+
+music() {
+LOCK_FILE_SONG="$HOME/.cache/eww-song.lock"
+EWW_BIN="$HOME/scripts/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open music_win
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_SONG" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar
+ touch "$LOCK_FILE_SONG"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close music_win
+ rm "$LOCK_FILE_SONG" && echo "closed"
+fi
+}
+
+
+
+audio() {
+LOCK_FILE_AUDIO="$HOME/.cache/eww-audio.lock"
+EWW_BIN="$HOME/scripts/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open audio_ctl
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_AUDIO" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar music
+ touch "$LOCK_FILE_AUDIO"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar 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/bar/scripts/qtile b/.config/eww/bar/scripts/qtile
new file mode 100755
index 0000000..ad8e24c
--- /dev/null
+++ b/.config/eww/bar/scripts/qtile
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+case "$1" in
+ switch) qtile cmd-obj -o group $2 -f toscreen
+ ;;
+ restart) qtile cmd-obj -o cmd -f restart
+ ;;
+ shutdown) qtile cmd-obj -o cmd -f shutdown
+ ;;
+esac
+
+
diff --git a/.config/eww/bar/scripts/wifi b/.config/eww/bar/scripts/wifi
new file mode 100755
index 0000000..024994d
--- /dev/null
+++ b/.config/eww/bar/scripts/wifi
@@ -0,0 +1,26 @@
+#!/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/bar/scripts/workspace b/.config/eww/bar/scripts/workspace
new file mode 100755
index 0000000..ca6747a
--- /dev/null
+++ b/.config/eww/bar/scripts/workspace
@@ -0,0 +1,6 @@
+#!/bin/bash
+dir=`dirname $0`
+python3 $dir/workspaces.py
+tail -F -n1 ~/.cache/workspaces | while read -r; do
+ python3 $dir/workspaces.py
+done
diff --git a/.config/eww/bar/scripts/workspaces.py b/.config/eww/bar/scripts/workspaces.py
new file mode 100644
index 0000000..082c3c5
--- /dev/null
+++ b/.config/eww/bar/scripts/workspaces.py
@@ -0,0 +1,53 @@
+from libqtile.command.client import CommandClient
+c = CommandClient()
+
+
+groups = {}
+
+for name, group in c.call('groups').items():
+ if name == "scratchpad":
+ continue
+ occupied = len(group["windows"]) > 0
+ focused = group['screen'] is not None
+ groups[name] = {"occupied": occupied, "focused": focused}
+
+output = '(box :class "works" :orientation "h" :spacing 5 :space-evenly "false" '
+for name, prop in groups.items():
+ command = f"scripts/qtile switch {name}"
+ class_ = "0"
+ focused, occupied = prop['focused'], prop['occupied']
+ if focused:
+ class_ += name * 2
+ elif occupied:
+ class_ += name
+
+ if occupied:
+ if name == "3":
+ class_ += " thunderbird"
+ elif name == "6":
+ class_ += " twitter"
+ elif name == "7":
+ class_ += " firefox"
+ elif name == "8":
+ class_ += " twitch"
+ elif name == "9":
+ class_ += " discord"
+ elif name == "0":
+ class_ += " telegram"
+ icons = {
+ "1": "1",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "6": "",
+ "7": "",
+ "8": "既",
+ "9": "ﭮ",
+ "0": "",
+ }
+ icon = icons[name]
+ output += f'(button :onclick "{command}" :class "{class_}" "{icon}") '
+
+output += ')'
+print(output)
diff --git a/.config/qtile/modules/hooks.py b/.config/qtile/modules/hooks.py
index 0eff306..e39b293 100644
--- a/.config/qtile/modules/hooks.py
+++ b/.config/qtile/modules/hooks.py
@@ -1,7 +1,7 @@
import subprocess
+import os
from libqtile import hook
-from libqtile.command.client import InteractiveCommandClient
@hook.subscribe.startup
@@ -9,12 +9,19 @@ def autostart():
subprocess.call(["autostart.sh"])
-@hook.subscribe.startup_complete
-def focus_group():
- c = InteractiveCommandClient()
- c.group["4"].toscreen()
-
-
@hook.subscribe.client_managed
def show_window(window):
window.group.cmd_toscreen()
+
+
+@hook.subscribe.client_managed
+@hook.subscribe.client_urgent_hint_changed
+@hook.subscribe.client_killed
+@hook.subscribe.setgroup
+@hook.subscribe.group_window_add
+@hook.subscribe.current_screen_change
+@hook.subscribe.changegroup
+def hook_response(*args, **kwargs):
+ file = os.path.expanduser('~/.cache/workspaces')
+ with open(file, 'a') as f:
+ print('workspace changed', file=f)
diff --git a/.config/qtile/modules/keys.py b/.config/qtile/modules/keys.py
index 9e0a668..591d89d 100644
--- a/.config/qtile/modules/keys.py
+++ b/.config/qtile/modules/keys.py
@@ -50,7 +50,7 @@ keys = [
Key([mod], "l", lazy.layout.right(), desc="Move focus to right"),
Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
- Key([mod], "u", explore, desc="Move focus up"),
+ Key([mod], "u", explore, desc="Open app related with current group"),
Key(
[mod],
"Tab",
diff --git a/.config/qtile/modules/screens.py b/.config/qtile/modules/screens.py
index 69ba000..cd3b860 100644
--- a/.config/qtile/modules/screens.py
+++ b/.config/qtile/modules/screens.py
@@ -1,163 +1,3 @@
-import re
-import subprocess
-
-from subprocess import check_output
-
-from libqtile import bar, widget
from libqtile.config import Screen
-from libqtile.command import lazy
-# from libqtile.log_utils import logger
-
-
-def create_sep():
- return widget.Sep(foreground="707880", size_percent=60)
-
-
-def run_shell_command(command):
- def inner():
- res = check_output(command.split()).decode("utf-8").strip()
- return res or " "
-
- return inner
-
-
-class CapsNumScrollLockIndicator(widget.CapsNumLockIndicator):
- def get_indicators(self):
- """Return a list with the current state of the keys."""
- try:
- output = self.call_process(["xset", "q"])
- except subprocess.CalledProcessError as err:
- output = err.output
- return []
- indicators = re.findall(r"(?:Caps|Num|Scroll)\s+Lock:\s*(\w*)", output)
- return indicators
-
- def poll(self):
- """Poll content for the text box."""
- indicators = self.get_indicators()
- on, off = "ﰉ", "ﰊ"
- status = " ".join(indicators)
- status = status.replace("off", off).replace("on", on)[::-1]
- # reversed because it cames backwards somehow.
- return status
-
-
-screens = [
- Screen(
- top=bar.Bar(
- [
- # widget.CurrentLayout(),
- widget.GroupBox(
- active="62AEEF", # Active group font colour
- block_highlight_text_color="62AEFF", # Selected group font colour
- disable_drag=True, # Disable dragging and dropping of group names on widget
- font="Iosevka Nerd Font",
- fontsize=20,
- foreground="ff0000", # Foreground colour
- highlight_color=[
- "373B41",
- # "282828",
- ], # Active group highlight color when using 'line' highlight method.
- highlight_method="line", # Method of highlighting ('border', 'block', 'text', or 'line')Uses *_border color settings
- inactive="707880", # Inactive group font colour
- invert_mouse_wheel=True, # Whether to invert mouse wheel group movement
- padding_x=8, # X Padding. Overrides 'padding' if set
- ),
- widget.Prompt(),
- create_sep(),
- widget.WindowName(),
- widget.Chord(
- chords_colors={
- "launch": ("#ff0000", "#ffffff"),
- },
- name_transform=lambda name: name.upper(),
- ),
- widget.GenPollText(
- func=run_shell_command("wgd"),
- fontsize=23,
- font="Iosevka Nerd Font",
- foreground="62AEEF",
- fmt=" {}",
- update_interval=1,
- mouse_callbacks={"Button1": lazy.spawn("wgd --toggle")},
- ),
- create_sep(),
- widget.GenPollText(
- func=run_shell_command("rofi-bluetooth --status"),
- fontsize=18,
- font="Iosevka Nerd Font",
- foreground="62AEEF",
- update_interval=1,
- mouse_callbacks={"Button1": lazy.spawn("rofi-bluetooth")},
- ),
- create_sep(),
- widget.PulseVolume(
- emoji=True,
- limit_max_volume=True,
- step=4,
- update_interval=0.1,
- fmt='VOL {}',
- ),
- create_sep(),
- widget.KeyboardLayout(
- configured_keyboards=["us cdhpt", "us cdhisopt"],
- font="Iosevka Nerd Font Mono",
- fontsize=23,
- display_map={"us cdhpt": "", "us cdhisopt": ""},
- foreground="62AEFF",
- ),
- CapsNumScrollLockIndicator(update_interval=0.5, foreground="62AEFF"),
- create_sep(),
- widget.WidgetBox(
- widgets=[
- widget.DF(
- visible_on_warn=False,
- format='{p} {r:.0f}%',
- ),
- create_sep(),
- widget.Memory(
- fmt='RAM {}',
- format="{MemPercent: .0f}%",
- ),
- create_sep(),
- widget.CPU(
- format="{load_percent: .0f}%",
- fmt='CPU {}',
- ),
- create_sep(),
- ],
- text_closed="[S<]",
- text_open="[S>]",
- foreground="62AEEF",
- close_button_location="right",
- ),
- widget.WidgetBox(
- widgets=[
- widget.Net(interface=["enp3s0"]),
- widget.Wlan(format="{essid} {percent:2.0%}"),
- create_sep(),
- ],
- text_closed="[N<]",
- text_open="[N>]",
- foreground="62AEEF",
- close_button_location="right",
- ),
- widget.Battery(format="{char} {percent:2.0%} {hour:d}:{min:02d}"),
- widget.Clock(format="%Y-%m-%d %a %I:%M %p"),
- widget.Systray(),
- ],
- size=30,
- background="#282A2E",
- border_width=[0, 0, 0, 0],
- margin=[4, 4, 4, 4],
- border_color=[
- "000000",
- "000000",
- "000000",
- "000000",
- ],
- opacity=0.95,
- ),
- ),
-]
+screens = [Screen()]
diff --git a/.gitmodules b/.gitmodules
index 3bdbfb9..930fb67 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,9 +4,11 @@
[submodule ".config/nvim"]
path = .config/nvim
url = https://github.com/Asocia/nvim-config.git
-[submodule "GitRepositories/rofi-bluetooth"]
- path = GitRepositories/rofi-bluetooth
- url = https://github.com/nickclyde/rofi-bluetooth.git
[submodule "GitRepositories/polybar-wireguard"]
path = GitRepositories/polybar-wireguard
url = https://github.com/mil-ad/polybar-wireguard.git
+ ignore = dirty
+[submodule "GitRepositories/rofi-bluetooth"]
+ path = GitRepositories/rofi-bluetooth
+ url = https://github.com/nickclyde/rofi-bluetooth.git
+ ignore = dirty
diff --git a/GitRepositories/patches/polybar-wireguard/wireguard.patch b/GitRepositories/patches/polybar-wireguard/wireguard.patch
index f1023b0..48dcabc 100644
--- a/GitRepositories/patches/polybar-wireguard/wireguard.patch
+++ b/GitRepositories/patches/polybar-wireguard/wireguard.patch
@@ -1,18 +1,64 @@
diff --git a/polybar-wireguard b/polybar-wireguard
-index 6712185..b770d44 100755
+deleted file mode 100755
+index 6712185..0000000
--- a/polybar-wireguard
-+++ b/polybar-wireguard
-@@ -6,11 +6,11 @@
- # https://github.com/polybar/polybar/wiki/Formatting#format-tags-inside-polybar-config
- green=#55aa55
-
++++ /dev/null
+@@ -1,58 +0,0 @@
+-#!/usr/bin/env sh
+-
+-# Unfortunately it's not easy to directly use Polybar colour values in this
+-# script so I have to redefine some of my colours here. See the link below for
+-# more details:
+-# https://github.com/polybar/polybar/wiki/Formatting#format-tags-inside-polybar-config
+-green=#55aa55
+-
-configs_path="/PATH/TO/CONF/FILES"
-+configs_path="$HOME/.config/wireguard"
- connected_interface=$(sudo wg | grep interface | cut -d " " -f2)
-
- connect() {
+-connected_interface=$(sudo wg | grep interface | cut -d " " -f2)
+-
+-connect() {
- selected_config=$(ls $configs_path/*.conf | xargs basename -a -s .conf | dmenu)
-+ selected_config=$(ls $configs_path/*.conf | xargs basename -a -s .conf | rofi -i -dmenu -p "Connect to: ")
- [[ $selected_config ]] && sudo wg-quick up "$configs_path"/"$selected_config".conf
- }
-
+- [[ $selected_config ]] && sudo wg-quick up "$configs_path"/"$selected_config".conf
+-}
+-
+-disconnect() {
+- # Normally we should have a single connected interface but technically
+- # there's nothing stopping us from having multiple active intgerfaces so
+- # let's do this in a loop:
+- for connected_config in $(sudo wg | grep interface | cut -d " " -f2)
+- do
+- sudo wg-quick down $configs_path/"$connected_config".conf
+- done
+-}
+-
+-toggle() {
+- if [[ $connected_interface ]]
+- then
+- disconnect
+- else
+- connect
+- fi
+-}
+-
+-print() {
+- if [[ $connected_interface ]]
+- then
+- echo %{u"$green"}%{+u}%{T4}%{F"$green"}%{T-}%{F-} "$connected_interface"
+- else
+- echo %{T4}%{T-}
+- fi
+-}
+-
+-case "$1" in
+- --connect)
+- connect
+- ;;
+- --disconnect)
+- disconnect
+- ;;
+- --toggle)
+- toggle
+- ;;
+- *)
+- print
+- ;;
+-esac
diff --git a/GitRepositories/patches/rofibluetooth/dontshowmenu.patch b/GitRepositories/patches/rofi-bluetooth/dontshowmenu.patch
similarity index 74%
rename from GitRepositories/patches/rofibluetooth/dontshowmenu.patch
rename to GitRepositories/patches/rofi-bluetooth/dontshowmenu.patch
index af3ad62..1d8e91b 100644
--- a/GitRepositories/patches/rofibluetooth/dontshowmenu.patch
+++ b/GitRepositories/patches/rofi-bluetooth/dontshowmenu.patch
@@ -1,5 +1,5 @@
diff --git a/rofi-bluetooth b/rofi-bluetooth
-index 5c52fd8..cebb5c1 100755
+index 5c52fd8..012e612 100755
--- a/rofi-bluetooth
+++ b/rofi-bluetooth
@@ -33,7 +33,6 @@ power_on() {
@@ -51,3 +51,21 @@ index 5c52fd8..cebb5c1 100755
fi
}
+@@ -183,8 +175,6 @@ toggle_trust() {
+ # Useful for status bars like polybar, etc.
+ print_status() {
+ if power_on; then
+- printf ''
+-
+ mapfile -t paired_devices < <(bluetoothctl paired-devices | grep Device | cut -d ' ' -f 2)
+ counter=0
+
+@@ -202,8 +192,6 @@ print_status() {
+ fi
+ done
+ printf "\n"
+- else
+- echo ""
+ fi
+ }
+
diff --git a/scripts/autostart.sh b/scripts/autostart.sh
index 38cc434..31db8a1 100755
--- a/scripts/autostart.sh
+++ b/scripts/autostart.sh
@@ -9,7 +9,11 @@ function run {
#feh --bg-scale /usr/share/endeavouros/backgrounds/endeavouros-wallpaper.png
+rm ~/.cache/workspaces
nitrogen --save --set-zoom-fill ~/Pictures/Wallpapers/default.jpg
run picom & disown # --experimental-backends --vsync should prevent screen tearing on most setups if needed
+eww -c ~/.config/eww/bar/ close-all
+eww -c ~/.config/eww/bar/ open bar
+
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & disown # start polkit agent from GNOME
diff --git a/scripts/polybar-wireguard b/scripts/polybar-wireguard
deleted file mode 120000
index 17cb428..0000000
--- a/scripts/polybar-wireguard
+++ /dev/null
@@ -1 +0,0 @@
-/home/sahin/GitRepositories/polybar-wireguard/polybar-wireguard
\ No newline at end of file
diff --git a/scripts/rofi-wireguard b/scripts/rofi-wireguard
new file mode 120000
index 0000000..c4872d8
--- /dev/null
+++ b/scripts/rofi-wireguard
@@ -0,0 +1 @@
+/home/sahin/GitRepositories/rofi-wireguard/rofi-wireguard
\ No newline at end of file