├── unknown.png ├── unknown1.png ├── .config ├── eww │ ├── backend │ │ ├── bar │ │ │ ├── date.sh │ │ │ ├── updates.sh │ │ │ ├── music.sh │ │ │ ├── network.sh │ │ │ ├── workspaces.sh │ │ │ └── volume.sh │ │ ├── dashboard │ │ │ ├── blueman.sh │ │ │ ├── cpu.sh │ │ │ ├── pfp.sh │ │ │ ├── user.sh │ │ │ ├── ram.sh │ │ │ ├── brightness.sh │ │ │ ├── light_mode.sh │ │ │ └── redshift.sh │ │ ├── misc │ │ │ └── exec.sh │ │ ├── powermenu │ │ │ ├── toggler.sh │ │ │ └── manager.sh │ │ ├── calendar │ │ │ └── month.sh │ │ ├── main.sh │ │ └── music │ │ │ ├── control.sh │ │ │ ├── songdata.sh │ │ │ └── songart.sh │ ├── assets │ │ ├── 1.png │ │ ├── a.png │ │ ├── fallback.png │ │ └── default-pfp.png │ ├── bottom │ │ ├── bar │ │ │ ├── widgets │ │ │ │ ├── workspaces.yuck │ │ │ │ ├── date.yuck │ │ │ │ ├── updates.yuck │ │ │ │ ├── position.yuck │ │ │ │ ├── launcher.yuck │ │ │ │ ├── music-dispatcher.yuck │ │ │ │ ├── powermenu-dispatcher.yuck │ │ │ │ └── syscontrol.yuck │ │ │ ├── bar.yuck │ │ │ └── bar.scss │ │ ├── store │ │ │ ├── main.yuck │ │ │ ├── calendar.yuck │ │ │ ├── music.yuck │ │ │ ├── bar.yuck │ │ │ └── dashboard.yuck │ │ ├── eww.yuck │ │ ├── eww.scss │ │ ├── calendar │ │ │ ├── calendar.yuck │ │ │ └── calendar.scss │ │ ├── powermenu │ │ │ ├── powermenu.scss │ │ │ └── powermenu.yuck │ │ └── dashboard │ │ │ ├── dashboard.yuck │ │ │ └── dashboard.scss │ ├── top │ │ ├── bar │ │ │ ├── widgets │ │ │ │ ├── workspaces.yuck │ │ │ │ ├── date.yuck │ │ │ │ ├── updates.yuck │ │ │ │ ├── position.yuck │ │ │ │ ├── launcher.yuck │ │ │ │ ├── music-dispatcher.yuck │ │ │ │ ├── powermenu-dispatcher.yuck │ │ │ │ └── syscontrol.yuck │ │ │ ├── bar.yuck │ │ │ └── bar.scss │ │ ├── store │ │ │ ├── main.yuck │ │ │ ├── calendar.yuck │ │ │ ├── music.yuck │ │ │ ├── bar.yuck │ │ │ └── dashboard.yuck │ │ ├── eww.yuck │ │ ├── eww.scss │ │ ├── calendar │ │ │ ├── calendar.yuck │ │ │ └── calendar.scss │ │ ├── dashboard │ │ │ ├── New Empty File │ │ │ ├── dashboard.yuck │ │ │ └── dashboard.scss │ │ └── powermenu │ │ │ ├── powermenu.scss │ │ │ └── powermenu.yuck │ ├── README.md │ ├── eww.yuck │ ├── eww.scss │ ├── global │ │ ├── main.scss │ │ └── colors.scss │ ├── scripts │ │ ├── bluetooth.sh │ │ ├── !getWeather │ │ └── weather.sh │ ├── open.sh │ └── position ├── rofi │ ├── askpass.rasi │ ├── theme.rasi │ ├── shot.rasi │ ├── config.rasi │ └── themes │ │ ├── dishonest.rasi │ │ └── pagan.rasi ├── polybar │ ├── launch.sh │ ├── scripts │ │ ├── pop.sh │ │ └── polywins.sh │ └── config ├── alacritty │ ├── #fonts.yml │ ├── #colors.yml │ └── alacritty.yml ├── bspwm │ └── bspwmrc ├── picom.conf └── sxhkd │ ├── OLDsxhkdrc │ └── sxhkdrc ├── wallpaper.png ├── Xresources └── README.md /unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/unknown.png -------------------------------------------------------------------------------- /unknown1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/unknown1.png -------------------------------------------------------------------------------- /.config/eww/backend/bar/date.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | date +"%I:%M" 4 | -------------------------------------------------------------------------------- /wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/wallpaper.png -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/blueman.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | blueman-manager 4 | -------------------------------------------------------------------------------- /.config/eww/assets/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/.config/eww/assets/1.png -------------------------------------------------------------------------------- /.config/eww/assets/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/.config/eww/assets/a.png -------------------------------------------------------------------------------- /.config/eww/backend/misc/exec.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cd 4 | 5 | ${@} 2>&1 > /dev/null & 6 | -------------------------------------------------------------------------------- /.config/eww/assets/fallback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/.config/eww/assets/fallback.png -------------------------------------------------------------------------------- /.config/eww/assets/default-pfp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skearya/dots/HEAD/.config/eww/assets/default-pfp.png -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/workspaces.yuck: -------------------------------------------------------------------------------- 1 | (defwidget workspaces [] 2 | (literal :content workspaces) 3 | ) 4 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/workspaces.yuck: -------------------------------------------------------------------------------- 1 | (defwidget workspaces [] 2 | (literal :content workspaces) 3 | ) 4 | -------------------------------------------------------------------------------- /.config/eww/backend/powermenu/toggler.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | eww open-many --toggle powermenu-close powermenu 4 | -------------------------------------------------------------------------------- /.config/eww/README.md: -------------------------------------------------------------------------------- 1 | # notes 2 | 3 | Don't change manually the position of the eww bar, use the `position` script: 4 | 5 | ```sh 6 | ./position 7 | ``` 8 | -------------------------------------------------------------------------------- /.config/eww/backend/calendar/month.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | month=$(date +%m) 4 | month=$((month-1)) # for some reason eww gives the month as a zero-based integer 5 | 6 | echo $month -------------------------------------------------------------------------------- /.config/eww/top/store/main.yuck: -------------------------------------------------------------------------------- 1 | (include "top/store/bar.yuck") 2 | (include "top/store/calendar.yuck") 3 | (include "top/store/dashboard.yuck") 4 | (include "top/store/music.yuck") 5 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/cpu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | get_cpu () { 4 | top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1""}' 5 | } 6 | 7 | get_cpu 8 | -------------------------------------------------------------------------------- /.config/eww/bottom/store/main.yuck: -------------------------------------------------------------------------------- 1 | (include "bottom/store/bar.yuck") 2 | (include "bottom/store/calendar.yuck") 3 | (include "bottom/store/dashboard.yuck") 4 | (include "bottom/store/music.yuck") 5 | -------------------------------------------------------------------------------- /.config/eww/top/store/calendar.yuck: -------------------------------------------------------------------------------- 1 | (defpoll calendar_day :interval "10h" "date '+%d'") 2 | (defpoll calendar_month :interval "10h" "./backend/main.sh calendar.month") 3 | (defpoll calendar_year :interval "10h" "date '+%Y'") 4 | -------------------------------------------------------------------------------- /.config/eww/bottom/store/calendar.yuck: -------------------------------------------------------------------------------- 1 | (defpoll calendar_day :interval "10h" "date '+%d'") 2 | (defpoll calendar_month :interval "10h" "./backend/main.sh calendar.month") 3 | (defpoll calendar_year :interval "10h" "date '+%Y'") 4 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/date.yuck: -------------------------------------------------------------------------------- 1 | (defwidget date [] 2 | (button :class "date" 3 | :onclick "eww open --toggle dashboard" 4 | :tooltip "Press to open the dashboard" 5 | "${date} ${ampm}" 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/date.yuck: -------------------------------------------------------------------------------- 1 | (defwidget date [] 2 | (button :class "date" 3 | :onclick "eww open --toggle dashboard" 4 | :tooltip "Press to open the dashboard" 5 | "${date} ${ampm}" 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/updates.yuck: -------------------------------------------------------------------------------- 1 | (defwidget updates [] 2 | (box :class "updates" 3 | :space-evenly false 4 | :orientation "h" 5 | (label :text "" :class "icon") 6 | (label :text updates :class "content") 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/eww.yuck: -------------------------------------------------------------------------------- 1 | ;; store 2 | (include "top/store/main.yuck") 3 | 4 | ;; components 5 | (include "top/bar/bar.yuck") 6 | (include "top/powermenu/powermenu.yuck") 7 | (include "top/calendar/calendar.yuck") 8 | (include "top/dashboard/dashboard.yuck") 9 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/updates.yuck: -------------------------------------------------------------------------------- 1 | (defwidget updates [] 2 | (box :class "updates" 3 | :space-evenly false 4 | :orientation "h" 5 | (label :text "" :class "icon") 6 | (label :text updates :class "content") 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/top/eww.yuck: -------------------------------------------------------------------------------- 1 | ;; store 2 | (include "top/store/main.yuck") 3 | 4 | ;; components 5 | (include "top/bar/bar.yuck") 6 | (include "top/powermenu/powermenu.yuck") 7 | (include "top/calendar/calendar.yuck") 8 | (include "top/dashboard/dashboard.yuck") 9 | -------------------------------------------------------------------------------- /.config/eww/backend/main.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | query=$1 4 | argv=$(echo ${@} | sed "s/$query//g") 5 | filename=$(echo $query | sed 's/\./\//g') 6 | filename=$(echo $filename.sh) 7 | 8 | cd $HOME/.config/eww/backend 9 | 10 | ./$filename $argv 11 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/position.yuck: -------------------------------------------------------------------------------- 1 | (defwidget position [] 2 | (button :class "position-toggler" 3 | :orientation "h" 4 | :tooltip "Switch bar position to top" 5 | :onclick "~/.config/eww/position toggle" 6 | "" 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/position.yuck: -------------------------------------------------------------------------------- 1 | (defwidget position [] 2 | (button :class "position-toggler" 3 | :orientation "h" 4 | :tooltip "Switch bar position to bottom" 5 | :onclick "~/.config/eww/position toggle" 6 | "" 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/bottom/eww.yuck: -------------------------------------------------------------------------------- 1 | ;; store 2 | (include "bottom/store/main.yuck") 3 | 4 | ;; components 5 | (include "bottom/bar/bar.yuck") 6 | (include "bottom/powermenu/powermenu.yuck") 7 | (include "bottom/calendar/calendar.yuck") 8 | (include "bottom/dashboard/dashboard.yuck") 9 | -------------------------------------------------------------------------------- /.config/eww/eww.scss: -------------------------------------------------------------------------------- 1 | @import "global/main.scss"; 2 | @import "global/colors.scss"; 3 | 4 | // components styling 5 | @import "top/bar/bar.scss"; 6 | @import "top/powermenu/powermenu.scss"; 7 | @import "top/calendar/calendar.scss"; 8 | @import "top/dashboard/dashboard.scss"; 9 | -------------------------------------------------------------------------------- /.config/eww/global/main.scss: -------------------------------------------------------------------------------- 1 | * { 2 | all: unset; 3 | } 4 | 5 | .hide { 6 | background-color: transparent; 7 | color: transparent; 8 | font-size: 0px; 9 | &:hover { background-color: transparent; } 10 | &:active { background-color: transparent; } 11 | } 12 | -------------------------------------------------------------------------------- /.config/eww/top/eww.scss: -------------------------------------------------------------------------------- 1 | @import "global/main.scss"; 2 | @import "global/colors.scss"; 3 | 4 | // components styling 5 | @import "top/bar/bar.scss"; 6 | @import "top/powermenu/powermenu.scss"; 7 | @import "top/calendar/calendar.scss"; 8 | @import "top/dashboard/dashboard.scss"; 9 | -------------------------------------------------------------------------------- /.config/eww/bottom/eww.scss: -------------------------------------------------------------------------------- 1 | @import "global/main.scss"; 2 | @import "global/colors.scss"; 3 | 4 | // components styling 5 | @import "bottom/bar/bar.scss"; 6 | @import "bottom/powermenu/powermenu.scss"; 7 | @import "bottom/calendar/calendar.scss"; 8 | @import "bottom/dashboard/dashboard.scss"; 9 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/launcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget launcher [] 2 | (button :class "launcher" 3 | :orientation "h" 4 | :onclick "backend/main.sh misc.exec rofi -show drun" 5 | :tooltip "Launch applications" 6 | (label :text "異" :class "content") 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/launcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget launcher [] 2 | (button :class "launcher" 3 | :orientation "h" 4 | :onclick "backend/main.sh misc.exec rofi -show drun" 5 | :tooltip "Launch applications" 6 | (label :text "異" :class "content") 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/backend/music/control.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $1 == "prev" ]]; then 4 | playerctl -p spotify previous 5 | fi 6 | 7 | if [[ $1 == "play-pause" ]]; then 8 | playerctl -p spotify play-pause 9 | fi 10 | 11 | if [[ $1 == "next" ]]; then 12 | playerctl -p spotify next 13 | fi 14 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/pfp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | declare -a profiles_photos=("$HOME/.face.jpg" "$HOME/.face.png") 4 | 5 | for pfp in ${profiles_photos[@]}; do 6 | if test -f $pfp; then 7 | echo $pfp 8 | exit 0 9 | fi 10 | done 11 | 12 | echo $HOME/.config/eww/assets/default-pfp.png 13 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/music-dispatcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget music-dispatcher [] 2 | (button :class "${is_music_running == 'no' ? 'hide' : 'music-dispatcher'}" 3 | :orientation "h" 4 | :tooltip "Spotify is running! Enjoy :3" 5 | :onclick "backend/main.sh bar.music get-spotify-info" 6 | "" 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/powermenu-dispatcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget powermenu-dispatcher [] 2 | (button :class "powermenu-dispatcher" 3 | :orientation "h" 4 | :space-evenly false 5 | :tooltip "Press to open powermenu" 6 | :onclick "backend/main.sh powermenu.toggler" 7 | "⏻" 8 | ) 9 | ) 10 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/music-dispatcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget music-dispatcher [] 2 | (button :class "${is_music_running == 'no' ? 'hide' : 'music-dispatcher'}" 3 | :orientation "h" 4 | :tooltip "Spotify is running! Enjoy :3" 5 | :onclick "backend/main.sh bar.music get-spotify-info" 6 | "" 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/powermenu-dispatcher.yuck: -------------------------------------------------------------------------------- 1 | (defwidget powermenu-dispatcher [] 2 | (button :class "powermenu-dispatcher" 3 | :orientation "h" 4 | :space-evenly false 5 | :tooltip "Press to open powermenu" 6 | :onclick "backend/main.sh powermenu.toggler" 7 | "⏻" 8 | ) 9 | ) 10 | -------------------------------------------------------------------------------- /.config/eww/backend/music/songdata.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $1 == "title" ]]; then 4 | playerctl -p spotify metadata --format "{{title}}" || echo "Not playing" 5 | fi 6 | 7 | if [[ $1 == "artist" ]]; then 8 | playerctl -p spotify metadata --format "{{artist}}" || echo "No artist" 9 | fi 10 | 11 | if [[ $1 == "status" ]]; then 12 | playerctl -p spotify status 13 | fi 14 | -------------------------------------------------------------------------------- /.config/rofi/askpass.rasi: -------------------------------------------------------------------------------- 1 | @import "theme.rasi" 2 | 3 | * { 4 | font: "Dosis,Iosevka Nerd Font Bold 15"; 5 | background-color: @bg-col; 6 | text-color: @fg-col; 7 | } 8 | 9 | window { 10 | width: 15em; 11 | padding: 1em; 12 | location: center; 13 | } 14 | 15 | entry { 16 | expand: true; 17 | width: 5em; 18 | text-color: @fg-col2; 19 | } 20 | 21 | // vim:filetype=rasi 22 | -------------------------------------------------------------------------------- /.config/eww/top/store/music.yuck: -------------------------------------------------------------------------------- 1 | (defpoll music_art_url :interval "1s" "backend/main.sh music.songart echo") 2 | (defpoll music_art_url_getter :interval "2s" "backend/main.sh music.songart get") 3 | (defpoll music_title :interval "1s" "backend/main.sh music.songdata title") 4 | (defpoll music_artist :interval "1s" "backend/main.sh music.songdata artist") 5 | (defpoll music_status :interval "1s" "backend/main.sh music.songdata status") 6 | -------------------------------------------------------------------------------- /.config/eww/bottom/store/music.yuck: -------------------------------------------------------------------------------- 1 | (defpoll music_art_url :interval "3s" "backend/main.sh music.songart echo") 2 | (defpoll music_art_url_getter :interval "3s" "backend/main.sh music.songart get") 3 | (defpoll music_title :interval "3s" "backend/main.sh music.songdata title") 4 | (defpoll music_artist :interval "3s" "backend/main.sh music.songdata artist") 5 | (defpoll music_status :interval "3s" "backend/main.sh music.songdata status") 6 | -------------------------------------------------------------------------------- /.config/polybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Terminate already running bar instances 4 | killall -q polybar 5 | # If all your bars have ipc enabled, you can also use 6 | # polybar-msg cmd quit 7 | 8 | # Launch bar1 and bar2 9 | echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log 10 | #polybar black >>/tmp/polybar1.log 2>&1 & disown 11 | polybar example -r >>/tmp/polybar1.log 2>&1 & disown 12 | echo "Bars launched..." 13 | -------------------------------------------------------------------------------- /.config/rofi/theme.rasi: -------------------------------------------------------------------------------- 1 | // This file has been generated by regen.py 2 | // Changes may be overwritten the next time 3 | // configs are re-generated 4 | 5 | * { 6 | bg-col: #13181d; 7 | bg-col-light: #151a1f; 8 | border-col: #191e23; 9 | selected-col: #161b20; 10 | blue: #79dcaa; 11 | fg-col: #d4d4d5; 12 | fg-col2: #7ab0df; 13 | grey: #b77ee0; 14 | red: #f87070; 15 | } 16 | 17 | // vim:filetype=rasi 18 | -------------------------------------------------------------------------------- /.config/eww/scripts/bluetooth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | status=$(bluetoothctl show | grep "Powered:") 4 | 5 | case $1 in 6 | "status") 7 | [ "${status##* }" = "yes" ] && icon="" || icon="" 8 | echo $icon ;; 9 | "device") 10 | [ "${status##* }" = "yes" ] && text="Bluetooth" || text="Bluetooth" 11 | echo $text ;; 12 | "power") 13 | [ "${status##* }" = "yes" ] && bluetoothctl power off || bluetoothctl power on ;; 14 | esac 15 | -------------------------------------------------------------------------------- /.config/eww/open.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Opens eww system tray 3 | 4 | LOCK_FILE="$HOME/.cache/eww-sys.lock" 5 | EWW_BIN="/usr/bin/eww" 6 | 7 | run() { 8 | ${EWW_BIN} open-many dashboard 9 | } 10 | 11 | # Run eww daemon if not running 12 | if [[ ! `pidof eww` ]]; then 13 | ${EWW_BIN} daemon 14 | sleep 1 15 | fi 16 | 17 | # Open widgets 18 | if [[ ! -f "$LOCK_FILE" ]]; then 19 | touch "$LOCK_FILE" 20 | run 21 | else 22 | ${EWW_BIN} close dashboard 23 | rm "$LOCK_FILE" 24 | fi 25 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/user.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | name () { 4 | username=$(whoami) 5 | echo ${username^} 6 | } 7 | 8 | os () { 9 | . /etc/os-release 10 | echo $PRETTY_NAME 11 | } 12 | 13 | kernel () { 14 | kernelname=$(uname) 15 | kernelvers=$(uname -r) 16 | echo "${kernelname} ${kernelvers}" 17 | } 18 | 19 | if [[ $1 == "name" ]]; then 20 | name 21 | fi 22 | 23 | if [[ $1 == "os" ]]; then 24 | os 25 | fi 26 | 27 | if [[ $1 == "kernel" ]]; then 28 | kernel 29 | fi 30 | -------------------------------------------------------------------------------- /.config/eww/bottom/calendar/calendar.yuck: -------------------------------------------------------------------------------- 1 | (defwindow calendar 2 | :geometry (geometry :x "0" 3 | :y "64px" 4 | :width "270px" 5 | :height "60px" 6 | :anchor "center top") 7 | (cal)) 8 | 9 | (defwidget cal [] 10 | (box :class "cal-box" 11 | :orientation "v" 12 | (calendar :class "cal" 13 | :day calendar_day 14 | :month calendar_month 15 | :year calendar_year) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /.config/eww/top/calendar/calendar.yuck: -------------------------------------------------------------------------------- 1 | (defwindow calendar 2 | :geometry (geometry :x "0" 3 | :y "64px" 4 | :width "270px" 5 | :height "60px" 6 | :anchor "center top") 7 | (cal)) 8 | 9 | (defwidget cal [] 10 | (box :class "cal-box" 11 | :orientation "v" 12 | (calendar :class "cal" 13 | :day calendar_day 14 | :month calendar_month 15 | :year calendar_year) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /.config/eww/backend/powermenu/manager.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # i'm using doas, change the next commands to your commands 4 | # if you're using doas too, add the next to `/etc/doas.conf` 5 | 6 | # permit nopass :wheel cmd poweroff 7 | # permit nopass :wheel cmd reboot 8 | 9 | # then create the group wheel, and add your user to that group 10 | 11 | if [[ $1 == "shutdown" ]]; then 12 | doas poweroff 13 | elif [[ $1 == "reboot" ]]; then 14 | doas reboot 15 | elif [[ $1 == "logout" ]]; then 16 | bspc quit 17 | fi 18 | -------------------------------------------------------------------------------- /.config/alacritty/#fonts.yml: -------------------------------------------------------------------------------- 1 | font: 2 | normal: 3 | family: "Operator Mono" 4 | style: Medium 5 | 6 | # Bold font face 7 | bold: 8 | family: "Operator Mono" 9 | style: Bold 10 | 11 | # Italic font face 12 | italic: 13 | family: "Operator Mono" 14 | style: Medium Italic 15 | 16 | # Bold italic font face 17 | bold_italic: 18 | family: "Operator Mono" 19 | style: Bold Italic 20 | 21 | # Point size 22 | size: 8.5 23 | 24 | # Offset 25 | #offset: 26 | # x: 0 27 | # y: 0 28 | 29 | # Glyph offset 30 | #glyph_offset: 31 | # x: 0 32 | # y: 0 33 | -------------------------------------------------------------------------------- /.config/eww/top/bar/widgets/syscontrol.yuck: -------------------------------------------------------------------------------- 1 | (defwidget syscontrol [] 2 | (box :class "syscontrol" 3 | :orientation "h" 4 | :space-evenly false 5 | (button :class "network" 6 | :orientation "h" 7 | :tooltip "${network_name} (Press to open nmtui)" 8 | :onclick "st -c network -e ~/.local/bin/lessborder nmtui" 9 | network_icon 10 | ) 11 | (button :class "volume" 12 | :orientation "h" 13 | :tooltip "Volume: ${volume_percentage} (Press to open pavucontrol)" 14 | :onclick "pavucontrol" 15 | volume_icon 16 | ) 17 | ) 18 | ) 19 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/widgets/syscontrol.yuck: -------------------------------------------------------------------------------- 1 | (defwidget syscontrol [] 2 | (box :class "syscontrol" 3 | :orientation "h" 4 | :space-evenly false 5 | (button :class "network" 6 | :orientation "h" 7 | :tooltip "${network_name} (Press to open nmtui)" 8 | :onclick "st -c network -e ~/.local/bin/lessborder nmtui" 9 | network_icon 10 | ) 11 | (button :class "volume" 12 | :orientation "h" 13 | :tooltip "Volume: ${volume_percentage} (Press to open pavucontrol)" 14 | :onclick "pavucontrol" 15 | volume_icon 16 | ) 17 | ) 18 | ) 19 | -------------------------------------------------------------------------------- /.config/eww/backend/bar/updates.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # updates script, feel free to add support to your favorite operative system 4 | 5 | # config 6 | 7 | no_updates_text="Updated!" 8 | # no_updates_text="0" 9 | 10 | sufix=" Updates" 11 | # sufix="" 12 | 13 | updates=$(xbps-install -un | wc -l) # for void linux, don't need anything 14 | # updates=$(checkupdates | wc -l) # for arch linux, needs pacman contrib 15 | # updates=$(aptitude search '~U' | wc -l) # debian based, apt, needs aptitude 16 | 17 | # prog 18 | 19 | if [[ $updates == "0" ]]; then 20 | echo $no_updates_text 21 | exit 0 22 | fi 23 | 24 | echo "${updates}${sufix}" 25 | -------------------------------------------------------------------------------- /.config/eww/backend/bar/music.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function backend () { 4 | $HOME/.config/eww/backend/main.sh ${@} 5 | } 6 | 7 | function is_running () { 8 | output=$(echo $(playerctl -p spotify status 2>&1 > /dev/null)) 9 | if [[ $output == "No players found" || $output == "No player could handle this command" ]]; then 10 | echo no 11 | else 12 | echo yes 13 | fi 14 | } 15 | 16 | if [[ $1 == "is_running" ]]; then 17 | is_running 18 | fi 19 | 20 | if [[ $1 == "get-spotify-info" ]]; then 21 | title=$(backend music.songdata title) 22 | artist=$(backend music.songdata artist) 23 | notify-send "$title" "By $artist" 24 | fi 25 | -------------------------------------------------------------------------------- /.config/eww/global/colors.scss: -------------------------------------------------------------------------------- 1 | $darkbg: #0e1217; 2 | $bg: #101313; 3 | $contrastbg: #15191e; 4 | $bgSecondary: #1a1e23; 5 | $bgSecondaryAlt: #b6beca; 6 | $fg: #b6beca; 7 | $fgDim: #b6beca; 8 | $watermelon: #e05f65; 9 | 10 | // Aliases 11 | $background: $bg; 12 | $backgroundSecondary: $bgSecondary; 13 | $backgroundSecondaryAlt: $bgSecondaryAlt; 14 | $foreground: $fg; 15 | $foregroundDim: $fgDim; 16 | 17 | $black: #1C252C; 18 | $lightblack: #485263; 19 | $red: #e05f65; 20 | $blue: #70a5eb; 21 | $cyan: #74bee9; 22 | $blue-desaturated: #74bee9; 23 | $magenta: #a07dde; 24 | $purple: #c68aee; 25 | $green: #2ac68e; 26 | $aquamarine: #78dba9; 27 | $yellow: #f1cf8a; 28 | $accent: $blue; 29 | $javacafeMagenta: #c68aee; 30 | $javacafeBlue: #70a5eb; 31 | -------------------------------------------------------------------------------- /.config/alacritty/#colors.yml: -------------------------------------------------------------------------------- 1 | # Colors (Tokyo Night) 2 | # Source: https://github.com/zatchheems/tokyo-night-alacritty-theme 3 | colors: 4 | # Default colors 5 | primary: 6 | background: '#02131a' 7 | foreground: '#b5e8e0' 8 | 9 | # Normal colors 10 | normal: 11 | black: '#1a1b26' 12 | red: '#653945' 13 | green: '#3c4349' 14 | yellow: '#4c4c53' 15 | blue: '#695861' 16 | magenta: '#88374a' 17 | cyan: '#985965' 18 | white: '#bcb4b9' 19 | 20 | # Bright colors 21 | bright: 22 | black: '#837d81' 23 | red: '#653945' 24 | green: '#3c4349' 25 | yellow: '#4c4c53' 26 | blue: '#695861' 27 | magenta: '#88374a' 28 | cyan: '#985965' 29 | white: '#bcb4b9' 30 | -------------------------------------------------------------------------------- /.config/eww/bottom/store/bar.yuck: -------------------------------------------------------------------------------- 1 | ; workspaces 2 | (deflisten workspaces "backend/main.sh bar.workspaces") 3 | 4 | ; music dispatcher 5 | (defpoll is_music_running :interval "1s" "backend/main.sh bar.music is_running") 6 | 7 | ; misc 8 | (defpoll date :interval "60s" "backend/main.sh bar.date") 9 | (defpoll ampm :interval "60s" "date +%p") 10 | (defpoll updates :interval "120s" "backend/main.sh bar.updates") 11 | 12 | ; network 13 | (defpoll network_icon :interval "1s" "backend/main.sh bar.network icon") 14 | (defpoll network_name :interval "1s" "backend/main.sh bar.network name") 15 | 16 | ; volume 17 | (defpoll volume_icon :interval "1s" "backend/main.sh bar.volume icon") 18 | (defpoll volume_percentage :interval "1s" "backend/main.sh bar.volume percentage") 19 | -------------------------------------------------------------------------------- /.config/eww/top/store/bar.yuck: -------------------------------------------------------------------------------- 1 | ; workspaces 2 | (deflisten workspaces "backend/main.sh bar.workspaces") 3 | 4 | ; music dispatcher 5 | (defpoll is_music_running :interval "1s" "backend/main.sh bar.music is_running") 6 | 7 | ; misc 8 | (defpoll date :interval "60s" "backend/main.sh bar.date") 9 | (defpoll ampm :interval "60s" "date +%p") 10 | (defpoll updates :interval "120s" "backend/main.sh bar.updates") 11 | 12 | ; network 13 | (defpoll network_icon :interval "1s" "backend/main.sh bar.network icon") 14 | (defpoll network_name :interval "1s" "backend/main.sh bar.network name") 15 | 16 | ; volume 17 | (defpoll volume_icon :interval "1s" "backend/main.sh bar.volume icon") 18 | (defpoll volume_percentage :interval "1s" "backend/main.sh bar.volume percentage") 19 | -------------------------------------------------------------------------------- /.config/eww/top/calendar/calendar.scss: -------------------------------------------------------------------------------- 1 | .cal-box { 2 | font-family: Product Sans; 3 | background-color: $bg; 4 | border-radius: 8px; 5 | padding: 0 1rem .2rem; 6 | color: $fg; 7 | 8 | .cal { 9 | background-color: inherit; 10 | padding: .5rem .10rem 0rem; 11 | margin-left: 10px; 12 | 13 | & > * { 14 | border: solid 0px transparent; 15 | } 16 | 17 | &.highlight { 18 | padding: 10rem; 19 | } 20 | } 21 | } 22 | 23 | calendar:selected { 24 | color: $accent; 25 | } 26 | 27 | calendar.header { 28 | color: $cyan; 29 | font-weight: bold; 30 | } 31 | 32 | calendar.button { 33 | color: $cyan; 34 | } 35 | 36 | calendar.highlight { 37 | color: $green; 38 | font-weight: bold; 39 | } 40 | 41 | calendar:indeterminate { 42 | color: $fgDim; 43 | } 44 | -------------------------------------------------------------------------------- /.config/eww/bottom/calendar/calendar.scss: -------------------------------------------------------------------------------- 1 | .cal-box { 2 | font-family: Product Sans; 3 | background-color: $bg; 4 | border-radius: 8px; 5 | padding: 0 1rem .2rem; 6 | color: $fg; 7 | 8 | .cal { 9 | background-color: inherit; 10 | padding: .5rem .10rem 0rem; 11 | margin-left: 10px; 12 | 13 | & > * { 14 | border: solid 0px transparent; 15 | } 16 | 17 | &.highlight { 18 | padding: 10rem; 19 | } 20 | } 21 | } 22 | 23 | calendar:selected { 24 | color: $accent; 25 | } 26 | 27 | calendar.header { 28 | color: $cyan; 29 | font-weight: bold; 30 | } 31 | 32 | calendar.button { 33 | color: $cyan; 34 | } 35 | 36 | calendar.highlight { 37 | color: $green; 38 | font-weight: bold; 39 | } 40 | 41 | calendar:indeterminate { 42 | color: $fgDim; 43 | } 44 | -------------------------------------------------------------------------------- /.config/eww/top/dashboard/New Empty File: -------------------------------------------------------------------------------- 1 | (button :class "redshift widget ${dashboard_redshift_state == 'on' ? 'activated' : 'deactivated'}" 2 | :orientation "v" 3 | :space-evenly false 4 | :hexpand true 5 | :onclick "backend/main.sh dashboard.redshift toggle" 6 | (box :space-evenly false 7 | :orientation "v" 8 | (label :text "ﯦ" :class "icon") 9 | (label :text "Blue Light" :class "content") 10 | ) 11 | ) 12 | 13 | 14 | .controls { 15 | background-color: $contrastbg; 16 | border-radius: $radius; 17 | font-family: Iosevka Nerd Font; 18 | font-size: 20px; 19 | margin: 0px 0px 0px 10px; 20 | padding: 9px 20px; 21 | .pause { 22 | padding: 5px 7px 4px 2px; 23 | font-size: 16px; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | # config by Evan Koehler 2 | 3 | window: 4 | # adds padding to the terminal (looks great with rounded corners) 5 | padding: 6 | x: 10 7 | y: 10 8 | 9 | # sets background opacity to 0.1 (10%) 10 | opacity: 0.8 11 | 12 | font: 13 | # I'm using JetBrains fonts, which I recommend, but feel free to edit it ! 14 | normal: 15 | style: Medium 16 | family: JetBrains Mono Nerd Font 17 | # sets font size to 14px 18 | size: 9.9 19 | 20 | colors: 21 | # sets background color to light gray (#eee) and font color to white (#fff) 22 | primary: 23 | background: '#101313' 24 | foreground: '#ffffff' 25 | 26 | #shell: 27 | # sets my shell at startup (mine is fish but do not hesitate to put yours instead) 28 | # program: /bin/fish 29 | # args: 30 | # - --login 31 | 32 | cursor: 33 | style: 34 | shape: Beam 35 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/ram.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | percentage () { 4 | local val=$(echo $1 | tr '%' ' ' | awk '{print $1}') 5 | local icon1=$2 6 | local icon2=$3 7 | local icon3=$4 8 | local icon4=$5 9 | if [ "$val" -le 15 ]; then 10 | echo $icon1 11 | elif [ "$val" -le 30 ]; then 12 | echo $icon2 13 | elif [ "$val" -le 60 ]; then 14 | echo $icon3 15 | else 16 | echo $icon4 17 | fi 18 | } 19 | 20 | get_ram () { 21 | free -m | grep Mem | awk '{print ($3/$2)*100}' | tr '.' ' ' | awk '{print $1}' 22 | } 23 | 24 | get_percent () { 25 | echo $(get_ram)% 26 | } 27 | 28 | get_class () { 29 | local percent=$(get_percent) 30 | echo $(percentage "$percent" "yellow" "magenta" "purple" "red") 31 | } 32 | 33 | if [[ $1 == "ram" ]]; then 34 | get_ram 35 | fi 36 | 37 | if [[ $1 == "percent" ]]; then 38 | get_percent 39 | fi 40 | 41 | if [[ $1 == "class" ]]; then 42 | get_class 43 | fi 44 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/brightness.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # @requires: brightnessctl 4 | 5 | percentage () { 6 | local val=$(echo $1 | tr '%' ' ' | awk '{print $1}') 7 | local icon1=$2 8 | local icon2=$3 9 | local icon3=$4 10 | local icon4=$5 11 | if [ "$val" -le 15 ]; then 12 | echo $icon1 13 | elif [ "$val" -le 30 ]; then 14 | echo $icon2 15 | elif [ "$val" -le 60 ]; then 16 | echo $icon3 17 | else 18 | echo $icon4 19 | fi 20 | } 21 | 22 | get_brightness () { 23 | (( br = $(brightnessctl get) * 100 / $(brightnessctl max) )) 24 | echo $br 25 | } 26 | 27 | get_percent () { 28 | echo $(get_brightness)% 29 | } 30 | 31 | get_icon () { 32 | local br=$(get_percent) 33 | echo $(percentage "$br" "" "" "" "") 34 | } 35 | 36 | if [[ $1 == "br" ]]; then 37 | get_brightness 38 | fi 39 | 40 | if [[ $1 == "percent" ]]; then 41 | get_percent 42 | fi 43 | 44 | if [[ $1 == "icon" ]]; then 45 | get_icon 46 | fi -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/light_mode.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | LIGHT_THEME='light-decay' 4 | DARK_THEME='dark-decay' 5 | status=$(bluetoothctl show | grep "Powered:") 6 | 7 | get_theme () { 8 | # create if neccesary the file that define the actual theme by themer 9 | local actual_theme_file="$HOME/.config/themes/actual_theme" 10 | if ! test -f $actual_theme_file; then 11 | echo $DARK_THEME > $actual_theme_file 12 | fi 13 | cat $actual_theme_file 14 | } 15 | 16 | get_status () { 17 | [ "${status##* }" = "yes" ] && icon="on" || icon="off" 18 | echo $icon 19 | } 20 | 21 | switch_to () { 22 | local theme=$1 23 | ~/.local/bin/themer -s "$theme" 24 | } 25 | 26 | toggle () { 27 | local status=$(get_status) 28 | if [[ $status == "on" ]]; then 29 | switch_to $DARK_THEME 30 | else 31 | switch_to $LIGHT_THEME 32 | fi 33 | } 34 | 35 | if [[ $1 == "status" ]]; then 36 | get_status 37 | fi 38 | 39 | if [[ $1 == "toggle" ]]; then 40 | toggle 41 | fi 42 | -------------------------------------------------------------------------------- /.config/eww/backend/music/songart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | get_song_art () { 4 | tmp_dir="$HOME/.cache/eww/spotify" 5 | tmp_cover_path=$tmp_dir/cover.png 6 | tmp_temp_path=$tmp_dir/temp.png 7 | 8 | if [ ! -d $tmp_dir ]; then 9 | mkdir -p $tmp_dir 10 | fi 11 | 12 | artlink="$(playerctl -p spotify metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g')" 13 | 14 | if [ $(playerctl -p spotify metadata mpris:artUrl) ]; then 15 | curl -s "$artlink" --output $tmp_temp_path 16 | else 17 | cp $HOME/.config/eww/assets/fallback.png $tmp_temp_path 18 | fi 19 | 20 | # an epic effekt 21 | convert $tmp_temp_path -alpha set -channel A -evaluate multiply 0.3 $tmp_cover_path 22 | convert $tmp_temp_path -gravity center +repage -alpha set -channel A \ 23 | -sparse-color Barycentric '%[fx:w+0.5],0 opaque %[fx:w*2/32],0 transparent' \ 24 | -evaluate multiply 0.5 \ 25 | $tmp_cover_path 26 | } 27 | 28 | echo_song_art_url () { 29 | echo "$HOME/.cache/eww/spotify/cover.png" 30 | } 31 | 32 | if [[ $1 == "echo" ]]; then 33 | echo_song_art_url 34 | fi 35 | 36 | if [[ $1 == "get" ]]; then 37 | get_song_art 38 | fi 39 | -------------------------------------------------------------------------------- /.config/eww/bottom/store/dashboard.yuck: -------------------------------------------------------------------------------- 1 | ;; +-info-+ 2 | (defpoll pfp :interval "120s" "backend/main.sh dashboard.pfp") 3 | (defpoll username :interval "120s" "backend/main.sh dashboard.user name") 4 | 5 | ;; date widget 6 | (defpoll dashboard_date_day :interval "60s" "date '+%A, %B %d'") 7 | 8 | ;; +-services-+ (and yes, i'm reutilizing the scripts that are in `bar` lol) 9 | 10 | ;; -- network 11 | (defpoll dashboard_network_radio_status :interval "1s" "backend/main.sh bar.network radio-status") 12 | (defpoll dashboard_light_mode_status :interval "1s" "backend/main.sh dashboard.light_mode status") 13 | (defpoll dashboard_redshift_state :interval "1s" "backend/main.sh dashboard.redshift state") 14 | 15 | ;; +-controls-+ 16 | 17 | ;; volume 18 | (defpoll vol :interval "1s" "backend/main.sh bar.volume vol") 19 | 20 | ;; brightness 21 | (defpoll br_icon :interval "1s" "backend/main.sh dashboard.brightness icon") 22 | (defpoll br :interval "1s" "backend/main.sh dashboard.brightness br") 23 | 24 | ;; +-stats-+ 25 | 26 | ;; cpu 27 | (defpoll cpu :interval "5s" "backend/main.sh dashboard.cpu") 28 | 29 | ;; ram 30 | (defpoll ram :interval "5s" "backend/main.sh dashboard.ram ram") 31 | -------------------------------------------------------------------------------- /.config/rofi/shot.rasi: -------------------------------------------------------------------------------- 1 | @import"theme.rasi" 2 | 3 | window { 4 | font: "Dosis,feather Bold 16"; 5 | transparency: "real"; 6 | background-color: @bg-col; 7 | text-color: @fg-col; 8 | border-color: @selected-col; 9 | width: 4em; 10 | x-offset: 31.4em; 11 | } 12 | 13 | textbox-prompt-colon, entry, prompt, inputbar { 14 | enabled: false; 15 | } 16 | 17 | listview { 18 | background-color: @bg-col; 19 | columns: 1; 20 | lines: 5; 21 | spacing: 0.2em; 22 | cycle: false; 23 | layout: vertical; 24 | } 25 | 26 | mainbox { 27 | background-color: @bg-col; 28 | spacing: 0.15em; 29 | padding: 0.38em; 30 | } 31 | 32 | element { 33 | background-color: @bg-col; 34 | text-color: @fg-col; 35 | orientation: horizontal; 36 | border-color: @selected-col; 37 | padding: 1em; 38 | } 39 | 40 | element-icon { 41 | background-color: inherit; 42 | text-color: inherit; 43 | enabled: false; 44 | } 45 | 46 | element-text { 47 | background-color: inherit; 48 | text-color: inherit; 49 | font: "feather Bold 25"; 50 | expand: true; 51 | } 52 | 53 | element selected { 54 | background-color: @border-col; 55 | text-color: @fg-col2; 56 | } 57 | 58 | -------------------------------------------------------------------------------- /.config/eww/scripts/!getWeather: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | KEY="4f3dbfa8f33f2458cde8b4e3dec2ba98" 4 | CITY="30144" 5 | 6 | weather=$(curl --connect-timeout 4 -sf "api.openweathermap.org/data/2.5/weather?q=$CITY&appid=$KEY&units=metric") 7 | weather_desc=$(echo $weather | jq -r ".weather[0].main") 8 | weather_temp=$(echo $weather | jq ".main.temp" | cut -d "." -f 1) 9 | feels_like=$(echo $weather | jq ".main.feels_like" | cut -d "." -f 1) 10 | humidity=$(echo $weather | jq ".main.humidity") 11 | wind=$(echo $weather | jq ".wind.speed") 12 | 13 | check_if_empty() { 14 | if [ -z "$1" ]; then 15 | echo "-1" 16 | else 17 | echo "$1" 18 | fi 19 | } 20 | 21 | check_if_empty_text() { 22 | if [ -z "$1" ]; then 23 | echo "Not Available." 24 | else 25 | echo "$1" 26 | fi 27 | } 28 | 29 | case $1 in 30 | current_temp) 31 | check_if_empty $weather_temp 32 | ;; 33 | current_temp_fahrenheit) 34 | weather_temp=$((($weather_temp * 9 / 5) + 32)) 35 | check_if_empty $weather_temp 36 | ;; 37 | feels_like) 38 | check_if_empty $feels_like 39 | ;; 40 | weather_desc) 41 | check_if_empty_text $weather_desc 42 | ;; 43 | humidity) 44 | check_if_empty $humidity 45 | ;; 46 | wind) 47 | check_if_empty $wind 48 | ;; 49 | esac 50 | -------------------------------------------------------------------------------- /.config/eww/bottom/powermenu/powermenu.scss: -------------------------------------------------------------------------------- 1 | $radius: 10px; 2 | 3 | .powermenu { 4 | background-color: $darkbg; 5 | font-family: Iosevka Nerd Font; 6 | font-size: 55px; 7 | & button { 8 | transition: all ease .2s; 9 | padding: 30px 12px 30px 0px; 10 | background-color: $bg; 11 | &:hover { background-color: $contrastbg; } 12 | &:active { background-color: $bgSecondary; } 13 | } 14 | .toolbar { 15 | font-size: 14px; 16 | font-family: Product Sans; 17 | background-color: $bg; 18 | padding: 10px; 19 | .hint { 20 | color: $lightblack; 21 | } 22 | .close { 23 | font-family: Iosevka Nerd Font; 24 | padding: 0px 8px 0px 3px; 25 | margin: 0px 12px; 26 | color: $red; 27 | border-radius: 10px; 28 | } 29 | } 30 | .tip { 31 | padding: 10px 0px; 32 | background-color: $darkbg; 33 | font-size: 14px; 34 | .icon { 35 | color: $yellow; 36 | font-family: Iosevka Nerd Font; 37 | font-size: 16px; 38 | margin-right: 7px; 39 | } 40 | .label { 41 | color: $fg; 42 | font-family: Product Sans; 43 | } 44 | } 45 | } 46 | 47 | .powermenu-close { 48 | background-color: black; 49 | } 50 | 51 | .poweroff { color: $red; } 52 | .reboot { color: $magenta; } 53 | .logout { color: $yellow; } 54 | -------------------------------------------------------------------------------- /.config/eww/backend/bar/network.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | symbol() { 4 | [ $(cat /sys/class/net/w*/operstate) = down ] && echo 睊 && exit 5 | echo  6 | } 7 | 8 | name() { 9 | iwgetid -r 10 | } 11 | 12 | [ "$1" = "icon" ] && symbol 13 | 14 | if [[ $1 == "name" || $1 == "class" ]]; then 15 | wifiname=$(name) 16 | if [[ $wifiname == "" ]]; then 17 | if [[ $1 == "name" ]]; then 18 | echo "Disconnected" 19 | elif [[ $1 == "class" ]]; then 20 | echo "disconnected" 21 | fi 22 | else 23 | if [[ $1 == "name" ]]; then 24 | echo "Connected to $wifiname" 25 | elif [[ $1 == "class" ]]; then 26 | echo "connected" 27 | fi 28 | fi 29 | fi 30 | 31 | if [[ $1 == "status" ]]; then 32 | name=$(name) 33 | if [[ $name != "Disconnected" ]]; then 34 | echo "Connected" 35 | else 36 | echo $name 37 | fi 38 | fi 39 | 40 | radio_status () { 41 | radio_status=$(nmcli radio wifi) 42 | if [[ $radio_status == "enabled" ]]; then 43 | echo "on" 44 | else 45 | 46 | echo "off" 47 | fi 48 | } 49 | 50 | if [[ $1 == "radio-status" ]]; then 51 | radio_status 52 | fi 53 | 54 | if [[ $1 == "toggle-radio" ]]; then 55 | stat=$(radio_status) 56 | if [[ $stat == "on" ]]; then 57 | nmcli radio wifi off 58 | else 59 | nmcli radio wifi on 60 | fi 61 | fi 62 | -------------------------------------------------------------------------------- /.config/eww/top/powermenu/powermenu.scss: -------------------------------------------------------------------------------- 1 | $radius: 10px; 2 | 3 | .powermenu { 4 | background-color: $darkbg; 5 | font-family: Iosevka Nerd Font; 6 | font-size: 55px; 7 | & button { 8 | transition: all ease .2s; 9 | padding: 30px 12px 30px 0px; 10 | background-color: $bg; 11 | &:hover { background-color: $contrastbg; } 12 | &:active { background-color: $bgSecondary; } 13 | } 14 | .toolbar { 15 | font-size: 14px; 16 | font-family: Product Sans; 17 | background-color: $bg; 18 | padding: 10px; 19 | .hint { 20 | color: $lightblack; 21 | } 22 | .close { 23 | font-family: Iosevka Nerd Font; 24 | padding: 0px 8px 0px 3px; 25 | margin: 0px 12px; 26 | color: $red; 27 | border-radius: 10px; 28 | } 29 | } 30 | .tip { 31 | padding: 10px 0px; 32 | background-color: $darkbg; 33 | font-size: 14px; 34 | .icon { 35 | color: $yellow; 36 | font-family: Iosevka Nerd Font; 37 | font-size: 16px; 38 | margin-right: 7px; 39 | } 40 | .label { 41 | color: $fg; 42 | font-family: Product Sans; 43 | } 44 | } 45 | } 46 | 47 | .powermenu-close { 48 | background-color: black; 49 | } 50 | 51 | .poweroff { color: $red; font-size: 50px; } 52 | .reboot { color: $magenta; font-size: 60px; } 53 | .logout { color: $yellow; font-size: 50px; } 54 | -------------------------------------------------------------------------------- /.config/polybar/scripts/pop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BAR_HEIGHT=12 # polybar height 4 | BORDER_SIZE=1 # border size from your wm settings 5 | YAD_WIDTH=222 # 222 is minimum possible value 6 | YAD_HEIGHT=193 # 193 is minimum possible value 7 | DATE="$(date +"%a %d %H:%M")" 8 | 9 | case "$1" in 10 | --popup) 11 | if [ "$(xdotool getwindowfocus getwindowname)" = "yad-calendar" ]; then 12 | exit 0 13 | fi 14 | 15 | eval "$(xdotool getmouselocation --shell)" 16 | eval "$(xdotool getdisplaygeometry --shell)" 17 | 18 | # X 19 | if [ "$((X + YAD_WIDTH / 2 + BORDER_SIZE))" -gt "$WIDTH" ]; then #Right side 20 | : $((pos_x = WIDTH - YAD_WIDTH - BORDER_SIZE)) 21 | elif [ "$((X - YAD_WIDTH / 2 - BORDER_SIZE))" -lt 0 ]; then #Left side 22 | : $((pos_x = BORDER_SIZE)) 23 | else #Center 24 | : $((pos_x = X - YAD_WIDTH / 2)) 25 | fi 26 | 27 | # Y 28 | if [ "$Y" -gt "$((HEIGHT / 2))" ]; then #Bottom 29 | : $((pos_y = HEIGHT - YAD_HEIGHT - BAR_HEIGHT - BORDER_SIZE)) 30 | else #Top 31 | : $((pos_y = BAR_HEIGHT + BORDER_SIZE)) 32 | fi 33 | 34 | yad --calendar --undecorated --fixed --close-on-unfocus --no-buttons \ 35 | --width="$YAD_WIDTH" --height="$YAD_HEIGHT" --posx="$pos_x" --posy="$pos_y" \ 36 | --title="yad-calendar" --borders=0 >/dev/null & 37 | ;; 38 | *) 39 | echo "$DATE" 40 | ;; 41 | esac 42 | -------------------------------------------------------------------------------- /.config/eww/backend/dashboard/redshift.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cache_file=$HOME/.cache/eww/services/redshift_state 4 | 5 | initial_hook () { 6 | if [ ! -d $(dirname $cache_file) ]; then 7 | mkdir $(dirname $cache_file) 8 | fi 9 | if [ ! -f $cache_file ]; then 10 | echo off > $cache_file 11 | fi 12 | } 13 | 14 | get_state () { 15 | # check if redshift is running 16 | cat $cache_file 17 | } 18 | 19 | disable_redshift () { 20 | redshift -x 2>&1 > /dev/null 21 | # saving state 22 | echo off > $cache_file 23 | } 24 | 25 | enable_redshift () { 26 | redshift -x 2>&1 > /dev/null 27 | redshift -O 7400 2>&1 > /dev/null 28 | # saving new state 29 | echo on > $cache_file 30 | } 31 | 32 | toggle () { 33 | local state=$(get_state) 34 | if [[ $state == "on" ]]; then 35 | # time to disable 36 | disable_redshift 37 | else 38 | # we should enable it 39 | enable_redshift 40 | fi 41 | } 42 | 43 | restore () { 44 | local state=$(get_state) 45 | disable_redshift 46 | if [[ $state == "on" ]]; then 47 | enable_redshift 48 | fi 49 | } 50 | 51 | initial_hook 52 | 53 | if [[ $1 == "state" ]]; then 54 | get_state 55 | fi 56 | 57 | if [[ $1 == "enable" ]]; then 58 | enable_redshift 59 | fi 60 | 61 | if [[ $1 == "disable" ]]; then 62 | disable_redshift 63 | fi 64 | 65 | if [[ $1 == "toggle" ]]; then 66 | toggle 67 | fi 68 | 69 | if [[ $1 == "restore" ]]; then 70 | restore 71 | fi 72 | -------------------------------------------------------------------------------- /Xresources: -------------------------------------------------------------------------------- 1 | Xft.antialias: 1 2 | Xft.hinting: 1 3 | Xft.autohint: 0 4 | Xft.hintstyle: hintslight 5 | Xft.rgba: rgb 6 | Xft.lcdfilter: lcddefault 7 | 8 | ! window padding 9 | st.borderpx: 20 10 | 11 | !-- values between 0.1 - 1.0 --! 12 | 13 | st.alpha: 1.0 14 | st.font: JetBrainsMono Nerd Font:style:medium:pixelsize=15 15 | 16 | #define base00 #282c34 17 | #define base01 #353b45 18 | #define base02 #3e4451 19 | #define base03 #545862 20 | #define base04 #565c64 21 | #define base05 #abb2bf 22 | #define base06 #b6bdca 23 | #define base07 #c8ccd4 24 | #define base08 #e06c75 25 | #define base09 #d19a66 26 | #define base0A #e5c07b 27 | #define base0B #98c379 28 | #define base0C #56b6c2 29 | #define base0D #61afef 30 | #define base0E #c678dd 31 | #define base0F #be5046 32 | 33 | *foreground: base07 34 | *background: #1e222a 35 | *cursorColor: base05 36 | 37 | *color0: base00 38 | *color1: base08 39 | *color2: base0B 40 | *color3: base0A 41 | *color4: base0D 42 | *color5: base0E 43 | *color6: base0C 44 | *color7: base05 45 | 46 | *color8: base03 47 | *color9: base08 48 | *color10: base0B 49 | *color11: base0A 50 | *color12: base0D 51 | *color13: base0E 52 | *color14: base0C 53 | *color15: base07 54 | 55 | ! just remove this if you dont use my tabbed 56 | 57 | tabbed.selfgcolor: #d6d8eb 58 | tabbed.selbgcolor: #1e222a 59 | 60 | tabbed.normfgcolor: #9294a8 61 | tabbed.normbgcolor: #282c34 62 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modes: [ run, drun, window ]; 3 | combi-modes: [ window, drun, run ]; 4 | dpi: 96; 5 | terminal: "alacritty"; 6 | click-to-exit: true; 7 | disable-history: false; 8 | show-icons: true; 9 | drun-match-fields: "all"; 10 | no-lazy-grab: true; 11 | scroll-method: 0; 12 | no-drun-show-actions: true; 13 | 14 | // drun-display-format: "{icon} {name} {generic}"; 15 | drun-display-format: "{icon} {name}"; 16 | 17 | inputchange { 18 | action: "kb-row-first"; 19 | } 20 | 21 | timeout { 22 | delay: 15; 23 | action: "kb-cancel"; 24 | } 25 | 26 | run { 27 | display-name: "Commands"; 28 | } 29 | 30 | drun { 31 | fallback-icon: "network"; 32 | display-name: "Apps"; 33 | delay: 5; 34 | action: "kb-cancel"; 35 | match-fields: "name,generic,exec,categories,keywords"; 36 | 37 | parse-user: true; 38 | parse-system: true; 39 | } 40 | 41 | window { 42 | display-name: "Active"; 43 | close-on-delete: false; 44 | thumbnail: true; 45 | } 46 | 47 | windowcd { 48 | display-name: "Desktop"; 49 | close-on-delete: false; 50 | } 51 | 52 | file-browser { 53 | display-name: "Explore"; 54 | directory: "~/"; 55 | sorting-method: "mtime"; 56 | directories-first: true; 57 | } 58 | 59 | icon { 60 | theme: "McMuse-green,McMuse,Zafiro,Papirus"; 61 | } 62 | 63 | // SEE: config/sxhkd/config.sx -- super + d 64 | kb-cancel: "Super_L-d,Escape"; 65 | } 66 | 67 | @theme "dishonest" 68 | 69 | // vim:filetype=rasi 70 | -------------------------------------------------------------------------------- /.config/eww/top/store/dashboard.yuck: -------------------------------------------------------------------------------- 1 | ;; +-info-+ 2 | (defpoll pfp :interval "120s" "backend/main.sh dashboard.pfp") 3 | (defpoll username :interval "120s" "backend/main.sh dashboard.user name") 4 | 5 | ;; date widget 6 | (defpoll dashboard_date_day :interval "60s" "date '+%A, %B %d'") 7 | 8 | ;; +-services-+ (and yes, i'm reutilizing the scripts that are in `bar` lol) 9 | 10 | ;; -- network 11 | (defpoll dashboard_network_radio_status :interval "1s" "backend/main.sh bar.network radio-status") 12 | (defpoll dashboard_light_mode_status :interval "1s" "backend/main.sh dashboard.light_mode status") 13 | (defpoll dashboard_redshift_state :interval "1s" "backend/main.sh dashboard.redshift state") 14 | 15 | ;; +-controls-+ 16 | 17 | ;; volume 18 | (defpoll vol :interval "1s" "backend/main.sh bar.volume vol") 19 | 20 | ;; brightness 21 | (defpoll br_icon :interval "1s" "backend/main.sh dashboard.brightness icon") 22 | (defpoll br :interval "1s" "backend/main.sh dashboard.brightness br") 23 | 24 | ;; +-stats-+ 25 | 26 | ;; cpu 27 | (defpoll cpu :interval "5s" "backend/main.sh dashboard.cpu") 28 | 29 | ;; ram 30 | (defpoll ram :interval "5s" "backend/main.sh dashboard.ram ram") 31 | 32 | ;; WEATHER VARS 33 | (defpoll whumid :interval "900s" "./scripts/weather.sh humidity") 34 | (defpoll wfeel :interval "900s" "./scripts/weather.sh feels_like") 35 | (defpoll wtemp :interval "900s" "./scripts/weather.sh current_temp") 36 | (defpoll wdesc :interval "900s" "./scripts/weather.sh weather_desc") 37 | (defpoll wicon :interval "900s" "./scripts/weather.sh weather_desc_icon") 38 | 39 | (defpoll bluetooth :interval "3s" "./scripts/bluetooth.sh device") 40 | (defpoll blue-status :interval "3s" "./scripts/bluetooth.sh status") 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | repo archived as i have stopped maining linux for a while, might return when asahi adds more drivers 2 | 3 | # dotfiles 4 | ![Screenshot](unknown1.png) 5 | ![Screenshot](unknown.png) 6 | ## Info 7 | Only tested on a 1920x1080 display, you may run into issues with eww if using another resolution. You will have to use a openweathermap key in [weather.sh](https://github.com/skearya/dots/blob/v2/.config/eww/scripts/weather.sh ) for weather to work, more info commented in file. 8 | 9 | - **OS:** [Endeavour](https://endeavouros.com/) 10 | - **Window Manager**: [bspwm](https://github.com/baskerville/bspwm) 11 | - **Terminal:** [alacritty](https://github.com/alacritty/alacritty) 12 | - **Compositor:** [picom-jonaburg-git](https://github.com/jonaburg/picom) 13 | - **Application Launcher:** [rofi](https://github.com/davatorium/rofi) 14 | - **Dock:** [Plank](https://launchpad.net/plank) 15 | - **Colorscheme:** [Quixotic](https://github.com/QuixoticCS/) 16 | - **Wallpaper:** [Quixotic Wallpapers](https://github.com/QuixoticCS/quixotic-wallpaper) 17 | - **GTK:** [Awesthetic](https://github.com/saimoomedits/dotfiles/blob/main/extras/themes) 18 | - **Fonts:** JetBrains Mono Nerd Font, Material Design Icons, Product Sans 19 | - **Icon Theme:** [Quixotic-SEv2](https://github.com/QuixoticCS/quixotic-icons) 20 | *** 21 | *Credits* 22 | --- 23 | - **Polybar Inspiration**: [Siduck's Bar](https://github.com/siduck/dotfiles) 24 | - **Original Rofi Theme**: [Dharmx's Rofi](https://github.com/dharmx/dots.sh/tree/main/config/_ui/rofi) 25 | - **eww Dashboard Base**: [AlphaTechnolog](https://github.com/AlphaTechnolog/) 26 | - **Starship Config**: [syndrizzle's hotfiles](https://github.com/syndrizzle/hotfiles/tree/fvwm) 27 | *** 28 | 29 | -------------------------------------------------------------------------------- /.config/eww/backend/bar/workspaces.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | workspaces() { 3 | 4 | ws1="1" 5 | ws2="2" 6 | ws3="3" 7 | ws4="4" 8 | ws5="5" 9 | ws6="6" 10 | 11 | # Unoccupied 12 | un="0" 13 | 14 | # check if Occupied 15 | o1=$(bspc query -D -d .occupied --names | grep "$ws1" ) 16 | o2=$(bspc query -D -d .occupied --names | grep "$ws2" ) 17 | o3=$(bspc query -D -d .occupied --names | grep "$ws3" ) 18 | o4=$(bspc query -D -d .occupied --names | grep "$ws4" ) 19 | o5=$(bspc query -D -d .occupied --names | grep "$ws5" ) 20 | o6=$(bspc query -D -d .occupied --names | grep "$ws6" ) 21 | 22 | # check if Focused 23 | f1=$(bspc query -D -d focused --names | grep "$ws1" ) 24 | f2=$(bspc query -D -d focused --names | grep "$ws2" ) 25 | f3=$(bspc query -D -d focused --names | grep "$ws3" ) 26 | f4=$(bspc query -D -d focused --names | grep "$ws4" ) 27 | f5=$(bspc query -D -d focused --names | grep "$ws5" ) 28 | f6=$(bspc query -D -d focused --names | grep "$ws6" ) 29 | 30 | f1=$(echo "f${f1}") 31 | f2=$(echo "f${f2}") 32 | f3=$(echo "f${f3}") 33 | f4=$(echo "f${f4}") 34 | f5=$(echo "f${f5}") 35 | f6=$(echo "f${f6}") 36 | 37 | ic_1="" 38 | ic_2="" 39 | ic_3="" 40 | ic_4="" 41 | ic_5="" 42 | ic_6="" 43 | 44 | echo "(box :class \"works\" :spacing \"-1\" :orientation \"h\" :halign \"center\" :space-evenly \"false\" (button :onclick \"bspc desktop -f $ws1\" :class \"$un$o1$f1 first\" \"$ic_1\") (button :onclick \"bspc desktop -f $ws2\" :class \"$un$o2$f2\" \"$ic_2\") (button :onclick \"bspc desktop -f $ws3\" :class \"$un$o3$f3\" \"$ic_3\") (button :onclick \"bspc desktop -f $ws4\" :class \"$un$o4$f4\" \"$ic_4\") (button :onclick \"bspc desktop -f $ws5\" :class \"$un$o5$f5\" \"$ic_5\") (button :onclick \"bspc desktop -f $ws6\" :class \"$un$o6$f6 last\" \"$ic_6\"))" 45 | 46 | } 47 | workspaces 48 | bspc subscribe all | while read -r _ ; do 49 | workspaces 50 | done 51 | -------------------------------------------------------------------------------- /.config/eww/top/bar/bar.yuck: -------------------------------------------------------------------------------- 1 | (include "top/bar/widgets/launcher.yuck") 2 | (include "top/bar/widgets/date.yuck") 3 | (include "top/bar/widgets/workspaces.yuck") 4 | (include "top/bar/widgets/position.yuck") 5 | (include "top/bar/widgets/music-dispatcher.yuck") 6 | (include "top/bar/widgets/powermenu-dispatcher.yuck") 7 | (include "top/bar/widgets/syscontrol.yuck") 8 | (include "top/bar/widgets/updates.yuck") 9 | 10 | (defwidget left [] 11 | (box :class "left" 12 | :halign "start" 13 | :orientation "h" 14 | :space-evenly false 15 | (launcher) 16 | (workspaces) 17 | (music-dispatcher) 18 | (position) 19 | ) 20 | ) 21 | 22 | (defwidget center [] 23 | (box :class "center" 24 | :halign "center" 25 | :orientation "h" 26 | :space-evenly false 27 | (date) 28 | ) 29 | ) 30 | (defwidget right [] 31 | (box :class "right" 32 | :halign "end" 33 | :orientation "h" 34 | :space-evenly false 35 | (updates) 36 | (syscontrol) 37 | (powermenu-dispatcher) 38 | ) 39 | ) 40 | 41 | (defwidget bar [] 42 | (box :class "bar" 43 | :orientation "h" 44 | :space-evenly true 45 | (left) 46 | (center) 47 | (right) 48 | ) 49 | ) 50 | 51 | (defwindow bar 52 | :monitor 0 53 | :geometry (geometry :x "0px" 54 | :y "0px" 55 | :width "100%" 56 | :height "50px" 57 | :anchor "top center") 58 | :reserve (struts :side "top" :distance "50px") 59 | :type "dock" 60 | :wm-ignore false 61 | (bar)) 62 | 63 | ; just for multimonitor support 64 | (defwindow bar2 65 | :monitor 1 66 | :geometry (geometry :x "0px" 67 | :y "0px" 68 | :width "100%" 69 | :height "50px" 70 | :anchor "top center") 71 | :reserve (struts :side "top" :distance "50px") 72 | :type "dock" 73 | :wm-ignore false 74 | (bar)) 75 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/bar.yuck: -------------------------------------------------------------------------------- 1 | (include "bottom/bar/widgets/launcher.yuck") 2 | (include "bottom/bar/widgets/date.yuck") 3 | (include "bottom/bar/widgets/workspaces.yuck") 4 | (include "bottom/bar/widgets/position.yuck") 5 | (include "bottom/bar/widgets/music-dispatcher.yuck") 6 | (include "bottom/bar/widgets/powermenu-dispatcher.yuck") 7 | (include "bottom/bar/widgets/syscontrol.yuck") 8 | (include "bottom/bar/widgets/updates.yuck") 9 | 10 | (defwidget left [] 11 | (box :class "left" 12 | :halign "start" 13 | :orientation "h" 14 | :space-evenly false 15 | (launcher) 16 | (workspaces) 17 | (music-dispatcher) 18 | (position) 19 | ) 20 | ) 21 | 22 | (defwidget center [] 23 | (box :class "center" 24 | :halign "center" 25 | :orientation "h" 26 | :space-evenly false 27 | (date) 28 | ) 29 | ) 30 | (defwidget right [] 31 | (box :class "right" 32 | :halign "end" 33 | :orientation "h" 34 | :space-evenly false 35 | (updates) 36 | (syscontrol) 37 | (powermenu-dispatcher) 38 | ) 39 | ) 40 | 41 | (defwidget bar [] 42 | (box :class "bar" 43 | :orientation "h" 44 | :space-evenly true 45 | (left) 46 | (center) 47 | (right) 48 | ) 49 | ) 50 | 51 | (defwindow bar 52 | :monitor 0 53 | :geometry (geometry :x "0px" 54 | :y "0px" 55 | :width "100%" 56 | :height "50px" 57 | :anchor "bottom center") 58 | :reserve (struts :side "bottom" :distance "49px") 59 | :type "dock" 60 | :wm-ignore false 61 | (bar)) 62 | 63 | ; just for multimonitor support 64 | (defwindow bar2 65 | :monitor 1 66 | :geometry (geometry :x "0px" 67 | :y "0px" 68 | :width "100%" 69 | :height "50px" 70 | :anchor "bottom center") 71 | :reserve (struts :side "bottom" :distance "49px") 72 | :type "dock" 73 | :wm-ignore false 74 | (bar)) 75 | -------------------------------------------------------------------------------- /.config/eww/backend/bar/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # @requires: pactl 4 | 5 | SINK=$(pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,' | head -n 1) 6 | 7 | percentage () { 8 | local val=$(echo $1 | tr '%' ' ' | awk '{print $1}') 9 | local icon1=$2 10 | local icon2=$3 11 | local icon3=$4 12 | local icon4=$5 13 | if [ "$val" -le 15 ]; then 14 | echo $icon1 15 | elif [ "$val" -le 30 ]; then 16 | echo $icon2 17 | elif [ "$val" -le 60 ]; then 18 | echo $icon3 19 | else 20 | echo $icon4 21 | fi 22 | } 23 | 24 | is_muted () { 25 | pacmd list-sinks | awk '/muted/ { print $2 }' 26 | } 27 | 28 | get_percentage () { 29 | local muted=$(is_muted) 30 | if [[ $muted == 'yes' ]]; then 31 | echo "muted" 32 | else 33 | per=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,') 34 | echo "${per}%" 35 | fi 36 | } 37 | 38 | get_icon () { 39 | local vol=$(get_percentage) 40 | if [[ $vol == "muted" ]]; then 41 | echo "婢" 42 | else 43 | echo $(percentage "$vol" "" "" "墳" "") 44 | fi 45 | } 46 | 47 | get_class () { 48 | local vol=$(get_percentage) 49 | if [[ $vol == "muted" ]]; then 50 | echo "red" 51 | else 52 | echo $(percentage "$vol" "red" "magenta" "yellow" "blue") 53 | fi 54 | } 55 | 56 | get_vol () { 57 | local percent=$(get_percentage) 58 | echo $percent | tr -d '%' 59 | } 60 | 61 | if [[ $1 == "icon" ]]; then 62 | get_icon 63 | fi 64 | 65 | if [[ $1 == "class" ]]; then 66 | get_class 67 | fi 68 | 69 | if [[ $1 == "percentage" ]]; then 70 | get_percentage 71 | fi 72 | 73 | if [[ $1 == "vol" ]]; then 74 | get_vol 75 | fi 76 | 77 | if [[ $1 == "muted" ]]; then 78 | is_muted 79 | fi 80 | 81 | if [[ $1 == "toggle-muted" ]]; then 82 | pactl set-sink-mute $SINK toggle 83 | fi 84 | 85 | if [[ $1 == "set" ]]; then 86 | val=$(echo $2 | tr '.' ' ' | awk '{print $1}') 87 | if test $val -gt 100; then 88 | val=100 89 | fi 90 | pactl set-sink-volume $SINK $val% 91 | fi -------------------------------------------------------------------------------- /.config/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | pgrep -x sxhkd > /dev/null || sxhkd & 4 | 5 | bspc monitor -d 1 2 3 4 5 6 | 7 | bspc config border_width 2 8 | bspc config window_gap 14 9 | bspc config border_radius 5 10 | 11 | bspc config split_ratio 0.50 12 | bspc config borderless_monocle true 13 | bspc config gapless_monocle true 14 | bspc config pointer_follows_focus true 15 | bspc config focus_follows_pointer true 16 | bspc config pointer_motion_interval 7 17 | 18 | bspc rule -a Gimp desktop='^8' state=floating follow=on 19 | bspc rule -a Chromium desktop='^2' 20 | #bspc rule -a firefox desktop='^2' 21 | bspc rule -a mplayer2 state=floating 22 | bspc rule -a Yad state=floating 23 | bspc rule -a Kupfer.py focus=on 24 | bspc rule -a Screenkey manage=off 25 | bspc rule -a Plank manage=off locked=on border=off state=floating focus=off 26 | 27 | bspc subscribe node_add | while read -r _; do 28 | xdo raise -N Plank 29 | done & 30 | 31 | #"#6c71c4" 32 | #"#ffa6a6" 33 | bspc config focused_border_color "#232a2d" 34 | bspc config normal_border_color "#1a1b26" 35 | bspc config active_border_color "#444b6a" 36 | #ffffff 37 | #282828 38 | 39 | # 40 | # Autostart 41 | # 42 | # Set display from arandr saved script 43 | sh ~/.screenlayout/monitor.sh & 44 | # Bar 45 | #bash ~/.config/polybar/launch.sh --shapes & 46 | $HOME/.config/polybar/launch.sh 47 | # Notifications 48 | /usr/bin/dunst & 49 | # Polkit 50 | /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & 51 | # Wallpaper 52 | nitrogen --restore & 53 | # Dex 54 | dex -a -s /etc/xdg/autostart/:~/.config/autostart/ 55 | # Picom 56 | plank & 57 | 58 | #$HOME/Documents/a.sh & 59 | 60 | picom --config $HOME/.config/picom.conf --experimental-backends --xrender-sync-fence & 61 | # Network Applet 62 | nm-applet --indicator & 63 | 64 | # Cursor 65 | xsetroot -cursor_name left_ptr & 66 | 67 | 68 | # Low battery notifier 69 | #~/.config/bspwm/scripts/low_bat_notifier.sh & 70 | 71 | #xss-lock -l ~/Documents/transfer-sleep-lock-generic-delay.sh & 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /.config/eww/bottom/powermenu/powermenu.yuck: -------------------------------------------------------------------------------- 1 | (defwidget powermenu [] 2 | (box :class "powermenu" 3 | :space-evenly false 4 | :orientation "v" 5 | (box :class "toolbar" 6 | :orientation "h" 7 | :space-evenly true 8 | :hexpand true 9 | :valign "start" 10 | (label :text "What do you want to do ${username}?" 11 | :class "hint") 12 | (button :class "close" 13 | :tooltip "Close powermenu" 14 | :halign "end" 15 | :onclick "backend/main.sh powermenu.toggler" 16 | "" 17 | ) 18 | ) 19 | (box :space-evenly true 20 | :orientation "h" 21 | :valign "center" 22 | (button :class "poweroff" 23 | :tooltip "Poweroff" 24 | :onclick "backend/main.sh powermenu.manager shutdown" 25 | "⏻" 26 | ) 27 | (button :class "reboot" 28 | :tooltip "Reboot" 29 | :onclick "backend/main.sh powermenu.manager reboot" 30 | "勒" 31 | ) 32 | (button :class "logout" 33 | :tooltip "Logout" 34 | :onclick "backend/main.sh powermenu.manager logout" 35 | "" 36 | ) 37 | ) 38 | (box :class "tip" 39 | :orientation "h" 40 | :space-evenly false 41 | :halign "center" 42 | :valign "end" 43 | (label :text "" :class "icon" :halign "center") 44 | (label :text "You can press any place of the screen to close this popup" :class "label" :halign "center") 45 | ) 46 | ) 47 | ) 48 | 49 | (defwidget powermenu-close [] 50 | (button :class "powermenu-close" 51 | :onclick "backend/main.sh powermenu.toggler" 52 | "" 53 | ) 54 | ) 55 | 56 | (defwindow powermenu 57 | :geometry (geometry :x "0" 58 | :y "0" 59 | :width "480px" 60 | :height "120px" 61 | :anchor "center") 62 | :wm-ignore true 63 | (powermenu)) 64 | 65 | (defwindow powermenu-close 66 | :geometry (geometry :x "0" 67 | :y "0" 68 | :width "100%" 69 | :height "100%" 70 | :anchor "center") 71 | :wm-ignore true 72 | (powermenu-close)) 73 | -------------------------------------------------------------------------------- /.config/eww/top/powermenu/powermenu.yuck: -------------------------------------------------------------------------------- 1 | (defwidget powermenu [] 2 | (box :class "powermenu" 3 | :space-evenly false 4 | :orientation "v" 5 | (box :class "toolbar" 6 | :orientation "h" 7 | :space-evenly true 8 | :hexpand true 9 | :valign "start" 10 | (label :text "What do you want to do ${username}?" 11 | :class "hint") 12 | (button :class "close" 13 | :tooltip "Close powermenu" 14 | :halign "end" 15 | :onclick "backend/main.sh powermenu.toggler" 16 | "" 17 | ) 18 | ) 19 | (box :space-evenly true 20 | :orientation "h" 21 | :valign "center" 22 | (button :class "poweroff" 23 | :tooltip "Poweroff" 24 | :onclick "backend/main.sh powermenu.manager shutdown" 25 | "⏻" 26 | ) 27 | (button :class "reboot" 28 | :tooltip "Reboot" 29 | :onclick "backend/main.sh powermenu.manager reboot" 30 | "勒" 31 | ) 32 | (button :class "logout" 33 | :tooltip "Logout" 34 | :onclick "backend/main.sh powermenu.manager logout" 35 | "" 36 | ) 37 | ) 38 | (box :class "tip" 39 | :orientation "h" 40 | :space-evenly false 41 | :halign "center" 42 | :valign "end" 43 | (label :text "" :class "icon" :halign "center") 44 | (label :text "You can press any place of the screen to close this popup" :class "label" :halign "center") 45 | ) 46 | ) 47 | ) 48 | 49 | (defwidget powermenu-close [] 50 | (button :class "powermenu-close" 51 | :onclick "backend/main.sh powermenu.toggler" 52 | "" 53 | ) 54 | ) 55 | 56 | (defwindow powermenu 57 | :geometry (geometry :x "0" 58 | :y "0" 59 | :width "480px" 60 | :height "120px" 61 | :anchor "center") 62 | :wm-ignore true 63 | (powermenu)) 64 | 65 | (defwindow powermenu-close 66 | :geometry (geometry :x "0" 67 | :y "0" 68 | :width "100%" 69 | :height "100%" 70 | :anchor "center") 71 | :wm-ignore true 72 | (powermenu-close)) 73 | -------------------------------------------------------------------------------- /.config/eww/scripts/weather.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # IMPORTANT NOTE. 4 | # For me in specific, trying to use my city code from OpenWeatherMap has never worked so I mainly rely on using my latitude and longitude instead, if using your city id doesn't work I recommend you try the same. 5 | # Your City code, latitude and longitude can all be found in https://openweathermap.org/. Your key is unique to your account so go there and get one. 6 | 7 | KEY="x" 8 | CITY="x" 9 | LAT="x" 10 | LON="x" 11 | 12 | #weather=$(curl -sf "api.openweathermap.org/data/2.5/weather?id=$CITY&appid=$KEY&units=me") 13 | weather=$(curl -sf "api.openweathermap.org/data/2.5/weather?lat=$LAT&lon=$LON&appid=$KEY&units=imperial") 14 | weather_desc=$(echo $weather | jq -r ".weather[0].main") 15 | weather_temp=$(echo $weather | jq ".main.temp" | cut -d "." -f 1) 16 | feels_like=$(echo $weather | jq ".main.feels_like" | cut -d "." -f 1) 17 | humidity=$(echo $weather | jq ".main.humidity") 18 | time=$(date '+%H') 19 | 20 | check_if_empty() { 21 | if [ -z "$1" ]; then 22 | echo "n/a" 23 | else 24 | echo "$1" 25 | fi 26 | } 27 | 28 | check_if_empty_deg() { 29 | if [ -z "$1" ]; then 30 | echo "n/a" 31 | else 32 | echo "$1°F" 33 | fi 34 | } 35 | 36 | check_if_empty_text() { 37 | if [ -z "$1" ]; then 38 | echo "Disconnected" 39 | elif [ "$1" = "Clouds" ]; then 40 | echo "It's Cloudy" 41 | elif [ "$1" = "Clear" ]; then 42 | echo "It's Clear" 43 | elif [ "$1" = "Rain" ]; then 44 | echo "It's Rainy" 45 | else 46 | echo $1 47 | fi 48 | } 49 | 50 | check_if_empty_icon() { 51 | if [ -z "$1" ]; then 52 | echo "" 53 | elif [ "$1" = "Clouds" ]; then 54 | if [ $time -gt 20 -o $time -lt 08 ]; then 55 | echo "" 56 | else 57 | echo "" 58 | fi 59 | elif [ "$1" = "Clear" ]; then 60 | if [ $time -gt 20 -o $time -lt 08 ]; then 61 | echo "" 62 | else 63 | echo "" 64 | fi 65 | elif [ "$1" = "Rain" ]; then 66 | if [ $time -gt 20 -o $time -lt 08 ]; then 67 | echo "" 68 | else 69 | echo "" 70 | fi 71 | fi 72 | } 73 | 74 | case $1 in 75 | current_temp) 76 | check_if_empty_deg $weather_temp ;; 77 | feels_like) 78 | check_if_empty_deg $feels_like ;; 79 | weather_desc) 80 | check_if_empty_text $weather_desc ;; 81 | weather_desc_icon) 82 | check_if_empty_icon $weather_desc ;; 83 | humidity) 84 | check_if_empty $humidity ;; 85 | esac 86 | -------------------------------------------------------------------------------- /.config/picom.conf: -------------------------------------------------------------------------------- 1 | #no-dnd-shadow = true; 2 | #no-dock-shadow = true; 3 | clear-shadow = false; 4 | shadow = true; 5 | vsync = true; 6 | shadow-radius = 15; 7 | shadow-offset-x = -10; 8 | shadow-offset-y = -10; 9 | shadow-opacity = 0.9; 10 | shadow-red = 0.0; 11 | shadow-green = 0.0; 12 | shadow-blue = 0.0; 13 | 14 | 15 | #backend = "glx"; 16 | backend = "xrender"; 17 | 18 | #corner-radius = 8; 19 | #round-borders = 1; 20 | #rounded-corners-exclude = [ 21 | # "class_g = 'Polybar'", 22 | #] 23 | 24 | 25 | ################################# 26 | # Animations # 27 | ################################# 28 | # requires https://github.com/jonaburg/picom 29 | # (These are also the default values) 30 | transition-length = 300 31 | transition-pow-x = 0.01 32 | transition-pow-y = 0.01 33 | transition-pow-w = 0.01 34 | transition-pow-h = 0.01 35 | size-transition = true 36 | 37 | 38 | 39 | shadow-exclude = [ 40 | 41 | "name = 'stalonetray'", 42 | "name = 'Eww - system-tray'", 43 | "name = 'plank'", 44 | "name = 'Notification'", 45 | "name = 'fluxbox'", 46 | "class_g = 'bspwm'", 47 | "class_i = 'presel_feedback'", 48 | "class_g = 'fluxbox'", 49 | "class_g ?= 'Notify-osd'", 50 | "class_g = 'xfce4-panel'", 51 | "class_i = 'POWERPNT.EXE'", 52 | "class_i = 'WINWORD.EXE'", 53 | "class_i = 'Meteo'" 54 | ]; 55 | 56 | shadow-ignore-shaped = false; 57 | inactive-opacity = 1.0; 58 | active-opacity = 1.0; 59 | frame-opacity = 1.0; 60 | inactive-opacity-override = false; 61 | opacity-rule = [ 62 | "10:class_g = 'Bspwm'", 63 | "10:class_i = 'presel_feedback'", 64 | ]; 65 | 66 | wintypes : 67 | { 68 | popup_menu = 69 | { 70 | opacity = 1.0; 71 | }; 72 | dropdown_menu = 73 | { 74 | opacity = 1.0 75 | }; 76 | dnd = 77 | { 78 | shadow = false; 79 | }; 80 | dock = 81 | { 82 | shadow = true; 83 | }; 84 | tooltip = 85 | { 86 | fade = true; 87 | shadow = true; 88 | opacity = 1.0; 89 | focus = true; 90 | }; 91 | }; 92 | 93 | 94 | # Fading 95 | fading = true; 96 | fade-in-step = 0.08; 97 | fade-out-step = 0.08; 98 | 99 | 100 | -------------------------------------------------------------------------------- /.config/eww/position: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONF_FILE=$HOME/.cache/eww/position 4 | CONF_FOLDER=$(dirname $CONF_FILE) 5 | 6 | if ! test -d $CONF_FOLDER; then 7 | mkdir -p $CONF_FOLDER 8 | fi 9 | 10 | if ! test -f $CONF_FILE; then 11 | echo top > $CONF_FILE 12 | fi 13 | 14 | # loading bspwm helpers 15 | . ~/.config/bspwm/conf 16 | . ~/.config/bspwm/scripts/helpers.sh 17 | 18 | # change pwd to eww config, just to avoid problems 19 | cd $HOME/.config/eww 20 | 21 | # show help 22 | help () { 23 | echo "usage: $(basename $0) " 24 | } 25 | 26 | # reset bspwm paddings, eww should set it automatically using `:reserve` 27 | reset_paddings () { 28 | bspc config top_padding 0 29 | bspc config bottom_padding 0 30 | } 31 | 32 | # removes eww.yuck and eww.scss 33 | clean_files () { 34 | rm ./eww.{yuck,scss} 35 | } 36 | 37 | # make symlinks to the specified folders 38 | mksymlinks () { 39 | local folder=$1 40 | # should do something like: `ln -s ~/.config/eww/top/eww.yuck ./eww.yuck` 41 | # and the same to the bottom and the scss file 42 | for file in eww.yuck eww.scss; do 43 | ln -s $PWD/$folder/$file $PWD/$file 44 | done 45 | } 46 | 47 | # get the position from `CONF_FILE` 48 | get_position () { 49 | cat $CONF_FILE 50 | } 51 | 52 | # refresh bspwm state 53 | refresh_bspwm () { 54 | eww kill 55 | eww daemon 56 | launch_bar # from bspwm helpers 57 | # plank: 58 | local position=$(get_position) 59 | if [[ $position == "top" ]]; then 60 | launch_plank # from bspwm helpers 61 | else 62 | pkill plank # just kill it 63 | fi 64 | } 65 | 66 | # update position state in cache file 67 | update_cache_file () { 68 | echo $1 > $CONF_FILE 69 | } 70 | 71 | # change position to top 72 | top () { 73 | reset_paddings 74 | clean_files 75 | mksymlinks top 76 | update_cache_file top 77 | refresh_bspwm 78 | echo "Done" 79 | } 80 | 81 | # change position to bottom 82 | bottom () { 83 | reset_paddings 84 | clean_files 85 | mksymlinks bottom 86 | update_cache_file bottom 87 | refresh_bspwm 88 | echo "Done" 89 | } 90 | 91 | # toggle between `top` and `bottom` 92 | toggle () { 93 | local position=$(get_position) 94 | if [[ $position == "top" ]]; then 95 | bottom 96 | else 97 | top 98 | fi 99 | } 100 | 101 | # -- arguments parsing -- # 102 | if [[ $1 == "" ]]; then 103 | help 104 | exit 1 105 | fi 106 | 107 | if [[ $1 == "top" ]]; then 108 | top 109 | elif [[ $1 == "bottom" ]]; then 110 | bottom 111 | elif [[ $1 == "get-position" ]]; then 112 | get_position 113 | elif [[ $1 == "toggle" ]]; then 114 | toggle 115 | fi 116 | -------------------------------------------------------------------------------- /.config/rofi/themes/dishonest.rasi: -------------------------------------------------------------------------------- 1 | @theme "theme" 2 | 3 | * { 4 | text-color: @fg-col; 5 | background-color: @bg-col; 6 | font: "Dosis,Iosevka Nerd Font 14"; 7 | } 8 | 9 | window { 10 | border-radius: 0; 11 | width: 800; 12 | height: 654; 13 | anchor: center; 14 | location: center; 15 | fullscreen: false; 16 | } 17 | 18 | mainbox { 19 | children: [ inputbar, mode-switcher, listview ]; 20 | layout: horizontal; 21 | spacing: 1.5%; 22 | } 23 | 24 | textbox { 25 | width: 2.5em; 26 | margin: 1em 0.3em 0 1em; 27 | border: 0.1em; 28 | border-color: @fg-col2; 29 | expand: false; 30 | width: 4.4em; 31 | height: 4em; 32 | text-color: @bg-col-light; 33 | background-image: linear-gradient(to right, #008ce3, #a07dde); 34 | content: ""; 35 | font: "Iosevka Nerd Font 25"; 36 | border-radius: 0.5em; 37 | vertical-align: 0.5; 38 | horizontal-align: 0.5; 39 | } 40 | 41 | inputbar { 42 | children: [ textbox, entry ]; 43 | enabled: true; 44 | } 45 | 46 | entry { 47 | placeholder: "Search..."; 48 | expand: true; 49 | cursor: pointer; 50 | margin: 1em 1em 0 0; 51 | font: "Product Sans Bold 17"; 52 | padding: 1em; 53 | text-color: @fg-col2; 54 | vertical-align: center; 55 | border-radius: 0.3em; 56 | border-color: @border-col; 57 | border: 0.1em; 58 | } 59 | 60 | listview { 61 | lines: 5; 62 | columns: 2; 63 | padding: 0 1em 1em 1em; 64 | dynamic: false; 65 | } 66 | 67 | element { 68 | orientation: horizontal; 69 | children: [ element-icon, element-text ]; 70 | spacing: 1em; 71 | padding: 1em; 72 | border-radius: 0.5em; 73 | } 74 | 75 | element-icon { 76 | size: 2em; 77 | vertical-align: 0.5; 78 | enabled: true; 79 | } 80 | 81 | element selected { 82 | background-color: @fg; 83 | border: 0.1em; 84 | border-color: @border-col; 85 | } 86 | 87 | element-text { 88 | vertical-align: 0.5; 89 | } 90 | 91 | element-text selected { 92 | background-color: @fg; 93 | text-color: @selected-col; 94 | background-image: linear-gradient(to right, #008ce3, #a07dde); 95 | border-radius: 5px; 96 | 97 | } 98 | 99 | mode-switcher { 100 | margin: 0 5em 0 5em; 101 | border: 0.1em; 102 | border-color: @border-col; 103 | padding: 0.4em; 104 | border-radius: 0.9em; 105 | } 106 | 107 | button { 108 | background-color: @bg-col; 109 | text-color: @fg-col; 110 | horizontal-align: center; 111 | font: "Product Sans 16"; 112 | padding: 0.5em 0.4em 0.5em 0.4em; 113 | border-radius: 0.9em; 114 | } 115 | 116 | button selected { 117 | font: "Product Sans Bold 15"; 118 | background-color: @blue; 119 | background-image: linear-gradient(to right, #79dcaa, #008ce3); 120 | border: 0.1em; 121 | border-color: @fg-col2; 122 | text-color: @bg-col; 123 | } 124 | 125 | // vim:filetype=rasi 126 | -------------------------------------------------------------------------------- /.config/rofi/themes/pagan.rasi: -------------------------------------------------------------------------------- 1 | @theme "theme" 2 | 3 | configuration { 4 | run { 5 | display-name: ""; 6 | } 7 | 8 | drun { 9 | display-name: ""; 10 | } 11 | 12 | window { 13 | display-name: ""; 14 | } 15 | } 16 | 17 | * { 18 | text-color: @fg-col; 19 | background-color: @bg-col; 20 | font: "Dosis,Iosevka Nerd Font 14"; 21 | } 22 | 23 | window { 24 | // border-radius: 1em; 25 | width: 900; 26 | height: 650; 27 | anchor: center; 28 | location: center; 29 | fullscreen: false; 30 | } 31 | 32 | box { 33 | children: [ inputbar, listview ]; 34 | orientation: vertical; 35 | expand: true; 36 | } 37 | 38 | mainbox { 39 | children: [ mode-switcher, box ]; 40 | spacing: 1.5%; 41 | orientation: horizontal; 42 | } 43 | 44 | textbox { 45 | width: 2.5em; 46 | margin: 1em 1em 0 0.3em; 47 | border: 0.1em; 48 | border-color: @fg-col2; 49 | expand: false; 50 | width: 4.4em; 51 | height: 4em; 52 | text-color: @bg-col-light; 53 | background-color: @grey; 54 | content: ""; 55 | font: "feather 25"; 56 | border-radius: 0.5em; 57 | vertical-align: 0.5; 58 | horizontal-align: 0.5; 59 | } 60 | 61 | inputbar { 62 | children: [ entry, textbox ]; 63 | enabled: true; 64 | } 65 | 66 | entry { 67 | placeholder: "Search..."; 68 | expand: true; 69 | cursor: pointer; 70 | margin: 1em 0.2em 0 0; 71 | padding: 1em; 72 | text-color: @fg-col2; 73 | background-color: @selected-col; 74 | 75 | vertical-align: center; 76 | border-radius: 0.3em; 77 | border-color: @border-col; 78 | border: 0.1em; 79 | } 80 | 81 | listview { 82 | lines: 5; 83 | columns: 2; 84 | padding: 1em 1em 1em 0em; 85 | dynamic: false; 86 | } 87 | 88 | element { 89 | orientation: horizontal; 90 | children: [ element-text, element-icon ]; 91 | spacing: 1em; 92 | padding: 1em; 93 | border-radius: 0.5em; 94 | } 95 | 96 | element-icon { 97 | size: 2em; 98 | vertical-align: 0.5; 99 | enabled: false; 100 | } 101 | 102 | element selected { 103 | background-color: @fg-col2; 104 | border: 0.1em; 105 | border-color: @grey; 106 | } 107 | 108 | element-text selected { 109 | background-color: @fg-col2; 110 | text-color: @bg-col; 111 | } 112 | 113 | mode-switcher { 114 | margin: 7em 0 7em 1em; 115 | border: 0.1em; 116 | border-color: @border-col; 117 | background-color: @selected-col; 118 | padding: 0.4em; 119 | border-radius: 0.5em; 120 | orientation: vertical; 121 | expand: false; 122 | } 123 | 124 | button { 125 | background-color: @selected-col; 126 | text-color: @fg-col2; 127 | horizontal-align: center; 128 | border-radius: 0.4em; 129 | font: "feather 30"; 130 | horizontal-align: 0.5; 131 | padding: 0 0.9em; 132 | } 133 | 134 | button selected { 135 | background-color: @red; 136 | border: 0.1em; 137 | border-color: @blue; 138 | text-color: @bg-col; 139 | } 140 | 141 | // vim:filetype=rasi 142 | -------------------------------------------------------------------------------- /.config/eww/bottom/bar/bar.scss: -------------------------------------------------------------------------------- 1 | // bar 2 | .bar { 3 | background-color: $bg; 4 | color: $fg; 5 | padding: 8px 10px; 6 | font-family: Product Sans; 7 | font-size: 16px; 8 | } 9 | 10 | // launcher widget 11 | .launcher { 12 | font-family: Iosevka Nerd Font; 13 | border-radius: 10px; 14 | padding: 0px 12px 0px 9px; 15 | color: $green; 16 | font-size: 18px; 17 | &:hover { 18 | background-color: $contrastbg; 19 | } 20 | &:active { 21 | background-color: $bgSecondary; 22 | color: $fg; 23 | } 24 | } 25 | 26 | // simple date 27 | .date { 28 | font-size: 17px; 29 | font-weight: bold; 30 | } 31 | 32 | // workspaces 33 | .works { 34 | font-size: 11px; 35 | margin-top: 1px; 36 | margin-left: 10px; 37 | font-family: Iosevka Nerd Font; 38 | font-size: 13px; 39 | 40 | // void 41 | .0f { 42 | color: $black; 43 | background-color: $contrastbg; 44 | padding: 8px 10px; 45 | } 46 | 47 | // occupied 48 | .01f, .02f, .03f, .04f, .05f, .06f { 49 | color: $blue; 50 | background-color: $contrastbg; 51 | padding: 8px 10px; 52 | } 53 | 54 | // focused 55 | .01f1, .02f2, .03f3, .04f4, .05f5, .06f6, 56 | .0f1, .0f2, .0f3, .0f4, .0f5, .0f6 { 57 | color: $yellow; 58 | background-color: $contrastbg; 59 | padding: 8px 10px; 60 | } 61 | 62 | // first workspace, just for rounded borders 63 | .first { 64 | border-top-left-radius: 15px; 65 | border-bottom-left-radius: 15px; 66 | padding-left: 15px; 67 | } 68 | 69 | // last workspace, just for rounded borders 70 | .last { 71 | border-top-right-radius: 15px; 72 | border-bottom-right-radius: 15px; 73 | padding-right: 18px; 74 | } 75 | } 76 | 77 | // position toggler 78 | .position-toggler { 79 | padding: 0 12px; 80 | font-family: Iosevka Nerd Font; 81 | color: $yellow; 82 | margin-left: 5px; 83 | border-radius: 10px; 84 | transition: all ease .2s; 85 | &:hover { background-color: $contrastbg; } 86 | &:active { background-color: $bgSecondary; } 87 | } 88 | 89 | // music dispatcher styles 90 | .music-dispatcher { 91 | padding: 0 15px 0px 10px; 92 | border-radius: 10px; 93 | margin-left: 7px; 94 | margin-right: -3px; 95 | color: $green; 96 | transition: all ease .2s; 97 | font-family: Iosevka Nerd Font; 98 | &:hover { background-color: $contrastbg; } 99 | &:active { background-color: $bgSecondary; } 100 | } 101 | 102 | // powermenu dispatcher 103 | .powermenu-dispatcher { 104 | font-family: Iosevka Nerd Font; 105 | border-radius: 10px; 106 | padding: 0px 16px 0px 9px; 107 | color: $red; 108 | font-size: 18px; 109 | &:hover { 110 | background-color: $contrastbg; 111 | } 112 | &:active { 113 | background-color: $bgSecondary; 114 | color: $fg; 115 | } 116 | } 117 | 118 | // syscontrols 119 | .syscontrol { 120 | background-color: $contrastbg; 121 | border-radius: 20px; 122 | padding: 0px 15px 0 9px; 123 | margin-right: 10px; 124 | font-size: 14px; 125 | font-family: Iosevka Nerd Font; 126 | button { 127 | padding: 0 14px 0 5px; 128 | transition: all ease .2s; 129 | &:hover { 130 | color: $lightblack; 131 | } 132 | } 133 | .network { 134 | margin: 0 0px 0 10px; 135 | } 136 | .volume { 137 | margin: 0 2px; 138 | padding-left: 8px; 139 | } 140 | } 141 | 142 | // updates 143 | .updates { 144 | margin-right: 20px; 145 | .icon { 146 | margin-right: 14px; 147 | font-family: Iosevka Nerd Font; 148 | color: $green; 149 | } 150 | .content { 151 | font-size: 14px; 152 | margin-top: -2.5px; 153 | font-family: Product Sans; 154 | } 155 | } 156 | 157 | // dashboard dispatcher 158 | .dashboard-dispatcher { 159 | font-family: Iosevka Nerd Font; 160 | border-radius: 10px; 161 | padding: 0px 16px 0px 14px; 162 | margin-right: 10px; 163 | color: $fg; 164 | font-size: 18px; 165 | &:hover { 166 | background-color: $contrastbg; 167 | } 168 | &:active { 169 | background-color: $bgSecondary; 170 | color: $fg; 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /.config/eww/top/bar/bar.scss: -------------------------------------------------------------------------------- 1 | // bar 2 | .bar { 3 | background-color: $bg; 4 | color: $fg; 5 | padding: 8px 10px; 6 | font-family: Product Sans; 7 | font-size: 16px; 8 | } 9 | 10 | // launcher widget 11 | .launcher { 12 | font-family: Iosevka Nerd Font; 13 | border-radius: 10px; 14 | padding: 0px 12px 0px 9px; 15 | color: $green; 16 | font-size: 18px; 17 | &:hover { 18 | background-color: $contrastbg; 19 | } 20 | &:active { 21 | background-color: $bgSecondary; 22 | color: $fg; 23 | } 24 | } 25 | 26 | // simple date 27 | .date { 28 | font-size: 17px; 29 | font-weight: bold; 30 | } 31 | 32 | // workspaces 33 | .works { 34 | font-size: 11px; 35 | margin-top: 1px; 36 | margin-left: 10px; 37 | font-family: Iosevka Nerd Font; 38 | font-size: 13px; 39 | 40 | // void 41 | .0f { 42 | color: $black; 43 | background-color: $contrastbg; 44 | padding: 8px 10px; 45 | } 46 | 47 | // occupied 48 | .01f, .02f, .03f, .04f, .05f, .06f { 49 | color: $blue; 50 | background-color: $contrastbg; 51 | padding: 8px 10px; 52 | } 53 | 54 | // focused 55 | .01f1, .02f2, .03f3, .04f4, .05f5, .06f6, 56 | .0f1, .0f2, .0f3, .0f4, .0f5, .0f6 { 57 | color: $yellow; 58 | background-color: $contrastbg; 59 | padding: 8px 10px; 60 | } 61 | 62 | // first workspace, just for rounded borders 63 | .first { 64 | border-top-left-radius: 15px; 65 | border-bottom-left-radius: 15px; 66 | padding-left: 15px; 67 | } 68 | 69 | // last workspace, just for rounded borders 70 | .last { 71 | border-top-right-radius: 15px; 72 | border-bottom-right-radius: 15px; 73 | padding-right: 18px; 74 | } 75 | } 76 | 77 | // position toggler 78 | .position-toggler { 79 | padding: 0 12px; 80 | font-family: Iosevka Nerd Font; 81 | color: $yellow; 82 | margin-left: 5px; 83 | border-radius: 10px; 84 | transition: all ease .2s; 85 | &:hover { background-color: $contrastbg; } 86 | &:active { background-color: $bgSecondary; } 87 | } 88 | 89 | // music dispatcher styles 90 | .music-dispatcher { 91 | padding: 0 15px 0px 10px; 92 | border-radius: 10px; 93 | margin-left: 7px; 94 | margin-right: -3px; 95 | color: $green; 96 | transition: all ease .2s; 97 | font-family: Iosevka Nerd Font; 98 | &:hover { background-color: $contrastbg; } 99 | &:active { background-color: $bgSecondary; } 100 | } 101 | 102 | // powermenu dispatcher 103 | .powermenu-dispatcher { 104 | font-family: Iosevka Nerd Font; 105 | border-radius: 10px; 106 | padding: 0px 16px 0px 9px; 107 | color: $red; 108 | font-size: 18px; 109 | &:hover { 110 | background-color: $contrastbg; 111 | } 112 | &:active { 113 | background-color: $bgSecondary; 114 | color: $fg; 115 | } 116 | } 117 | 118 | // syscontrols 119 | .syscontrol { 120 | background-color: $contrastbg; 121 | border-radius: 20px; 122 | padding: 0px 15px 0 9px; 123 | margin-right: 10px; 124 | font-size: 14px; 125 | font-family: Iosevka Nerd Font; 126 | button { 127 | padding: 0 14px 0 5px; 128 | transition: all ease .2s; 129 | &:hover { 130 | color: $lightblack; 131 | } 132 | } 133 | .network { 134 | margin: 0 0px 0 10px; 135 | } 136 | .volume { 137 | margin: 0 2px; 138 | padding-left: 8px; 139 | } 140 | } 141 | 142 | // updates 143 | .updates { 144 | margin-right: 20px; 145 | .icon { 146 | margin-right: 14px; 147 | font-family: Iosevka Nerd Font; 148 | color: $green; 149 | } 150 | .content { 151 | font-size: 14px; 152 | margin-top: -2.5px; 153 | font-family: Product Sans; 154 | } 155 | } 156 | 157 | // dashboard dispatcher 158 | .dashboard-dispatcher { 159 | font-family: Iosevka Nerd Font; 160 | border-radius: 10px; 161 | padding: 0px 16px 0px 14px; 162 | margin-right: 10px; 163 | color: $fg; 164 | font-size: 18px; 165 | &:hover { 166 | background-color: $contrastbg; 167 | } 168 | &:active { 169 | background-color: $bgSecondary; 170 | color: $fg; 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /.config/sxhkd/OLDsxhkdrc: -------------------------------------------------------------------------------- 1 | ## Copyright (C) 2020-2022 Aditya Shakya 2 | ## Everyone is permitted to copy and distribute copies of this file under GNU-GPL3 3 | 4 | ##---------- Keybindings for bspwm ----------## 5 | 6 | # Terminal (alacritty) 7 | super + Return 8 | bspterm 9 | 10 | # Terminal (floating) 11 | super + shift + Return 12 | bspterm -f 13 | 14 | # Terminal (fullscreen) 15 | super + t 16 | bspterm -s 17 | 18 | ##---------- Rofi Launcher & Menus ----------## 19 | 20 | # Rofi App Launcher 21 | alt + F1 22 | sh ~/.config/bspwm/rofi/bin/launcher 23 | 24 | # Rofi Network Menu 25 | super + n 26 | nmd 27 | 28 | # Rofi Themes Menu 29 | ctrl + alt + t 30 | sh ~/.config/bspwm/rofi/bin/themes 31 | 32 | # Rofi Menus/Applets 33 | super + {w,m,x,r,s} 34 | sh ~/.config/bspwm/rofi/bin/{windows,mpd,powermenu,asroot,screenshot} 35 | 36 | ##---------- Applications ----------## 37 | 38 | # Launch Apps 39 | super + shift + {f,w,e} 40 | {thunar,firefox,geany} 41 | 42 | # Terminal Apps 43 | ctrl + alt + {v,r,h} 44 | alacritty --config-file ~/.config/bspwm/alacritty/alacritty.yml -e {vim,ranger,htop} 45 | 46 | # Color Picker 47 | super + p 48 | color-gpick 49 | 50 | # Lockscreen 51 | ctrl + alt + l 52 | betterlockscreen --lock 53 | 54 | ##---------- System Keys ----------## 55 | 56 | # Take a screenshot 57 | Print 58 | takeshot --now 59 | 60 | # Take screenshot in 5 second 61 | alt + Print 62 | takeshot --in5 63 | 64 | # Take screenshot in 10 second 65 | shift + Print 66 | takeshot --in10 67 | 68 | # Take screenshot of active window 69 | ctrl + Print 70 | takeshot --win 71 | 72 | # Take screenshot of area 73 | ctrl + alt + Print 74 | takeshot --area 75 | 76 | # Brighness control 77 | XF86MonBrightness{Up,Down} 78 | brightness{ --inc, --dec} 79 | 80 | # Volume control 81 | XF86Audio{RaiseVolume,LowerVolume} 82 | volume{ --inc, --dec} 83 | 84 | XF86AudioMute 85 | volume --toggle 86 | 87 | # Music control 88 | XF86Audio{Next,Prev,Play,Stop} 89 | mpc {next,prev,toggle,stop} 90 | 91 | ##---------- Bspwm ----------## 92 | 93 | # Close App 94 | super + {_,shift + }c 95 | bspc node -{c,k} 96 | 97 | # Reload Keybindings 98 | super + Escape 99 | pkill -USR1 -x sxhkd 100 | 101 | # kill window 102 | ctrl + alt + Escape 103 | xkill 104 | 105 | # Quit/Restart bspwm 106 | ctrl + shift + {q,r} 107 | bspc {quit,wm -r} 108 | 109 | # Split horizontal, vertical or cancel 110 | super + {h,v,q} 111 | bspc node -p {east,south,cancel} 112 | 113 | # Preselect the ratio 114 | super + ctrl + {1-9} 115 | bspc node -o 0.{1-9} 116 | 117 | # Fullscreen or Monocle 118 | super + f 119 | # bspc desktop -l next 120 | bspc node -t "~"fullscreen 121 | 122 | # Toggle beetwen floating & tiled 123 | super + space 124 | bspc node -t "~"{floating,tiled} 125 | 126 | # Pseudo Tiled & tiled mode 127 | super + shift + space 128 | #super + {p,t} 129 | bspc node -t "~"{pseudo_tiled,tiled} 130 | 131 | # Set the node flags 132 | super + ctrl + {m,x,y,z} 133 | bspc node -g {marked,locked,sticky,private} 134 | 135 | # Send the window to another edge of the screen 136 | super + {_,shift + }{Left,Down,Up,Right} 137 | bspc node -{f,s} {west,south,north,east} 138 | 139 | # Change focus to next window, including floating window 140 | alt + {_,shift + }Tab 141 | bspc node -f {next.local,prev.local} 142 | 143 | # Switch workspace 144 | ctrl + alt + {Left,Right} 145 | bspc desktop -f {prev.local,next.local} 146 | 147 | # Switch to last opened workspace 148 | super + {Tab,grave} 149 | bspc {node,desktop} -f last 150 | 151 | # Send focused window to another workspace 152 | super + {_,shift + }{1-8} 153 | bspc {desktop -f,node -d} '^{1-8}' 154 | 155 | # Expanding windows 156 | super + control + {Left,Right,Up,Down} 157 | bspc node -z {left -20 0,right 20 0,top 0 -20,bottom 0 20} 158 | 159 | ## Shrinking windows 160 | super + alt + {Left,Right,Up,Down} 161 | bspc node -z {left 20 0,right -20 0,top 0 20,bottom 0 -20} 162 | 163 | ## Move floating windows 164 | alt + shift + {Left,Down,Up,Right} 165 | bspc node -v {-20 0,0 20,0 -20,20 0} 166 | 167 | # Hide/Unhide Window 168 | super + shift + i 169 | winmask 170 | 171 | ##---------- EOF ----------## 172 | -------------------------------------------------------------------------------- /.config/sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | # 2 | # wm independent hotkeys 3 | # 4 | 5 | # terminal emulator 6 | super + Return 7 | alacritty 8 | 9 | # terminal emulator 10 | super + a 11 | sh ~/.config/eww/open.sh 12 | 13 | # Lockscreen 14 | ctrl + alt + l 15 | betterlockscreen --lock 16 | 17 | # Rofi Menus/Applets 18 | super + ctrl + x 19 | sh ~/.config/rofi/applets/android/powermenu.sh 20 | 21 | # program launcher 22 | super + d 23 | rofi -show drun -icon-theme Reversal 24 | 25 | # show open window 26 | super + ctrl + d 27 | rofi -modi drun -show window -line-padding 4 \ 28 | -columns 2 -padding 50 -hide-scrollbar -terminal xfce4-terminal \ 29 | -show-icons -drun-icon-theme "Arc-X-D" -font "Droid Sans Regular 10" 30 | 31 | # power-menu 32 | #super + shift + e 33 | # ~/.config/rofi/powermenu.sh 34 | 35 | # make sxhkd reload its configuration files: 36 | super + Escape 37 | pkill -USR1 -x sxhkd 38 | 39 | # 40 | # bspwm hotkeys 41 | # 42 | 43 | # quit/restart bspwm 44 | super + alt + {q,r} 45 | bspc {quit,wm -r} 46 | 47 | # close and kill 48 | super + {_,shift + }q 49 | bspc node -{c,k} 50 | 51 | # alternate between the tiled and monocle layout 52 | super + m 53 | bspc desktop -l next 54 | 55 | # send the newest marked node to the newest preselected node 56 | super + y 57 | bspc node newest.marked.local -n newest.!automatic.local 58 | 59 | # swap the current node and the biggest window 60 | super + g 61 | bspc node -s biggest.window 62 | 63 | # 64 | # state/flags 65 | # 66 | 67 | # set the window state 68 | super + {t,shift + t,s,f} 69 | bspc node -t {tiled,pseudo_tiled,floating,fullscreen} 70 | 71 | # set the node flags 72 | super + ctrl + {m,x,y,z} 73 | bspc node -g {marked,locked,sticky,private} 74 | 75 | # 76 | # focus/swap 77 | # 78 | 79 | # focus the node in the given direction 80 | super + {_,shift + }{h,j,k,l} 81 | bspc node -{f,s} {west,south,north,east} 82 | 83 | # focus the node for the given path jump 84 | super + {p,b,comma,period} 85 | bspc node -f @{parent,brother,first,second} 86 | 87 | # focus the next/previous window in the current desktop 88 | super + {_,shift + }c 89 | bspc node -f {next,prev}.local.!hidden.window 90 | 91 | # focus the next/previous desktop in the current monitor 92 | super + bracket{left,right} 93 | bspc desktop -f {prev,next}.local 94 | 95 | # focus the last node/desktop 96 | super + {grave,Tab} 97 | bspc {node,desktop} -f last 98 | 99 | # focus the older or newer node in the focus history 100 | super + {o,i} 101 | bspc wm -h off; \ 102 | bspc node {older,newer} -f; \ 103 | bspc wm -h on 104 | 105 | # focus or send to the given desktop 106 | super + {_,shift + }{1-9,0} 107 | bspc {desktop -f,node -d} '^{1-9,10}' 108 | 109 | # 110 | # preselect 111 | # 112 | 113 | # preselect the direction 114 | super + ctrl + {h,j,k,l} 115 | bspc node -p {west,south,north,east} 116 | 117 | # preselect the ratio 118 | super + ctrl + {1-9} 119 | bspc node -o 0.{1-9} 120 | 121 | # cancel the preselection for the focused node 122 | super + ctrl + space 123 | bspc node -p cancel 124 | 125 | # cancel the preselection for the focused desktop 126 | super + ctrl + shift + space 127 | bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel 128 | 129 | # 130 | # move/resize 131 | # 132 | 133 | # expand a window by moving one of its side outward 134 | super + alt + {h,j,k,l} 135 | bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} 136 | 137 | # contract a window by moving one of its side inward 138 | super + alt + shift + {h,j,k,l} 139 | bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} 140 | 141 | # move a floating window 142 | super + {Left,Down,Up,Right} 143 | bspc node -v {-20 0,0 20,0 -20,20 0} 144 | # 145 | # Special hotkeys 146 | # 147 | 148 | # Multimedia keys 149 | XF86AudioRaiseVolume 150 | amixer -q set Master 5%+ unmute 151 | 152 | # Still multimedia 153 | XF86AudioLowerVolume 154 | amixer -q set Master 5%- unmute 155 | 156 | # still 157 | XF86AudioMute 158 | amixer -D pulse sset Master toggle-mute 159 | 160 | # amixer -q set Master toggle 161 | # Simple amixer command seems to have problems unmuting device 162 | 163 | # Brightness up 164 | XF86MonBrightnessUp 165 | xbacklight -inc 5 166 | 167 | # And brightness down 168 | XF86MonBrightnessDown 169 | xbacklight -dec 5 170 | 171 | # Screenshot 172 | Print 173 | scrot ~/Pictures/Screenshot-$(date +%F_%T).png 174 | 175 | super + Print 176 | ~/.config/bspwm/scripts/screenshot.sh 177 | 178 | # Shortcuts 179 | super + w 180 | firefox 181 | 182 | super + n 183 | thunar 184 | 185 | super + F1 186 | ~/.config/bspwm/scripts/keybindings_rofi.sh 187 | 188 | # screenshot 189 | super + shift + s 190 | flameshot gui 191 | -------------------------------------------------------------------------------- /.config/eww/bottom/dashboard/dashboard.yuck: -------------------------------------------------------------------------------- 1 | (defwidget dashboard [] 2 | (box :class "dashboard" 3 | :orientation "v" 4 | :space-evenly false 5 | (box :class "container" 6 | :orientation "v" 7 | :space-evenly false 8 | (box :orientation "h" 9 | :space-evenly true 10 | :spacing 10 11 | (box :class "date-box" 12 | :orientation "v" 13 | :space-evenly false 14 | (label :text "${date}" :class "time") 15 | (label :text "${dashboard_date_day}" :class "day") 16 | ) 17 | (box :class "calendar-box" 18 | :orientation "h" 19 | :space-evenly false 20 | (cal) 21 | ) 22 | ) 23 | (box :class "music" 24 | :orientation "h" 25 | :space-evenly false 26 | (box :class "picture" 27 | :orientation "v" 28 | :space-evenly false 29 | :style "background-image: url('${music_art_url}');" 30 | (label :text "${music_title}" :class "music-name" :halign "start") 31 | (label :text "${music_artist}" :class "music-artist" :halign "start") 32 | music_art_url_getter 33 | ) 34 | (box :class "controls" 35 | :orientation "v" 36 | :space-evenly true 37 | (button :valign "start" 38 | :class "prev" 39 | :onclick "backend/main.sh music.control prev" 40 | :tooltip "Go to the previous music" 41 | "玲" 42 | ) 43 | (button :valign "center" 44 | :class "pause" 45 | :onclick "backend/main.sh music.control play-pause" 46 | :tooltip "Play/Pause Music" 47 | "${music_status == 'Playing' ? '' : ''}" 48 | ) 49 | (button :valign "end" 50 | :class "next" 51 | :onclick "backend/main.sh music.control next" 52 | :tooltip "Go to the next music" 53 | "怜" 54 | ) 55 | ) 56 | ) 57 | (box :class "services-box" 58 | :orientation "h" 59 | :space-evenly true 60 | :spacing 10 61 | (button :class "network widget ${dashboard_network_radio_status == 'on' ? 'activated' : 'deactivated'}" 62 | :orientation "v" 63 | :space-evenly false 64 | :hexpand true 65 | :onclick "backend/main.sh bar.network toggle-radio" 66 | (box :space-evenly false 67 | :orientation "v" 68 | (label :text "${network_icon}" :class "icon") 69 | (label :text "Wi-Fi" :class "content") 70 | ) 71 | ) 72 | (button :class "light_mode widget ${dashboard_light_mode_status == 'on' ? 'activated' : 'deactivated'}" 73 | :orientation "v" 74 | :space-evenly false 75 | :hexpand true 76 | :onclick "backend/main.sh dashboard.light_mode toggle" 77 | (box :space-evenly false 78 | :orientation "v" 79 | (label :text "盛" :class "icon") 80 | (label :text "Light Mode" :class "content") 81 | ) 82 | ) 83 | (button :class "redshift widget ${dashboard_redshift_state == 'on' ? 'activated' : 'deactivated'}" 84 | :orientation "v" 85 | :space-evenly false 86 | :hexpand true 87 | :onclick "backend/main.sh dashboard.redshift toggle" 88 | (box :space-evenly false 89 | :orientation "v" 90 | (label :text "ﯦ" :class "icon") 91 | (label :text "Blue Light" :class "content") 92 | ) 93 | ) 94 | ) 95 | (box :class "controls-box" 96 | :orientation "h" 97 | :space-evenly true 98 | :spacing 10 99 | (box :class "system-control" 100 | :orientation "v" 101 | :space-evenly false 102 | (label :text "Controls" 103 | :class "label" 104 | :halign "start") 105 | (box :class "sliders-box" 106 | :orientation "v" 107 | :space-evenly false 108 | ; volume 109 | (box :orientation "h" 110 | :space-evenly "false" 111 | :class "vol-slider" 112 | (box :class "vol-label" 113 | volume_icon 114 | ) 115 | (scale :value vol 116 | :onchange "backend/main.sh bar.volume set {}" 117 | :min 0 118 | :max 101) 119 | ) 120 | ; brightness 121 | (box :class "br-slider" 122 | :orientation "h" 123 | :space-evenly "false" 124 | (box :class "br-label" 125 | br_icon) 126 | (scale :value br 127 | :onchange "brightnessctl s {}%" 128 | :min 0 129 | :max 101) 130 | ) 131 | ) 132 | ) 133 | (box :class "system-stats" 134 | :orientation "v" 135 | :space-evenly false 136 | (label :text "Stats" 137 | :class "label" 138 | :halign "start") 139 | (box :class "sliders-box" 140 | :orientation "v" 141 | :space-evenly false 142 | ;; cpu 143 | (box :class "cpu-slider" 144 | :orientation "h" 145 | :space-evenly "false" 146 | (box :class "cpu-label" 147 | "") 148 | (scale :value cpu 149 | :active false 150 | :min 0 151 | :max 101) 152 | ) 153 | ;; ram 154 | (box :class "ram-slider" 155 | :orientation "h" 156 | :space-evenly "false" 157 | (box :class "ram-label" 158 | "") 159 | (scale :value ram 160 | :active false 161 | :min 0 162 | :max 101) 163 | ) 164 | ) 165 | ) 166 | ) 167 | ) 168 | ) 169 | ) 170 | 171 | (defwindow dashboard 172 | :geometry (geometry :x "0px" 173 | :y "-59px" 174 | :width "450" 175 | :height "500px" 176 | :anchor "center bottom") 177 | :wm-ignore false 178 | (dashboard)) 179 | -------------------------------------------------------------------------------- /.config/eww/bottom/dashboard/dashboard.scss: -------------------------------------------------------------------------------- 1 | $radius: 10px; 2 | 3 | .dashboard { 4 | background-color: $darkbg; 5 | color: $fg; 6 | font-family: Product Sans; 7 | font-size: 14px; 8 | .container { 9 | padding: 10px; 10 | background-color: $bg; 11 | border-radius: 10px; 12 | } 13 | } 14 | 15 | .user-info-box { 16 | padding: 10px; 17 | background-color: $darkbg; 18 | .info { 19 | .pfp { 20 | min-width: 20px; 21 | min-height: 12px; 22 | background-size: cover; 23 | background-repeat: no-repeat; 24 | border-radius: 100px; 25 | margin-right: 10px; 26 | } 27 | .username { 28 | font-weight: bold; 29 | font-size: 15px; 30 | } 31 | } 32 | .buttons { 33 | font-family: Iosevka Nerd Font; 34 | .close { 35 | transition: all ease .2s; 36 | color: $red; 37 | padding: 0px 8px 0px 3px; 38 | border-radius: 10px; 39 | &:hover { background-color: $contrastbg; } 40 | &:active { background-color: $bg; } 41 | } 42 | } 43 | } 44 | 45 | .date-box { 46 | background-color: $contrastbg; 47 | padding: 20px; 48 | border-radius: $radius; 49 | .time { 50 | font-weight: bold; 51 | padding-top: 25px; 52 | font-size: 70px; 53 | } 54 | .day { 55 | font-size: 20px; 56 | } 57 | } 58 | 59 | .calendar-box { 60 | background-color: $contrastbg; 61 | border-radius: $radius; 62 | .cal-box { 63 | background-color: transparent; 64 | } 65 | } 66 | 67 | .services-box { 68 | margin-top: 10px; 69 | .widget { 70 | transition: all ease .2s; 71 | &.deactivated { 72 | background-color: $contrastbg; 73 | color: $fg; 74 | &:hover { background-color: $bgSecondary; } 75 | &:active { background-color: $contrastbg; } 76 | } 77 | &.activated { 78 | background-color: $blue; 79 | color: $bg; 80 | } 81 | border-radius: $radius; 82 | padding: 30px 0px; 83 | .icon { 84 | font-family: Iosevka Nerd Font; 85 | font-size: 25px; 86 | padding: 0px 13px 0px 2px; 87 | } 88 | .content { 89 | font-family: Product Sans; 90 | font-size: 18px; 91 | padding-top: 4px; 92 | } 93 | } 94 | } 95 | 96 | .music { 97 | background-color: $bg; 98 | color: $fg; 99 | font-family: Product Sans; 100 | font-size: 14px; 101 | margin-top: 10px; 102 | .picture { 103 | min-width: 400px; 104 | background-size: cover; 105 | background-position: center; 106 | background-repeat: no-repeat; 107 | border-radius: $radius; 108 | padding: 15px 20px; 109 | .music-name { 110 | font-weight: bold; 111 | font-size: 22px; 112 | margin-bottom: 5px; 113 | } 114 | .music-artist { 115 | font-size: 16px; 116 | } 117 | } 118 | .controls { 119 | background-color: $contrastbg; 120 | border-radius: $radius; 121 | font-family: Iosevka Nerd Font; 122 | font-size: 20px; 123 | margin: 0px 0px 0px 10px; 124 | padding: 9px 20px; 125 | .pause { 126 | padding: 5px 7px 4px 2px; 127 | font-size: 16px; 128 | } 129 | } 130 | } 131 | 132 | .controls-box { 133 | margin-top: 10px; 134 | .system-control { 135 | background-color: $contrastbg; 136 | border-radius: $radius; 137 | padding: 10px 15px; 138 | .label { 139 | font-size: 16px; 140 | padding: 3px 0px 6px 0px; 141 | } 142 | .sliders-box { 143 | .vol-slider { 144 | margin-bottom: 4.5px; 145 | .vol-label { 146 | font-size: 20px; 147 | font-family: Iosevka Nerd Font; 148 | margin-right: 15px; 149 | color: $cyan; 150 | } 151 | & scale trough { 152 | all: unset; 153 | border-radius: 10px; 154 | background-color: $black; 155 | border: solid $bgSecondary 5px; 156 | min-height: 7px; 157 | min-width: 185px; 158 | & highlight { 159 | all: unset; 160 | background-color: $cyan; 161 | color: #000000; 162 | border-radius: 10px; 163 | } 164 | } 165 | } 166 | .br-slider { 167 | margin-left: -1.5px; 168 | .br-label { 169 | font-size: 20px; 170 | font-family: Iosevka Nerd Font; 171 | margin-right: 15px; 172 | color: $yellow; 173 | } 174 | & scale trough { 175 | all: unset; 176 | border-radius: 10px; 177 | background-color: $black; 178 | border: solid $bgSecondary 5px; 179 | min-height: 7px; 180 | min-width: 185px; 181 | & highlight { 182 | all: unset; 183 | background-color: $yellow; 184 | color: #000000; 185 | border-radius: 10px; 186 | } 187 | } 188 | } 189 | } 190 | } 191 | .system-stats { 192 | background-color: $contrastbg; 193 | border-radius: $radius; 194 | padding: 10px 15px; 195 | .label { 196 | font-size: 16px; 197 | padding: 3px 0px 6px 0px; 198 | } 199 | .sliders-box { 200 | .cpu-slider { 201 | .cpu-label { 202 | font-size: 20px; 203 | font-family: Iosevka Nerd Font; 204 | margin-right: 15px; 205 | color: $red; 206 | } 207 | & scale trough { 208 | all: unset; 209 | border-radius: 10px; 210 | background-color: $black; 211 | border: solid $bgSecondary 5px; 212 | min-height: 7px; 213 | min-width: 185px; 214 | & highlight { 215 | all: unset; 216 | background-color: $red; 217 | color: #000000; 218 | border-radius: 10px; 219 | } 220 | } 221 | } 222 | .ram-slider { 223 | .ram-label { 224 | font-size: 25px; 225 | font-family: Iosevka Nerd Font; 226 | margin-right: 11px; 227 | color: $magenta; 228 | } 229 | & scale trough { 230 | all: unset; 231 | border-radius: 10px; 232 | background-color: $black; 233 | border: solid $bgSecondary 5px; 234 | min-height: 7px; 235 | min-width: 185px; 236 | & highlight { 237 | all: unset; 238 | background-color: $magenta; 239 | color: #000000; 240 | border-radius: 10px; 241 | } 242 | } 243 | } 244 | } 245 | } 246 | } 247 | 248 | .footer { 249 | background-color: $darkbg; 250 | padding: 10px; 251 | color: $fg; 252 | .hint { 253 | .icon { 254 | font-family: Iosevka Nerd Font; 255 | color: $yellow; 256 | font-size: 18px; 257 | margin-right: 8px; 258 | } 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /.config/eww/top/dashboard/dashboard.yuck: -------------------------------------------------------------------------------- 1 | (defwidget dashboard [] 2 | (box :class "dashboard" 3 | :orientation "v" 4 | :space-evenly false 5 | (box :class "container" 6 | :orientation "v" 7 | :space-evenly false 8 | (box :orientation "h" 9 | :space-evenly true 10 | :spacing 10 11 | (box :class "date-box" 12 | :orientation "v" :space-evenly "false" :spacing 0 13 | (label :class "weicon" :text "${wicon}") 14 | (label :class "wereport" :text "${wdesc}") 15 | (label :class "wetemp" :text "It's ${wtemp} out") 16 | (label :class "wehumid" :text "Humidity is at ${whumid}%") 17 | ) 18 | (box :class "calendar-box" 19 | :orientation "h" 20 | :space-evenly false 21 | (cal) 22 | ) 23 | ) 24 | (box :class "music" 25 | :orientation "h" 26 | :space-evenly false 27 | (box :class "picture" 28 | :orientation "v" 29 | :space-evenly false 30 | :style "background-image: url('${music_art_url}');" 31 | (label :text "${music_title}" :class "music-name" :halign "start" :limit-width 35) 32 | (label :text "${music_artist}" :class "music-artist" :halign "start") 33 | music_art_url_getter 34 | ) 35 | (box :class "controls" 36 | :orientation "v" 37 | :space-evenly true 38 | (button :valign "start" 39 | :class "prev" 40 | :onclick "backend/main.sh music.control prev" 41 | :tooltip "Go to the previous music" 42 | "玲" 43 | ) 44 | (button :valign "center" 45 | :class "pause" 46 | :onclick "backend/main.sh music.control play-pause" 47 | :tooltip "Play/Pause Music" 48 | "${music_status == 'Playing' ? '' : ''}" 49 | ) 50 | (button :valign "end" 51 | :class "next" 52 | :onclick "backend/main.sh music.control next" 53 | :tooltip "Go to the next music" 54 | "怜" 55 | ) 56 | ) 57 | ) 58 | (box :class "services-box" 59 | :orientation "h" 60 | :space-evenly true 61 | :spacing 10 62 | (button :class "network widget ${dashboard_network_radio_status == 'on' ? 'activated' : 'deactivated'}" 63 | :orientation "v" 64 | :space-evenly false 65 | :hexpand true 66 | :onclick "backend/main.sh bar.network toggle-radio" 67 | (box :space-evenly false 68 | :orientation "v" 69 | (label :text "${network_icon}" :class "icon") 70 | (label :text "Wi-Fi" :class "content") 71 | ) 72 | ) 73 | (box :class "calendar-box" 74 | :orientation "h" 75 | :space-evenly true 76 | (button :class "poweroff" 77 | :tooltip "Poweroff" 78 | :onclick "backend/main.sh powermenu.manager shutdown" 79 | "⏻" 80 | ) 81 | (button :class "reboot" 82 | :tooltip "Reboot" 83 | :onclick "backend/main.sh powermenu.manager reboot" 84 | "勒" 85 | ) 86 | (button :class "logout" 87 | :tooltip "Logout" 88 | :onclick "backend/main.sh powermenu.manager logout" 89 | "" 90 | ) 91 | ) 92 | (button :class "light_mode widget ${dashboard_light_mode_status == 'on' ? 'activated' : 'deactivated'}" 93 | :orientation "v" 94 | :space-evenly false 95 | :hexpand true 96 | :onclick "backend/dashboard/blueman.sh" 97 | (box :space-evenly false 98 | :orientation "v" 99 | (label :text "${blue-status}" :class "blueicon") 100 | (label :class "blue-info" :text bluetooth) 101 | ) 102 | ) 103 | ) 104 | (box :class "controls-box" 105 | :orientation "h" 106 | :space-evenly true 107 | :spacing 10 108 | (box :class "system-control" 109 | :orientation "v" 110 | :space-evenly false 111 | (label :text "Controls" 112 | :class "label" 113 | :halign "start") 114 | (box :class "sliders-box" 115 | :orientation "v" 116 | :space-evenly false 117 | ; volume 118 | (box :orientation "h" 119 | :space-evenly "false" 120 | :class "vol-slider" 121 | (box :class "vol-label" 122 | volume_icon 123 | ) 124 | (scale :value vol 125 | :onchange "backend/main.sh bar.volume set {}" 126 | :min 0 127 | :max 101) 128 | ) 129 | ; brightness 130 | (box :class "br-slider" 131 | :orientation "h" 132 | :space-evenly "false" 133 | (box :class "br-label" 134 | br_icon) 135 | (scale :value br 136 | :onchange "brightnessctl s {}%" 137 | :min 0 138 | :max 101) 139 | ) 140 | ) 141 | ) 142 | (box :class "system-stats" 143 | :orientation "v" 144 | :space-evenly false 145 | (label :text "Stats" 146 | :class "label" 147 | :halign "start") 148 | (box :class "sliders-box" 149 | :orientation "v" 150 | :space-evenly false 151 | ;; cpu 152 | (box :class "cpu-slider" 153 | :orientation "h" 154 | :space-evenly "false" 155 | (box :class "cpu-label" 156 | "") 157 | (scale :value cpu 158 | :active false 159 | :min 0 160 | :max 101) 161 | ) 162 | ;; ram 163 | (box :class "ram-slider" 164 | :orientation "h" 165 | :space-evenly "false" 166 | (box :class "ram-label" 167 | "") 168 | (scale :value ram 169 | :active false 170 | :min 0 171 | :max 101) 172 | ) 173 | ) 174 | ) 175 | ) 176 | ) 177 | ) 178 | ) 179 | 180 | (defwindow dashboard 181 | :geometry (geometry :x "0px" 182 | :y "55px" 183 | :width "450" 184 | :height "500px" 185 | :anchor "center top") 186 | :wm-ignore false 187 | (dashboard)) 188 | -------------------------------------------------------------------------------- /.config/polybar/scripts/polywins.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # POLYWINS 3 | 4 | # SETTINGS {{{ --- 5 | 6 | active_text_color="#fca2aa" 7 | active_bg= 8 | active_underline="#f9929b" 9 | 10 | inactive_text_color="#6a7078" 11 | inactive_bg= 12 | inactive_underline= 13 | 14 | separator=" " 15 | show="icon" # options: window_title, window_class, window_classname, icon 16 | forbidden_classes="Polybar Conky Gmrun" 17 | empty_desktop_message="Desktop" 18 | 19 | char_limit=20 20 | max_windows=15 21 | char_case="normal" # normal, upper, lower 22 | add_spaces="true" 23 | resize_increment=16 24 | wm_border_width=1 # setting this might be required for accurate resize position 25 | 26 | # --- }}} 27 | 28 | main() { 29 | # If no argument passed... 30 | if [ -z "$2" ]; then 31 | # ...print new window list every time 32 | # the active window changes or 33 | # a window is opened or closed 34 | xprop -root -spy _NET_CLIENT_LIST _NET_ACTIVE_WINDOW | 35 | while IFS= read -r _; do 36 | generate_window_list 37 | done 38 | 39 | # If arguments are passed, run requested on-click function 40 | else 41 | "$@" 42 | fi 43 | } 44 | 45 | # ON-CLICK FUNCTIONS {{{ --- 46 | 47 | raise_or_minimize() { 48 | if [ "$(get_active_wid)" = "$1" ]; then 49 | bspc node $1 -g hidden=on 50 | #wmctrl -ir "$1" -b toggle,hidden 51 | else 52 | bspc node $1 -g hidden=off -f 53 | #wmctrl -ia "$1" 54 | fi 55 | } 56 | 57 | close() { 58 | wmctrl -ic "$1" 59 | } 60 | 61 | slop_resize() { 62 | wmctrl -ia "$1" 63 | wmctrl -ir "$1" -e "$(slop -f 0,%x,%y,%w,%h)" 64 | } 65 | 66 | increment_size() { 67 | while IFS="[ .]" read -r wid ws wx wy ww wh _; do 68 | test "$wid" != "$1" && continue 69 | x=$((wx - wm_border_width * 2 - resize_increment / 2)) 70 | y=$((wy - wm_border_width * 2 - resize_increment / 2)) 71 | w=$((ww + resize_increment)) 72 | h=$((wh + resize_increment)) 73 | done <<-EOF 74 | $(wmctrl -lG) 75 | EOF 76 | 77 | wmctrl -ir "$1" -e "0,$x,$y,$w,$h" 78 | } 79 | 80 | decrement_size() { 81 | while IFS="[ .]" read -r wid ws wx wy ww wh _; do 82 | test "$wid" != "$1" && continue 83 | x=$((wx - wm_border_width * 2 + resize_increment / 2)) 84 | y=$((wy - wm_border_width * 2 + resize_increment / 2)) 85 | w=$((ww - resize_increment)) 86 | h=$((wh - resize_increment)) 87 | done <<-EOF 88 | $(wmctrl -lG) 89 | EOF 90 | 91 | wmctrl -ir "$1" -e "0,$x,$y,$w,$h" 92 | } 93 | 94 | # --- }}} 95 | 96 | # WINDOW LIST SETUP {{{ --- 97 | 98 | active_left="%{F$active_text_color}" 99 | active_right="%{F-}" 100 | inactive_left="%{F$inactive_text_color}" 101 | inactive_right="%{F-}" 102 | separator="%{F$inactive_text_color}$separator%{F-}" 103 | 104 | if [ -n "$active_underline" ]; then 105 | active_left="${active_left}%{+u}%{u$active_underline}" 106 | active_right="%{-u}${active_right}" 107 | fi 108 | 109 | if [ -n "$active_bg" ]; then 110 | active_left="${active_left}%{B$active_bg}" 111 | active_right="%{B-}${active_right}" 112 | fi 113 | 114 | if [ -n "$inactive_underline" ]; then 115 | inactive_left="${inactive_left}%{+u}%{u$inactive_underline}" 116 | inactive_right="%{-u}${inactive_right}" 117 | fi 118 | 119 | if [ -n "$inactive_bg" ]; then 120 | inactive_left="${inactive_left}%{B$inactive_bg}" 121 | inactive_right="%{B-}${inactive_right}" 122 | fi 123 | 124 | get_active_wid() { 125 | active_wid=$(xprop -root _NET_ACTIVE_WINDOW) 126 | active_wid="${active_wid#*\# }" 127 | active_wid="${active_wid%,*}" # Necessary for XFCE 128 | while [ ${#active_wid} -lt 10 ]; do 129 | active_wid="0x0${active_wid#*x}" 130 | done 131 | echo "$active_wid" 132 | } 133 | 134 | get_active_workspace() { 135 | wmctrl -d | 136 | while IFS="[ .]" read -r number active_status _; do 137 | test "$active_status" = "*" && echo "$number" && break 138 | done 139 | } 140 | 141 | generate_window_list() { 142 | active_workspace=$(get_active_workspace) 143 | active_wid=$(get_active_wid) 144 | window_count=0 145 | on_click="$0" 146 | 147 | # Format each window name one by one 148 | # Space and . are both used as IFS, 149 | # because classname and class are separated by '.' 150 | while IFS="[ .\.]" read -r wid ws cname cls host title; do 151 | # Don't show the window if on another workspace (-1 = sticky) 152 | if [ "$ws" != "$active_workspace" ] && [ "$ws" != "-1" ]; then 153 | continue 154 | fi 155 | 156 | # Don't show the window if its class is forbidden 157 | case "$forbidden_classes" in 158 | *$cls*) continue ;; 159 | esac 160 | 161 | # If max number of windows reached, just increment 162 | # the windows counter 163 | if [ "$window_count" -ge "$max_windows" ]; then 164 | window_count=$((window_count + 1)) 165 | continue 166 | fi 167 | 168 | # Show the user-selected window property 169 | case "$show" in 170 | "window_class") w_name="$cls" ;; 171 | "window_classname") w_name="$cname" ;; 172 | "window_title") w_name="$title" ;; 173 | "icon") 174 | case "$cls" in 175 | St) w_name='' ;; 176 | Chromium-browser) w_name='' ;; 177 | TelegramDesktop) w_name=' ' ;; 178 | Pcmanfm) w_name='' ;; 179 | SimpleScreenRecorder) w_name='' ;; 180 | Blue-recorder) w_name='' ;; 181 | Firefox) w_name='' ;; 182 | figma-linux) w_name='' ;; 183 | *) w_name="$cls" ;; 184 | esac 185 | ;; 186 | esac 187 | 188 | if [ "$show" != "icon" ]; then 189 | # Use user-selected character case 190 | case "$char_case" in 191 | "lower") w_name=$( 192 | echo "$w_name" | tr '[:upper:]' '[:lower:]' 193 | ) ;; 194 | "upper") w_name=$( 195 | echo "$w_name" | tr '[:lower:]' '[:upper:]' 196 | ) ;; 197 | esac 198 | 199 | # Truncate displayed name to user-selected limit 200 | if [ "${#w_name}" -gt "$char_limit" ]; then 201 | w_name="$(echo "$w_name" | cut -c1-$((char_limit - 1)))…" 202 | fi 203 | fi 204 | 205 | # Apply add-spaces setting 206 | if [ "$add_spaces" = "true" ]; then 207 | w_name=" $w_name " 208 | fi 209 | 210 | # Add left and right formatting to displayed name 211 | if [ "$wid" = "$active_wid" ]; then 212 | w_name="${active_left}${w_name}${active_right}" 213 | else 214 | w_name="${inactive_left}${w_name}${inactive_right}" 215 | fi 216 | 217 | # Add separator unless the window is first in list 218 | if [ "$window_count" != 0 ]; then 219 | printf "%s" "$separator" 220 | fi 221 | 222 | # Add on-click action Polybar formatting 223 | printf "%s" "%{A1:$on_click raise_or_minimize $wid:}" 224 | printf "%s" "%{A2:$on_click close $wid:}" 225 | printf "%s" "%{A3:$on_click slop_resize $wid:}" 226 | printf "%s" "%{A4:$on_click increment_size $wid:}" 227 | printf "%s" "%{A5:$on_click decrement_size $wid:}" 228 | # Print the final window name 229 | printf "%s" "$w_name" 230 | printf "%s" "%{A}%{A}%{A}%{A}%{A}" 231 | 232 | window_count=$((window_count + 1)) 233 | done <<-EOF 234 | $(wmctrl -lx) 235 | EOF 236 | 237 | # After printing all the windows, 238 | # print number of hidden windows 239 | if [ "$window_count" -gt "$max_windows" ]; then 240 | printf "%s" "+$((window_count - max_windows))" 241 | fi 242 | 243 | # Print empty desktop message if no windows are open 244 | if [ "$window_count" = 0 ]; then 245 | printf "%s" "$empty_desktop_message" 246 | fi 247 | 248 | # Print newline 249 | echo "" 250 | } 251 | 252 | # --- }}} 253 | 254 | main "$@" 255 | -------------------------------------------------------------------------------- /.config/eww/top/dashboard/dashboard.scss: -------------------------------------------------------------------------------- 1 | $radius: 10px; 2 | 3 | .dashboard { 4 | background-color: $darkbg; 5 | color: $fg; 6 | border-radius: $radius; 7 | font-family: Product Sans; 8 | font-size: 14px; 9 | .container { 10 | padding: 10px; 11 | background-color: $bg; 12 | border-radius: 0px; 13 | } 14 | } 15 | 16 | .user-info-box { 17 | padding: 10px; 18 | background-color: $darkbg; 19 | .info { 20 | .pfp { 21 | min-width: 20px; 22 | min-height: 12px; 23 | background-size: cover; 24 | background-repeat: no-repeat; 25 | border-radius: 100px; 26 | margin-right: 10px; 27 | } 28 | .username { 29 | font-weight: bold; 30 | font-size: 15px; 31 | } 32 | } 33 | .buttons { 34 | font-family: Iosevka Nerd Font; 35 | .close { 36 | transition: all ease .2s; 37 | color: $red; 38 | padding: 0px 8px 0px 3px; 39 | border-radius: 10px; 40 | &:hover { background-color: $contrastbg; } 41 | &:active { background-color: $bg; } 42 | } 43 | } 44 | } 45 | 46 | .date-box { 47 | background-color: $contrastbg; 48 | padding: 0px; 49 | border-radius: $radius; 50 | .weicon { 51 | margin: 0 0 0 -145; 52 | margin-top: 20px; 53 | font-size: 80px; 54 | color: $yellow; 55 | } 56 | .wereport { 57 | font-weight: bold; 58 | margin: -93 0 0 70; 59 | font-size: 27px; 60 | } 61 | .wetemp { 62 | color: $green; 63 | margin-top: 0px; 64 | font-size: 33px; 65 | } 66 | .wehumid { 67 | margin-top: 10px; 68 | font-size: 15px; 69 | color: $blue; 70 | 71 | } 72 | } 73 | 74 | .calendar-box { 75 | background-color: $contrastbg; 76 | border-radius: $radius; 77 | .cal-box { 78 | background-color: transparent; 79 | } 80 | } 81 | 82 | .services-box { 83 | margin-top: 10px; 84 | .widget { 85 | transition: all ease .2s; 86 | &.deactivated { 87 | background-color: $contrastbg; 88 | color: $fg; 89 | &:hover { background-color: $bgSecondary; } 90 | &:active { background-color: $contrastbg; } 91 | } 92 | &.activated { 93 | background-color: $blue; 94 | color: $bg; 95 | } 96 | border-radius: $radius; 97 | padding: 30px 0px; 98 | .icon { 99 | font-family: Iosevka Nerd Font; 100 | font-size: 25px; 101 | padding: 0px 13px 0px 2px; 102 | } 103 | .controlssss { 104 | background-color: $contrastbg; 105 | border-radius: $radius; 106 | font-family: Iosevka Nerd Font; 107 | font-size: 20px; 108 | margin: 0px 0px 0px 10px; 109 | padding: 9px 20px; 110 | } 111 | .blueicon { 112 | font-family: Iosevka Nerd Font; 113 | font-size: 30px; 114 | padding: 3px 0px 0px 2px; 115 | } 116 | .blue-info { 117 | font-family: Product Sans; 118 | font-size: 18px; 119 | padding-top: 4px; 120 | } 121 | .content { 122 | font-family: Product Sans; 123 | font-size: 18px; 124 | padding-top: 4px; 125 | 126 | } 127 | } 128 | } 129 | 130 | .music { 131 | background-color: $bg; 132 | color: $fg; 133 | font-family: Product Sans; 134 | font-size: 14px; 135 | margin-top: 10px; 136 | .picture { 137 | min-width: 400px; 138 | background-size: cover; 139 | background-position: center; 140 | background-repeat: no-repeat; 141 | border-radius: $radius; 142 | padding: 15px 20px; 143 | .music-name { 144 | font-weight: bold; 145 | font-size: 22px; 146 | margin-bottom: 5px; 147 | } 148 | .music-artist { 149 | font-size: 16px; 150 | } 151 | } 152 | .controls { 153 | background-color: $contrastbg; 154 | border-radius: $radius; 155 | font-family: Iosevka Nerd Font; 156 | font-size: 20px; 157 | margin: 0px 0px 0px 10px; 158 | padding: 9px 20px; 159 | .pause { 160 | padding: 5px 7px 4px 2px; 161 | font-size: 16px; 162 | } 163 | } 164 | } 165 | 166 | .controls-box { 167 | margin-top: 10px; 168 | .system-control { 169 | background-color: $contrastbg; 170 | border-radius: $radius; 171 | padding: 10px 15px; 172 | .label { 173 | font-size: 16px; 174 | padding: 3px 0px 6px 0px; 175 | } 176 | .sliders-box { 177 | .vol-slider { 178 | margin-bottom: 4.5px; 179 | .vol-label { 180 | font-size: 20px; 181 | font-family: Iosevka Nerd Font; 182 | margin-right: 15px; 183 | color: $cyan; 184 | } 185 | & scale trough { 186 | all: unset; 187 | border-radius: 10px; 188 | background-color: $black; 189 | border: solid $bgSecondary 5px; 190 | min-height: 7px; 191 | min-width: 185px; 192 | & highlight { 193 | all: unset; 194 | background-color: $cyan; 195 | color: #000000; 196 | border-radius: 10px; 197 | } 198 | } 199 | } 200 | .br-slider { 201 | margin-left: -1.5px; 202 | .br-label { 203 | font-size: 20px; 204 | font-family: Iosevka Nerd Font; 205 | margin-right: 15px; 206 | color: $yellow; 207 | } 208 | & scale trough { 209 | all: unset; 210 | border-radius: 10px; 211 | background-color: $black; 212 | border: solid $bgSecondary 5px; 213 | min-height: 7px; 214 | min-width: 185px; 215 | & highlight { 216 | all: unset; 217 | background-color: $yellow; 218 | color: #000000; 219 | border-radius: 10px; 220 | } 221 | } 222 | } 223 | } 224 | } 225 | .system-stats { 226 | background-color: $contrastbg; 227 | border-radius: $radius; 228 | padding: 10px 15px; 229 | .label { 230 | font-size: 16px; 231 | padding: 3px 0px 6px 0px; 232 | } 233 | .sliders-box { 234 | .cpu-slider { 235 | .cpu-label { 236 | font-size: 20px; 237 | font-family: Iosevka Nerd Font; 238 | margin-right: 15px; 239 | color: $red; 240 | } 241 | & scale trough { 242 | all: unset; 243 | border-radius: 10px; 244 | background-color: $black; 245 | border: solid $bgSecondary 5px; 246 | min-height: 7px; 247 | min-width: 185px; 248 | & highlight { 249 | all: unset; 250 | background-color: $red; 251 | color: #000000; 252 | border-radius: 10px; 253 | } 254 | } 255 | } 256 | .ram-slider { 257 | .ram-label { 258 | font-size: 25px; 259 | font-family: Iosevka Nerd Font; 260 | margin-right: 11px; 261 | color: $magenta; 262 | } 263 | & scale trough { 264 | all: unset; 265 | border-radius: 10px; 266 | background-color: $black; 267 | border: solid $bgSecondary 5px; 268 | min-height: 7px; 269 | min-width: 185px; 270 | & highlight { 271 | all: unset; 272 | background-color: $magenta; 273 | color: #000000; 274 | border-radius: 10px; 275 | } 276 | } 277 | } 278 | } 279 | } 280 | } 281 | 282 | .footer { 283 | background-color: $darkbg; 284 | padding: 10px; 285 | color: $fg; 286 | .hint { 287 | .icon { 288 | font-family: Iosevka Nerd Font; 289 | color: $yellow; 290 | font-size: 18px; 291 | margin-right: 8px; 292 | } 293 | } 294 | } 295 | -------------------------------------------------------------------------------- /.config/polybar/config: -------------------------------------------------------------------------------- 1 | ;========================================================== 2 | ; 3 | ; 4 | ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ 5 | ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ 6 | ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ 7 | ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ 8 | ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ 9 | ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ 10 | ; 11 | ; 12 | ; To learn more about how to configure Polybar 13 | ; go to https://github.com/polybar/polybar 14 | ; 15 | ; The README contains a lot of information 16 | ; 17 | ;========================================================== 18 | 19 | [colors] 20 | background = #101313 21 | ;foreground = #676b73 22 | foreground = ${xrdb:foreground} 23 | 24 | color0 = ${xrdb:color0} 25 | color1 = ${xrdb:color1} 26 | color2 = ${xrdb:color2} 27 | color3 = ${xrdb:color3} 28 | color4 = ${xrdb:color4} 29 | color5 = ${xrdb:color5} 30 | color6 = ${xrdb:color6} 31 | color7 = ${xrdb:color7} 32 | color8 = ${xrdb:color8} 33 | color9 = ${xrdb:color9} 34 | color10 = ${xrdb:color10} 35 | color11 = ${xrdb:color11} 36 | color12 = ${xrdb:color12} 37 | color13 = ${xrdb:color13} 38 | color14 = ${xrdb:color14} 39 | color15 = ${xrdb:color15} 40 | dark-light = #272A2B 41 | active-light = #313435 42 | 43 | [bar/example] 44 | tray-position = right 45 | tray-padding =3 46 | monitor = eDP1 47 | width = 100% 48 | height = 26 49 | padding-left =1 50 | padding-right =0 51 | 52 | background = ${colors.background} 53 | foreground = ${colors.foreground} 54 | bottom = false 55 | border-top-size = 7 56 | border-bottom-size = 7 57 | border-top-color = ${colors.background} 58 | border-bottom-color = ${colors.background} 59 | 60 | line-size = 2 61 | wm-restack = bspwm 62 | 63 | #dot2 round-left polywins round-right player dot2 spot 64 | 65 | modules-left = archlogo round-left bspwm round-right xbacklight alsa 66 | modules-center = xwindow dash 67 | modules-right = updates wlan round-left time round-right powermenu 68 | font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=12;3 69 | font-1 = JetBrainsMono Nerd Font:size=17;5 70 | font-2 = Material Design Icons:style=Bold:size=9;3 71 | font-3 = unifont:fontformat=truetype:size=9;3 72 | font-4 = JetBrainsMono Nerd Font:style=Bold:pixelsize=10;4 73 | font-5 = Product Sans:style:pixelsize=13;3 74 | 75 | [module/player] 76 | type = custom/script 77 | tail = true 78 | format-prefix = " " 79 | label = %output:0:40:...% 80 | exec = playerctl --player=spotify,firefox metadata --format "{{ title }} - {{ artist }}" 81 | click-left = playerctl --player=spotify,firefox play-pause 82 | scroll-up = playerctl --player=spotify,firefox next 83 | scroll-down = playerctl --player=spotify,firefox previous 84 | format-background = ${colors.background} 85 | format-foreground = ${xrdb:color2} 86 | 87 | [module/dash] 88 | type = custom/text 89 | content =" " 90 | content-padding =1 91 | #click-left = /home/bradley/.config/eww/scripts/openSysTray.sh 92 | click-left = /home/bradley/.config/eww/open.sh 93 | content-foreground = #dadada 94 | content-background = ${colors.background} 95 | #/home/bradley/.config/eww/controls/toggle.sh 96 | 97 | [module/archlogo] 98 | type = custom/text 99 | content =" " 100 | content-padding =1 101 | ##click-left = idk 102 | content-foreground = #dadada 103 | 104 | [module/spot] 105 | type = custom/text 106 | content =" " 107 | content-padding =1 108 | click-left = /home/bradley/.config/eww/controls/toggle.sh 109 | content-foreground = #A3BE8C 110 | #/home/bradley/.config/eww/controls/toggle.sh 111 | 112 | [module/dot] 113 | type = custom/text 114 | content = " " 115 | content-foreground = ${color.BGL} 116 | content-padding = 0 117 | content-font = 5 118 | 119 | [module/dot2] 120 | type = custom/text 121 | content = "  " 122 | content-foreground = ${color.BGL} 123 | content-padding = 0 124 | content-font = 5 125 | 126 | 127 | [module/polywins] 128 | type = custom/script 129 | exec = ~/.config/polybar/scripts/polywins.sh 2>/dev/null 130 | format =