├── .Xresources ├── .bashrc ├── .bin ├── dunst_logger.sh └── notifications.sh ├── .config ├── dunst │ └── dunstrc ├── eww │ ├── eww.scss │ ├── eww.xml │ ├── icons │ │ ├── console.png │ │ ├── edit.png │ │ ├── folder.png │ │ ├── home.png │ │ └── internet.png │ ├── images │ │ ├── close.png │ │ ├── next.png │ │ ├── player.png │ │ ├── powermenu.png │ │ ├── previous.png │ │ ├── reboot.png │ │ ├── shutdown.png │ │ └── stop.png │ └── scripts │ │ ├── getCpu │ │ ├── getDay │ │ ├── getPlayerStatus │ │ └── getSongTitle ├── herbstluftwm │ └── autostart ├── picom.conf └── rofi │ ├── Notif.rasi │ ├── config.rasi │ └── themes │ └── colors.rasi ├── README.md └── Wallpaper.jpg /.Xresources: -------------------------------------------------------------------------------- 1 | ! special 2 | *.foreground: #3b4252 3 | *.background: #eceff4 4 | *.cursorColor: #3b4252 5 | 6 | *.color0: #3b4252 7 | *.color1: #bf616a 8 | *.color2: #a3be8c 9 | *.color3: #ebcb8b 10 | *.color4: #81a1c1 11 | *.color5: #b48ead 12 | *.color6: #88c0d0 13 | *.color7: #e5e9f0 14 | *.color8: #4c566a 15 | *.color9: #bf616a 16 | *.color10: #a3be8c 17 | *.color11: #ebcb8b 18 | *.color12: #81a1c1 19 | *.color13: #b48ead 20 | *.color14: #8fbcbb 21 | *.color15: #eceff4 22 | 23 | *font: xft:Roboto Mono:size=14 24 | 25 | *boldFont: 26 | *lineSpace: 3 27 | *letterSpace: 0 28 | *geometry: 50x20 29 | *internalBorder: 30 30 | *scrollBar: false 31 | 32 | ! xft fonts settings 33 | Xft.autohint: 0 34 | Xft.lcdfilter: lcddefault 35 | Xft.hinting: 1 36 | Xft.hintstyle: hintslight 37 | Xft.antialias: 1 38 | Xft.rgba: rgb 39 | 40 | URxvt.perl-ext-common: config-reload 41 | 42 | 43 | URxvt.keysym.Shift-Control-V: eval:paste_clipboard 44 | URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard 45 | 46 | URxvt.keysym.Control-Meta-c: builtin-string: 47 | URxvt.keysym.Control-Meta-v: builtin-string: 48 | -------------------------------------------------------------------------------- /.bashrc: -------------------------------------------------------------------------------- 1 | # exit non-interactive shell 2 | [[ $- != *i* ]] && return 3 | 4 | export EDITOR='vim' 5 | export VISUAL='vim' 6 | 7 | alias ls="ls --color=auto" 8 | 9 | export PS1="\n\[\e[36m\]\w\[\e[m\]\\n>_ " 10 | -------------------------------------------------------------------------------- /.bin/dunst_logger.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | #set -euo pipefail 3 | 4 | # Because certain programs like to insert their own newlines and fuck up my format (im looking at you thunderbird) 5 | # we need to crunch each input to ensure that each component is its own line in the log file 6 | crunch_appname=$(echo "$1" | sed '/^$/d') 7 | crunch_summary=$(echo "$2" | sed '/^$/d' | xargs) 8 | crunch_body=$(echo "$3" | sed '/^$/d' | xargs) 9 | crunch_icon=$(echo "$4" | sed '/^$/d') 10 | crunch_urgency=$(echo "$5" | sed '/^$/d') 11 | timestamp=$(date +"%I:%M %p") 12 | 13 | # Rules for notifs that send their icons over the wire (w/o an actual path) 14 | if [[ "$crunch_appname" == "Spotify" ]]; then 15 | random_name=$(mktemp --suffix ".png") 16 | artlink=$(playerctl metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g') 17 | curl -s "$artlink" -o "$random_name" 18 | crunch_icon=$random_name 19 | elif [[ "$crunch_appname" == "AN2Linux" ]]; then 20 | crunch_icon="/usr/share/icons/Nord-Icon/48x48/apps/android-sdk.svg" 21 | fi 22 | 23 | 24 | echo -en "$timestamp\n$crunch_urgency\n$crunch_icon\n$crunch_body\n$crunch_summary\n$crunch_appname\n" >> /tmp/dunstlog 25 | 26 | 27 | #echo "$crunch_appname\n$crunch_summary\n$crunch_body\n$crunch_icon\n$crunch_urgency\x0f" >> /tmp/dunstlog 28 | -------------------------------------------------------------------------------- /.bin/notifications.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | #set -euo pipefail 3 | 4 | ##### Useful settings ##### 5 | 6 | # Directory to search for icons 7 | directory="/usr/share/icons/Papirus/48x48/" 8 | #In case there is no icon path provided, use appname to guess icons 9 | use_appname=true 10 | 11 | ########################### 12 | 13 | ### Raw data 14 | raw=$(tac /tmp/dunstlog) 15 | appname=$(echo -n "$raw" | sed -n '1~6p') 16 | to_rofi=$(echo -n "$raw" | sed -n '2~6p;3~6p' | sed 's/\&/&/g') 17 | icon=$(echo -n "$raw" | sed -n '4~6p' | while read -r line; do echo "$line"; done) 18 | urgency=$(echo -n "$raw" | sed -n '5~6p') 19 | timestamp=$(echo -n "$raw" | sed -n '6~6p') 20 | 21 | ### Create Icon list to parse through with rofi 22 | while IFS= read -r i; do 23 | if [[ -f "$i" ]]; then 24 | full_path="$i\n" 25 | elif [[ -n "$i" ]]; then 26 | incomplete_icon_path=$(fd "$i" "$directory" | head -1) 27 | full_path="${incomplete_icon_path}\n" 28 | else 29 | full_path="\n" 30 | fi 31 | icon_paths_list="${icon_paths_list}${full_path}" 32 | done <<< "$icon" 33 | 34 | ### Create list of rows that are "active" i.e. low urgency for the -a flag on rofi 35 | count=0 36 | while IFS= read -r u; do 37 | if [[ "$u" == *"LOW"* ]]; then 38 | active_list=${active_list}${active_list:+,}$count 39 | count=$((count+1)) 40 | else 41 | count=$((count+1)) 42 | fi 43 | done <<< "$urgency" 44 | 45 | ### Create list of urgent rows for rofi 46 | count=0 47 | while IFS= read -r u; do 48 | if [[ "$u" == *"CRITICAL"* ]]; then 49 | urgent_list=${urgent_list}${urgent_list:+,}$count 50 | count=$((count+1)) 51 | else 52 | count=$((count+1)) 53 | fi 54 | done <<< "$urgency" 55 | 56 | ### Guess icon with appname 57 | readarray -t app_array < <(echo -en "$appname") 58 | app_array=( "${app_array[@],,}" ) 59 | ##FIXME: if first notification doesnt have an icon path, notif center will only show latest notification. current workaround is to 60 | ##enable dunst startup notification 61 | readarray -t icon_path_array < <(echo -en "$icon_paths_list") 62 | if $use_appname; then 63 | for i in "${!icon_path_array[@]}"; do 64 | if [ -z "${icon_path_array[$i]}" ]; then 65 | icon_path_array[$i]="${app_array[$i]}" 66 | fi 67 | done 68 | fi 69 | 70 | ### Bold appname 71 | readarray -t timestamp_array < <(echo -en "$timestamp") 72 | count=0 73 | while IFS= read -r a; do 74 | app_spaces=$(printf %-42.42s "$a") 75 | embolden_app="${embolden_app}${embolden_app:+\n}$app_spaces${timestamp_array[$count]}" 76 | count=$((count+1)) 77 | done <<< "$appname" 78 | 79 | ### insert embolden appname 80 | summary_line=0 81 | body_line=1 82 | readarray -t appname_array < <(echo -en "$embolden_app") 83 | readarray -t to_rofi_array < <(echo -en "$to_rofi") 84 | for a in "${appname_array[@]}"; do 85 | app_merge="${app_merge}${app_merge:+\n}$a\n${to_rofi_array[$summary_line]}\n${to_rofi_array[$body_line]}" 86 | summary_line=$((summary_line+2)) 87 | body_line=$((body_line+2)) 88 | done 89 | 90 | ### Insert icon paths 91 | appname_line=0 92 | summary_line=1 93 | body_line=2 94 | readarray -t merged_app_array < <(echo -en "$app_merge") 95 | for i in "${icon_path_array[@]}"; do 96 | merge="${merged_app_array[$body_line]}\\\0icon\\\x1f${i}" 97 | amend="${amend}${amend:+\n}${merged_app_array[$appname_line]}\n${merged_app_array[$summary_line]}\n$merge" 98 | appname_line=$((appname_line+3)) 99 | summary_line=$((summary_line+3)) 100 | body_line=$((body_line+3)) 101 | done 102 | 103 | ### Final prep 104 | separation=$(sed '0~3 s/$/\x0f/g' <(echo -en "$amend")) 105 | final_rofi=$(sed ':a;/\x0f$/{N;s/\n//;ba}' <(echo -n "$separation")) 106 | 107 | ### Eventual Final command to be executed 108 | selection=$(echo -ne "$final_rofi" | rofi -markup-rows -theme ~/.config/rofi/Notif.rasi -dmenu -eh 3 -a "$active_list" -u "$urgent_list" -sep '\x0f' -p " Notifications" -no-fixed-num-lines -lines 12 -i -no-config) 109 | 110 | ### If a notification was selected, delete it from the logs 111 | if [ -n "$selection" ]; then 112 | remove_markup=$(echo -n "$selection" | sed -e 's/<[^>]*>//g') 113 | extract_date="${remove_markup:42:8}" 114 | remove_whitespace=$(echo -ne "$remove_markup" | sed '1~3 s/\s.*$//') 115 | add_timestamp="$remove_whitespace\n.*\n.*\n$extract_date\n" 116 | reverse_search=$(tac <(echo -ne "$add_timestamp") | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g') 117 | sed -i "N;N;N;N;N; /^$reverse_search$/d" /tmp/dunstlog 118 | fi 119 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | 3 | monitor = 0 4 | follow = mouse 5 | geometry = "288x3-50+150" 6 | indicate_hidden = yes 7 | shrink = no 8 | transparency = 0 9 | notification_height = 0 10 | separator_height = 2 11 | padding = 24 12 | horizontal_padding = 24 13 | separator_color = frame 14 | sort = yes 15 | idle_threshold = 120 16 | 17 | ### Text ### 18 | 19 | font = Roboto Mono 14 20 | line_height = 4 21 | markup = full 22 | format = "%s\n%b" 23 | alignment = left 24 | show_age_threshold = 60 25 | word_wrap = yes 26 | ellipsize = middle 27 | ignore_newline = no 28 | stack_duplicates = true 29 | hide_duplicate_count = true 30 | show_indicators = yes 31 | 32 | ### Icons ### 33 | icon_position = off 34 | 35 | # Scale larger icons down to this size, set to 0 to disable 36 | max_icon_size = 32 37 | 38 | # Paths to default icons. 39 | icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ 40 | 41 | ### History ### 42 | 43 | # Should a notification popped up from history be sticky or timeout 44 | # as if it would normally do. 45 | sticky_history = yes 46 | 47 | # Maximum amount of notifications kept in history 48 | history_length = 20 49 | 50 | ### Misc/Advanced ### 51 | 52 | # dmenu path. 53 | dmenu = /usr/bin/dmenu -p dunst: 54 | 55 | # Browser for opening urls in context menu. 56 | browser = /usr/bin/firefox -new-tab 57 | 58 | # Always run rule-defined scripts, even if the notification is suppressed 59 | always_run_script = true 60 | 61 | # Define the title of the windows spawned by dunst 62 | title = Dunst 63 | 64 | # Define the class of the windows spawned by dunst 65 | class = Dunst 66 | 67 | # Print a notification on startup. 68 | # This is mainly for error detection, since dbus (re-)starts dunst 69 | # automatically after a crash. 70 | startup_notification = false 71 | 72 | # Manage dunst's desire for talking 73 | # Can be one of the following values: 74 | # crit: Critical features. Dunst aborts 75 | # warn: Only non-fatal warnings 76 | # mesg: Important Messages 77 | # info: all unimportant stuff 78 | # debug: all less than unimportant stuff 79 | verbosity = mes 80 | 81 | ### Legacy 82 | 83 | force_xinerama = false 84 | 85 | ### mouse 86 | 87 | mouse_left_click = close_current 88 | mouse_middle_click = do_action 89 | mouse_right_click = close_all 90 | per_monitor_dpi = false 91 | 92 | [shortcuts] 93 | 94 | close = ctrl+space 95 | 96 | close_all = ctrl+shift+space 97 | 98 | history = ctrl+grave 99 | 100 | context = ctrl+shift+per_monitor_dp 101 | 102 | 103 | [log_notifs] 104 | script = /usr/bin/dunst_logger.sh 105 | 106 | [urgency_low] 107 | # IMPORTANT: colors have to be defined in quotation marks. 108 | # Otherwise the "#" and following would be interpreted as a comment. 109 | background = "#ffffff" 110 | foreground = "#505969" 111 | timeout = 10 112 | # Icon for notifications with low urgency, uncomment to enable 113 | #icon = /path/to/icon 114 | 115 | [urgency_normal] 116 | background = "#ffffff" 117 | foreground = "#505969" 118 | timeout = 10 119 | # Icon for notifications with normal urgency, uncomment to enable 120 | #icon = /path/to/icon 121 | 122 | [urgency_critical] 123 | frame_color = "#ffffff" 124 | background = "#ffffff" 125 | foreground = "#505969" 126 | timeout = 0 127 | # Icon for notifications with critical urgency, uncomment to enable 128 | #icon = /path/to/icon 129 | # vim: ft=cfg 130 | -------------------------------------------------------------------------------- /.config/eww/eww.scss: -------------------------------------------------------------------------------- 1 | * { 2 | all: unset; 3 | } 4 | 5 | .bar, .dock, .dock_power { 6 | background-color: #ffffff; 7 | } 8 | 9 | .powermenu button, .notification button { 10 | font-family: "Font Awesome 5 Free Solid"; 11 | color: #505969; 12 | font-size: 20px; 13 | } 14 | 15 | .shutdown button, .reboot button, .quit button { 16 | color: #505969; 17 | font-family: "Font Awesome 5 Free Solid"; 18 | font-size: 25px; 19 | } 20 | 21 | .main { 22 | background-color: #505969; 23 | } 24 | 25 | .wm1, .wm2, .wm3, .wm4, .wm5, .dock { 26 | background-color: #e1e6ee; 27 | } 28 | 29 | .wm1 button { 30 | margin: 0px 25px 0px 30px; 31 | padding-left: 50px; 32 | color: #505969; 33 | font-family: "Inter"; 34 | } 35 | 36 | .wm2 button { 37 | margin: 0px 20px 0px 40px; 38 | padding-left: 27px; 39 | color: #505969; 40 | font-family: "Inter"; 41 | } 42 | 43 | .wm3 button { 44 | margin: 0px 25px 0px 35px; 45 | padding-left: 40px; 46 | color: #505969; 47 | font-family: "Inter"; 48 | } 49 | 50 | .wm4 button { 51 | margin: 0px 35px 0px 20px; 52 | padding-left: 65px; 53 | color: #505969; 54 | font-family: "Inter"; 55 | } 56 | 57 | .wm5 button { 58 | margin: 0px 30px 0px 25px; 59 | padding-left: 62px; 60 | color: #505969; 61 | font-family: "Inter"; 62 | } 63 | 64 | .sep, .sep2 , .sep3{ 65 | background-color: #e8ecf3; 66 | border-radius: 10px; 67 | } 68 | 69 | .home { 70 | background-image: url("/home/k/.config/eww/icons/home.png"); 71 | background-size: 25px; 72 | } 73 | 74 | .terminal { 75 | background-image: url("/home/k/.config/eww/icons/console.png"); 76 | background-size: 25px; 77 | } 78 | 79 | .firefox { 80 | background-image: url("/home/k/.config/eww/icons/internet.png"); 81 | background-size: 25px; 82 | } 83 | 84 | .edit { 85 | background-image: url("/home/k/.config/eww/icons/edit.png"); 86 | background-size: 25px; 87 | } 88 | 89 | .folder { 90 | background-image: url("/home/k/.config/eww/icons/folder.png"); 91 | background-size: 25px; 92 | } 93 | 94 | .text { 95 | font-family: "Inter"; 96 | font-size: 20px; 97 | color: #ffffff; 98 | background-color: #505969; 99 | } 100 | 101 | .time { 102 | background-color: #e1e6ee; 103 | font-size: 25px; 104 | font-family: "Inter"; 105 | color: #505969; 106 | font-weight: 700; 107 | padding: 20px; 108 | padding-top: 30px; 109 | } 110 | 111 | .day { 112 | background-color: #e1e6ee; 113 | font-size: 12px; 114 | font-family: "Inter"; 115 | color: #505969; 116 | font-weight: 700; 117 | } 118 | -------------------------------------------------------------------------------- /.config/eww/eww.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Welcome! 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | {{hour}} 99 | : 100 | {{minute}} 101 | 102 | {{day}} 103 | 104 | 105 | 106 | 107 | 108 | 109 | date "+%M" 110 | date "+%H" 111 | ~/.config/eww/scripts/getDay 112 | 113 | 114 | ~/.config/eww/scripts/echoSongArt 115 | ~/.config/eww/scripts/getSongTitle 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 |
167 | 168 | 169 | 170 | 171 | 172 |
173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | -------------------------------------------------------------------------------- /.config/eww/icons/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/icons/console.png -------------------------------------------------------------------------------- /.config/eww/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/icons/edit.png -------------------------------------------------------------------------------- /.config/eww/icons/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/icons/folder.png -------------------------------------------------------------------------------- /.config/eww/icons/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/icons/home.png -------------------------------------------------------------------------------- /.config/eww/icons/internet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/icons/internet.png -------------------------------------------------------------------------------- /.config/eww/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/close.png -------------------------------------------------------------------------------- /.config/eww/images/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/next.png -------------------------------------------------------------------------------- /.config/eww/images/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/player.png -------------------------------------------------------------------------------- /.config/eww/images/powermenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/powermenu.png -------------------------------------------------------------------------------- /.config/eww/images/previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/previous.png -------------------------------------------------------------------------------- /.config/eww/images/reboot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/reboot.png -------------------------------------------------------------------------------- /.config/eww/images/shutdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/shutdown.png -------------------------------------------------------------------------------- /.config/eww/images/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/.config/eww/images/stop.png -------------------------------------------------------------------------------- /.config/eww/scripts/getCpu: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')] 3 | -------------------------------------------------------------------------------- /.config/eww/scripts/getDay: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | dayNum=$(date "+%D") 3 | 4 | if [ $day_num == 1 ]; then 5 | day="Monday" 6 | elif [ $day_num == 2 ]; then 7 | day="Tuesday" 8 | elif [ $day_num == 3 ]; then 9 | day="Wednesday" 10 | elif [ $day_num == 4 ]; then 11 | day="Thursday" 12 | elif [ $day_num == 5 ]; then 13 | day="Friday" 14 | elif [ $day_num == 6 ]; then 15 | day="Saturday" 16 | else 17 | day="Sunday" 18 | fi 19 | 20 | echo $day, $monthName $dayNum; 21 | -------------------------------------------------------------------------------- /.config/eww/scripts/getPlayerStatus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # A dwm_bar function that shows the current artist, track, duration, and status from Spotify using playerctl 4 | # Joe Standring 5 | # GNU GPLv3 6 | 7 | # Dependencies: spotify, playerctl 8 | 9 | # NOTE: The official spotify client does not provide the track position or shuffle status through playerctl. This does work through spotifyd however. 10 | 11 | if ps -C spotify > /dev/null; then 12 | PLAYER="spotify" 13 | fi 14 | 15 | if [ -z "$PLAYER" ]; then 16 | printf "" 17 | fi 18 | 19 | if [ "$PLAYER" = "spotify" ]; then 20 | STATUS=$(playerctl -p spotify status) 21 | 22 | if [ "$STATUS" = "Playing" ]; then 23 | STATUS="" 24 | else 25 | STATUS="" 26 | fi 27 | 28 | if [ "$PLAYER" = "spotify" ]; then 29 | printf "$STATUS" 30 | fi 31 | fi 32 | -------------------------------------------------------------------------------- /.config/eww/scripts/getSongTitle: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | pattern='/\G[^\x00-\x7F]/gm' 3 | title=$(playerctl -p spotify metadata --format '{{ title }}') 4 | count=$(echo -n "$title" | wc -c) 5 | if [ -z "$title" ]; then 6 | echo "Not Playing"; 7 | else 8 | if [ "$count" -le 18 ]; then 9 | echo $title 10 | else 11 | if [[ "$title" =~ [^\x00-\x7F] ]]; then 12 | echo $(playerctl metadata --format '{{ title }} ' | awk '{ print substr($0, 1, 15) }')... 13 | elif [[ "$title" -le 15 ]]; then 14 | echo $(playerctl metadata --format '{{ title }} ' | awk '{print $1, $2}') 15 | else 16 | echo $(playerctl metadata --format '{{ title }}' | awk '{print $1, $2, $3}')... 17 | fi 18 | fi 19 | fi 20 | -------------------------------------------------------------------------------- /.config/herbstluftwm/autostart: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # this is a simple config for herbstluftwm 4 | 5 | hc() { 6 | herbstclient "$@" 7 | } 8 | 9 | hc emit_hook reload 10 | 11 | xsetroot -solid #e8ecf3' 12 | 13 | # remove all existing keybindings 14 | hc keyunbind --all 15 | 16 | # keybindings 17 | # if you have a super key you will be much happier with Mod set to Mod4 18 | Mod=Mod1 # Use alt as the main modifier 19 | #Mod=Mod4 # Use the super key as the main modifier 20 | 21 | hc keybind $Mod-Shift-q quit 22 | hc keybind $Mod-Shift-r reload 23 | hc keybind $Mod-Shift-c close 24 | hc keybind $Mod-Return spawn urxvt 25 | hc keybind $Mod-space spawn rofi -modi drun -show 26 | hc keybind $Mod-c spawn scrot -q100 -cd2 27 | 28 | # basic movement in tiling and floating mode 29 | # focusing clients 30 | hc keybind $Mod-Left focus left 31 | hc keybind $Mod-Down focus down 32 | hc keybind $Mod-Up focus up 33 | hc keybind $Mod-Right focus right 34 | hc keybind $Mod-h focus left 35 | hc keybind $Mod-j focus down 36 | hc keybind $Mod-k focus up 37 | hc keybind $Mod-l focus right 38 | 39 | # moving clients in tiling and floating mode 40 | hc keybind $Mod-Shift-Left shift left 41 | hc keybind $Mod-Shift-Down shift down 42 | hc keybind $Mod-Shift-Up shift up 43 | hc keybind $Mod-Shift-Right shift right 44 | hc keybind $Mod-Shift-h shift left 45 | hc keybind $Mod-Shift-j shift down 46 | hc keybind $Mod-Shift-k shift up 47 | hc keybind $Mod-Shift-l shift right 48 | 49 | # splitting frames 50 | # create an empty frame at the specified direction 51 | hc keybind $Mod-u split bottom 0.5 52 | hc keybind $Mod-o split right 0.5 53 | # let the current frame explode into subframes 54 | hc keybind $Mod-Control-space split explode 55 | 56 | # resizing frames and floating clients 57 | resizestep=0.02 58 | hc keybind $Mod-Control-h resize left +$resizestep 59 | hc keybind $Mod-Control-j resize down +$resizestep 60 | hc keybind $Mod-Control-k resize up +$resizestep 61 | hc keybind $Mod-Control-l resize right +$resizestep 62 | hc keybind $Mod-Control-Left resize left +$resizestep 63 | hc keybind $Mod-Control-Down resize down +$resizestep 64 | hc keybind $Mod-Control-Up resize up +$resizestep 65 | hc keybind $Mod-Control-Right resize right +$resizestep 66 | 67 | # tags 68 | tag_names=( {1..9} ) 69 | tag_keys=( {1..9} 0 ) 70 | 71 | hc rename default "${tag_names[0]}" || true 72 | for i in "${!tag_names[@]}" ; do 73 | hc add "${tag_names[$i]}" 74 | key="${tag_keys[$i]}" 75 | if ! [ -z "$key" ] ; then 76 | hc keybind "$Mod-$key" use_index "$i" 77 | hc keybind "$Mod-Shift-$key" move_index "$i" 78 | fi 79 | done 80 | 81 | # cycle through tags 82 | hc keybind $Mod-period use_index +1 --skip-visible 83 | hc keybind $Mod-comma use_index -1 --skip-visible 84 | 85 | # layouting 86 | hc keybind $Mod-r remove 87 | hc keybind $Mod-s floating toggle 88 | hc keybind $Mod-f fullscreen toggle 89 | hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle 90 | hc keybind $Mod-Shift-m set_attr clients.focus.minimized true 91 | hc keybind $Mod-Control-m jumpto last-minimized 92 | hc keybind $Mod-p pseudotile toggle 93 | 94 | # mouse 95 | hc mouseunbind --all 96 | hc mousebind $Mod-Button1 move 97 | hc mousebind $Mod-Button2 zoom 98 | hc mousebind $Mod-Button3 resize 99 | 100 | # focus 101 | hc keybind $Mod-BackSpace cycle_monitor 102 | hc keybind $Mod-Tab cycle_all +1 103 | hc keybind $Mod-Shift-Tab cycle_all -1 104 | hc keybind $Mod-i jumpto urgent 105 | 106 | # rules 107 | hc unrule -F 108 | #hc rule class=XTerm tag=3 # move all xterms to tag 3 109 | hc rule focus=on # normally focus new clients 110 | hc rule floatplacement=smart 111 | #hc rule focus=off # normally do not focus new clients 112 | # give focus to most common terminals 113 | #hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on 114 | hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on 115 | hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on 116 | hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off 117 | 118 | hc set tree_style '╾│ ├└╼─┐' 119 | 120 | # unlock, just to be sure 121 | hc unlock 122 | 123 | # Autostart 124 | feh --bg-fill ~/Downloads/Wallpaper.jpg & 125 | xrandr --output DP-4 --mode 1920x1080 --rate 164.97 126 | compton & 127 | dunst & 128 | dunst_logger.sh & 129 | rm /tmp/dunstlog & 130 | touch /tmp/dunstlog & 131 | eww daemon & 132 | while true; do 133 | if eww ping; then 134 | eww open-many bar sep sep2 sep3 dock main wm1 wm2 wm3 wm4 wm5 home terminal firefox edit folder powermenu notification text date & 135 | break 136 | fi 137 | done & 138 | 139 | # theme 140 | hc attr theme.tiling.reset 1 141 | hc attr theme.floating.reset 1 142 | hc set frame_border_active_color '#201f1c' 143 | hc set frame_border_normal_color '#201f1c' 144 | hc set frame_bg_normal_color '#201f1c' 145 | hc set frame_bg_active_color '#201f1c' 146 | hc set frame_border_width 0 147 | hc set always_show_frame on 148 | hc set frame_bg_transparent on 149 | hc set frame_gap 170 150 | 151 | hc attr theme.title_height 0 152 | hc attr theme.padding_right 0 153 | hc attr theme.padding_left 0 154 | hc attr theme.padding_bottom 0 155 | hc attr theme.active.color '#363b41' 156 | hc attr theme.normal.color '#363b41' 157 | hc attr theme.border_width 0 158 | hc attr theme.border.color '#363b41' 159 | hc attr theme.floating.border_width 0 160 | hc attr theme.inner_width.top 10 161 | hc attr theme.floating.padding_top 0 162 | hc attr theme.floating.outer_color '#201f1c' 163 | hc attr theme.active.inner_color '#afbfbf' 164 | hc attr theme.active.outer_color '#201f1c' 165 | hc attr theme.background_color '#201f1c' 166 | 167 | hc set window_gap 50 168 | hc set smart_window_surroundings off 169 | hc set smart_frame_surroundings off 170 | hc set mouse_recenter_gap 0 171 | -------------------------------------------------------------------------------- /.config/picom.conf: -------------------------------------------------------------------------------- 1 | backend = "glx"; 2 | 3 | shadow = true; 4 | shadow-radius = 20; 5 | shadow-offset-x = -22; 6 | shadow-offset-y = -20; 7 | shadow-opacity = 0.1; 8 | shadow-exclude = [ 9 | "name = 'Eww - text'", 10 | "name = 'Eww - terminal'", 11 | "name = 'Eww - firefox'", 12 | "name = 'Eww - edit'", 13 | "name = 'Eww - folder'", 14 | ] 15 | 16 | inactive-opacity = 1; 17 | active-opacity = 1; 18 | frame-opacity = 1; 19 | inactive-opacity-override = true; 20 | 21 | corner-radius = 15.0; 22 | rounded-corners-exclude = [ 23 | "name = 'Eww - text'", 24 | "name = 'Eww - sep'", 25 | "name = 'Eww - sep2'", 26 | "name = 'Eww - sep3'", 27 | "name = 'Eww - terminal'", 28 | "name = 'Eww - firefox'", 29 | "name = 'Eww - edit'", 30 | "name = 'Eww - folder'", 31 | ]; 32 | 33 | fading = true; 34 | fade-in-step = 0.025; 35 | fade-out-step = 0.025; 36 | fade-delta = 4; 37 | no-fading-destroyed-argb = true; 38 | 39 | vsync = true; 40 | -------------------------------------------------------------------------------- /.config/rofi/Notif.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | display-drun: " Apps"; 3 | display-window: "缾 Windows"; 4 | show-icons:true; 5 | font: "Inter 11"; 6 | } 7 | 8 | * { 9 | background-color: #ffffff; 10 | bg: #ffffff; 11 | text-color: #505969; 12 | selbg: #e1e6ee; 13 | actbg: #e1e6ee; 14 | urgbg: #e1e6ee; 15 | winbg: #e1e6ee; 16 | 17 | selected-normal-foreground: @text-color; 18 | normal-foreground: @text-color; 19 | selected-normal-background: @actbg; 20 | normal-background: @background-color; 21 | 22 | selected-urgent-foreground: @urgbg; 23 | urgent-foreground: @text-color; 24 | selected-urgent-background: @actbg; 25 | urgent-background: @background-color; 26 | urgent-foreground: @urgbg; 27 | 28 | selected-active-foreground: @selbg; 29 | active-foreground: @selbg; 30 | selected-active-background: @actbg; 31 | active-background: @background-color; 32 | 33 | line-margin: 2; 34 | line-padding: 2; 35 | separator-style: "none"; 36 | hide-scrollbar: "true"; 37 | margin: 0; 38 | padding: 5; 39 | } 40 | 41 | window { 42 | location: northeast; 43 | anchor: northeast; 44 | //height: 45%; 45 | y-offset: 30px; 46 | x-offset: -30px; 47 | width: 18%; 48 | orientation: horizontal; 49 | children: [mainbox]; 50 | } 51 | 52 | mainbox { 53 | spacing: 0.8em; 54 | orientation: vertical; 55 | children: [ inputbar, listview ]; 56 | } 57 | 58 | button { padding: 2px 2px; } 59 | 60 | button selected { 61 | background-color: @active-background; 62 | text-color: @background-color; 63 | } 64 | 65 | inputbar { 66 | padding: 2px; 67 | spacing: 5px; 68 | } 69 | 70 | listview { 71 | spacing: 0.5em; 72 | dynamic: true; 73 | cycle: false; 74 | } 75 | 76 | element { 77 | padding: 10px; 78 | } 79 | 80 | prompt { 81 | padding: 10px 0px 0px 20px; 82 | font: "Inter 13"; 83 | } 84 | 85 | entry { 86 | expand: true; 87 | text-color: @normal-foreground; 88 | vertical-align: 0; 89 | padding: 5px 0px 0px 20px; 90 | enabled: false; 91 | } 92 | 93 | element normal.normal { 94 | background-color: @bg; 95 | border-radius: 8px; 96 | text-color: @normal-foreground; 97 | } 98 | 99 | element normal.urgent { 100 | background-color: @bg; 101 | border-radius: 8px; 102 | text-color: @urgent-foreground; 103 | } 104 | 105 | element normal.active { 106 | background-color: @bg; 107 | border-radius: 8px; 108 | text-color: @active-foreground; 109 | } 110 | 111 | element selected.normal { 112 | background-color: @selected-normal-background; 113 | text-color: @selected-normal-foreground; 114 | } 115 | 116 | element selected.urgent { 117 | background-color: @selected-urgent-background; 118 | text-color: @selected-urgent-foreground; 119 | } 120 | 121 | element selected.active { 122 | background-color: @selected-active-background; 123 | text-color: @selected-active-foreground; 124 | } 125 | 126 | element alternate.normal { 127 | background-color: @bg; 128 | border-radius: 8px; 129 | text-color: @normal-foreground; 130 | } 131 | 132 | element alternate.urgent { 133 | background-color: @bg; 134 | border-radius: 8px; 135 | text-color: @urgent-foreground; 136 | } 137 | 138 | element alternate.active { 139 | background-color: @bg; 140 | border-radius: 8px; 141 | text-color: @active-foreground; 142 | } 143 | element-icon { 144 | size: 7ch; 145 | } 146 | element.selected { 147 | border-radius: 8px; 148 | border: 0 0 0 5px solid; 149 | border-color: @winbg; 150 | } 151 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | 2 | configuration { 3 | lines: 6; 4 | columns: 1; 5 | font: "Inter 12"; 6 | bw: 0; 7 | location: 0; 8 | padding: 0; 9 | fixed-num-lines: true; 10 | show-icons: false; 11 | sidebar-mode: true; 12 | separator-style: "beam"; 13 | hide-scrollbar: true; 14 | scroll-method: 0; 15 | click-to-exit: true; 16 | show-match: false; 17 | combi-hide-mode-prefix: false; 18 | display-window: "Window"; 19 | display-windowcd: "Windowcd"; 20 | display-run: "Commands"; 21 | display-ssh: "Ssh"; 22 | display-drun: "start"; 23 | display-combi: "Combi"; 24 | } 25 | 26 | window { 27 | transparency: "real"; 28 | border-radius: 10px; 29 | location: southeast ; 30 | width: 50px; 31 | x-offset: -35px; 32 | y-offset: -35px; 33 | } 34 | 35 | * { 36 | background-color: @bg; 37 | } 38 | 39 | window { 40 | padding: 20; 41 | width: 10%; 42 | } 43 | 44 | prompt { 45 | spacing: 0; 46 | border: 0; 47 | text-color: @fg; 48 | } 49 | 50 | textbox-prompt-colon { 51 | expand: false; 52 | str: " "; 53 | margin: 0px 4px 0px 0px; 54 | text-color: inherit; 55 | } 56 | 57 | entry { 58 | spacing: 0; 59 | text-color: #2e2e2e; 60 | } 61 | 62 | case-indicator { 63 | spacing: 0; 64 | text-color: #2e2e2e; 65 | } 66 | 67 | inputbar { 68 | spacing: 0px; 69 | text-color: @fg; 70 | padding: 1px; 71 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 72 | } 73 | 74 | mainbox { 75 | border: 0px; 76 | border-color: @bg; 77 | padding: 6; 78 | } 79 | 80 | listview { 81 | fixed-height: 0; 82 | border: 0px; 83 | border-color: #303030; 84 | spacing: 4px; 85 | scrollbar: false; 86 | padding: 5px 5px 0px 5px; 87 | } 88 | 89 | element { 90 | border: 0px; 91 | border-radius: 6px; 92 | padding: 5px; 93 | } 94 | element normal.normal { 95 | background-color: @bg; 96 | text-color: #2e2e2e; 97 | } 98 | element normal.urgent { 99 | background-color: @bg; 100 | text-color: @red; 101 | } 102 | element normal.active { 103 | background-color: @green; 104 | text-color: @bg; 105 | } 106 | element selected.normal { 107 | background-color: @fg; 108 | text-color: @bg; 109 | } 110 | element selected.urgent { 111 | background-color: @bg; 112 | text-color: @red; 113 | } 114 | element selected.active { 115 | background-color: @fg; 116 | text-color: @bg; 117 | } 118 | element alternate.normal { 119 | background-color: @bg; 120 | text-color: #2e2e2e; 121 | } 122 | element alternate.urgent { 123 | background-color: @bg; 124 | text-color: @fg; 125 | } 126 | element alternate.active { 127 | background-color: @bg; 128 | text-color: @fg; 129 | } 130 | 131 | sidebar { 132 | border: 0px; 133 | border-color: @ac; 134 | border-radius: 10px; 135 | } 136 | 137 | button { 138 | background-color: @fg; 139 | margin: 5px; 140 | padding: 5px; 141 | text-color: @bg; 142 | border: 0px; 143 | border-radius: 6px; 144 | border-color: @bg; 145 | } 146 | 147 | button selected { 148 | background-color: @fg; 149 | text-color: @bg; 150 | border: 0px; 151 | border-radius: 5px; 152 | border-color: @bg; 153 | } 154 | 155 | scrollbar { 156 | width: 4px; 157 | border: 0px; 158 | handle-color: @fg; 159 | handle-width: 8px; 160 | padding: 0; 161 | } 162 | 163 | message { 164 | border: 0px; 165 | border-color: @ac; 166 | padding: 1px; 167 | } 168 | 169 | textbox { 170 | text-color: #2e2e2e; 171 | } 172 | 173 | @import "/home/k/.config/rofi/themes/colors.rasi" 174 | -------------------------------------------------------------------------------- /.config/rofi/themes/colors.rasi: -------------------------------------------------------------------------------- 1 | /* colors */ 2 | 3 | * { 4 | al: #ffffff; 5 | bg: #ffffff; 6 | se: #e1e6ee; 7 | fg: #505969; 8 | ac: #505969; 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [bar](https://github.com/elkowar/eww) 2 | 3 | [picom](https://github.com/ibhagwan/picom) 4 | 5 | ![2021-06-13-202604_1920x1080_scrot](https://user-images.githubusercontent.com/81292558/121793460-24a69b00-cc3a-11eb-9f29-ecf670a078a3.png) 6 | -------------------------------------------------------------------------------- /Wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/Wallpaper.jpg --------------------------------------------------------------------------------