├── .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 | 
6 |
--------------------------------------------------------------------------------
/Wallpaper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChocolateBread799/sidebar/df7f30616adce9091c9d371c912749b89fbf447e/Wallpaper.jpg
--------------------------------------------------------------------------------