├── .config ├── cava │ └── config ├── dunst │ └── dunstrc ├── gtk-3.0 │ ├── bookmarks │ └── settings.ini ├── i3 │ └── config ├── i3blocks │ ├── config │ └── scripts │ │ ├── archupdates.sh │ │ ├── battery.sh │ │ ├── date.sh │ │ ├── media.sh │ │ ├── time.sh │ │ ├── volume.sh │ │ ├── vpn.sh │ │ └── wifi.sh ├── i3lock │ └── lock.sh ├── kitty │ ├── kitty.conf │ └── nord.conf ├── ncmpcpp │ └── config ├── notifications │ ├── backlight.sh │ ├── high-battery.sh │ ├── low-battery.sh │ ├── plugged.sh │ ├── unplugged.sh │ └── volume.sh ├── picom │ └── picom.conf ├── rofi │ ├── config.rasi │ ├── powermenu │ │ ├── colors.rasi │ │ ├── config-powermenu.rasi │ │ ├── feather.ttf │ │ ├── menu.rasi │ │ ├── menu.rasi.horz │ │ ├── menu.rasi.vert │ │ └── powermenu.sh │ └── scripts │ │ └── rofi-powermenu.sh ├── starship.toml ├── vis │ ├── colors │ │ ├── nord │ │ └── rgb │ └── config └── zathura │ └── zathurarc ├── .gnupg └── gpg-agent.conf ├── .vimrc ├── .zshrc ├── LICENSE ├── Misc ├── firefox │ └── chrome │ │ ├── add.svg │ │ ├── left-arrow.svg │ │ ├── right-arrow.svg │ │ ├── userChrome.css │ │ └── userContent.css ├── install.sh ├── screenshots │ └── merge.png └── wallpapers │ ├── blue-lines.png │ ├── nord-arch-logo.png │ ├── nord-lines.png │ └── nord-wild-fox.png └── README.md /.config/cava/config: -------------------------------------------------------------------------------- 1 | ## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. 2 | 3 | 4 | [general] 5 | 6 | # Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 7 | ; mode = normal 8 | 9 | # Accepts only non-negative values. 10 | ; framerate = 60 11 | 12 | # 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off 13 | # new as of 0.6.0 autosens of low values (dynamic range) 14 | # 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 15 | ; autosens = 1 16 | ; overshoot = 20 17 | 18 | # Manual sensitivity in %. Autosens must be turned off for this to take effect. 19 | # 200 means double height. Accepts only non-negative values. 20 | ; sensitivity = 100 21 | 22 | # The number of bars (0-200). 0 sets it to auto (fill up console). 23 | # Bars' width and space between bars in number of characters. 24 | ; bars = 0 25 | ; bar_width = 2 26 | ; bar_spacing = 1 27 | 28 | 29 | # Lower and higher cutoff frequencies for lowest and highest bars 30 | # the bandwidth of the visualizer. 31 | # Note: there is a minimum total bandwidth of 43Mhz x number of bars. 32 | # Cava will automatically increase the higher cutoff if a too low band is specified. 33 | ; lower_cutoff_freq = 50 34 | ; higher_cutoff_freq = 10000 35 | 36 | 37 | # Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and 38 | # only check for input once per second. Cava will wake up once input is detected. 0 = disable. 39 | ; sleep_timer = 0 40 | 41 | 42 | [input] 43 | 44 | # Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem' 45 | # Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with. 46 | # 47 | # All input methods uses the same config variable 'source' 48 | # to define where it should get the audio. 49 | # 50 | # For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink 51 | # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). 52 | # 53 | # For alsa 'source' will be the capture device. 54 | # For fifo 'source' will be the path to fifo-file. 55 | # For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address 56 | method = pulse 57 | source = auto 58 | 59 | ; method = alsa 60 | ; source = hw:Loopback,0 61 | 62 | method = fifo 63 | source = /tmp/mpd.fifo 64 | sample_rate = 44100 65 | sample_bits = 16 66 | 67 | ; method = shmem 68 | ; source = /squeezelite-AA:BB:CC:DD:EE:FF 69 | 70 | ; method = portaudio 71 | ; source = auto 72 | 73 | 74 | [output] 75 | 76 | # Output method. Can be 'ncurses', 'noncurses' or 'raw'. 77 | # 'noncurses' uses a custom framebuffer technique and draws only changes 78 | # from frame to frame. 'ncurses' is default if supported 79 | # 80 | # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data 81 | # stream of the bar heights that can be used to send to other applications. 82 | # 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. 83 | ; method = ncurses 84 | 85 | # Visual channels. Can be 'stereo' or 'mono'. 86 | # 'stereo' mirrors both channels with low frequencies in center. 87 | # 'mono' outputs left to right lowest to highest frequencies. 88 | # 'mono_option' set mono to either take input from 'left', 'right' or 'average'. 89 | ; channels = stereo 90 | ; mono_option = average 91 | 92 | # Raw output target. A fifo will be created if target does not exist. 93 | ; raw_target = /dev/stdout 94 | 95 | # Raw data format. Can be 'binary' or 'ascii'. 96 | ; data_format = binary 97 | 98 | # Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). 99 | ; bit_format = 16bit 100 | 101 | # Ascii max value. In 'ascii' mode range will run from 0 to value specified here 102 | ; ascii_max_range = 1000 103 | 104 | # Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. 105 | # Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). 106 | ; bar_delimiter = 59 107 | ; frame_delimiter = 10 108 | 109 | 110 | 111 | [color] 112 | 113 | # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. 114 | # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires 115 | # ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt. 116 | # if supported, ncurses mode will be forced on if user defined colors are used. 117 | # default is to keep current terminal color 118 | ; background = default 119 | ; foreground = default 120 | 121 | # Gradient mode, only hex defined colors (and thereby ncurses mode) are supported, 122 | # background must also be defined in hex or remain commented out. 1 = on, 0 = off. 123 | # You can define as many as 8 different colors. They range from bottom to top of screen 124 | gradient = 1 125 | gradient_count = 6 126 | gradient_color_1 = '#b48ead' 127 | gradient_color_2 = '#5e81ac' 128 | gradient_color_3 = '#88c0d0' 129 | gradient_color_4 = '#a3be8c' 130 | gradient_color_5 = '#ebcb8b' 131 | gradient_color_6 = '#d08770' 132 | gradient_color_7 = '#bf616a' 133 | gradient_color_8 = '#cc8033' 134 | 135 | 136 | [smoothing] 137 | 138 | # Percentage value for integral smoothing. Takes values from 0 - 100. 139 | # Higher values means smoother, but less precise. 0 to disable. 140 | ; integral = 77 141 | 142 | # Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. 143 | ; monstercat = 0 144 | ; waves = 0 145 | 146 | # Set gravity percentage for "drop off". Higher values means bars will drop faster. 147 | # Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". 148 | ; gravity = 100 149 | 150 | 151 | # In bar height, bars that would have been lower that this will not be drawn. 152 | ; ignore = 0 153 | 154 | 155 | [eq] 156 | 157 | # This one is tricky. You can have as much keys as you want. 158 | # Remember to uncomment more then one key! More keys = more precision. 159 | # Look at readme.md on github for further explanations and examples. 160 | ; 1 = 1 # bass 161 | ; 2 = 1 162 | ; 3 = 1 # midtone 163 | ; 4 = 1 164 | ; 5 = 1 # treble 165 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | ### Display ### 3 | 4 | # Which monitor should the notifications be displayed on. 5 | monitor = 0 6 | 7 | # Display notification on focused monitor. Possible modes are: 8 | # mouse: follow mouse pointer 9 | # keyboard: follow window with keyboard focus 10 | # none: don't follow anything 11 | # 12 | # "keyboard" needs a window manager that exports the 13 | # _NET_ACTIVE_WINDOW property. 14 | # This should be the case for almost all modern window managers. 15 | # 16 | # If this option is set to mouse or keyboard, the monitor option 17 | # will be ignored. 18 | follow = mouse 19 | 20 | # The geometry of the window: 21 | # [{width}]x{height}[+/-{x}+/-{y}] 22 | # The geometry of the message window. 23 | # The height is measured in number of notifications everything else 24 | # in pixels. If the width is omitted but the height is given 25 | # ("-geometry x2"), the message window expands over the whole screen 26 | # (dmenu-like). If width is 0, the window expands to the longest 27 | # message displayed. A positive x is measured from the left, a 28 | # negative from the right side of the screen. Y is measured from 29 | # the top and down respectively. 30 | # The width can be negative. In this case the actual width is the 31 | # screen width minus the width defined in within the geometry option. 32 | geometry = "550x0-10+40" #lines up with the window edge 33 | #geometry = "550x0-5+34" #slightly shifted 34 | 35 | # Turn on the progess bar 36 | progress_bar = true 37 | 38 | # Set the progress bar height. This includes the frame, so make sure 39 | # it's at least twice as big as the frame width. 40 | progress_bar_height = 11 41 | 42 | # Set the frame width of the progress bar 43 | progress_bar_frame_width = 2 44 | 45 | # Set the minimum width for the progress bar 46 | progress_bar_min_width = 120 47 | 48 | # Set the maximum width for the progress bar 49 | progress_bar_max_width = 120 50 | 51 | # Show how many messages are currently hidden (because of geometry). 52 | indicate_hidden = yes 53 | 54 | # Shrink window if it's smaller than the width. Will be ignored if 55 | # width is 0. 56 | shrink = yes 57 | 58 | # The transparency of the window. Range: [0; 100]. 59 | # This option will only work if a compositing window manager is 60 | # present (e.g. xcompmgr, compiz, etc.). 61 | transparency = 15 62 | 63 | # The height of the entire notification. If the height is smaller 64 | # than the font height and padding combined, it will be raised 65 | # to the font height and padding. 66 | notification_height = 0 67 | 68 | # Draw a line of "separator_height" pixel height between two 69 | # notifications. 70 | # Set to 0 to disable. 71 | separator_height = 2 72 | 73 | # Padding between text and separator. 74 | padding = 8 75 | 76 | # Horizontal padding. 77 | horizontal_padding = 8 78 | 79 | # Defines width in pixels of frame around the notification window. 80 | # Set to 0 to disable. 81 | frame_width = 0 82 | 83 | # Defines color of the frame around the notification window. 84 | frame_color = background 85 | 86 | # Define a color for the separator. 87 | # possible values are: 88 | # * auto: dunst tries to find a color fitting to the background; 89 | # * foreground: use the same color as the foreground; 90 | # * frame: use the same color as the frame; 91 | # * anything else will be interpreted as a X color. 92 | separator_color = auto 93 | 94 | # Sort messages by urgency. 95 | sort = yes 96 | 97 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 98 | # for longer than idle_threshold seconds. 99 | # Set to 0 to disable. 100 | # A client can set the 'transient' hint to bypass this. See the rules 101 | # section for how to disable this if necessary 102 | idle_threshold = 120 103 | 104 | ### Text ### 105 | 106 | font = Iosevka 14 107 | 108 | # The spacing between lines. If the height is smaller than the 109 | # font height, it will get raised to the font height. 110 | line_height = 0 111 | 112 | # Possible values are: 113 | # full: Allow a small subset of html markup in notifications: 114 | # bold 115 | # italic 116 | # strikethrough 117 | # underline 118 | # 119 | # For a complete reference see 120 | # . 121 | # 122 | # strip: This setting is provided for compatibility with some broken 123 | # clients that send markup even though it's not enabled on the 124 | # server. Dunst will try to strip the markup but the parsing is 125 | # simplistic so using this option outside of matching rules for 126 | # specific applications *IS GREATLY DISCOURAGED*. 127 | # 128 | # no: Disable markup parsing, incoming notifications will be treated as 129 | # plain text. Dunst will not advertise that it has the body-markup 130 | # capability if this is set as a global setting. 131 | # 132 | # It's important to note that markup inside the format option will be parsed 133 | # regardless of what this is set to. 134 | markup = full 135 | 136 | # The format of the message. Possible variables are: 137 | # %a appname 138 | # %s summary 139 | # %b body 140 | # %i iconname (including its path) 141 | # %I iconname (without its path) 142 | # %p progress value if set ([ 0%] to [100%]) or nothing 143 | # %n progress value if set without any extra characters 144 | # %% Literal % 145 | # Markup is allowed 146 | format = "%s%n\n%b" 147 | 148 | # Alignment of message text. 149 | # Possible values are "left", "center" and "right". 150 | alignment = left 151 | 152 | # Vertical alignment of message text and icon. 153 | # Possible values are "top", "center" and "bottom". 154 | vertical_alignment = center 155 | 156 | # Show age of message if message is older than show_age_threshold 157 | # seconds. 158 | # Set to -1 to disable. 159 | show_age_threshold = -1 160 | 161 | # Split notifications into multiple lines if they don't fit into 162 | # geometry. 163 | word_wrap = yes 164 | 165 | # When word_wrap is set to no, specify where to make an ellipsis in long lines. 166 | # Possible values are "start", "middle" and "end". 167 | ellipsize = middle 168 | 169 | # Ignore newlines '\n' in notifications. 170 | ignore_newline = no 171 | 172 | # Stack together notifications with the same content 173 | stack_duplicates = false 174 | 175 | # Hide the count of stacked notifications with the same content 176 | hide_duplicate_count = false 177 | 178 | # Display indicators for URLs (U) and actions (A). 179 | show_indicators = no 180 | 181 | ### Icons ### 182 | 183 | # Align icons left/right/off 184 | icon_position = left 185 | 186 | # Scale small icons up to this size, set to 0 to disable. Helpful 187 | # for e.g. small files or high-dpi screens. In case of conflict, 188 | # max_icon_size takes precedence over this. 189 | min_icon_size = 16 190 | 191 | # Scale larger icons down to this size, set to 0 to disable 192 | max_icon_size = 48 193 | 194 | # Paths to default icons. 195 | icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/ 196 | 197 | ### History ### 198 | 199 | # Should a notification popped up from history be sticky or timeout 200 | # as if it would normally do. 201 | sticky_history = yes 202 | 203 | # Maximum amount of notifications kept in history 204 | history_length = 20 205 | 206 | ### Misc/Advanced ### 207 | 208 | # dmenu path. 209 | dmenu = /usr/bin/dmenu -p dunst: 210 | 211 | # Browser for opening urls in context menu. 212 | browser = /usr/bin/firefox -new-tab 213 | 214 | # Always run rule-defined scripts, even if the notification is suppressed 215 | always_run_script = true 216 | 217 | # Define the title of the windows spawned by dunst 218 | title = Dunst 219 | 220 | # Define the class of the windows spawned by dunst 221 | class = Dunst 222 | 223 | # Print a notification on startup. 224 | # This is mainly for error detection, since dbus (re-)starts dunst 225 | # automatically after a crash. 226 | startup_notification = false 227 | 228 | # Manage dunst's desire for talking 229 | # Can be one of the following values: 230 | # crit: Critical features. Dunst aborts 231 | # warn: Only non-fatal warnings 232 | # mesg: Important Messages 233 | # info: all unimportant stuff 234 | # debug: all less than unimportant stuff 235 | verbosity = mesg 236 | 237 | # Define the corner radius of the notification window 238 | # in pixel size. If the radius is 0, you have no rounded 239 | # corners. 240 | # The radius will be automatically lowered if it exceeds half of the 241 | # notification height to avoid clipping text and/or icons. 242 | corner_radius = 8 243 | 244 | # Ignore the dbus closeNotification message. 245 | # Useful to enforce the timeout set by dunst configuration. Without this 246 | # parameter, an application may close the notification sent before the 247 | # user defined timeout. 248 | ignore_dbusclose = false 249 | 250 | ### Legacy 251 | 252 | # Use the Xinerama extension instead of RandR for multi-monitor support. 253 | # This setting is provided for compatibility with older nVidia drivers that 254 | # do not support RandR and using it on systems that support RandR is highly 255 | # discouraged. 256 | # 257 | # By enabling this setting dunst will not be able to detect when a monitor 258 | # is connected or disconnected which might break follow mode if the screen 259 | # layout changes. 260 | force_xinerama = false 261 | 262 | ### mouse 263 | 264 | # Defines list of actions for each mouse event 265 | # Possible values are: 266 | # * none: Don't do anything. 267 | # * do_action: If the notification has exactly one action, or one is marked as default, 268 | # invoke it. If there are multiple and no default, open the context menu. 269 | # * close_current: Close current notification. 270 | # * close_all: Close all notifications. 271 | # These values can be strung together for each mouse event, and 272 | # will be executed in sequence. 273 | mouse_left_click = close_current 274 | mouse_middle_click = do_action, close_current 275 | mouse_right_click = close_all 276 | 277 | # Experimental features that may or may not work correctly. Do not expect them 278 | # to have a consistent behaviour across releases. 279 | [experimental] 280 | # Calculate the dpi to use on a per-monitor basis. 281 | # If this setting is enabled the Xft.dpi value will be ignored and instead 282 | # dunst will attempt to calculate an appropriate dpi value for each monitor 283 | # using the resolution and physical size. This might be useful in setups 284 | # where there are multiple screens with very different dpi values. 285 | per_monitor_dpi = false 286 | 287 | [shortcuts] 288 | 289 | # Shortcuts are specified as [modifier+][modifier+]...key 290 | # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", 291 | # "mod3" and "mod4" (windows-key). 292 | # Xev might be helpful to find names for keys. 293 | 294 | # Close notification. 295 | close = ctrl+space 296 | 297 | # Close all notifications. 298 | close_all = ctrl+shift+space 299 | 300 | # Redisplay last message(s). 301 | # On the US keyboard layout "grave" is normally above TAB and left 302 | # of "1". Make sure this key actually exists on your keyboard layout, 303 | # e.g. check output of 'xmodmap -pke' 304 | history = ctrl+grave 305 | 306 | # Context menu. 307 | context = ctrl+shift+period 308 | 309 | [urgency_low] 310 | # IMPORTANT: colors have to be defined in quotation marks. 311 | # Otherwise the "#" and following would be interpreted as a comment. 312 | highlight = "#eceff4" 313 | background = "#2e3440" 314 | foreground = "#eceff4" 315 | frame_color = "#2e3440" 316 | timeout = 10 317 | # Icon for notifications with low urgency, uncomment to enable 318 | #icon = /path/to/icon 319 | 320 | [urgency_normal] 321 | highlight = "#eceff4" 322 | background = "#2e3440" 323 | foreground = "#eceff4" 324 | frame_color = "#2e3440" 325 | timeout = 20 326 | 327 | # Icon for notifications with normal urgency, uncomment to enable 328 | #icon = /path/to/icon 329 | 330 | [urgency_critical] 331 | highlight = "#88c0d0" 332 | background = "#2e3440" 333 | foreground = "#eceff4" 334 | frame_color = "#2e3440" 335 | timeout = 0 336 | # Icon for notifications with critical urgency, uncomment to enable 337 | #icon = /path/to/icon 338 | 339 | # Every section that isn't one of the above is interpreted as a rules to 340 | # override settings for certain messages. 341 | # 342 | # Messages can be matched by 343 | # appname (discouraged, see desktop_entry) 344 | # body 345 | # category 346 | # desktop_entry 347 | # icon 348 | # match_transient 349 | # msg_urgency 350 | # stack_tag 351 | # summary 352 | # 353 | # and you can override the 354 | # background 355 | # foreground 356 | # format 357 | # frame_color 358 | # fullscreen 359 | # new_icon 360 | # set_stack_tag 361 | # set_transient 362 | # timeout 363 | # urgency 364 | # 365 | # Shell-like globbing will get expanded. 366 | # 367 | # Instead of the appname filter, it's recommended to use the desktop_entry filter. 368 | # GLib based applications export their desktop-entry name. In comparison to the appname, 369 | # the desktop-entry won't get localized. 370 | # 371 | # SCRIPTING 372 | # You can specify a script that gets run when the rule matches by 373 | # setting the "script" option. 374 | # The script will be called as follows: 375 | # script appname summary body icon urgency 376 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 377 | # 378 | # NOTE: if you don't want a notification to be displayed, set the format 379 | # to "". 380 | # NOTE: It might be helpful to run dunst -print in a terminal in order 381 | # to find fitting options for rules. 382 | 383 | # Disable the transient hint so that idle_threshold cannot be bypassed from the 384 | # client 385 | #[transient_disable] 386 | # match_transient = yes 387 | # set_transient = no 388 | # 389 | # Make the handling of transient notifications more strict by making them not 390 | # be placed in history. 391 | #[transient_history_ignore] 392 | # match_transient = yes 393 | # history_ignore = yes 394 | 395 | # fullscreen values 396 | # show: show the notifications, regardless if there is a fullscreen window opened 397 | # delay: displays the new notification, if there is no fullscreen window active 398 | # If the notification is already drawn, it won't get undrawn. 399 | # pushback: same as delay, but when switching into fullscreen, the notification will get 400 | # withdrawn from screen again and will get delayed like a new notification 401 | #[fullscreen_delay_everything] 402 | # fullscreen = delay 403 | #[fullscreen_show_critical] 404 | # msg_urgency = critical 405 | # fullscreen = show 406 | 407 | #[espeak] 408 | # summary = "*" 409 | # script = dunst_espeak.sh 410 | 411 | #[script-test] 412 | # summary = "*script*" 413 | # script = dunst_test.sh 414 | 415 | #[ignore] 416 | # # This notification will not be displayed 417 | # summary = "foobar" 418 | # format = "" 419 | 420 | #[history-ignore] 421 | # # This notification will not be saved in history 422 | # summary = "foobar" 423 | # history_ignore = yes 424 | 425 | #[skip-display] 426 | # # This notification will not be displayed, but will be included in the history 427 | # summary = "foobar" 428 | # skip_display = yes 429 | 430 | #[signed_on] 431 | # appname = Pidgin 432 | # summary = "*signed on*" 433 | # urgency = low 434 | # 435 | #[signed_off] 436 | # appname = Pidgin 437 | # summary = *signed off* 438 | # urgency = low 439 | # 440 | #[says] 441 | # appname = Pidgin 442 | # summary = *says* 443 | # urgency = critical 444 | # 445 | #[twitter] 446 | # appname = Pidgin 447 | # summary = *twitter.com* 448 | # urgency = normal 449 | # 450 | #[stack-volumes] 451 | # appname = "some_volume_notifiers" 452 | # set_stack_tag = "volume" 453 | # 454 | # vim: ft=cfg 455 | -------------------------------------------------------------------------------- /.config/gtk-3.0/bookmarks: -------------------------------------------------------------------------------- 1 | file:///home/chaos/Documents 2 | file:///home/chaos/Downloads 3 | file:///home/chaos/Music 4 | file:///home/chaos/Pictures 5 | file:///home/chaos/Videos 6 | -------------------------------------------------------------------------------- /.config/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name = Nordic-darker 3 | gtk-icon-theme-name = Nord-Icons 4 | gtk-fallback-icon-theme = Nord-Icons 5 | gtk-font-name = Rubik 12 6 | 7 | gtk-button-images=1 8 | gtk-menu-images=1 9 | 10 | # "disables" sound events 11 | gtk-enable-event-sounds=0 12 | gtk-enable-input-feedback-sounds=0 13 | 14 | # "disables" recent files entries 15 | gtk-recent-files-max-age=0 16 | gtk-recent-files-limit=0 17 | 18 | gtk-xft-antialias=1 19 | gtk-xft-hinting=1 20 | gtk-xft-hintstyle=hintslight 21 | gtk-xft-rgba=rgb 22 | -------------------------------------------------------------------------------- /.config/i3/config: -------------------------------------------------------------------------------- 1 | # _ _____ __ _ 2 | # (_)___ / ___ ___ _ __ / _(_) __ _ 3 | # | | |_ \ / __/ _ \| '_ \| |_| |/ _` | 4 | # | |___) | (_| (_) | | | | _| | (_| | 5 | # |_|____/ \___\___/|_| |_|_| |_|\__, | 6 | # |___/ 7 | 8 | set $mod Mod4 9 | font pango:Iosevka 14 10 | 11 | # Volume control 12 | bindsym XF86AudioRaiseVolume exec --no-startup-id amixer set Master 5%+ && ~/.config/notifications/volume.sh && pkill -RTMIN+10 i3blocks 13 | bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master 5%- && ~/.config/notifications/volume.sh && pkill -RTMIN+10 i3blocks 14 | bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+10 i3blocks 15 | 16 | # Media control 17 | bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause 18 | bindsym XF86AudioPause exec --no-startup-id playerctl play-pause 19 | bindsym XF86AudioNext exec --no-startup-id playerctl next 20 | bindsym XF86AudioPrev exec --no-startup-id playerctl previous 21 | 22 | # Brightness control 23 | bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 1 && ~/.config/notifications/backlight.sh 24 | bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 1 && ~/.config/notifications/backlight.sh 25 | 26 | # Use Mouse+$mod to drag floating windows to their wanted position 27 | floating_modifier $mod 28 | 29 | # start a terminal 30 | bindsym $mod+Return exec kitty 31 | #bindsym $mod+Return exec --no-startup-id st 32 | 33 | # kill focused window 34 | bindsym $mod+Shift+q kill 35 | 36 | # dmenu, rofi keybinds 37 | #bindsym $mod+d exec --no-startup-id rofi -combi-modi drun#run -modi combi#window -show combi 38 | bindsym $mod+d exec --no-startup-id rofi -modi drun#run -show drun 39 | bindsym $mod+w exec --no-startup-id rofi -modi window -show window 40 | bindsym $mod+x exec --no-startup-id ~/.config/rofi/powermenu/powermenu.sh 41 | 42 | # change focus 43 | bindsym $mod+j focus left 44 | bindsym $mod+k focus down 45 | bindsym $mod+l focus up 46 | bindsym $mod+semicolon focus right 47 | 48 | # alternatively, you can use the cursor keys: 49 | bindsym $mod+Left focus left 50 | bindsym $mod+Down focus down 51 | bindsym $mod+Up focus up 52 | bindsym $mod+Right focus right 53 | 54 | # move focused window 55 | bindsym $mod+Shift+j move left 56 | bindsym $mod+Shift+k move down 57 | bindsym $mod+Shift+l move up 58 | bindsym $mod+Shift+semicolon move right 59 | 60 | # alternatively, you can use the cursor keys: 61 | bindsym $mod+Shift+Left move left 62 | bindsym $mod+Shift+Down move down 63 | bindsym $mod+Shift+Up move up 64 | bindsym $mod+Shift+Right move right 65 | 66 | # change split direction 67 | bindsym $mod+h split h 68 | bindsym $mod+v split v 69 | bindsym $mod+t split toggle 70 | 71 | # enter fullscreen mode for the focused container 72 | bindsym $mod+f fullscreen toggle 73 | 74 | # change container layout (stacked, tabbed, toggle split) 75 | bindsym $mod+Shift+s layout stacking 76 | bindsym $mod+Shift+w layout tabbed 77 | bindsym $mod+Shift+t layout toggle split 78 | 79 | # toggle tiling / floating 80 | bindsym $mod+Shift+space floating toggle 81 | 82 | # change focus between tiling / floating windows 83 | bindsym $mod+space focus mode_toggle 84 | 85 | # focus the parent container 86 | bindsym $mod+a focus parent 87 | 88 | # focus the child container 89 | #bindsym $mod+d focus child 90 | 91 | # set worspace symbols 92 | set $ws0 "0 󰆌 " 93 | set $ws1 "1 󰞷 " 94 | set $ws2 "2 󰈹 " 95 | set $ws3 "3 󰈮 " 96 | set $ws4 "4 󰆌 " 97 | set $ws5 "5 󰆌 " 98 | set $ws6 "6 󰆌 " 99 | set $ws7 "7 󰆌 " 100 | set $ws8 "8 󰊻 " 101 | set $ws9 "9 󰙯 " 102 | set $ws10 "10 󰓇 " 103 | 104 | # switch to workspace 105 | bindsym $mod+grave workspace $ws0 106 | bindsym $mod+1 workspace $ws1 107 | bindsym $mod+2 workspace $ws2 108 | bindsym $mod+3 workspace $ws3 109 | bindsym $mod+4 workspace $ws4 110 | bindsym $mod+5 workspace $ws5 111 | bindsym $mod+6 workspace $ws6 112 | bindsym $mod+7 workspace $ws7 113 | bindsym $mod+8 workspace $ws8 114 | bindsym $mod+9 workspace $ws9 115 | bindsym $mod+0 workspace $ws10 116 | 117 | # move focused container to workspace 118 | bindsym $mod+Shift+grave move container to workspace $ws0 119 | bindsym $mod+Shift+1 move container to workspace $ws1 120 | bindsym $mod+Shift+2 move container to workspace $ws2 121 | bindsym $mod+Shift+3 move container to workspace $ws3 122 | bindsym $mod+Shift+4 move container to workspace $ws4 123 | bindsym $mod+Shift+5 move container to workspace $ws5 124 | bindsym $mod+Shift+6 move container to workspace $ws6 125 | bindsym $mod+Shift+7 move container to workspace $ws7 126 | bindsym $mod+Shift+8 move container to workspace $ws8 127 | bindsym $mod+Shift+9 move container to workspace $ws9 128 | bindsym $mod+Shift+0 move container to workspace $ws10 129 | 130 | ## default app locations 131 | for_window [class=".*"] border pixel 0 132 | for_window [class="Teams"] move to workspace $ws8 133 | for_window [class="discord"] move to workspace $ws9 134 | for_window [class="Spotify"] move to workspace $ws10 135 | for_window [class="Arandr"] floating enable 136 | for_window [class="Thunar"] floating enable 137 | for_window [class="Pavucontrol"] floating enable 138 | #for_window [class="firefox"] floating enable 139 | 140 | ## force floating for pop-ups and such 141 | for_window [window_role="pop-up"] floating enable 142 | for_window [window_role="bubble"] floating enable 143 | for_window [window_role="task_dialog"] floating enable 144 | for_window [window_role="Preferences"] floating enable 145 | for_window [window_type="dialog"] floating enable 146 | for_window [window_type="menu"] floating enable 147 | 148 | # disable auto back and forth 149 | workspace_auto_back_and_forth no 150 | 151 | # reload the configuration file 152 | bindsym $mod+Shift+c reload 153 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 154 | bindsym $mod+Shift+r restart 155 | # exit i3 (logs you out of your X session) 156 | #bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'Do you really want to exit i3?' -B 'Yes, exit i3' 'i3-msg exit'" 157 | #bindsym $mod+Shift+e exec i3-msg exit 158 | bindsym $mod+Shift+e exec --no-startup-id ~/.config/rofi/powermenu/powermenu.sh 159 | 160 | # resize window (you can also use the mouse for that) 161 | mode "resize" { 162 | # These bindings trigger as soon as you enter the resize mode 163 | bindsym h resize shrink width 5 px or 5 ppt 164 | bindsym j resize grow height 5 px or 5 ppt 165 | bindsym k resize shrink height 5 px or 5 ppt 166 | bindsym l resize grow width 5 px or 5 ppt 167 | 168 | # same bindings, but for the arrow keys 169 | bindsym Left resize shrink width 5 px or 5 ppt 170 | bindsym Down resize grow height 5 px or 5 ppt 171 | bindsym Up resize shrink height 5 px or 5 ppt 172 | bindsym Right resize grow width 5 px or 5 ppt 173 | 174 | # back to normal: Enter or Escape or $mod+r 175 | bindsym Return mode "default" 176 | bindsym Escape mode "default" 177 | bindsym $mod+r mode "default" 178 | } 179 | 180 | bindsym $mod+r mode "resize" 181 | 182 | # start i3bar to display a workspace bar + i3blocks 183 | bar { 184 | position top 185 | tray_output primary 186 | tray_padding 4 187 | #strip_workspace_numbers yes 188 | status_command i3blocks -c ~/.config/i3blocks/config 189 | colors { 190 | separator #2e3440 191 | background #2e3440 192 | statusline #d8dee9 193 | focused_workspace #88c0d0 #88c0d0 #2e3440 #2e3440 194 | active_workspace #2e3440 #2e3440 #8fbcbb #8fbcbb 195 | inactive_workspace #3b4252 #3b4252 #eceff4 #eceff4 196 | urgent_workspace #bf616a #bf616a #eceff4 #eceff4 197 | } 198 | } 199 | 200 | client.focused #88c0d0 #88c0d0 #88c0d0 #88c0d0 201 | client.unfocused #3b4252 #3b4252 #3b4252 #3b4252 202 | client.focused_inactive #3b4252 #3b4252 #3b4252 #3b4252 203 | client.urgent #bf616a #bf616a #bf616a #bf616a 204 | 205 | # start-up thingys 206 | #exec --no-startup-id prime-offload 207 | exec --no-startup-id xrandr --auto 208 | exec --no-startup-id ~/.fehbg 209 | exec --no-startup-id xss-lock ~/.config/i3lock/lock.sh 210 | exec --no-startup-id picom --backend glx --vsync --config ~/.config/picom/picom.conf 211 | #exec --no-startup-id nm-applet 212 | #exec --no-startup-id systemctl --user start redshift-gtk 213 | exec_always --no-startup-id i3-msg gaps inner all set 10 214 | 215 | -------------------------------------------------------------------------------- /.config/i3blocks/config: -------------------------------------------------------------------------------- 1 | # _ _____ _ _ _ 2 | # (_)___ /| |__ | | ___ ___| | _____ 3 | # | | |_ \| '_ \| |/ _ \ / __| |/ / __| 4 | # | |___) | |_) | | (_) | (__| <\__ \ 5 | # |_|____/|_.__/|_|\___/ \___|_|\_\___/ 6 | # 7 | markup=pango 8 | full_text= 9 | align=center 10 | separator=false 11 | separator_block_width=0 12 | background=#2e3440 13 | 14 | [separator] 15 | color=#4c566a 16 | background=#2e3440 17 | border=#2e3440 18 | border_left=0 19 | border_right=0 20 | border_top=2 21 | border_bottom=2 22 | 23 | [mediaplayer] 24 | command=~/.config/i3blocks/scripts/media.sh 25 | interval=2 26 | signal=6 27 | color=#eceff4 28 | background=#4c566a 29 | border=#2e3440 30 | border_left=0 31 | border_right=0 32 | border_top=2 33 | border_bottom=2 34 | 35 | ############ 36 | [separator] 37 | full_text=" " 38 | color=#2e3440 39 | background=#4c566a 40 | border=#2e3440 41 | border_left=0 42 | border_right=0 43 | border_top=2 44 | border_bottom=2 45 | ############ 46 | 47 | [checkupdates] 48 | command=~/.config/i3blocks/scripts/archupdates.sh 49 | interval=once 50 | signal=9 51 | color=#eceff4 52 | background=#4c566a 53 | border=#2e3440 54 | border_left=0 55 | border_right=0 56 | border_top=2 57 | border_bottom=2 58 | 59 | [separator] 60 | color=#81a1c1 61 | background=#4c566a 62 | border=#2e3440 63 | border_left=0 64 | border_right=0 65 | border_top=2 66 | border_bottom=2 67 | 68 | [vpn] 69 | command=~/.config/i3blocks/scripts/vpn.sh 70 | interval=10 71 | color=#2e3440 72 | background=#81a1c1 73 | border=#2e3440 74 | border_left=0 75 | border_right=0 76 | border_top=2 77 | border_bottom=2 78 | 79 | [separator] 80 | color=#88c0d0 81 | background=#81a1c1 82 | border=#2e3440 83 | border_left=0 84 | border_right=0 85 | border_top=2 86 | border_bottom=2 87 | 88 | [wifi] 89 | command=~/.config/i3blocks/scripts/wifi.sh 90 | interval=once 91 | signal=8 92 | color=#2e3440 93 | background=#88c0d0 94 | border=#2e3440 95 | border_left=0 96 | border_right=0 97 | border_top=2 98 | border_bottom=2 99 | 100 | ############ 101 | [separator] 102 | color=#2e3440 103 | background=#88c0d0 104 | border=#2e3440 105 | border_left=0 106 | border_right=0 107 | border_top=2 108 | border_bottom=2 109 | ############ 110 | 111 | [separator] 112 | color=#4c566a 113 | background=#2e3440 114 | border=#2e3440 115 | border_left=0 116 | border_right=0 117 | border_top=2 118 | border_bottom=2 119 | 120 | [volume] 121 | command=~/.config/i3blocks/scripts/volume.sh 122 | interval=once 123 | signal=10 124 | color=#eceff4 125 | background=#4c566a 126 | border=#2e3440 127 | border_left=0 128 | border_right=0 129 | border_top=2 130 | border_bottom=2 131 | 132 | ############ 133 | [separator] 134 | full_text=" " 135 | color=#2e3440 136 | background=#4c566a 137 | border=#2e3440 138 | border_left=0 139 | border_right=0 140 | border_top=2 141 | border_bottom=2 142 | ############ 143 | 144 | [battery] 145 | command=~/.config/i3blocks/scripts/battery.sh 146 | interval=5 147 | color=#eceff4 148 | background=#4c566a 149 | border=#2e3440 150 | border_left=0 151 | border_right=0 152 | border_top=2 153 | border_bottom=2 154 | 155 | [separator] 156 | color=#81a1c1 157 | background=#4c566a 158 | border=#2e3440 159 | border_left=0 160 | border_right=0 161 | border_top=2 162 | border_bottom=2 163 | 164 | [time] 165 | command=~/.config/i3blocks/scripts/time.sh 166 | interval=5 167 | color=#2e3440 168 | background=#81a1c1 169 | border=#2e3440 170 | border_left=0 171 | border_right=0 172 | border_top=2 173 | border_bottom=2 174 | 175 | [separator] 176 | color=#88c0d0 177 | background=#81a1c1 178 | border=#2e3440 179 | border_left=0 180 | border_right=0 181 | border_top=2 182 | border_bottom=2 183 | 184 | [date] 185 | command=~/.config/i3blocks/scripts/date.sh 186 | interval=60 187 | color=#2e3440 188 | background=#88c0d0 189 | border=#2e3440 190 | border_left=0 191 | border_right=0 192 | border_top=2 193 | border_bottom=2 194 | 195 | #[separator] 196 | #color=#2e3440 197 | #background=#88c0d0 198 | #border=#2e3440 199 | #border_left=0 200 | #border_right=0 201 | #border_top=2 202 | #border_bottom=2 203 | 204 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/archupdates.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Run checkupdates if 24h has passed since last check 4 | # Pending update list are stored at $HOME/Misc/checkupdates/pending 5 | # Update checktimes are appended to $HOME/Misc/checkupdates/updatechecktime 6 | 7 | ARCH=" 󰣇 " 8 | DIFF=$(echo "scale=2; ($(date +%s)-$(date -r "$HOME/Misc/checkupdates/updatechecktime" +%s)) / (3600 * 24)" | bc) 9 | PEND=$(cat "$HOME/Misc/checkupdates/pending") 10 | CHECK=$(echo "$DIFF 1" | awk '{print ($1 < $2)}') 11 | 12 | if [[ $PEND && $CHECK == 1 ]]; then 13 | COUNT=$(echo "$PEND"|wc -l) 14 | echo "$ARCH$COUNT " 15 | exit 0 16 | elif [[ $CHECK == 1 ]]; then 17 | echo " 󰄭 " 18 | exit 0 19 | fi 20 | 21 | LIST=$(checkupdates|cut -d' ' -f1) 22 | date >> "$HOME/Misc/checkupdates/updatechecktime" 23 | 24 | if [[ $LIST ]]; then 25 | COUNT=$(echo "$LIST"|wc -l) 26 | echo "$ARCH$COUNT " 27 | echo "$LIST" > "$HOME/Misc/checkupdates/pending" 28 | else 29 | echo " 󰄭 " 30 | fi 31 | 32 | if [[ $COUNT -ge 1 ]]; then 33 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:updates "$COUNT Updates Available!" "$LIST" -u CRITICAL 34 | fi 35 | 36 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/battery.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | BAT_00=" 󱃍 " 4 | BAT_10=" 󰁺" 5 | BAT_20=" 󰁻" 6 | BAT_30=" 󰁼" 7 | BAT_40=" 󰁽" 8 | BAT_50=" 󰁾" 9 | BAT_60=" 󰁿" 10 | BAT_70=" 󰂀" 11 | BAT_80=" 󰂁" 12 | BAT_90=" 󰂂" 13 | BAT_100="󰂄" 14 | 15 | CHR_00=" 󰢟" 16 | CHR_10=" 󰢜" 17 | CHR_20=" 󰂆" 18 | CHR_30=" 󰂇" 19 | CHR_40=" 󰂈" 20 | CHR_50=" 󰢝" 21 | CHR_60=" 󰂉" 22 | CHR_70=" 󰢞" 23 | CHR_80=" 󰂊" 24 | CHR_90=" 󰂋" 25 | CHR_100=" 󰂄" 26 | 27 | POW=$(cat /sys/class/power_supply/BAT0/capacity) 28 | PO=$(echo "$POW" | rev | cut -c 2- | rev) 29 | 30 | get_bat() { 31 | case $PO in 32 | 1) echo "$BAT_10$POW " ;; 33 | 2) echo "$BAT_20$POW " ;; 34 | 3) echo "$BAT_30$POW " ;; 35 | 4) echo "$BAT_40$POW " ;; 36 | 5) echo "$BAT_50$POW " ;; 37 | 6) echo "$BAT_60$POW " ;; 38 | 7) echo "$BAT_70$POW " ;; 39 | 8) echo "$BAT_80$POW " ;; 40 | 9) echo "$BAT_90$POW " ;; 41 | 10) echo "$BAT_100$POW " ;; 42 | *) echo "$BAT_00$POW " ;; 43 | esac 44 | } 45 | 46 | get_chr() { 47 | case $PO in 48 | 1) echo "$CHR_10$POW " ;; 49 | 2) echo "$CHR_20$POW " ;; 50 | 3) echo "$CHR_30$POW " ;; 51 | 4) echo "$CHR_40$POW " ;; 52 | 5) echo "$CHR_50$POW " ;; 53 | 6) echo "$CHR_60$POW " ;; 54 | 7) echo "$CHR_70$POW " ;; 55 | 8) echo "$CHR_80$POW " ;; 56 | 9) echo "$CHR_90$POW " ;; 57 | 10) echo "$CHR_100$POW " ;; 58 | *) echo "$CHR_00$POW " ;; 59 | esac 60 | } 61 | 62 | if [[ "$(cut -c 1 < /sys/class/power_supply/BAT0/status)" = D ]]; then 63 | get_bat 64 | else 65 | get_chr 66 | fi 67 | 68 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/date.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATE=$(date '+%b %d') 4 | LCAL=" 󰸘 " 5 | echo "$LCAL$DATE " 6 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/media.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MUS=$(playerctl metadata --format "{{ artist }} - {{ title }}" 2> /dev/null) 4 | MPD=$(cat "$HOME/.config/ncmpcpp/current-status") 5 | MPD_SONG=$(cat "$HOME/.config/ncmpcpp/current-song") 6 | S1=$(echo "$MPD" | sed -n '1p') 7 | #S2=$(echo "$MPD" | sed -n '2p') 8 | if [[ $MUS ]]; then 9 | echo " 󰎈 $MUS" 10 | #elif [ "$S1" == 'playing' ] || [ "$S2" == 'playing' ]; then 11 | elif [ "$S1" == 'playing' ]; then 12 | echo " 󰎈 $MPD_SONG" 13 | else 14 | echo " 󰽳" 15 | fi 16 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/time.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LCLK_00="󱑖" 4 | LCLK_01="󱑋" 5 | LCLK_02="󱑌" 6 | LCLK_03="󱑍" 7 | LCLK_04="󱑎" 8 | LCLK_05="󱑎" 9 | LCLK_06="󱑐" 10 | LCLK_07="󱑑" 11 | LCLK_08="󱑒" 12 | LCLK_09="󱑓" 13 | LCLK_10="󱑔" 14 | LCLK_11="󱑕" 15 | 16 | TIME=$(date '+%H:%M') 17 | HR=$(date '+%I') 18 | 19 | get_time() { 20 | case $HR in 21 | 01) echo " $LCLK_01 $TIME " ;; 22 | 02) echo " $LCLK_02 $TIME " ;; 23 | 03) echo " $LCLK_03 $TIME " ;; 24 | 04) echo " $LCLK_04 $TIME " ;; 25 | 05) echo " $LCLK_05 $TIME " ;; 26 | 06) echo " $LCLK_06 $TIME " ;; 27 | 07) echo " $LCLK_07 $TIME " ;; 28 | 08) echo " $LCLK_08 $TIME " ;; 29 | 09) echo " $LCLK_09 $TIME " ;; 30 | 10) echo " $LCLK_10 $TIME " ;; 31 | 11) echo " $LCLK_11 $TIME " ;; 32 | 12) echo " $LCLK_00 $TIME " ;; 33 | esac 34 | } 35 | 36 | get_time 37 | 38 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LO=" 󰕿 " 4 | HI=" 󰕾 " 5 | MO=" 󰖀 " 6 | MU=" 󰝟" 7 | 8 | VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)) 9 | VO=$(echo "$VOL" | cut -d'%' -f1) 10 | V=$(echo "$VO" | rev | cut -c 2- | rev) 11 | 12 | get_vol_icon() { 13 | if [[ $VO -gt 50 ]]; then 14 | echo "$HI$V" 15 | elif [[ $VO -gt 25 ]]; then 16 | echo "$MO$V" 17 | else 18 | echo "$LO$V" 19 | fi 20 | } 21 | 22 | if amixer get Master | grep -q '\[on\]'; then 23 | get_vol_icon 24 | else 25 | echo "$MU" 26 | fi 27 | 28 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/vpn.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if nmcli c show --active | grep -q vpn; then 4 | echo " 󰖂 ON " 5 | else 6 | echo " 󰖂 OFF " 7 | fi 8 | 9 | -------------------------------------------------------------------------------- /.config/i3blocks/scripts/wifi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | WS_4=" 󰤨 " 4 | WS_3=" 󰤥 " 5 | WS_2=" 󰤢 " 6 | WS_1=" 󰤟 " 7 | WS_0=" 󰤫 " 8 | WS_N=" 󰤭 " 9 | 10 | SSID=$(iwgetid -r) 11 | SSIG=$(grep "$(iwgetid -m | awk '{ printf "%s", $1 }')" /proc/net/wireless | awk '{ printf "%i\n", int($3 * 100 / 70) }') 12 | 13 | SIG=$(echo "$SSIG" | rev | cut -c 2- | rev) 14 | 15 | get_bat() { 16 | case $SIG in 17 | 0 | 1) echo "$WS_0$SSID " ;; 18 | 2 | 3) echo "$WS_1$SSID " ;; 19 | 4 | 5) echo "$WS_2$SSID " ;; 20 | 6 | 7) echo "$WS_3$SSID " ;; 21 | *) echo "$WS_4$SSID " 22 | esac 23 | } 24 | 25 | if [[ $SSID ]]; then 26 | get_bat 27 | else 28 | echo "$WS_N" 29 | fi 30 | 31 | -------------------------------------------------------------------------------- /.config/i3lock/lock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Credit: u/ariathriven https://www.reddit.com/r/unixporn/comments/jyzw5k/i3lock_love_linux_for_letting_me_have_this_lock/ 4 | 5 | i3lock --nofork \ 6 | --ignore-empty-password \ 7 | \ 8 | --indicator \ 9 | --bar-indicator \ 10 | --bar-position="1070" \ 11 | --bar-base-width="10" \ 12 | --bar-orientation=horizontal \ 13 | --bar-color=2e3440 \ 14 | --ringvercolor=88c0d0 \ 15 | --ringwrongcolor=bf616a \ 16 | --bshlcolor=5e81ac \ 17 | --keyhlcolor=a3be8c \ 18 | \ 19 | --clock \ 20 | --timecolor=eceff4ff \ 21 | --timestr="%I:%M %p" \ 22 | --time-font="Calvin and Hobbes" \ 23 | --timesize=150 \ 24 | --timepos="1350:875" \ 25 | --timecolor=2e3440ff \ 26 | \ 27 | --datecolor=d8dee9ff \ 28 | --datestr="%A, %d %B" \ 29 | --datecolor=2e3440ff \ 30 | --date-font="Calvin and Hobbes" \ 31 | --datesize=108 \ 32 | --datepos="1350:1002" \ 33 | \ 34 | --verif-font="Calvin and Hobbes" \ 35 | --verifcolor=2e3440ff \ 36 | --verifsize=150 \ 37 | --veriftext="" \ 38 | --wrong-font="Calvin and Hobbes" \ 39 | --wrongcolor=2e3440ff \ 40 | --wrongsize=150 \ 41 | --wrongtext="you shall not pass!" \ 42 | --noinputtext="-_-" \ 43 | \ 44 | --image=/home/chaos/Pictures/nord-calvin-and-hobbes.png 45 | 46 | -------------------------------------------------------------------------------- /.config/kitty/nord.conf: -------------------------------------------------------------------------------- 1 | # Nord Colorscheme for Kitty 2 | # Based on: 3 | # - https://gist.github.com/marcusramberg/64010234c95a93d953e8c79fdaf94192 4 | # - https://github.com/arcticicestudio/nord-hyper 5 | 6 | foreground #D8DEE9 7 | background #2E3440 8 | selection_foreground #000000 9 | selection_background #FFFACD 10 | url_color #0087BD 11 | cursor #81A1C1 12 | 13 | # black 14 | color0 #3B4252 15 | color8 #4C566A 16 | 17 | # red 18 | color1 #BF616A 19 | color9 #BF616A 20 | 21 | # green 22 | color2 #A3BE8C 23 | color10 #A3BE8C 24 | 25 | # yellow 26 | color3 #EBCB8B 27 | color11 #EBCB8B 28 | 29 | # blue 30 | color4 #81A1C1 31 | color12 #81A1C1 32 | 33 | # magenta 34 | color5 #B48EAD 35 | color13 #B48EAD 36 | 37 | # cyan 38 | color6 #88C0D0 39 | color14 #8FBCBB 40 | 41 | # white 42 | color7 #E5E9F0 43 | color15 #ECEFF4 44 | -------------------------------------------------------------------------------- /.config/ncmpcpp/config: -------------------------------------------------------------------------------- 1 | ### Directories ### 2 | ncmpcpp_directory = ~/.config/ncmpcpp 3 | lyrics_directory = ~/.config/ncmpcpp/lyrics 4 | mpd_music_dir = ~/Music 5 | mpd_port = 6600 6 | 7 | ### Behaviour ### 8 | execute_on_song_change = "$HOME/.config/ncmpcpp/mpd-notification" 9 | message_delay_time = 1 10 | playlist_disable_highlight_delay = 2 11 | autocenter_mode = "yes" 12 | centered_cursor = "yes" 13 | ignore_leading_the = "yes" 14 | allow_for_physical_item_deletion = "yes" 15 | 16 | ### Visualizer ### 17 | visualizer_data_source = /tmp/mpd.fifo 18 | visualizer_output_name = "mpd_visualizer" 19 | visualizer_spectrum_smooth_look = no 20 | visualizer_in_stereo = "yes" 21 | visualizer_look = ●● 22 | 23 | ### Appearance ### 24 | colors_enabled = "yes" 25 | playlist_display_mode = "columns" 26 | user_interface = classic 27 | #user_interface = alternative 28 | display_volume_level = "yes" 29 | display_remaining_time = "no" 30 | playlist_separate_albums = "no" 31 | 32 | # Window # 33 | song_window_title_format = "Music" 34 | # song_window_title_format = "{%a - }{%t}|{%f}" 35 | statusbar_visibility = "no" 36 | header_visibility = "no" 37 | titles_visibility = "no" 38 | 39 | # Progress bar # 40 | #progressbar_look = "▂▂▂" 41 | progressbar_look = "━●━" 42 | progressbar_color = "black" 43 | progressbar_elapsed_color = "cyan" 44 | 45 | 46 | # Alternative UI <-| 47 | alternative_ui_separator_color = "black" 48 | alternative_header_first_line_format = $b$7<-$/b$7| $b$8{%t}|{%f}$/b $7|$b$7->$/b 49 | alternative_header_second_line_format = {$b{$3%a$9}{ - $4%b$9}{ ($3%y$9)}}|{%D} 50 | 51 | # Song list # 52 | #song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} 53 | #song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9} 54 | #song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} 55 | #song_library_format = {%n - }{%t}|{%f} 56 | 57 | song_status_format= "$7%t" 58 | song_list_format = " %t $R%a %l " 59 | song_columns_list_format = "(53)[white]{tr} (45)[cyan]{a}" 60 | song_library_format = {{%a - %t} (%b)}|{%f} 61 | 62 | # Colors # 63 | main_window_color = "white" 64 | current_item_prefix = "$(cyan)$r" 65 | current_item_suffix = "$/r$(end)" 66 | current_item_inactive_column_prefix = $(white) 67 | current_item_inactive_column_suffix = $(cyan) 68 | 69 | # Other 70 | follow_now_playing_lyrics = "yes" 71 | empty_tag_marker = "" 72 | -------------------------------------------------------------------------------- /.config/notifications/backlight.sh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | CUR=$(echo $(cat /sys/class/backlight/*/brightness) / $(cat /sys/class/backlight/*/max_brightness) | bc -l) 4 | BRI=$(echo $((CUR * 100)) | cut -d'.' -f1) 5 | 6 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:backlight "" -h int:value:"$BRI" -p -u LOW -I "$HOME/.icons/linebit/sun.png" 1> /dev/null 7 | 8 | -------------------------------------------------------------------------------- /.config/notifications/high-battery.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | POW=$(cat /sys/class/power_supply/BAT0/capacity) 4 | 5 | if [ "$(cut -c 1 < /sys/class/power_supply/BAT0/status)" = C ] && [ "$POW" -gt 80 ]; then 6 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:battery "Battery Status" "Almost Charged" -u CRITICAL -I "$HOME/.icons/drops/battery.png" 7 | fi 8 | 9 | -------------------------------------------------------------------------------- /.config/notifications/low-battery.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | POW=$(cat /sys/class/power_supply/BAT0/capacity) 4 | 5 | if [ "$(cut -c 1 < /sys/class/power_supply/BAT0/status)" = D ] && [ "$POW" -lt 20 ]; then 6 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:battery "Battery Status" "Running Low" -u CRITICAL -I "$HOME/.icons/linebit/battery.png" 7 | elif [ "$(cut -c 1 < /sys/class/power_supply/BAT0/status)" = D ] && [ "$POW" -lt 15 ]; then 8 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:battery "Battery Status" "Running Low" -u CRITICAL -I "$HOME/.icons/drops/alert.png" 9 | fi 10 | 11 | -------------------------------------------------------------------------------- /.config/notifications/plugged.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script is invoked from /etc/apci/handler.sh 4 | 5 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:battery "Battery Status" "Charging" -u LOW -I "$HOME/.icons/linebit/battery_charging.png" 6 | 7 | -------------------------------------------------------------------------------- /.config/notifications/unplugged.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script is invoked from /etc/apci/handler.sh 4 | 5 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:battery "Battery Status" "Unplugged" -u LOW -I "$HOME/.icons/drops/battery.png" 6 | 7 | -------------------------------------------------------------------------------- /.config/notifications/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)|cut -d'%' -f1) 4 | 5 | DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dunstify -h string:x-canonical-private-synchronous:audio "" -h int:value:"$VOL" -u LOW -I "$HOME/.icons/linebit/volume.png" 1> /dev/null 6 | 7 | -------------------------------------------------------------------------------- /.config/picom/picom.conf: -------------------------------------------------------------------------------- 1 | blur: { 2 | method = "dual_kawase"; 3 | strength = 7; 4 | background = false; 5 | background-frame = false; 6 | background-fixed = false; 7 | } 8 | 9 | corner-radius = 10; 10 | round-borders = 5; 11 | 12 | rounded-corners-exclude = [ 13 | "class_g = 'i3bar'", 14 | "class_g = 'i3-frame'", 15 | "class_g = 'Rofi'", 16 | "window_type = 'menu'", 17 | "window_type = 'tooltip'", 18 | "window_type = 'popup_menu'", 19 | "window_type = 'dropdown_menu'" 20 | ]; 21 | 22 | opacity-rule = [ 23 | "98:class_g ~= 'kitty' && !focused", 24 | "100:class_g ~= 'kitty' && focused", 25 | ]; 26 | 27 | shadow = true; 28 | shadow-radius = 20; 29 | shadow-opacity = 0.5; 30 | shadow-offset-x = -17; 31 | shadow-offset-y = -17; 32 | shadow-exclude = [ 33 | "class_g = 'i3bar'", 34 | "class_g = 'i3-frame'" 35 | ]; 36 | 37 | # fading = true; 38 | # fade-delta = 3; 39 | # fade-in-step = 0.015; 40 | # fade-out-step = 0.015; 41 | # no-fading-openclose = false; 42 | # fade-exclude = [ ]; 43 | 44 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | display-combi: "󰣇 Apps"; 3 | display-drun: "󰣇 Apps"; 4 | display-run: "󰏖 Pkgs"; 5 | display-window: "󱂬 Wins"; 6 | display-ssh: "󰆍 SSH"; 7 | sidebar-mode: true; 8 | icon-theme: "Nord-Icons"; 9 | show-icons:true; 10 | font: "Iosevka 14"; 11 | } 12 | 13 | * { 14 | background-color: #2e3440; 15 | text-color: #eceff4; 16 | selbg: #66cccc; 17 | actbg: #4c566a; 18 | urgbg: #bf616a; 19 | winbg: #66cccc; 20 | 21 | selected-normal-foreground: @winbg; 22 | normal-foreground: @text-color; 23 | selected-normal-background: @actbg; 24 | normal-background: @background-color; 25 | 26 | selected-urgent-foreground: @background-color; 27 | urgent-foreground: @text-color; 28 | selected-urgent-background: @urgbg; 29 | urgent-background: @background-color; 30 | 31 | selected-active-foreground: @winbg; 32 | active-foreground: @text-color; 33 | selected-active-background: @actbg; 34 | active-background: @selbg; 35 | 36 | line-margin: 2; 37 | line-padding: 2; 38 | separator-style: "none"; 39 | hide-scrollbar: "true"; 40 | margin: 0; 41 | padding: 10; 42 | } 43 | 44 | window { 45 | location: west; 46 | anchor: west; 47 | height: 100%; 48 | width: 30%; 49 | orientation: horizontal; 50 | children: [mainbox]; 51 | } 52 | 53 | mainbox { 54 | spacing: 0.8em; 55 | children: [ entry,listview,mode-switcher ]; 56 | } 57 | 58 | button { padding: 5px 2px; } 59 | 60 | button selected { 61 | background-color: @active-background; 62 | text-color: @background-color; 63 | } 64 | 65 | inputbar { 66 | padding: 5px; 67 | spacing: 5px; 68 | } 69 | 70 | listview { 71 | spacing: 0.5em; 72 | dynamic: false; 73 | cycle: true; 74 | } 75 | 76 | element { padding: 10px; } 77 | 78 | entry { 79 | expand: false; 80 | text-color: @normal-foreground; 81 | vertical-align: 1; 82 | padding: 5px; 83 | } 84 | 85 | element normal.normal { 86 | background-color: @normal-background; 87 | text-color: @normal-foreground; 88 | } 89 | 90 | element normal.urgent { 91 | background-color: @urgent-background; 92 | text-color: @urgent-foreground; 93 | } 94 | 95 | element normal.active { 96 | background-color: @active-background; 97 | text-color: @active-foreground; 98 | } 99 | 100 | element selected.normal { 101 | background-color: @selected-normal-background; 102 | text-color: @selected-normal-foreground; 103 | border: 0 5px solid 0 0; 104 | border-color: @active-background; 105 | } 106 | 107 | element selected.urgent { 108 | background-color: @selected-urgent-background; 109 | text-color: @selected-urgent-foreground; 110 | } 111 | 112 | element selected.active { 113 | background-color: @selected-active-background; 114 | text-color: @selected-active-foreground; 115 | } 116 | 117 | element alternate.normal { 118 | background-color: @normal-background; 119 | text-color: @normal-foreground; 120 | } 121 | 122 | element alternate.urgent { 123 | background-color: @urgent-background; 124 | text-color: @urgent-foreground; 125 | } 126 | 127 | element alternate.active { 128 | background-color: @active-background; 129 | text-color: @active-foreground; 130 | } 131 | element-icon { 132 | size: 3ch; 133 | } 134 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/colors.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | accent: #5e81ac; 3 | background: #2e3440; 4 | background-light: #E7E8EB; 5 | foreground: #333333; 6 | on: #44ad4d; 7 | off: #e34039; 8 | } 9 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/config-powermenu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | display-combi: "󰣇 APPS"; 3 | display-drun: "󰣇 APPS"; 4 | display-run: "󰏖 PKGS"; 5 | display-window: "󱂬 WINS"; 6 | display-ssh: "󰆍 SSH"; 7 | sidebar-mode: true; 8 | icon-theme: "Papirus"; 9 | show-icons:true; 10 | font: "JetBrains Mono 13"; 11 | } 12 | 13 | * { 14 | background-color: #2e3440; 15 | text-color: #eceff4; 16 | selbg: #66cccc; 17 | actbg: #4c566a; 18 | urgbg: #bf616a; 19 | winbg: #66cccc; 20 | 21 | selected-normal-foreground: @winbg; 22 | normal-foreground: @text-color; 23 | selected-normal-background: @actbg; 24 | normal-background: @background-color; 25 | 26 | selected-urgent-foreground: @background-color; 27 | urgent-foreground: @text-color; 28 | selected-urgent-background: @urgbg; 29 | urgent-background: @background-color; 30 | 31 | selected-active-foreground: @winbg; 32 | active-foreground: @text-color; 33 | selected-active-background: @actbg; 34 | active-background: @selbg; 35 | 36 | line-margin: 2; 37 | line-padding: 2; 38 | separator-style: "none"; 39 | hide-scrollbar: "true"; 40 | margin: 0; 41 | padding: 10; 42 | } 43 | 44 | window { 45 | location: west; 46 | anchor: west; 47 | height: 100%; 48 | width: 30%; 49 | orientation: horizontal; 50 | children: [mainbox]; 51 | } 52 | 53 | mainbox { 54 | spacing: 0.8em; 55 | children: [ entry,listview,mode-switcher ]; 56 | } 57 | 58 | button { padding: 5px 2px; } 59 | 60 | button selected { 61 | background-color: @active-background; 62 | text-color: @background-color; 63 | } 64 | 65 | inputbar { 66 | padding: 5px; 67 | spacing: 5px; 68 | } 69 | 70 | listview { 71 | spacing: 0.5em; 72 | dynamic: false; 73 | cycle: true; 74 | } 75 | 76 | element { padding: 10px; } 77 | 78 | entry { 79 | expand: false; 80 | text-color: @normal-foreground; 81 | vertical-align: 1; 82 | padding: 5px; 83 | } 84 | 85 | element normal.normal { 86 | background-color: @normal-background; 87 | text-color: @normal-foreground; 88 | } 89 | 90 | element normal.urgent { 91 | background-color: @urgent-background; 92 | text-color: @urgent-foreground; 93 | } 94 | 95 | element normal.active { 96 | background-color: @active-background; 97 | text-color: @active-foreground; 98 | } 99 | 100 | element selected.normal { 101 | background-color: @selected-normal-background; 102 | text-color: @selected-normal-foreground; 103 | border: 0 0 5 0; 104 | border-color: @active-background; 105 | } 106 | 107 | element selected.urgent { 108 | background-color: @selected-urgent-background; 109 | text-color: @selected-urgent-foreground; 110 | } 111 | 112 | element selected.active { 113 | background-color: @selected-active-background; 114 | text-color: @selected-active-foreground; 115 | } 116 | 117 | element alternate.normal { 118 | background-color: @normal-background; 119 | text-color: @normal-foreground; 120 | } 121 | 122 | element alternate.urgent { 123 | background-color: @urgent-background; 124 | text-color: @urgent-foreground; 125 | } 126 | 127 | element alternate.active { 128 | background-color: @active-background; 129 | text-color: @active-foreground; 130 | } 131 | element-icon { 132 | size: 3ch; 133 | } 134 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/.config/rofi/powermenu/feather.ttf -------------------------------------------------------------------------------- /.config/rofi/powermenu/menu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | disable-history: false; 3 | fullscreen: false; 4 | hide-scrollbar: true; 5 | sidebar-mode: false; 6 | } 7 | 8 | @import "colors.rasi" 9 | 10 | * { 11 | background-color: @background; 12 | text-color: @accent; 13 | } 14 | 15 | window { 16 | transparency: "real"; 17 | border-radius: 3px; 18 | width: 730px; 19 | height: 180px; 20 | location: east; 21 | x-offset: -1325px; 22 | y-offset: -90px; 23 | } 24 | 25 | listview { 26 | lines: 5; 27 | margin: 0px; 28 | spacing: 0px; 29 | cycle: true; 30 | dynamic: true; 31 | layout: horizontal; 32 | } 33 | 34 | mainbox { 35 | background-color: @background; 36 | children: [ listview ]; 37 | } 38 | 39 | element { 40 | background-color: @background; 41 | text-color: @accent; 42 | orientation: vertical; 43 | border-radius: 3px; 44 | } 45 | 46 | element-text { 47 | font: "feather 24"; 48 | expand: true; 49 | horizontal-align: 0.5; 50 | vertical-align: 0; 51 | margin: -30px 30px 30px 30px; 52 | } 53 | 54 | element normal.urgent, 55 | element alternate.urgent { 56 | background-color: @urgent; 57 | text-color: @foreground; 58 | border-radius: 3px; 59 | } 60 | 61 | element normal.active, 62 | element alternate.active { 63 | background-color: @background-alt; 64 | text-color: @foreground; 65 | } 66 | 67 | element selected { 68 | background-color: @accent; 69 | text-color: @background; 70 | border: 0px; 71 | border-radius: 3px; 72 | border-color: @border; 73 | } 74 | 75 | element selected.urgent { 76 | background-color: @urgent; 77 | text-color: @foreground; 78 | } 79 | 80 | element selected.active { 81 | background-color: @background-alt; 82 | color: @foreground; 83 | } 84 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/menu.rasi.horz: -------------------------------------------------------------------------------- 1 | configuration { 2 | disable-history: false; 3 | fullscreen: false; 4 | hide-scrollbar: true; 5 | sidebar-mode: false; 6 | } 7 | 8 | @import "colors.rasi" 9 | 10 | * { 11 | background-color: @background; 12 | text-color: @accent; 13 | } 14 | 15 | window { 16 | transparency: "real"; 17 | border-radius: 3px; 18 | width: 730px; 19 | height: 180px; 20 | location: east; 21 | x-offset: -1325px; 22 | y-offset: -90px; 23 | } 24 | 25 | listview { 26 | lines: 5; 27 | margin: 0px; 28 | spacing: 0px; 29 | cycle: true; 30 | dynamic: true; 31 | layout: horizontal; 32 | } 33 | 34 | mainbox { 35 | background-color: @background; 36 | children: [ listview ]; 37 | } 38 | 39 | element { 40 | background-color: @background; 41 | text-color: @accent; 42 | orientation: vertical; 43 | border-radius: 3px; 44 | } 45 | 46 | element-text { 47 | font: "feather 24"; 48 | expand: true; 49 | horizontal-align: 0.5; 50 | vertical-align: 0; 51 | margin: -30px 30px 30px 30px; 52 | } 53 | 54 | element normal.urgent, 55 | element alternate.urgent { 56 | background-color: @urgent; 57 | text-color: @foreground; 58 | border-radius: 3px; 59 | } 60 | 61 | element normal.active, 62 | element alternate.active { 63 | background-color: @background-alt; 64 | text-color: @foreground; 65 | } 66 | 67 | element selected { 68 | background-color: @accent; 69 | text-color: @background; 70 | border: 0px; 71 | border-radius: 3px; 72 | border-color: @border; 73 | } 74 | 75 | element selected.urgent { 76 | background-color: @urgent; 77 | text-color: @foreground; 78 | } 79 | 80 | element selected.active { 81 | background-color: @background-alt; 82 | color: @foreground; 83 | } 84 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/menu.rasi.vert: -------------------------------------------------------------------------------- 1 | configuration { 2 | disable-history: false; 3 | fullscreen: false; 4 | hide-scrollbar: true; 5 | sidebar-mode: false; 6 | } 7 | 8 | @import "colors.rasi" 9 | 10 | * { 11 | background-color: @background; 12 | text-color: @accent; 13 | } 14 | 15 | window { 16 | transparency: "real"; 17 | border-radius: 3px; 18 | width: 480px; 19 | height: 180px; 20 | location: east; 21 | x-offset: -1200px; 22 | y-offset: 0px; 23 | } 24 | 25 | listview { 26 | lines: 5; 27 | margin: 0px; 28 | spacing: 0px; 29 | cycle: true; 30 | dynamic: true; 31 | layout: horizontal; 32 | } 33 | 34 | mainbox { 35 | background-color: @background; 36 | children: [ listview ]; 37 | } 38 | 39 | element { 40 | background-color: @background; 41 | text-color: @accent; 42 | orientation: vertical; 43 | border-radius: 3px; 44 | } 45 | 46 | element-text { 47 | font: "feather 20"; 48 | expand: true; 49 | horizontal-align: 0.5; 50 | vertical-align: 0; 51 | margin: -50px 0px 15px 0px; 52 | } 53 | 54 | element normal.urgent, 55 | element alternate.urgent { 56 | background-color: @urgent; 57 | text-color: @foreground; 58 | border-radius: 3px; 59 | } 60 | 61 | element normal.active, 62 | element alternate.active { 63 | background-color: @background-alt; 64 | text-color: @foreground; 65 | } 66 | 67 | element selected { 68 | background-color: @accent; 69 | text-color: @background; 70 | border: 0px; 71 | border-radius: 3px; 72 | border-color: @border; 73 | } 74 | 75 | element selected.urgent { 76 | background-color: @urgent; 77 | text-color: @foreground; 78 | } 79 | 80 | element selected.active { 81 | background-color: @background-alt; 82 | color: @foreground; 83 | } 84 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/powermenu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | dir="$HOME/.config/rofi/powermenu" 4 | rofi_command="rofi -theme $dir/menu.rasi -config $dir/config-powermenu.rasi" 5 | 6 | uptime=$(uptime -p | sed -e 's/up //g') 7 | 8 | # Options 9 | shutdown="" 10 | reboot="" 11 | lock="" 12 | suspend="" 13 | logout="" 14 | 15 | # # Confirmation 16 | # confirm_exit() { 17 | # rofi -dmenu\ 18 | # -i\ 19 | # -no-fixed-num-lines\ 20 | # -p "Are You Sure? : "\ 21 | # -theme $dir/confirm.rasi 22 | # } 23 | 24 | # # Message 25 | # msg() { 26 | # rofi -theme "$dir/message.rasi" -e "Available Options - yes / y / no / n" 27 | # } 28 | 29 | # Variable passed to rofi 30 | options="$shutdown\n$reboot\n$suspend\n$lock\n$logout" 31 | 32 | chosen="$(echo -e "$options" | $rofi_command -p "Uptime: $uptime" -dmenu -selected-row 2)" 33 | case $chosen in 34 | "$shutdown") 35 | # ans=$(confirm_exit &) 36 | ans="yes" 37 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 38 | systemctl poweroff 39 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 40 | exit 0 41 | else 42 | msg 43 | fi 44 | ;; 45 | "$reboot") 46 | # ans=$(confirm_exit &) 47 | ans="yes" 48 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 49 | systemctl reboot 50 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 51 | exit 0 52 | else 53 | msg 54 | fi 55 | ;; 56 | "$lock") 57 | "$HOME/.config/i3lock/lock.sh" 58 | ;; 59 | "$suspend") 60 | # ans=$(confirm_exit &) 61 | ans="yes" 62 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 63 | systemctl suspend 64 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 65 | exit 0 66 | else 67 | msg 68 | fi 69 | ;; 70 | "$logout") 71 | # ans=$(confirm_exit &) 72 | i3-msg exit 73 | ;; 74 | esac 75 | -------------------------------------------------------------------------------- /.config/rofi/scripts/rofi-powermenu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | if [ -z "$@" ]; then 5 | echo -en "Shutdown\0icon\x1f/usr/share/icons/Papirus/48x48/apps/system-shutdown.svg\n" 6 | echo -en "Reboot\0icon\x1f/usr/share/icons/Papirus/48x48/apps/system-reboot.svg\n" 7 | echo -en "Logout\0icon\x1f/usr/share/icons/Papirus/48x48/apps/system-log-out.svg\n" 8 | echo -en "Lock\0icon\x1f/usr/share/icons/Papirus/48x48/apps/system-lock-screen.svg\n" 9 | echo -en "Suspend\0icon\x1f/usr/share/icons/Papirus/48x48/apps/system-suspend.svg\n" 10 | else 11 | if [ "$1" = "Shutdown" ]; then 12 | shutdown now 13 | elif [ "$1" = "Logout" ]; then 14 | i3-msg exit 15 | elif [ "$1" = "Reboot" ]; then 16 | sudo reboot 17 | elif [ "$1" = "Suspend" ]; then 18 | systemctl suspend 19 | elif [ "$1" = "Lock" ]; then 20 | betterlockscreen -l blur 21 | fi 22 | fi 23 | -------------------------------------------------------------------------------- /.config/starship.toml: -------------------------------------------------------------------------------- 1 | # Don't print a new line at the start of the prompt 2 | add_newline = false 3 | 4 | format = """ 5 | $username\ 6 | $hostname\ 7 | $shlvl\ 8 | $directory\ 9 | $git_branch\ 10 | $git_commit\ 11 | $git_state\ 12 | $git_status\ 13 | $hg_branch\ 14 | $docker_context\ 15 | $package\ 16 | $memory_usage\ 17 | $openstack\ 18 | $env_var\ 19 | $crystal\ 20 | $custom\ 21 | $cmd_duration\ 22 | $line_break\ 23 | $jobs\ 24 | $battery\ 25 | $time\ 26 | $status\ 27 | $character""" 28 | 29 | # Disables the line_break module, making the prompt a single line. 30 | [line_break] 31 | disabled = true 32 | 33 | # Replace the "❯" symbol in the prompt with "➜" 34 | [character] # The name of the module we are configuring is "character" 35 | success_symbol = "[󰊠 ](bold green)" # The "success_symbol" segment is being set to "➜" with the color "bold green" 36 | error_symbol = "[󰊠 ](bold red)" # The "error_symbol" segment is being set to "➜" with the color "bold red" 37 | 38 | [perl] 39 | symbol = " " 40 | 41 | [lua] 42 | symbol = "󰢱 " 43 | -------------------------------------------------------------------------------- /.config/vis/colors/nord: -------------------------------------------------------------------------------- 1 | #88c0d0 2 | #a3be8c 3 | #ebcb8b 4 | #d08770 5 | #bf616a 6 | -------------------------------------------------------------------------------- /.config/vis/colors/rgb: -------------------------------------------------------------------------------- 1 | #4040ff 2 | #2c56fc 3 | #2a59fc 4 | #1180ed 5 | #04a6d5 6 | #02abd1 7 | #03d2aa 8 | #04d6a5 9 | #12ee7f 10 | #2bfc58 11 | #2dfc55 12 | #56fc2d 13 | -------------------------------------------------------------------------------- /.config/vis/config: -------------------------------------------------------------------------------- 1 | #Refresh rate of the visualizers. A really high refresh rate may cause screen tearing. Default is 20. 2 | visualizer.fps=24 3 | 4 | #Defaults to "/tmp/mpd.fifo" 5 | mpd.fifo.path 6 | 7 | #If set to false the visualizers will use mono mode instead of stereo. Some visualizers will 8 | #behave differently when mono is enabled. For example, spectrum show two sets of bars. 9 | #audio.stereo.enabled=false 10 | 11 | #Specifies how often the visualizer will change in seconds. 0 means do not rotate. Default is 0. 12 | visualizer.rotation.secs=10 13 | 14 | #Configures the samples rate and the cutoff frequencies. 15 | audio.sampling.frequency=44100 16 | audio.low.cutoff.frequency=30 17 | audio.high.cutoff.frequency=22050 18 | 19 | ##Applies scaling factor to both lorenz and ellipse visualizers. This is useful when the system audio is set 20 | #to a low volume. 21 | #visualizer.scaling.multiplier=1.0 22 | 23 | #Configures the visualizers and the order they are in. Available visualizers are spectrum,lorenz,ellipse. 24 | #Defaults to spectrum,ellipse,lorenz 25 | visualizers=spectrum 26 | 27 | 28 | #Configures what character the spectrum visualizer will use. Specifying a space (e.g " ") means the 29 | #background will be colored instead of the character. Defaults to " ". 30 | visualizer.spectrum.character=● 31 | 32 | #Spectrum bar width. Defaults to 1. 33 | visualizer.spectrum.bar.width=1 34 | 35 | #The amount of space between each bar in the spectrum visualizer. Defaults to 1. It's possible to set this to 36 | #zero to have no space between bars 37 | visualizer.spectrum.bar.spacing=1 38 | 39 | #Available smoothing options are monstercat, sgs, none. Defaults to sgs. 40 | visualizer.spectrum.smoothing.mode=monstercat 41 | #visualizer.spectrum.smoothing.mode=sgs 42 | #visualizer.spectrum.smoothing.mode=none 43 | 44 | #This configures the falloff effect on the spectrum visualizer. Available falloff options are fill,top,none. 45 | #Defaults to "fill" 46 | #visualizer.spectrum.falloff.mode=none 47 | #visualizer.spectrum.falloff.mode=fill 48 | visualizer.spectrum.falloff.mode=top 49 | 50 | #Configures how fast the falloff character falls. This is an exponential falloff so values usually look 51 | #best 0.9+ and small changes in this value can have a large effect. Defaults to 0.95 52 | visualizer.spectrum.falloff.weight=0.97 53 | 54 | #Margins in percent of total screen for spectrum visualizer. All margins default to 0 55 | visualizer.spectrum.top.margin=0.0 56 | visualizer.spectrum.bottom.margin=0.0 57 | visualizer.spectrum.right.margin=0.0 58 | visualizer.spectrum.left.margin=0.0 59 | 60 | #Reverses the direction of the spectrum so that high freqs are first and low freqs last. Defaults to false. 61 | visualizer.spectrum.reversed=false 62 | 63 | #Sets the audio sources to use. Currently available ones are "mpd" and "alsa"Sets the audio sources to use. 64 | #Currently available ones are "mpd", "pulse", "port", and "alsa". Defaults to "mpd". 65 | audio.sources=pulse 66 | 67 | ##vis tries to find the correct pulseaudio sink, however this will not work on all systems. 68 | #If pulse audio is not working with vis try switching the audio source. A list can be found by running the 69 | #command pacmd list-sinks | grep -e 'name:' -e 'index' 70 | audio.pulse.source=0 71 | 72 | #vis tries to find the correct portaudio device (through portaudio default method), however its not for-sure. 73 | #If port audio is not working with vis try switching the audio srouce. A list can be found by setting 74 | #this value to "list" and checking the vis log file. Replace this value with the device name desired 75 | audio.port.source=auto 76 | 77 | #This configures the sgs smoothing effect on the spectrum visualizer. More points spreads out the smoothing 78 | #effect and increasing passes runs the smoother multiple times on reach run. Defaults are points=3 and passes=2. 79 | visualizer.sgs.smoothing.points=3 80 | visualizer.sgs.smoothing.passes=2 81 | 82 | 83 | #Configures what character the ellipse visualizer will use. Specifying a space (e.g " ") means the 84 | #background will be colored instead of the character. Defaults to " ". 85 | visualizer.ellipse.character=* 86 | 87 | #The radius of each color ring in the ellipse visualizer. Defaults to 2. 88 | visualizer.ellipse.radius=2 89 | 90 | ## Turns off overriding the user's terminal colors 91 | #colors.override.terminal=false 92 | 93 | #Specifies the color scheme. The color scheme must be in ~/.config/vis/colors/ directory. Default is "colors" 94 | colors.scheme=nord 95 | 96 | -------------------------------------------------------------------------------- /.config/zathura/zathurarc: -------------------------------------------------------------------------------- 1 | 2 | set font "JetBrainsMono Nerd Font 10" 3 | 4 | set default-bg "#2E3440" 5 | set default-fg "#3B4252" 6 | 7 | set statusbar-fg "#D8DEE9" 8 | set statusbar-bg "#434C5E" 9 | 10 | set index-bg "#2E3440" 11 | set index-fg "#ECEFF4" 12 | set index-active-bg "#5e81ac" 13 | set index-active-fg "#ECEFF4" 14 | 15 | set inputbar-bg "#2E3440" 16 | set inputbar-fg "#8FBCBB" 17 | 18 | set notification-bg "#2E3440" 19 | set notification-fg "#8FBCBB" 20 | 21 | set notification-error-bg "#2E3440" 22 | set notification-error-fg "#BF616A" 23 | 24 | set notification-warning-bg "#2E3440" 25 | set notification-warning-fg "#BF616A" 26 | 27 | set highlight-color "#EBCB8B" 28 | set highlight-active-color "#81A1C1" 29 | 30 | set completion-bg "#3B4252" 31 | set completion-fg "#81A1C1" 32 | 33 | set completion-highlight-fg "#8FBCBB" 34 | set completion-highlight-bg "#81A1C1" 35 | 36 | set recolor-lightcolor "#2E3440" 37 | set recolor-darkcolor "#ECEFF4" 38 | 39 | set recolor "true" 40 | set recolor-keephue "true" 41 | 42 | set selection-clipboard clipboard 43 | 44 | set guioptions "" 45 | -------------------------------------------------------------------------------- /.gnupg/gpg-agent.conf: -------------------------------------------------------------------------------- 1 | # Specify PIN entry program 2 | pinentry-program /usr/bin/pinentry-curses 3 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | " _ 2 | " __ _(_)_ __ ___ _ __ ___ 3 | " \ \ / / | '_ ` _ \| '__/ __| 4 | " \ V /| | | | | | | | | (__ 5 | " \_/ |_|_| |_| |_|_| \___| 6 | " 7 | 8 | " ==================================================================== 9 | " Vim Plug 10 | " ==================================================================== 11 | 12 | call plug#begin('~/.vim/plugged') 13 | Plug 'vim-airline/vim-airline' 14 | Plug 'vim-airline/vim-airline-themes' 15 | Plug 'arcticicestudio/nord-vim' 16 | Plug 'dense-analysis/ale' 17 | Plug 'rrethy/vim-hexokinase', { 'do': 'make hexokinase' } 18 | Plug 'preservim/nerdtree' 19 | Plug 'ryanoasis/vim-devicons' 20 | call plug#end() 21 | 22 | " ==================================================================== 23 | " General Config 24 | " ==================================================================== 25 | 26 | syntax on 27 | inoremap jk 28 | 29 | set encoding=utf-8 " show utf-8 symbols 30 | set hlsearch " highlight all search results 31 | set ignorecase " do case insensitive search 32 | set incsearch " show incremental search results as you type 33 | set smartcase " case-sensitive search if query contains uppercase 34 | set number " show current line number 35 | set relativenumber " show relative line numbers 36 | set cursorline " highlight cursor 37 | set tabstop=4 " set tab width 38 | set shiftwidth=4 39 | set expandtab 40 | set termguicolors 41 | 42 | " Mirror the NERDTree before showing it. This makes it the same on all tabs. 43 | nnoremap :NERDTreeMirror:NERDTreeFocus 44 | 45 | " ==================================================================== 46 | " Airline Config 47 | " ==================================================================== 48 | 49 | let g:airline_powerline_fonts = 1 50 | let g:airline_symbols = {} 51 | let g:airline_symbols.paste = 'ρ' 52 | let g:airline_symbols.whitespace = 'Ξ' 53 | let g:airline_left_sep = '' 54 | let g:airline_left_alt_sep = '' 55 | let g:airline_right_sep = '' 56 | let g:airline_right_alt_sep = '' 57 | let g:airline_symbols.branch = '' 58 | let g:airline_symbols.readonly = '' 59 | let g:airline_symbols.linenr = '' 60 | 61 | let g:Hexokinase_highlighters = ['backgroundfull'] 62 | 63 | " ==================================================================== 64 | " Nord Vim Config 65 | " ==================================================================== 66 | 67 | let g:nord_cursor_line_number_background = 1 " highlight line number 68 | let g:nord_bold_vertical_split_line = 1 " bold split line 69 | let g:nord_italic_comments = 1 " italic comments 70 | let g:nord_italic = 1 " italic markdown 71 | let g:nord_underline = 1 " enable underline 72 | 73 | colorscheme nord " set colorscheme 74 | 75 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # _ 2 | # _______| |__ _ __ ___ 3 | # |_ / __| '_ \| '__/ __| 4 | # / /\__ \ | | | | | (__ 5 | # /___|___/_| |_|_| \___| 6 | 7 | # friendship ended with spaceship, now starship is my best friend 8 | eval "$(starship init zsh)" 9 | 10 | # oh-my-zsh section 11 | export ZSH="$HOME/.oh-my-zsh" 12 | #export ZSH_THEME="spaceship" 13 | export plugins=(git zsh-syntax-highlighting zsh-autosuggestions zsh-history-substring-search) 14 | source $ZSH/oh-my-zsh.sh 15 | 16 | ### Fix slowness of pastes with zsh-syntax-highlighting.zsh 17 | pasteinit() { 18 | OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]} 19 | zle -N self-insert url-quote-magic 20 | } 21 | 22 | pastefinish() { 23 | zle -N self-insert $OLD_SELF_INSERT 24 | } 25 | zstyle :bracketed-paste-magic paste-init pasteinit 26 | zstyle :bracketed-paste-magic paste-finish pastefinish 27 | 28 | # options section 29 | setopt correct # Auto correct mistakes 30 | setopt extendedglob # Extended globbing. Allows using regular expressions with * 31 | setopt nocaseglob # Case insensitive globbing 32 | setopt rcexpandparam # Array expension with parameters 33 | setopt nocheckjobs # Don't warn about running processes when exiting 34 | setopt numericglobsort # Sort filenames numerically when it makes sense 35 | setopt nobeep # No beep 36 | setopt appendhistory # Immediately append history instead of overwriting 37 | setopt histignorealldups # If a new command is a duplicate, remove the older one 38 | setopt autocd # if only directory path is entered, cd there. 39 | 40 | # set zsh-completion options 41 | zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion 42 | zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Colored completion (different colors for dirs/files/etc) 43 | zstyle ':completion:*' rehash true # automatically find new executables in path 44 | zstyle ':completion:*' accept-exact '*(N)' 45 | zstyle ':completion:*' use-cache on 46 | zstyle ':completion:*' cache-path ~/.zsh/cache 47 | 48 | HISTFILE=~/.zsh_history 49 | HISTSIZE=20000 50 | SAVEHIST=10000 51 | WORDCHARS=${WORDCHARS//\/[&.;]} # Don't consider certain characters part of the word 52 | 53 | # keybindings section 54 | bindkey -e 55 | bindkey '^[[7~' beginning-of-line # Home key 56 | bindkey '^[[H' beginning-of-line # Home key 57 | if [[ "${terminfo[khome]}" != "" ]]; then 58 | bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line 59 | fi 60 | bindkey '^[[8~' end-of-line # End key 61 | bindkey '^[[F' end-of-line # End key 62 | if [[ "${terminfo[kend]}" != "" ]]; then 63 | bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line 64 | fi 65 | bindkey '^[[2~' overwrite-mode # Insert key 66 | bindkey '^[[3~' delete-char # Delete key 67 | bindkey '^[[C' forward-char # Right key 68 | bindkey '^[[D' backward-char # Left key 69 | bindkey '^[[5~' history-beginning-search-backward # Page up key 70 | bindkey '^[[6~' history-beginning-search-forward # Page down key 71 | 72 | # navigate words with ctrl+arrow keys 73 | bindkey '^[Oc' forward-word # 74 | bindkey '^[Od' backward-word # 75 | bindkey '^[[1;5D' backward-word # 76 | bindkey '^[[1;5C' forward-word # 77 | bindkey '^H' backward-kill-word # delete previous word with ctrl+backspace 78 | bindkey '^[[Z' undo # Shift+tab undo last action 79 | 80 | # alias section 81 | alias ...='cd ../..' # Lazy cd ../.. 82 | alias ls='ls --color=tty' # Use tty colors when ls-ing 83 | alias grep='grep --color=auto' # Use tty colors when grep-ing 84 | alias cp='cp -i' # Confirm before overwriting something 85 | alias df='df -h' # Human-readable sizes 86 | alias free='free -m' # Show sizes in MB 87 | 88 | alias pcman='sudo pacman' 89 | alias i3lock="$HOME/.config/i3lock/lock.sh" 90 | alias vim=nvim 91 | alias rm='print "Did you mean trash-put? No? use \\\rm then"; false' 92 | alias config='/usr/bin/git --git-dir=$HOME/Documents/dotfiles --work-tree=$HOME' 93 | alias pfetch='PF_INFO="ascii title os kernel uptime pkgs memory" HOSTNAME="nautilus" pfetch' 94 | alias tuturu="$HOME/Documents/scripts/bash/tuturu.sh" 95 | alias music="$HOME/Documents/scripts/private/music.sh" 96 | alias sx="startx" 97 | 98 | # color man pages 99 | export LESS_TERMCAP_mb=$'\E[01;32m' 100 | export LESS_TERMCAP_md=$'\E[01;32m' 101 | export LESS_TERMCAP_me=$'\E[0m' 102 | export LESS_TERMCAP_se=$'\E[0m' 103 | export LESS_TERMCAP_so=$'\E[01;47;34m' 104 | export LESS_TERMCAP_ue=$'\E[0m' 105 | export LESS_TERMCAP_us=$'\E[01;36m' 106 | export LESS=-r 107 | 108 | # bind UP and DOWN arrow keys to history substring search 109 | zmodload zsh/terminfo 110 | bindkey "$terminfo[kcuu1]" history-substring-search-up 111 | bindkey "$terminfo[kcud1]" history-substring-search-down 112 | bindkey '^[[A' history-substring-search-up 113 | bindkey '^[[B' history-substring-search-down 114 | 115 | # export stuff 116 | export EDITOR=vim # set default editor 117 | export GPG_TTY=$(tty) # tell GPG to pipe output to tty 118 | export PINENTRY_USER_DATA="USE_CURSES=1" 119 | 120 | # TODO: create custom functions script 121 | mcd () { mkdir -p "$1" && cd "$1" } 122 | 123 | u=`tput bold` 124 | nu=`tput sgr0` 125 | k="v$(uname -r | cut -d'-' -f1)" 126 | 127 | echo \ 128 | "\e[40m kernel \e[0m\e[46m\e[30m\e[0m\e[0m\ 129 | \e[46m\e[30m${u} $k ${nu}\e[0m\e[0m\e[40m\e[36m\e[0m\e[0m\ 130 | \e[40m agent \e[0m\e[44m\e[30m\e[0m\e[0m\ 131 | \e[44m\e[30m${u} $$ ${nu}\e[0m\e[0m\e[34m\e[0m\ 132 | " 133 | 134 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Sravanth C. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Misc/firefox/chrome/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Misc/firefox/chrome/left-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Misc/firefox/chrome/right-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Misc/firefox/chrome/userChrome.css: -------------------------------------------------------------------------------- 1 | :root { 2 | 3 | /* Minimal Functional Fox variables*/ 4 | --mff-bg: #2e3440; 5 | --mff-icon-color: #d8dee9; 6 | --mff-close-icon-color: #2e3440; 7 | --mff-nav-toolbar-padding: 8px; 8 | --mff-sidebar-bg: var(--mff-bg); 9 | --mff-sidebar-color: #88c0d0; 10 | --mff-tab-border-radius: 0px; 11 | --mff-tab-color: #e5e9f0; 12 | --mff-tab-font-family: "Rubik"; 13 | --mff-tab-font-size: 11pt; 14 | --mff-tab-font-weight: 400; 15 | --mff-tab-height: 32px; 16 | --mff-tab-pinned-bg: #8fbcbb; 17 | --mff-tab-selected-bg: #88c0d0; 18 | --mff-tab-soundplaying-bg: #b48ead; 19 | --mff-urlbar-color: #88c0d0; 20 | --mff-urlbar-focused-color: #8fbcbb; 21 | --mff-urlbar-font-family: "Rubik"; 22 | --mff-urlbar-font-size: 12pt; 23 | --mff-urlbar-font-weight: 400; 24 | --mff-urlbar-results-color: #88c0d0; 25 | --mff-urlbar-results-font-family: "Rubik"; 26 | --mff-urlbar-results-font-size: 12pt; 27 | --mff-urlbar-results-font-weight: 400; 28 | --mff-urlbar-results-url-color: #81a1c1; 29 | /* --mff-tab-selected-bg: linear-gradient(90deg, rgba(232,74,95,1) 0%, rgba(255,132,124,1) 50%, rgba(254,206,168,1) 100%); */ 30 | /* --mff-urlbar-font-weight: 600; */ 31 | 32 | /* Overriden Firefox variables*/ 33 | --autocomplete-popup-background: var(--mff-bg) !important; 34 | --default-arrowpanel-background: var(--mff-bg) !important; 35 | --default-arrowpanel-color: #e5e9f0 !important; 36 | --lwt-toolbarbutton-icon-fill: var(--mff-icon-color) !important; 37 | --panel-disabled-color: #e5e9f080; 38 | --toolbar-bgcolor: var(--mff-bg) !important; 39 | --urlbar-separator-color: transparent !important; 40 | } 41 | 42 | /* My shitty edits */ 43 | 44 | .tabbrowser-tab[fadein]{ max-width: 100vw !important } 45 | 46 | .tab-label { 47 | -moz-box-flex: 1 !important; 48 | text-align: center !important; 49 | } 50 | 51 | /* change download icon color */ */ 52 | 53 | #downloads-button[attention="success"] >.toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon, 54 | #downloads-button[attention="success"] >.toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-progress-outer { 55 | 56 | fill: #81a1c1 !important; 57 | 58 | } 59 | 60 | #downloads-indicator-progress-inner { 61 | 62 | fill: #81a1c1 !important; 63 | 64 | } 65 | 66 | /* Fix immediate right click */ 67 | #contentAreaContextMenu{ margin: 5px 0 0 5px } 68 | 69 | /* Hopefully removes the annoying webrtc (active aduio/video) indicator. The half white/yellow thingy */ 70 | #webrtcIndicator { 71 | display: none; 72 | } 73 | 74 | /** ******************************* */ 75 | 76 | 77 | /* 78 | _____ _ ___ ___ 79 | |_ _/_\ | _ ) __| 80 | | |/ _ \| _ \__ \ 81 | |_/_/ \_\___/___/ 82 | 83 | */ 84 | 85 | .tab-background[selected="true"] { 86 | background: var(--mff-tab-selected-bg) !important; 87 | } 88 | 89 | .tab-text[selected="true"] { 90 | color: #2e3440; 91 | } 92 | 93 | .tab-background:not[visuallyselected] { 94 | background: var(--mff-tab-selected-bg) !important; 95 | opacity: 0.5 !important; 96 | } 97 | 98 | /* This positions the tabs under the navaigator container */ 99 | #titlebar { 100 | -moz-box-ordinal-group: 3 !important; 101 | } 102 | 103 | .tabbrowser-tab::after, 104 | .tabbrowser-tab::before { 105 | border-left: none !important; 106 | } 107 | 108 | .tab-background { 109 | border: none !important; 110 | } 111 | 112 | .tabbrowser-arrowscrollbox { 113 | margin-inline-start: 4px !important; 114 | margin-inline-end: 0px !important; 115 | } 116 | 117 | /* 118 | .tab-close-button { 119 | display: none !important; 120 | } 121 | */ 122 | 123 | .tab-text { 124 | font-family: var(--mff-tab-font-family); 125 | font-weight: var(--mff-tab-font-weight); 126 | font-size: var(--mff-tab-font-size) !important; 127 | color: var(--mff-tab-color); 128 | } 129 | 130 | /* Hide the favicon for tabs */ 131 | hbox.tab-content .tab-icon-image { 132 | display: initial !important; 133 | } 134 | 135 | /* Show the favicon for tabs that are pinned */ 136 | hbox.tab-content[pinned=true] .tab-icon-image { 137 | display: initial !important; 138 | } 139 | 140 | hbox.tab-content[pinned=true] .tab-text { 141 | display: none !important; 142 | } 143 | 144 | #tabbrowser-tabs { 145 | --tab-loading-fill: #033433 !important; 146 | 147 | } 148 | 149 | .tab-label-container:not([textoverflow]) { 150 | display: flex; 151 | overflow: hidden; 152 | justify-content: center; 153 | width: 50% !important; 154 | max-width: 50% !important; 155 | min-width: 50% !important; 156 | } 157 | 158 | /* .tab-label-container::after { 159 | content: "?" !important; 160 | 161 | } */ 162 | 163 | .tab-line { 164 | display: none !important; 165 | } 166 | 167 | .tabbrowser-tab { 168 | border-radius: var(--mff-tab-border-radius) !important; 169 | border-width: 0; 170 | height: var(--mff-tab-height) !important; 171 | margin-bottom: 4px !important; 172 | margin-inline-end: 4px !important; 173 | margin-top: 4px !important; 174 | max-height: var(--mff-tab-height) !important; 175 | min-height: var(--mff-tab-height) !important; 176 | } 177 | 178 | .tabbrowser-tab[soundplaying="true"] { 179 | background-color: var(--mff-tab-soundplaying-bg) !important; 180 | } 181 | 182 | #tabs-newtab-button { 183 | list-style-image: url("add.svg") !important; 184 | opacity: 0.7; 185 | } 186 | 187 | .tab-icon-sound { 188 | display: none !important; 189 | } 190 | 191 | /* 192 | _____ ___ ___ _ ___ _ ___ 193 | |_ _/ _ \ / _ \| | | _ ) /_\ | _ \ 194 | | || (_) | (_) | |__| _ \/ _ \| / 195 | |_| \___/ \___/|____|___/_/ \_\_|_\ 196 | */ 197 | 198 | .urlbar-icon > image { 199 | fill: var(--mff-icon-color) !important; 200 | color: var(--mff-icon-color) !important; 201 | } 202 | 203 | .toolbarbutton-text { 204 | color: var(--mff-icon-color) !important; 205 | } 206 | .urlbar-icon { 207 | color: var(--mff-icon-color) !important; 208 | 209 | } 210 | 211 | .toolbarbutton-icon { 212 | /* filter: drop-shadow(0 0 0.75rem crimson); */ 213 | } 214 | 215 | #urlbar-results { 216 | font-family: var(--mff-urlbar-results-font-family); 217 | font-weight: var(--mff-urlbar-results-font-weight); 218 | font-size: var(--mff-urlbar-results-font-size) !important; 219 | color: var(--mff-urlbar-results-color) !important; 220 | } 221 | 222 | .urlbarView-row[type="bookmark"] > span{ 223 | color: green !important; 224 | } 225 | 226 | .urlbarView-row[type="switchtab"] > span{ 227 | color: orange !important; 228 | } 229 | 230 | .urlbarView-url, .search-panel-one-offs-container { 231 | color: var(--mff-urlbar-results-url-color) !important; 232 | font-family: var(--mff-urlbar-font-family); 233 | font-weight: var(--mff-urlbar-results-font-weight); 234 | font-size: var(--mff-urlbar-font-size) !important; 235 | } 236 | 237 | .urlbarView-favicon, .urlbarView-type-icon { 238 | display: initial !important; 239 | } 240 | 241 | #urlbar-input { 242 | font-size: var(--mff-urlbar-font-size) !important; 243 | color: var(--mff-urlbar-color) !important; 244 | font-family: var(--mff-urlbar-font-family) !important; 245 | font-weight: var(--mff-urlbar-font-weight)!important; 246 | text-align: center !important; 247 | } 248 | 249 | #tracking-protection-icon-container, #identity-box { 250 | display: none; 251 | } 252 | 253 | #back-button > .toolbarbutton-icon{ 254 | --backbutton-background: transparent !important; 255 | border: none !important; 256 | } 257 | 258 | #back-button { 259 | list-style-image: url("left-arrow.svg") !important; 260 | } 261 | 262 | #forward-button { 263 | list-style-image: url("right-arrow.svg") !important; 264 | } 265 | 266 | toolbar { 267 | background-image: none !important; 268 | } 269 | 270 | #urlbar-background { 271 | opacity: .98 !important; 272 | } 273 | 274 | #navigator-toolbox, toolbaritem { 275 | border: none !important; 276 | } 277 | 278 | #urlbar-background { 279 | background-color: var(--mff-bg) !important; 280 | border: none !important; 281 | } 282 | 283 | .toolbar-items { 284 | background-color: var(--mff-bg) !important; 285 | } 286 | 287 | #sidebar-search-container { 288 | background-color: var(--mff-sidebar-bg) !important; 289 | } 290 | 291 | box.panel-arrowbox { 292 | display: none; 293 | } 294 | 295 | box.panel-arrowcontent { 296 | border-radius: 0px !important; 297 | border: none !important; 298 | } 299 | 300 | tab.tabbrowser-tab { 301 | overflow: hidden; 302 | } 303 | 304 | tab.tabbrowser-tab:hover { 305 | box-shadow: 0 1px 4px rgba(0,0,0,.05); 306 | } 307 | 308 | image#star-button { 309 | display: none; 310 | } 311 | 312 | toolbar#nav-bar { 313 | padding: var(--mff-nav-toolbar-padding) !important; 314 | } 315 | 316 | toolbar#nav-bar { 317 | padding: 4px !important; 318 | } 319 | 320 | #urlbar { 321 | max-width: 70% !important; 322 | margin: 0 15% !important; 323 | /* position: unset!important; */; 324 | } 325 | 326 | #urlbar-input:focus { 327 | color: var(--mff-urlbar-focused-color) !important; 328 | } 329 | 330 | 331 | .megabar[breakout-extend="true"]:not([open="true"]) > #urlbar-background { 332 | box-shadow: none !important; 333 | background-color: transparent !important; 334 | } 335 | 336 | toolbarbutton { 337 | box-shadow: none !important; 338 | } 339 | 340 | 341 | /* 342 | ___ ___ ___ ___ ___ _ ___ 343 | / __|_ _| \| __| _ ) /_\ | _ \ 344 | \__ \| || |) | _|| _ \/ _ \| / 345 | |___/___|___/|___|___/_/ \_\_|_\ 346 | */ 347 | 348 | .close-icon { 349 | fill: var(--mff-close-icon-color) !important; 350 | } 351 | 352 | .urlbar-icon { 353 | fill: var(--mff-icon-color) !important; 354 | } 355 | 356 | .sidebar-placesTree { 357 | color: var(--mff-sidebar-color) !important; 358 | } 359 | 360 | #sidebar-switcher-target { 361 | /* color: white !important; */ 362 | } 363 | 364 | #sidebar-box { 365 | --sidebar-background-color: var(--mff-sidebar-bg) !important; 366 | } 367 | 368 | splitter#sidebar-splitter { 369 | opacity: 0 !important; 370 | } 371 | 372 | splitter#sidebar-splitter { 373 | border: none !important; 374 | background-color: transparent !important; 375 | } 376 | 377 | image#sidebar-icon { 378 | display: none; 379 | } 380 | 381 | 382 | /* 383 | _ ___ ___ _____ _____ _ _ _ ___ _ 384 | /_\ | _ \ _ \/ _ \ \ / / _ \/_\ | \| | __| | 385 | / _ \| / / (_) \ \/\/ /| _/ _ \| .` | _|| |__ 386 | /_/ \_\_|_\_|_\\___/ \_/\_/ |_|/_/ \_\_|\_|___|____| 387 | */ 388 | 389 | .panel-arrowcontent { 390 | padding: 0px !important; 391 | margin: 0px !important; 392 | } 393 | 394 | toolbarseparator { 395 | display: none; 396 | } 397 | -------------------------------------------------------------------------------- /Misc/firefox/chrome/userContent.css: -------------------------------------------------------------------------------- 1 | @import url("userChrome.css"); 2 | 3 | /* Removes white loading page */ 4 | @-moz-document url(about:blank), url(about:newtab), url(about:home) { 5 | html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay { 6 | background: var(--mff-bg) !important; 7 | } 8 | } 9 | 10 | 11 | /* Hide scrollbar */ 12 | /* scrollbar-width: 5px !important; */ 13 | 14 | :root{ 15 | scrollbar-color: #88c0d0 #2e3440 !important; 16 | scrollbar-width: thin !important; 17 | } 18 | 19 | 20 | @-moz-document url(about:privatebrowsing) { 21 | 22 | :root{ 23 | scrollbar-color: #88c0d0 #2e3440 !important; 24 | scrollbar-width: thin !important; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Misc/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function setup_zsh() { 4 | # install ohmyzsh 5 | curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 6 | 7 | # install plugins 8 | git clone https://github.com/zsh-users/zsh-completions ~/.oh-my-zsh/custom/plugins/zsh-completions 9 | git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions 10 | git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting 11 | git clone https://github.com/zsh-users/zsh-history-substring-search ~/.oh-my-zsh/custom/plugins/zsh-history-substring-search 12 | 13 | # install startship prompt 14 | curl -fsSL https://starship.rs/install.sh | bash 15 | 16 | # backup .zshrc if exists 17 | if [[ -e "$HOME/.zshrc" ]]; then 18 | mv "$HOME/.zshrc" "$HOME/.zshrc.bak" 19 | fi 20 | 21 | # install my .zshrc 22 | wget -P "$HOME" https://raw.githubusercontent.com/chebro/dotfiles/master/.zshrc 23 | } 24 | 25 | setup_zsh 26 | -------------------------------------------------------------------------------- /Misc/screenshots/merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/Misc/screenshots/merge.png -------------------------------------------------------------------------------- /Misc/wallpapers/blue-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/Misc/wallpapers/blue-lines.png -------------------------------------------------------------------------------- /Misc/wallpapers/nord-arch-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/Misc/wallpapers/nord-arch-logo.png -------------------------------------------------------------------------------- /Misc/wallpapers/nord-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/Misc/wallpapers/nord-lines.png -------------------------------------------------------------------------------- /Misc/wallpapers/nord-wild-fox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chebro/dotfiles/847bb66eb650e7560193df84fec85f1d41956100/Misc/wallpapers/nord-wild-fox.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ``` 4 | __ _ __ 5 | ____ ____ ___ __/ /_(_) /_ _______ 6 | / __ \/ __ `/ / / / __/ / / / / / ___/ 7 | / / / / /_/ / /_/ / /_/ / / /_/ (__ ) 8 | /_/ /_/\__,_/\__,_/\__/_/_/\__,_/____/ 9 | 10 | ``` 11 | ### :diamond_shape_with_a_dot_inside: Arch :diamond_shape_with_a_dot_inside: i3 :diamond_shape_with_a_dot_inside: Nord :diamond_shape_with_a_dot_inside: 12 |
13 | 14 | img 15 | 16 | Had some spare time so I installed Arch and setup up something nice! 17 | 18 | + **OS**: Arch Linux 19 | + **WM**: [i3 gaps](https://github.com/Airblader/i3) 20 | + **Shell**: [Zsh](https://wiki.archlinux.org/index.php/Zsh) + [ohmyzsh](https://github.com/ohmyzsh/ohmyzsh) 21 | + **Terminal**: [Kitty](https://github.com/kovidgoyal/kitty/) + [nord-kitty](https://github.com/connorholyday/nord-kitty) 22 | + **Editor**: [Neovim](https://github.com/neovim/neovim) + [vim-plug](https://github.com/junegunn/vim-plug) 23 | + **File Manager**: [Ranger](https://github.com/ranger/ranger) 24 | + **Document Viewer**: [Zathura](https://pwmt.org/projects/zathura/) 25 | + **Color Scheme**: [Nord](https://www.nordtheme.com/) 26 | 27 | Jump to the [Setup](#setup) section for more details! 28 | 29 | This setup still has a long way to go before it comes anywhere close to perfection, however, it works for me and I seek to improve it with time :) 30 | 31 | Here for some eye candy? Jump to [Gallery](#gallery)! 32 | 33 | ## Setup 34 | 35 | _Configs were not written with portability in mind, while I'm trying to make it better, things might break._ 36 | 37 | 1. Install [Airblader's i3](https://github.com/Airblader/i3/wiki/installation) (i3-gaps), [i3blocks](https://github.com/vivien/i3blocks) and i3lock. 38 | 39 | Optionally, replace i3lock with [i3lock-color](https://github.com/Raymo111/i3lock-color). Arch users can get the [i3lock-color-git](https://aur.archlinux.org/packages/i3lock-color-git/) (AUR) package. 40 | 41 | 2. Get other dependencies: 42 | 43 | - **Arch Linux** (using `yay`) 44 | 45 | ```shell 46 | yay -S rofi acpid dunst-git feh playerctl alsa-utils acpilight wireless_tools networkmanager 47 | ``` 48 | - **Enable acpid:** 49 | 50 | ```shell 51 | # For .config/notifications/(un)plugged.sh 52 | sudo systemctl enable acpid.service 53 | sudo systemctl start acpid.service 54 | ``` 55 | **Summary:** 56 | 57 | | **Package** | **Description** | 58 | |---------------------------------------------------------------------------|-----------------------------------------------------------------------------------| 59 | | [**`rofi`**](https://github.com/DaveDavenport/rofi) | Dmenu replacement | 60 | | [**`picom-ibhagwan`**](https://github.com/yshui/picom) | A lightweight compositor for X11 | 61 | | [**`playerctl`**](https://github.com/acrisci/playerctl) | To fetch metadata about the song/video being played | 62 | | [**`feh`**](https://github.com/derf/feh) | A fast and light image viewer, can set a wallpaper | 63 | | [**`dunst`**](https://github.com/dunst-project/dunst) | Lightweight notification daemon | 64 | | `acpid` | Daemon for delivering ACPI events | 65 | | `acpilight` | Provides xbacklight utility for brightness control | 66 | | `alsa-utils` | Provides amixer utility for volume control | 67 | | `wireless_tools`, `networkmanager` | Necessary for the wifi and vpn i3blocks | 68 | 69 | 3. Get them fonts! 70 | 71 | + [**`JetBrains Mono`**](https://www.jetbrains.com/lp/mono/#how-to-install) - Monospace 72 | + [**`Material Design Icons`**](https://materialdesignicons.com/) - Icons 73 | + [**`Rubik`**](https://fonts.google.com/specimen/Rubik?preview.text_type=custom#about) - Sans Serif 74 | 75 | Unzip the fonts to `~/.fonts` or `~/.local/share/fonts` and run `fc-cache -v` to build the font info cache. 76 | 77 | 4. Clone my repo and put all files under `.config` in your `~/.config` and you should be good to go! 78 | + **`Caution`** : Customary heads up that this step will not work for all the configs/scripts. 79 | 80 | ## Gallery 81 | 82 | img 83 | 84 | img 85 | --------------------------------------------------------------------------------