├── .config ├── eww │ ├── eww.scss │ ├── eww.yuck │ └── scripts │ │ ├── network.py │ │ └── spotify.py ├── hypr │ ├── hyprland.conf │ └── hyprpaper.conf ├── kitty │ ├── kitty.conf │ └── mocha.conf ├── nvim │ ├── .netrwhist │ ├── init.vim │ └── lazy-lock.json └── waybar │ ├── config │ └── style.css ├── .dotfiles ├── catpp-wallps │ └── kitty.jpeg ├── ekb ├── mpd-notify.sh ├── nowplaying ├── pfetch ├── scheme ├── screenshot ├── setup-ekb.sh └── vedur.py ├── .nvim ├── after │ ├── ftplugin │ │ ├── tex.vim │ │ └── tex_mappings.vim │ └── syntax │ │ ├── tex.vim │ │ └── tex │ │ └── amsmath.vim ├── plugs ├── templates │ ├── =template=.bash │ ├── =template=.c │ ├── =template=.c++ │ ├── =template=.cc │ ├── =template=.cmake │ ├── =template=.coffee │ ├── =template=.cpp │ ├── =template=.css │ ├── =template=.cxx │ ├── =template=.dart │ ├── =template=.f │ ├── =template=.f90 │ ├── =template=.go │ ├── =template=.h │ ├── =template=.hs │ ├── =template=.html │ ├── =template=.humans.txt │ ├── =template=.java │ ├── =template=.jl │ ├── =template=.js │ ├── =template=.jsp │ ├── =template=.jsx │ ├── =template=.lhs │ ├── =template=.lua │ ├── =template=.m │ ├── =template=.mk │ ├── =template=.ml │ ├── =template=.mm │ ├── =template=.php │ ├── =template=.pl │ ├── =template=.pls │ ├── =template=.pm │ ├── =template=.pro │ ├── =template=.py │ ├── =template=.rb │ ├── =template=.robots.txt │ ├── =template=.rs │ ├── =template=.sh │ ├── =template=.sol │ ├── =template=.sql │ ├── =template=.tex │ ├── =template=.txt │ ├── =template=.xml │ ├── =template=.xsl │ ├── =template=.zcml │ ├── =template=CMakeLists.txt │ ├── =template=GNUmakefile │ └── =template=Makefile └── vimrc ├── .zshrc ├── README.md └── assets ├── _ ├── corner.png ├── fetch.png ├── network.gif ├── player.gif ├── pokemon.png └── tex.png /.config/eww/eww.scss: -------------------------------------------------------------------------------- 1 | $color-fore: #CDD6F4; 2 | $color-back: #1E1E2E; 3 | 4 | $color-black: #45475A; 5 | $color-red: #F38BA8; 6 | $color-green: #A6E3A1; 7 | $color-yellow: #F9E2AF; 8 | $color-blue: #89B4FA; 9 | $color-magenta: #F5C2E7; 10 | $color-cyan: #94E2D5; 11 | $color-white: #BAC2DE; 12 | 13 | $color-lavender: #b4befe; 14 | $color-peach: #fab387; 15 | 16 | * { 17 | font-family: Iosevka; 18 | font-size: 18px; 19 | } 20 | 21 | window { 22 | background: transparent; 23 | color: $color-fore; 24 | } 25 | 26 | box { 27 | border-radius: 5px; 28 | background-color: $color-back; 29 | } 30 | 31 | box box { 32 | background: inherit; 33 | padding: initial; 34 | } 35 | 36 | button { 37 | padding: 0; 38 | margin: 0; 39 | border-radius: 5px; 40 | } 41 | 42 | button.icon { 43 | min-height: 40px; 44 | padding: 0px 13px; 45 | margin: 5px; 46 | } 47 | 48 | .active-network { 49 | .icon { 50 | margin-right: 20px; 51 | } 52 | } 53 | 54 | box.active-network { 55 | padding-right: 15px; 56 | } 57 | 58 | .network-list { 59 | padding: 15px; 60 | color: $color-fore; 61 | 62 | button { 63 | padding: 8px 13px; 64 | background-color: $color-back; 65 | border: none; 66 | outline: none; 67 | color: $color-fore; 68 | 69 | box { 70 | background-color: rgba(0,0,0,0); 71 | box-shadow: none; 72 | } 73 | 74 | box:active { 75 | box-shadow: none; 76 | background-color: rgba(0,0,0,0); 77 | outline-style: none; 78 | border: none; 79 | } 80 | 81 | .security { 82 | font-size: 80%; 83 | opacity: 0.5; 84 | } 85 | } 86 | } 87 | 88 | .connect_button:hover { 89 | outline-style: none; 90 | background-color: $color-back; 91 | } 92 | 93 | .connect_button:active { 94 | outline-style: none; 95 | background-color: $color-back; 96 | } 97 | 98 | .connect_button.known { 99 | color: $color-green; 100 | } 101 | 102 | .connect_button.active { 103 | color: $color-blue; 104 | } 105 | 106 | .password { 107 | margin-bottom: 10px; 108 | 109 | entry { 110 | background-color: $color-back; 111 | border-radius: 0px; 112 | border-bottom: 2px solid $color-lavender; 113 | color: $color-fore; 114 | } 115 | 116 | entry:active { 117 | outline-width: 0px; 118 | outline:none; 119 | box-shadow: none; 120 | } 121 | 122 | entry:focus { 123 | outline: none; 124 | box-shadow: none; 125 | outline-width: 0px; 126 | outline-color: $color-back; 127 | } 128 | } 129 | 130 | .player { 131 | min-width: 500px; 132 | 133 | .album-art { 134 | min-width: 150px; 135 | min-height: 150px; 136 | background-size: 150px; 137 | margin: 5px; 138 | margin-right: 20px; 139 | } 140 | 141 | .info { 142 | padding: 5px 15px; 143 | padding-left: 0px; 144 | } 145 | 146 | .progress-container { 147 | padding-top: 10px; 148 | } 149 | 150 | progress { 151 | border-radius: 5px; 152 | } 153 | 154 | .small { 155 | font-size: 80%; 156 | opacity: 0.5; 157 | } 158 | 159 | } 160 | 161 | .now-playing { 162 | 163 | .album-art { 164 | min-width: 40px; 165 | min-height: 40px; 166 | background-size: 40px; 167 | margin: 5px; 168 | } 169 | 170 | .date { 171 | margin-left: 15px; 172 | } 173 | } 174 | -------------------------------------------------------------------------------- /.config/eww/eww.yuck: -------------------------------------------------------------------------------- 1 | (defvar fore "#CDD6F4") 2 | (defvar back "#1E1E2E") 3 | 4 | (defvar black1 "#45475A") 5 | (defvar black2 "#585B70") 6 | (defvar red "#F38BA8") 7 | (defvar green "#A6E3A1") 8 | (defvar yellow "#F9E2AF") 9 | (defvar blue "#89B4FA") 10 | (defvar magenta "#F5C2E7") 11 | (defvar cyan "#94E2D5") 12 | (defvar white "#BAC2DE") 13 | 14 | (defvar lavender "#B4BEFE") 15 | 16 | (defvar display_network_list false) 17 | (defvar display_player false) 18 | 19 | (defvar networkpy "~/.config/eww/scripts/network.py") 20 | 21 | (defpoll active_network 22 | :interval "5s" 23 | "~/.config/eww/scripts/network.py active" 24 | ) 25 | 26 | (defpoll available_networks 27 | :interval "5s" 28 | :run-while display_network_list 29 | "~/.config/eww/scripts/network.py list" 30 | ) 31 | 32 | (deflisten now_playing 33 | :initial "{\"stop\": true}" 34 | "~/.config/eww/scripts/spotify.py info --monitor" 35 | ) 36 | 37 | (deflisten player_time 38 | "~/.config/eww/scripts/spotify.py time --monitor" 39 | ) 40 | 41 | 42 | (defpoll HOUR 43 | :interval "5s" 44 | "date +'%R'" 45 | ) 46 | 47 | (defpoll DATES 48 | :interval "60s" 49 | "date +'%A - %d. %B'" 50 | ) 51 | 52 | (defvar selected_network false) 53 | 54 | (defwindow network_window 55 | :monitor 0 56 | :geometry (geometry 57 | :x "20px" 58 | :y "20px" 59 | :width "0" 60 | :height "0" 61 | :anchor "bottom right" 62 | ) 63 | :stacking "bottom" 64 | :windowtype "dock" 65 | :wm-ignore false 66 | (network_widget) 67 | ) 68 | 69 | (defwindow network_list_window 70 | :monitor 0 71 | :geometry (geometry 72 | :x "20px" 73 | :y "90px" 74 | :anchor "bottom right" 75 | ) 76 | :focusable true 77 | :stacking "bottom" 78 | (network_list_widget) 79 | ) 80 | 81 | (defwindow network_list_window_closer 82 | :monitor 0 83 | :geometry (geometry :width "100%" :height "100%") 84 | :stacking "bg" 85 | :focusable false 86 | (closer 87 | :window "network_list_window" 88 | ) 89 | ) 90 | 91 | (defwindow player_window_closer 92 | :monitor 0 93 | :geometry (geometry :width "100%" :height "100%") 94 | :stacking "bg" 95 | :focusable false 96 | (closer 97 | :window "player_window" 98 | ) 99 | ) 100 | 101 | (defwindow player_window 102 | :monitor 0 103 | :geometry (geometry 104 | :x 0 105 | :y 20 106 | :anchor "top center" 107 | ) 108 | :stacking "bottom" 109 | (player_widget) 110 | ) 111 | 112 | (defwindow time_window 113 | :monitor 0 114 | :geometry (geometry 115 | :x 0 116 | :y -45 117 | :anchor "top center" 118 | ) 119 | :stacking "bottom" 120 | (clock_widget) 121 | ) 122 | 123 | (defwidget closer [window] 124 | (eventbox 125 | :onclick " 126 | eww close ${window} \ 127 | && eww close ${window}_closer \ 128 | && eww update display_network_list=false \ 129 | && eww update display_player=false \ 130 | && eww update selected_network=false 131 | " 132 | ) 133 | ) 134 | 135 | (defwidget icon [icon color ?onclick] 136 | (button 137 | :orientation "horizontal" 138 | :class "icon" 139 | :onclick onclick 140 | :style "background-color: ${color}; color: ${back}" 141 | icon 142 | ) 143 | ) 144 | 145 | (defwidget network_widget [] 146 | (box 147 | :orientation "h" 148 | :space-evenly false 149 | :hexpand true 150 | :class "active-network" 151 | (icon 152 | :onclick " 153 | eww open network_list_window \ 154 | && eww update display_network_list=true \ 155 | && eww open network_list_window_closer 156 | " 157 | :icon "W" 158 | :color {active_network == "None" ? red : blue} 159 | :halign "start" 160 | ) 161 | (label 162 | :text { 163 | active_network == "None" 164 | ? "Not connected" 165 | : "${active_network}" 166 | } 167 | ) 168 | ) 169 | ) 170 | 171 | (defwidget password_input [?ssid] 172 | (box 173 | :orientation "v" 174 | :class "password" 175 | :hexpand true 176 | :space-evenly false 177 | (label 178 | :hexpand true 179 | :text "Password" 180 | :halign "start" 181 | ) 182 | (input 183 | :hexpand true 184 | :password false 185 | :onaccept "${networkpy} --close connect '${ssid}' --password '{}' &" 186 | ) 187 | ) 188 | ) 189 | 190 | (defwidget connect_button [ssid security known ?signal] 191 | (button 192 | :hexpand true 193 | :class { 194 | ssid == active_network 195 | ? "connect_button active" 196 | : known 197 | ? "connect_button known" 198 | : "connect_button" 199 | } 200 | :onclick { 201 | known 202 | ? "${networkpy} --close connect '${ssid}' & " 203 | : "eww update 'selected_network=${ssid}'" 204 | } 205 | (box 206 | :space-evenly false 207 | :orientation "v" 208 | (label 209 | :halign "start" 210 | :text "${ssid}" 211 | ) 212 | (box 213 | :class "security" 214 | :space-evenly false 215 | (label 216 | :halign "start" 217 | :text "${security}" 218 | ) 219 | (label 220 | :hexpand true 221 | :halign "end" 222 | :text "S: ${signal}" 223 | ) 224 | ) 225 | ) 226 | ) 227 | ) 228 | 229 | (defwidget network_list_widget [] 230 | (box 231 | :orientation "v" 232 | :space-evenly false 233 | :halign "end" 234 | :valign "end" 235 | :class "network-list" 236 | (revealer 237 | :reveal {selected_network != false ? true : false} 238 | :transition "slideup" 239 | (password_input :ssid selected_network) 240 | ) 241 | (box 242 | :orientation "v" 243 | :space-evenly true 244 | :spacing 10 245 | (for entry in available_networks 246 | (connect_button 247 | :hexpand true 248 | :ssid "${entry.ssid}" 249 | :security "${entry.security}" 250 | :known {entry.known ? true : false} 251 | :signal "${entry.signal}" 252 | ) 253 | ) 254 | ) 255 | ) 256 | ) 257 | 258 | (defwidget player_widget [] 259 | (box 260 | :orientation "h" 261 | :space-evenly false 262 | :class "player" 263 | (box 264 | :class "album-art" 265 | :style "background-image: url('${now_playing.art}')" 266 | ) 267 | (box 268 | :valign "center" 269 | :orientation "v" 270 | :class "info" 271 | :space-evenly false 272 | :spacing 2 273 | :hexpand true 274 | (label :halign "start" :text "${now_playing.title}") 275 | (label :halign "start" :text "${now_playing.album}") 276 | (label :halign "start" :text "${now_playing.artist}") 277 | (box 278 | :hexpand true 279 | :vexpand true 280 | :space-evenly false 281 | :class "progress-container" 282 | :orientation "v" 283 | :spacing 10 284 | (progress 285 | :valign "center" 286 | :hexpand true 287 | :value "${player_time.percent}" 288 | ) 289 | (box 290 | :hexpand true 291 | :space-evenly false 292 | (label 293 | :halign "start" 294 | :class "small" 295 | :hexpand true 296 | :text "${now_playing.service}" 297 | ) 298 | (label 299 | :halign "end" 300 | :class "small" 301 | :text "${player_time.position} / ${player_time.length}" 302 | ) 303 | ) 304 | ) 305 | ) 306 | ) 307 | ) 308 | 309 | (defwidget now_playing [] 310 | (box 311 | :space-evenly false 312 | :spacing 10 313 | (button 314 | :hexpand true 315 | :class "album-art" 316 | :style "background-image: url('${now_playing.art}')" 317 | :onclick " 318 | eww open player_window \ 319 | && eww open player_window_closer \ 320 | && eww update display_player=true 321 | " 322 | ) 323 | (label 324 | :text "${now_playing.title} - ${now_playing.artist}" 325 | ) 326 | ) 327 | ) 328 | 329 | (defwidget date_widget [date] 330 | (box 331 | :vexpand true 332 | (label 333 | :class "date" 334 | :valign "center" 335 | :text "${date}" 336 | ) 337 | ) 338 | ) 339 | 340 | (defwidget clock_widget [] 341 | (box 342 | :class "now-playing" 343 | :space-evenly false 344 | :spacing 10 345 | (literal :content {now_playing.stop || display_player ? "(date_widget :date '${DATES}')" : "(now_playing)"}) 346 | (icon 347 | :icon "${HOUR}" 348 | :color "${lavender}" 349 | ) 350 | ) 351 | ) 352 | -------------------------------------------------------------------------------- /.config/eww/scripts/network.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | from subprocess import check_output, CalledProcessError, run, DEVNULL 3 | import json 4 | from argparse import ArgumentParser 5 | import time 6 | 7 | def get_active_ssid(): 8 | active = ["nmcli", "-t", "-f", "ssid,active", "device", "wifi"] 9 | res = check_output(active).decode().strip() 10 | 11 | ssid = None 12 | for entry in res.split("\n"): 13 | entry = entry.split(":") 14 | if entry[-1] == "yes": 15 | ssid = ":".join(entry[:-1]) 16 | break 17 | 18 | # return "Connected SSID" 19 | return ssid 20 | 21 | def get_known(): 22 | known = ["nmcli", "-t", "-f", "name", "connection"] 23 | res = check_output(known).decode().strip().split("\n") 24 | 25 | return set(res) 26 | 27 | 28 | def get_available(rescan=False): 29 | scan = ["nmcli", "-t", "-f", "ssid,security,signal", "device", "wifi", "list"] 30 | 31 | if rescan: 32 | scan += ["--rescan", "yes"] 33 | 34 | res = check_output(scan).decode().strip().split("\n") 35 | 36 | seen_ssids = set() 37 | networks = {} 38 | known = get_known() 39 | 40 | for entry in res: 41 | entry = entry.split(":") 42 | 43 | signal = int(entry[-1]) 44 | security = entry[-2] 45 | ssid = ":".join(entry[:-2]) 46 | 47 | # If we have seen the network before, update it's signal strength 48 | if ssid in seen_ssids: 49 | networks[ssid]["signal"] = max( 50 | networks[ssid]["signal"], 51 | signal 52 | ) 53 | continue 54 | 55 | seen_ssids.add(ssid) 56 | 57 | networks[ssid] = { 58 | "signal": signal, 59 | "security": security, 60 | "known": ssid in known 61 | } 62 | 63 | # Flatten into array for output 64 | out = [ 65 | { 66 | "ssid": key, 67 | "signal": val["signal"], 68 | "security": val["security"], 69 | "known": val["known"] 70 | } for key, val in networks.items() 71 | ] 72 | 73 | # out = [ 74 | # {"ssid": "Example SSID", "signal": 70, "security": "WPA1 WPA2", "known": False}, 75 | # {"ssid": "Connected SSID", "signal": 53, "security": "WPA2", "known": True}, 76 | # {"ssid": "Known SSID", "signal": 40, "security": "WPA1 WPA2", "known": True}, 77 | # {"ssid": "Example SSID", "signal": 32, "security": "WPA2", "known": False}, 78 | # ] 79 | return json.dumps(out) 80 | 81 | def connect(ssid, password=None): 82 | if get_active_ssid() == ssid: 83 | disconnect = ["nmcli", "device", "disconnect", "wlan0"] 84 | check_output(disconnect) 85 | return 86 | 87 | connect = ["nmcli", "device", "wifi", "connect", ssid] 88 | 89 | if password is not None: 90 | connect += ["password", password] 91 | 92 | try: 93 | check_output(connect, stderr=DEVNULL) 94 | with open("/home/kenzie/log.log", "a") as f: 95 | f.write("connect") 96 | 97 | except CalledProcessError: 98 | remove = ["nmcli", "connection", "delete", ssid] 99 | 100 | check_output(remove) 101 | with open("/home/kenzie/log.log", "a") as f: 102 | f.write("remove") 103 | 104 | if __name__ == "__main__": 105 | parser = ArgumentParser() 106 | 107 | parser.add_argument("--close", action="store_true") 108 | 109 | subparsers = parser.add_subparsers(dest="action") 110 | 111 | parser_active = subparsers.add_parser("active") 112 | 113 | parser_list = subparsers.add_parser("list") 114 | parser_list.add_argument("--rescan", action="store_true") 115 | 116 | parser_connect = subparsers.add_parser("connect") 117 | parser_connect.add_argument("ssid") 118 | parser_connect.add_argument("--password", action="store") 119 | 120 | res = "" 121 | args = parser.parse_args() 122 | 123 | 124 | if args.action == "active": 125 | res = get_active_ssid() 126 | print(res) 127 | 128 | elif args.action == "list": 129 | res = get_available(rescan=args.rescan) 130 | print(res) 131 | 132 | elif args.action == "connect": 133 | res = connect(args.ssid, password=args.password) 134 | 135 | if args.close: 136 | try: 137 | close = ["eww", "close", "network_list_window"] 138 | check_output(close, stderr=DEVNULL) 139 | 140 | update = ["eww", "update", "display_network_list=false"] 141 | check_output(update, stderr=DEVNULL) 142 | except CalledProcessError: 143 | pass 144 | 145 | selected = ["eww", "update", "selected_network=false"] 146 | check_output(selected) 147 | 148 | exit() 149 | -------------------------------------------------------------------------------- /.config/eww/scripts/spotify.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import dbus 3 | from argparse import ArgumentParser 4 | import json 5 | import math 6 | import os 7 | import time 8 | import sys 9 | from subprocess import check_output, CalledProcessError, DEVNULL 10 | 11 | from mpd import MPDClient 12 | import mpd.base 13 | 14 | from hashlib import md5 15 | 16 | # MPD 17 | client = None 18 | 19 | # Args 20 | parser = ArgumentParser() 21 | subparsers = parser.add_subparsers(dest="action") 22 | 23 | subparsers.add_parser("art") 24 | 25 | info_parser = subparsers.add_parser("info") 26 | info_parser.add_argument("--monitor", action="store_true") 27 | 28 | info_parser = subparsers.add_parser("time") 29 | info_parser.add_argument("--monitor", action="store_true") 30 | 31 | args = parser.parse_args() 32 | 33 | # Spotify 34 | session_bus = dbus.SessionBus() 35 | 36 | def getTime(): 37 | playerctl_length = ["playerctl", "metadata", "-f", "{{mpris:length}}"] 38 | playerctl_position = ["playerctl", "position"] 39 | 40 | mpc = ["mpc", "status", "'%totaltime%',%currenttime%,%percenttime%'"] 41 | 42 | try: 43 | length = float(check_output(playerctl_length, stderr=DEVNULL).decode()) 44 | position = float(check_output(playerctl_position, stderr=DEVNULL).decode()) 45 | 46 | length /= 1_000_000 47 | 48 | percent = int(100 * position / length) 49 | 50 | length = f"{int(length // 60)}:{int(length % 60):02d}" 51 | position = f"{int(position // 60)}:{int(position % 60):02d}" 52 | 53 | 54 | except (ValueError, CalledProcessError, ZeroDivisionError): 55 | try: 56 | length, position, pct = check_output(mpc, stderr=DEVNULL).decode().split(",") 57 | length = length.replace("'","") 58 | percent = int(pct.replace(" ", "0")[:-3]) 59 | 60 | except (ValueError, CalledProcessError): 61 | length = position = "0:00" 62 | percent = 0 63 | 64 | 65 | return { 66 | "length": length, 67 | "position": position, 68 | "percent": percent 69 | } 70 | 71 | 72 | 73 | def getArt(): 74 | return metadata.get("mpris:artUrl") 75 | 76 | def getMPDInfo(): 77 | global client 78 | 79 | if client is None: 80 | client = MPDClient() 81 | client.connect("localhost", 6600) 82 | 83 | status = client.status() 84 | song = client.currentsong() 85 | 86 | if status["state"] != "play": 87 | stop = True 88 | return {"stop": True} 89 | 90 | else: 91 | stop = False 92 | 93 | 94 | album = song["album"] if "album" in song.keys() else "" 95 | artist = song["artist"] if "artist" in song.keys() else "" 96 | 97 | if "title" in song.keys(): 98 | title = song["title"] 99 | 100 | elif "file" in song.keys(): 101 | title = os.path.basename(song["file"]) 102 | 103 | else: 104 | title = "" 105 | 106 | album_art = f"/tmp/album{md5(song['file'].encode()).hexdigest()}.jpg" 107 | 108 | if not os.path.exists(album_art): 109 | with open(album_art, "wb+") as f: 110 | f.write(client.albumart(song["file"])["binary"]) 111 | 112 | return { 113 | "stop": stop, 114 | "status": status["state"], 115 | "art": album_art, 116 | "title": title, 117 | "album": album, 118 | "artist": artist, 119 | "service": "MPD" 120 | } 121 | 122 | 123 | spotify_bus = None 124 | spotify_properties = None 125 | 126 | def getSpotifyInfo(): 127 | global spotify_bus 128 | global spotify_properties 129 | 130 | if spotify_bus is None: 131 | spotify_bus = session_bus.get_object( 132 | "org.mpris.MediaPlayer2.spotify", 133 | "/org/mpris/MediaPlayer2" 134 | ) 135 | 136 | spotify_properties = dbus.Interface( 137 | spotify_bus, 138 | "org.freedesktop.DBus.Properties" 139 | ) 140 | 141 | metadata = spotify_properties.Get( 142 | "org.mpris.MediaPlayer2.Player", 143 | "Metadata" 144 | ) 145 | play = spotify_properties.Get( 146 | "org.mpris.MediaPlayer2.Player", 147 | "PlaybackStatus" 148 | ) 149 | 150 | return { 151 | "stop": play == "Paused", 152 | "state": play.lower(), 153 | "art": metadata.get("mpris:artUrl"), 154 | "title": metadata.get("xesam:title"), 155 | "album": metadata.get("xesam:album"), 156 | "artist": ", ".join(metadata.get("xesam:artist")), 157 | "service": "Spotify" 158 | } 159 | 160 | 161 | def getInfo(): 162 | global spotify_bus 163 | global client 164 | try: 165 | return getSpotifyInfo() 166 | except dbus.exceptions.DBusException: 167 | spotify_bus = None 168 | 169 | try: 170 | return getMPDInfo() 171 | except (mpd.base.ConnectionError, ConnectionRefusedError): 172 | client = None 173 | return {"stop": True} 174 | 175 | 176 | 177 | if args.action == "art": 178 | print(getArt()) 179 | 180 | elif args.action == "info": 181 | if args.monitor: 182 | info = None 183 | 184 | while True: 185 | new_info = getInfo() 186 | 187 | if info != new_info: 188 | sys.stdout.write(json.dumps(new_info).strip()) 189 | sys.stdout.write("\n") 190 | sys.stdout.flush() 191 | info = new_info 192 | 193 | time.sleep(2) 194 | 195 | 196 | else: 197 | res = getInfo() 198 | print(json.dumps(res)) 199 | 200 | elif args.action == "time": 201 | if args.monitor: 202 | old_time = None 203 | 204 | while True: 205 | new_time = getTime() 206 | 207 | if old_time != new_time: 208 | sys.stdout.write(json.dumps(new_time).strip()) 209 | sys.stdout.write("\n") 210 | sys.stdout.flush() 211 | old_time = new_time 212 | 213 | time.sleep(0.1) 214 | 215 | 216 | else: 217 | res = getTime() 218 | print(json.dumps(res)) 219 | -------------------------------------------------------------------------------- /.config/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | 2 | ######################################################################################## 3 | AUTOGENERATED HYPR CONFIG. 4 | PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, 5 | OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. 6 | ######################################################################################## 7 | 8 | # 9 | # Please note not all available settings / options are set here. 10 | # For a full list, see the wiki 11 | # 12 | 13 | # See https://wiki.hyprland.org/Configuring/Monitors/ 14 | monitor=,preferred,auto,1 15 | 16 | 17 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 18 | 19 | # Execute your favorite apps at launch 20 | exec-once=hyprpaper 21 | exec-once=waybar & 22 | exec-once=sleep 2 && eww daemon && eww open network_window && eww open time_window 23 | exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 24 | exec-once=udiskie & 25 | exec-once=mpd 26 | 27 | # Source a file (multi-file configs) 28 | # source = ~/.config/hypr/myColors.conf 29 | 30 | # Some default env vars. 31 | env = XCURSOR_SIZE,24 32 | env = GTK_THEME,Catppuccin-Mocha-Standard-Lavender-Dark:dark 33 | env = QT_QPA_PLATFORMTHEME,qt5ct 34 | 35 | # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ 36 | input { 37 | kb_layout = us 38 | kb_variant = e 39 | kb_model = 40 | kb_options = 41 | kb_rules = 42 | 43 | follow_mouse = 1 44 | 45 | touchpad { 46 | natural_scroll = no 47 | } 48 | 49 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification. 50 | } 51 | 52 | general { 53 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 54 | 55 | gaps_in = 5 56 | gaps_out = 20 57 | border_size = 2 58 | col.active_border = rgb(cba6f7) 59 | col.inactive_border = rgba(595959aa) 60 | 61 | layout = dwindle 62 | } 63 | 64 | decoration { 65 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 66 | 67 | rounding = 3 68 | 69 | blur { 70 | enabled = true 71 | size = 3 72 | passes = 1 73 | } 74 | 75 | drop_shadow = yes 76 | shadow_range = 4 77 | shadow_render_power = 3 78 | col.shadow = rgba(1a1a1aee) 79 | } 80 | 81 | animations { 82 | enabled = yes 83 | 84 | # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 85 | 86 | bezier = myBezier, 0.05, 0.9, 0.1, 1.00 87 | 88 | animation = windows, 1, 7, myBezier 89 | animation = windowsOut, 1, 7, default, popin 80% 90 | animation = border, 1, 10, default 91 | animation = borderangle, 1, 8, default 92 | animation = fade, 1, 7, default 93 | animation = workspaces, 1, 6, default 94 | } 95 | 96 | dwindle { 97 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more 98 | pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 99 | preserve_split = yes # you probably want this 100 | } 101 | 102 | master { 103 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more 104 | new_is_master = true 105 | } 106 | 107 | misc { 108 | animate_manual_resizes = true 109 | } 110 | 111 | gestures { 112 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 113 | workspace_swipe = off 114 | } 115 | 116 | # Example per-device config 117 | # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more 118 | device:epic-mouse-v1 { 119 | sensitivity = -0.5 120 | } 121 | 122 | # Example windowrule v1 123 | windowrulev2 = pseudo, class:.* 124 | # Example windowrule v2 125 | windowrulev2 = float,class:(float-class) 126 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 127 | 128 | windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ 129 | windowrulev2 = noanim,class:^(xwaylandvideobridge)$ 130 | windowrulev2 = nofocus,class:^(xwaylandvideobridge)$ 131 | windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ 132 | 133 | 134 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 135 | $mainMod = SUPER 136 | 137 | # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more 138 | bind = $mainMod, return, exec, kitty 139 | bind = $mainMod, Q, killactive, 140 | bind = $mainMod, M, exit, 141 | bind = $mainMod, E, exec, dolphin 142 | bind = $mainMod, V, togglefloating, 143 | bind = $mainMod, W, exec, rofi -show drun 144 | bind = $mainMod, T, pseudo, # dwindle 145 | bind = $mainMod, J, togglesplit, # dwindle 146 | 147 | # Move focus with mainMod + arrow keys 148 | bind = $mainMod, left, movefocus, l 149 | bind = $mainMod, right, movefocus, r 150 | bind = $mainMod, up, movefocus, u 151 | bind = $mainMod, down, movefocus, d 152 | 153 | # Switch workspaces with mainMod + [0-9] 154 | bind = $mainMod, 1, workspace, 1 155 | bind = $mainMod, 2, workspace, 2 156 | bind = $mainMod, 3, workspace, 3 157 | bind = $mainMod, 4, workspace, 4 158 | bind = $mainMod, 5, workspace, 5 159 | bind = $mainMod, 6, workspace, 6 160 | bind = $mainMod, 7, workspace, 7 161 | bind = $mainMod, 8, workspace, 8 162 | bind = $mainMod, 9, workspace, 9 163 | bind = $mainMod, 0, workspace, 10 164 | 165 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 166 | bind = $mainMod SHIFT, 1, movetoworkspace, 1 167 | bind = $mainMod SHIFT, 2, movetoworkspace, 2 168 | bind = $mainMod SHIFT, 3, movetoworkspace, 3 169 | bind = $mainMod SHIFT, 4, movetoworkspace, 4 170 | bind = $mainMod SHIFT, 5, movetoworkspace, 5 171 | bind = $mainMod SHIFT, 6, movetoworkspace, 6 172 | bind = $mainMod SHIFT, 7, movetoworkspace, 7 173 | bind = $mainMod SHIFT, 8, movetoworkspace, 8 174 | bind = $mainMod SHIFT, 9, movetoworkspace, 9 175 | bind = $mainMod SHIFT, 0, movetoworkspace, 10 176 | 177 | # Scroll through existing workspaces with mainMod + scroll 178 | bind = $mainMod, mouse_down, workspace, e+1 179 | bind = $mainMod, mouse_up, workspace, e-1 180 | 181 | # Move/resize windows with mainMod + LMB/RMB and dragging 182 | bindm = $mainMod, mouse:272, movewindow 183 | bindm = $mainMod, mouse:273, resizewindow 184 | 185 | bind = $mainMod SHIFT, h, resizeactive, 40 0 186 | bind = $mainMod SHIFT, l, resizeactive, -40 0 187 | bind = $mainMod SHIFT, j, resizeactive, 0 -40 188 | bind = $mainMod SHIFT, k, resizeactive, 0 40 189 | 190 | bind = $mainMod , End, resizeactive, 20 -20 191 | bind = $mainMod , home, resizeactive, -20 20 192 | 193 | bind = $mainMod , Print , exec , ~/.dotfiles/screenshot 194 | 195 | bind = $mainMod , L , exec, waylock & sleep 1; systemctl suspend 196 | -------------------------------------------------------------------------------- /.config/hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | preload = /home/kenzie/.dotfiles/catpp-wallps/kitty.jpeg 2 | wallpaper = ,/home/kenzie/.dotfiles/catpp-wallps/kitty.jpeg 3 | ipc = off 4 | -------------------------------------------------------------------------------- /.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:ft=conf:foldmethod=marker 2 | 3 | kitty_mod ctrl+shift 4 | 5 | #: Fonts {{{ 6 | 7 | #: kitty has very powerful font management. You can configure 8 | #: individual font faces and even specify special fonts for particular 9 | #: characters. 10 | 11 | # font_family FantasqueSans Mono 12 | # font_family Jetbrains Mono 13 | # font_family Fira Code 14 | font_family Iosevka 15 | bold_font auto 16 | italic_font auto 17 | bold_italic_font auto 18 | 19 | #: You can specify different fonts for the bold/italic/bold-italic 20 | #: variants. To get a full list of supported fonts use the `kitty 21 | #: list-fonts` command. By default they are derived automatically, by 22 | #: the OSes font system. Setting them manually is useful for font 23 | #: families that have many weight variants like Book, Medium, Thick, 24 | #: etc. For example:: 25 | 26 | #: font_family Operator Mono Book 27 | #: bold_font Operator Mono Medium 28 | #: italic_font Operator Mono Book Italic 29 | #: bold_italic_font Operator Mono Medium Italic 30 | 31 | font_size 16.0 32 | 33 | #: Font size (in pts) 34 | 35 | adjust_line_height 0 36 | adjust_column_width 0 37 | 38 | #: Change the size of each character cell kitty renders. You can use 39 | #: either numbers, which are interpreted as pixels or percentages 40 | #: (number followed by %), which are interpreted as percentages of the 41 | #: unmodified values. You can use negative pixels or percentages less 42 | #: than 100% to reduce sizes (but this might cause rendering 43 | #: artifacts). 44 | 45 | # symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols 46 | 47 | #: Map the specified unicode codepoints to a particular font. Useful 48 | #: if you need special rendering for some symbols, such as for 49 | #: Powerline. Avoids the need for patched fonts. Each unicode code 50 | #: point is specified in the form U+. You 51 | #: can specify multiple code points, separated by commas and ranges 52 | #: separated by hyphens. symbol_map itself can be specified multiple 53 | #: times. Syntax is:: 54 | 55 | #: symbol_map codepoints Font Family Name 56 | symbol_map U+2100-U+2124 Fira Code 57 | 58 | disable_ligatures never 59 | 60 | map kitty_mod+g>d disable_ligatures_in active always 61 | map kitty_mod+g>e disable_ligatures_in active never 62 | 63 | #: Choose how you want to handle multi-character ligatures. The 64 | #: default is to always render them. You can tell kitty to not render 65 | #: them when the cursor is over them by using cursor to make editing 66 | #: easier, or have kitty never render them at all by using always, if 67 | #: you don't like them. The ligature strategy can be set per-window 68 | #: either using the kitty remote control facility or by defining 69 | #: shortcuts for it in kitty.conf, for example:: 70 | 71 | #: map alt+1 disable_ligatures_in active always 72 | #: map alt+2 disable_ligatures_in all never 73 | #: map alt+3 disable_ligatures_in tab cursor 74 | 75 | box_drawing_scale 0.001, 1, 1.5, 2 76 | 77 | #: Change the sizes of the lines used for the box drawing unicode 78 | #: characters These values are in pts. They will be scaled by the 79 | #: monitor DPI to arrive at a pixel value. There must be four values 80 | #: corresponding to thin, normal, thick, and very thick lines. 81 | 82 | #: }}} 83 | 84 | #: Cursor customization {{{ 85 | 86 | cursor #cccccc 87 | 88 | #: Default cursor color 89 | 90 | cursor_text_color #eceff1 91 | 92 | #: Choose the color of text under the cursor. If you want it rendered 93 | #: with the background color of the cell underneath instead, use the 94 | #: special keyword: background 95 | 96 | cursor_shape underline 97 | shell_integration no-cursor 98 | 99 | #: The cursor shape can be one of (block, beam, underline) 100 | 101 | cursor_blink_interval -1 102 | 103 | #: The interval (in seconds) at which to blink the cursor. Set to zero 104 | #: to disable blinking. Negative values mean use system default. Note 105 | #: that numbers smaller than repaint_delay will be limited to 106 | #: repaint_delay. 107 | 108 | cursor_stop_blinking_after 15.0 109 | 110 | #: Stop blinking cursor after the specified number of seconds of 111 | #: keyboard inactivity. Set to zero to never stop blinking. 112 | 113 | #: }}} 114 | 115 | #: Scrollback {{{ 116 | 117 | scrollback_lines 2000 118 | 119 | #: Number of lines of history to keep in memory for scrolling back. 120 | #: Memory is allocated on demand. Negative numbers are (effectively) 121 | #: infinite scrollback. Note that using very large scrollback is not 122 | #: recommended as it can slow down resizing of the terminal and also 123 | #: use large amounts of RAM. 124 | 125 | scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 126 | 127 | #: Program with which to view scrollback in a new window. The 128 | #: scrollback buffer is passed as STDIN to this program. If you change 129 | #: it, make sure the program you use can handle ANSI escape sequences 130 | #: for colors and text formatting. INPUT_LINE_NUMBER in the command 131 | #: line above will be replaced by an integer representing which line 132 | #: should be at the top of the screen. 133 | 134 | scrollback_pager_history_size 0 135 | 136 | #: Separate scrollback history size, used only for browsing the 137 | #: scrollback buffer (in MB). This separate buffer is not available 138 | #: for interactive scrolling but will be piped to the pager program 139 | #: when viewing scrollback buffer in a separate window. The current 140 | #: implementation stores one character in 4 bytes, so approximatively 141 | #: 2500 lines per megabyte at 100 chars per line. A value of zero or 142 | #: less disables this feature. The maximum allowed size is 4GB. 143 | 144 | wheel_scroll_multiplier 5.0 145 | 146 | #: Modify the amount scrolled by the mouse wheel. Note this is only 147 | #: used for low precision scrolling devices, not for high precision 148 | #: scrolling on platforms such as macOS and Wayland. Use negative 149 | #: numbers to change scroll direction. 150 | 151 | touch_scroll_multiplier 1.0 152 | 153 | #: Modify the amount scrolled by a touchpad. Note this is only used 154 | #: for high precision scrolling devices on platforms such as macOS and 155 | #: Wayland. Use negative numbers to change scroll direction. 156 | 157 | #: }}} 158 | 159 | #: Mouse {{{ 160 | 161 | mouse_hide_wait 3.0 162 | 163 | #: Hide mouse cursor after the specified number of seconds of the 164 | #: mouse not being used. Set to zero to disable mouse cursor hiding. 165 | #: Set to a negative value to hide the mouse cursor immediately when 166 | #: typing text. 167 | 168 | url_color #0087bd 169 | url_style curly 170 | 171 | #: The color and style for highlighting URLs on mouse-over. url_style 172 | #: can be one of: none, single, double, curly 173 | 174 | open_url_modifiers kitty_mod 175 | 176 | #: The modifier keys to press when clicking with the mouse on URLs to 177 | #: open the URL 178 | 179 | open_url_with default 180 | 181 | #: The program with which to open URLs that are clicked on. The 182 | #: special value default means to use the operating system's default 183 | #: URL handler. 184 | 185 | copy_on_select no 186 | 187 | #: Copy to clipboard or a private buffer on select. With this set to 188 | #: clipboard, simply selecting text with the mouse will cause the text 189 | #: to be copied to clipboard. Useful on platforms such as macOS that 190 | #: do not have the concept of primary selections. You can instead 191 | #: specify a name such as a1 to copy to a private kitty buffer 192 | #: instead. Map a shortcut with the paste_from_buffer action to paste 193 | #: from this private buffer. For example:: 194 | 195 | #: map cmd+shift+v paste_from_buffer a1 196 | 197 | #: Note that copying to the clipboard is a security risk, as all 198 | #: programs, including websites open in your browser can read the 199 | #: contents of the system clipboard. 200 | 201 | strip_trailing_spaces never 202 | 203 | #: Remove spaces at the end of lines when copying to clipboard. A 204 | #: value of smart will do it when using normal selections, but not 205 | #: rectangle selections. always will always do it. 206 | 207 | rectangle_select_modifiers ctrl+alt 208 | 209 | #: The modifiers to use rectangular selection (i.e. to select text in 210 | #: a rectangular block with the mouse) 211 | 212 | select_by_word_characters :@-./_~?&=%+# 213 | 214 | #: Characters considered part of a word when double clicking. In 215 | #: addition to these characters any character that is marked as an 216 | #: alpha-numeric character in the unicode database will be matched. 217 | 218 | click_interval -1.0 219 | 220 | #: The interval between successive clicks to detect double/triple 221 | #: clicks (in seconds). Negative numbers will use the system default 222 | #: instead, if available, or fallback to 0.5. 223 | 224 | focus_follows_mouse no 225 | 226 | #: Set the active window to the window under the mouse when moving the 227 | #: mouse around 228 | 229 | #: }}} 230 | 231 | #: Performance tuning {{{ 232 | 233 | repaint_delay 10 234 | 235 | #: Delay (in milliseconds) between screen updates. Decreasing it, 236 | #: increases frames-per-second (FPS) at the cost of more CPU usage. 237 | #: The default value yields ~100 FPS which is more than sufficient for 238 | #: most uses. Note that to actually achieve 100 FPS you have to either 239 | #: set sync_to_monitor to no or use a monitor with a high refresh 240 | #: rate. 241 | 242 | input_delay 3 243 | 244 | #: Delay (in milliseconds) before input from the program running in 245 | #: the terminal is processed. Note that decreasing it will increase 246 | #: responsiveness, but also increase CPU usage and might cause flicker 247 | #: in full screen programs that redraw the entire screen on each loop, 248 | #: because kitty is so fast that partial screen updates will be drawn. 249 | 250 | sync_to_monitor yes 251 | 252 | #: Sync screen updates to the refresh rate of the monitor. This 253 | #: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) 254 | #: when scrolling. However, it limits the rendering speed to the 255 | #: refresh rate of your monitor. With a very high speed mouse/high 256 | #: keyboard repeat rate, you may notice some slight input latency. If 257 | #: so, set this to no. 258 | 259 | #: }}} 260 | 261 | #: Terminal bell {{{ 262 | 263 | enable_audio_bell no 264 | 265 | #: Enable/disable the audio bell. Useful in environments that require 266 | #: silence. 267 | 268 | visual_bell_duration 0.0 269 | 270 | #: Visual bell duration. Flash the screen when a bell occurs for the 271 | #: specified number of seconds. Set to zero to disable. 272 | 273 | window_alert_on_bell yes 274 | 275 | #: Request window attention on bell. Makes the dock icon bounce on 276 | #: macOS or the taskbar flash on linux. 277 | 278 | bell_on_tab yes 279 | 280 | #: Show a bell symbol on the tab if a bell occurs in one of the 281 | #: windows in the tab and the window is not the currently focused 282 | #: window 283 | 284 | #: }}} 285 | 286 | #: Window layout {{{ 287 | 288 | remember_window_size no 289 | initial_window_width 700 290 | initial_window_height 500 291 | 292 | #: If enabled, the window size will be remembered so that new 293 | #: instances of kitty will have the same size as the previous 294 | #: instance. If disabled, the window will initially have size 295 | #: configured by initial_window_width/height, in pixels. You can use a 296 | #: suffix of "c" on the width/height values to have them interpreted 297 | #: as number of cells instead of pixels. 298 | 299 | enabled_layouts * 300 | 301 | #: The enabled window layouts. A comma separated list of layout names. 302 | #: The special value all means all layouts. The first listed layout 303 | #: will be used as the startup layout. For a list of available 304 | #: layouts, see the 305 | #: https://sw.kovidgoyal.net/kitty/index.html#layouts. 306 | 307 | window_resize_step_cells 2 308 | window_resize_step_lines 2 309 | 310 | #: The step size (in units of cell width/cell height) to use when 311 | #: resizing windows. The cells value is used for horizontal resizing 312 | #: and the lines value for vertical resizing. 313 | 314 | window_border_width 1.0 315 | 316 | #: The width (in pts) of window borders. Will be rounded to the 317 | #: nearest number of pixels based on screen resolution. Note that 318 | #: borders are displayed only when more than one window is visible. 319 | #: They are meant to separate multiple windows. 320 | 321 | draw_minimal_borders yes 322 | 323 | #: Draw only the minimum borders needed. This means that only the 324 | #: minimum needed borders for inactive windows are drawn. That is only 325 | #: the borders that separate the inactive window from a neighbor. Note 326 | #: that setting a non-zero window margin overrides this and causes all 327 | #: borders to be drawn. 328 | 329 | window_margin_width 0.0 330 | 331 | #: The window margin (in pts) (blank area outside the border) 332 | 333 | single_window_margin_width -1000.0 334 | 335 | #: The window margin (in pts) to use when only a single window is 336 | #: visible. Negative values will cause the value of 337 | #: window_margin_width to be used instead. 338 | 339 | window_padding_width 20.0 340 | 341 | #: The window padding (in pts) (blank area between the text and the 342 | #: window border) 343 | 344 | active_border_color #474645 345 | 346 | #: The color for the border of the active window. Set this to none to 347 | #: not draw borders around the active window. 348 | 349 | inactive_border_color #3B4252 350 | 351 | #: The color for the border of inactive windows 352 | 353 | bell_border_color #ff5a00 354 | 355 | #: The color for the border of inactive windows in which a bell has 356 | #: occurred 357 | 358 | inactive_text_alpha 1.0 359 | 360 | #: Fade the text in inactive windows by the specified amount (a number 361 | #: between zero and one, with zero being fully faded). 362 | 363 | hide_window_decorations no 364 | 365 | #: Hide the window decorations (title-bar and window borders). Whether 366 | #: this works and exactly what effect it has depends on the window 367 | #: manager/operating system. 368 | 369 | resize_debounce_time 0.1 370 | 371 | #: The time (in seconds) to wait before redrawing the screen when a 372 | #: resize event is received. On platforms such as macOS, where the 373 | #: operating system sends event corresponding to the start and end of 374 | #: a resize, this number is ignored. 375 | 376 | resize_draw_strategy static 377 | 378 | #: Choose how kitty draws a window while a resize is in progress. A 379 | #: value of static means draw the current window contents, mostly 380 | #: unchanged. A value of scale means draw the current window contents 381 | #: scaled. A value of blank means draw a blank window. A value of size 382 | #: means show the window size in cells. 383 | 384 | #: }}} 385 | 386 | #: Tab bar {{{ 387 | 388 | tab_bar_edge bottom 389 | 390 | #: Which edge to show the tab bar on, top or bottom 391 | 392 | tab_bar_margin_width 0.0 393 | 394 | #: The margin to the left and right of the tab bar (in pts) 395 | 396 | tab_bar_style powerline 397 | 398 | tab_powerline_style slanted 399 | tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''} 400 | 401 | #: The tab bar style, can be one of: fade, separator or hidden. In the 402 | #: fade style, each tab's edges fade into the background color, in the 403 | #: separator style, tabs are separated by a configurable separator. 404 | 405 | tab_bar_min_tabs 1 406 | 407 | #: The minimum number of tabs that must exist before the tab bar is 408 | #: shown 409 | 410 | tab_switch_strategy previous 411 | 412 | #: The algorithm to use when switching to a tab when the current tab 413 | #: is closed. The default of previous will switch to the last used 414 | #: tab. A value of left will switch to the tab to the left of the 415 | #: closed tab. A value of last will switch to the right-most tab. 416 | 417 | tab_fade 0.25 0.5 0.75 1 418 | 419 | #: Control how each tab fades into the background when using fade for 420 | #: the tab_bar_style. Each number is an alpha (between zero and one) 421 | #: that controls how much the corresponding cell fades into the 422 | #: background, with zero being no fade and one being full fade. You 423 | #: can change the number of cells used by adding/removing entries to 424 | #: this list. 425 | 426 | tab_separator " ┇" 427 | 428 | #: The separator between tabs in the tab bar when using separator as 429 | #: the tab_bar_style. 430 | 431 | tab_title_template {title} 432 | 433 | #: A template to render the tab title. The default just renders the 434 | #: title. If you wish to include the tab-index as well, use something 435 | #: like: {index}: {title}. Useful if you have shortcuts mapped for 436 | #: goto_tab N. 437 | 438 | active_tab_foreground #eceff1 439 | active_tab_background #263238 440 | active_tab_font_style bold-italic 441 | inactive_tab_foreground #eceff1 442 | inactive_tab_background #263238 443 | inactive_tab_font_style normal 444 | 445 | #: Tab bar colors and styles 446 | 447 | #: }}} 448 | 449 | include mocha.conf 450 | 451 | #: Advanced {{{ 452 | 453 | shell . 454 | 455 | #: The shell program to execute. The default value of . means to use 456 | #: whatever shell is set as the default shell for the current user. 457 | #: Note that on macOS if you change this, you might need to add 458 | #: --login to ensure that the shell starts in interactive mode and 459 | #: reads its startup rc files. 460 | 461 | editor . 462 | 463 | #: The console editor to use when editing the kitty config file or 464 | #: similar tasks. A value of . means to use the environment variable 465 | #: EDITOR. Note that this environment variable has to be set not just 466 | #: in your shell startup scripts but system-wide, otherwise kitty will 467 | #: not see it. 468 | 469 | close_on_child_death no 470 | 471 | #: Close the window when the child process (shell) exits. If no (the 472 | #: default), the terminal will remain open when the child exits as 473 | #: long as there are still processes outputting to the terminal (for 474 | #: example disowned or backgrounded processes). If yes, the window 475 | #: will close as soon as the child process exits. Note that setting it 476 | #: to yes means that any background processes still using the terminal 477 | #: can fail silently because their stdout/stderr/stdin no longer work. 478 | 479 | allow_remote_control yes 480 | 481 | #: Allow other programs to control kitty. If you turn this on other 482 | #: programs can control all aspects of kitty, including sending text 483 | #: to kitty windows, opening new windows, closing windows, reading the 484 | #: content of windows, etc. Note that this even works over ssh 485 | #: connections. 486 | 487 | # env 488 | 489 | #: Specify environment variables to set in all child processes. Note 490 | #: that environment variables are expanded recursively, so if you 491 | #: use:: 492 | 493 | #: env MYVAR1=a 494 | #: env MYVAR2=${MYVAR1}/${HOME}/b 495 | 496 | #: The value of MYVAR2 will be a//b. 497 | 498 | update_check_interval 24 499 | 500 | #: Periodically check if an update to kitty is available. If an update 501 | #: is found a system notification is displayed informing you of the 502 | #: available update. The default is to check every 24 hrs, set to zero 503 | #: to disable. 504 | 505 | startup_session none 506 | 507 | #: Path to a session file to use for all kitty instances. Can be 508 | #: overridden by using the kitty --session command line option for 509 | #: individual instances. See 510 | #: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty 511 | #: documentation for details. Note that relative paths are interpreted 512 | #: with respect to the kitty config directory. Environment variables 513 | #: in the path are expanded. 514 | 515 | clipboard_control write-clipboard write-primary 516 | 517 | #: Allow programs running in kitty to read and write from the 518 | #: clipboard. You can control exactly which actions are allowed. The 519 | #: set of possible actions is: write-clipboard read-clipboard write- 520 | #: primary read-primary. You can additionally specify no-append to 521 | #: disable kitty's protocol extension for clipboard concatenation. The 522 | #: default is to allow writing to the clipboard and primary selection 523 | #: with concatenation enabled. Note that enabling the read 524 | #: functionality is a security risk as it means that any program, even 525 | #: one running on a remote server via SSH can read your clipboard. 526 | 527 | term xterm-kitty 528 | 529 | #: The value of the TERM environment variable to set. Changing this 530 | #: can break many terminal programs, only change it if you know what 531 | #: you are doing, not because you read some advice on Stack Overflow 532 | #: to change it. The TERM variable is used by various programs to get 533 | #: information about the capabilities and behavior of the terminal. If 534 | #: you change it, depending on what programs you run, and how 535 | #: different the terminal you are changing it to is, various things 536 | #: from key-presses, to colors, to various advanced features may not 537 | #: work. 538 | 539 | #: }}} 540 | 541 | #: OS specific tweaks {{{ 542 | 543 | macos_titlebar_color system 544 | 545 | #: Change the color of the kitty window's titlebar on macOS. A value 546 | #: of system means to use the default system color, a value of 547 | #: background means to use the background color of the currently 548 | #: active window and finally you can use an arbitrary color, such as 549 | #: #12af59 or red. WARNING: This option works by using a hack, as 550 | #: there is no proper Cocoa API for it. It sets the background color 551 | #: of the entire window and makes the titlebar transparent. As such it 552 | #: is incompatible with background_opacity. If you want to use both, 553 | #: you are probably better off just hiding the titlebar with 554 | #: hide_window_decorations. 555 | 556 | macos_option_as_alt no 557 | 558 | #: Use the option key as an alt key. With this set to no, kitty will 559 | #: use the macOS native Option+Key = unicode character behavior. This 560 | #: will break any Alt+key keyboard shortcuts in your terminal 561 | #: programs, but you can use the macOS unicode input technique. You 562 | #: can use the values: left, right, or both to use only the left, 563 | #: right or both Option keys as Alt, instead. 564 | 565 | macos_hide_from_tasks no 566 | 567 | #: Hide the kitty window from running tasks (Option+Tab) on macOS. 568 | 569 | macos_quit_when_last_window_closed no 570 | 571 | #: Have kitty quit when all the top-level windows are closed. By 572 | #: default, kitty will stay running, even with no open windows, as is 573 | #: the expected behavior on macOS. 574 | 575 | macos_window_resizable yes 576 | 577 | #: Disable this if you want kitty top-level (OS) windows to not be 578 | #: resizable on macOS. 579 | 580 | macos_thicken_font 0 581 | 582 | #: Draw an extra border around the font with the given width, to 583 | #: increase legibility at small font sizes. For example, a value of 584 | #: 0.75 will result in rendering that looks similar to sub-pixel 585 | #: antialiasing at common font sizes. 586 | 587 | macos_traditional_fullscreen no 588 | 589 | #: Use the traditional full-screen transition, that is faster, but 590 | #: less pretty. 591 | 592 | macos_show_window_title_in_menubar yes 593 | 594 | #: Show the title of the currently active window in the macOS menu- 595 | #: bar, making use of otherwise wasted space. 596 | 597 | macos_custom_beam_cursor no 598 | 599 | #: Enable/disable custom mouse cursor for macOS that is easier to see 600 | #: on both light and dark backgrounds. WARNING: this might make your 601 | #: mouse cursor invisible on dual GPU machines. 602 | 603 | #: }}} 604 | 605 | #: Keyboard shortcuts {{{ 606 | 607 | #: For a list of key names, see: GLFW keys 608 | #: . The name to 609 | #: use is the part after the GLFW_KEY_ prefix. For a list of modifier 610 | #: names, see: GLFW mods 611 | #: 612 | 613 | #: On Linux you can also use XKB key names to bind keys that are not 614 | #: supported by GLFW. See XKB keys 615 | #: for a list of key names. The name to use is the part 617 | #: after the XKB_KEY_ prefix. Note that you should only use an XKB key 618 | #: name for keys that are not present in the list of GLFW keys. 619 | 620 | #: Finally, you can use raw system key codes to map keys. To see the 621 | #: system key code for a key, start kitty with the kitty --debug- 622 | #: keyboard option. Then kitty will output some debug text for every 623 | #: key event. In that text look for ``native_code`` the value of that 624 | #: becomes the key name in the shortcut. For example: 625 | 626 | #: .. code-block:: none 627 | 628 | #: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' 629 | 630 | #: Here, the key name for the A key is 0x61 and you can use it with:: 631 | 632 | #: map ctrl+0x61 something 633 | 634 | #: to map ctrl+a to something. 635 | 636 | #: You can use the special action no_op to unmap a keyboard shortcut 637 | #: that is assigned in the default configuration. 638 | 639 | #: You can combine multiple actions to be triggered by a single 640 | #: shortcut, using the syntax below:: 641 | 642 | #: map key combine action1 action2 action3 ... 643 | 644 | #: For example:: 645 | 646 | #: map kitty_mod+e combine : new_window : next_layout 647 | 648 | #: this will create a new window and switch to the next available 649 | #: layout 650 | 651 | #: You can use multi-key shortcuts using the syntax shown below:: 652 | 653 | #: map key1>key2>key3 action 654 | 655 | #: For example:: 656 | 657 | #: map ctrl+f>2 set_font_size 20 658 | 659 | kitty_mod ctrl+shift 660 | 661 | #: The value of kitty_mod is used as the modifier for all default 662 | #: shortcuts, you can change it in your kitty.conf to change the 663 | #: modifiers for all the default shortcuts. 664 | 665 | clear_all_shortcuts no 666 | 667 | #: You can have kitty remove all shortcut definition seen up to this 668 | #: point. Useful, for instance, to remove the default shortcuts. 669 | 670 | #: Clipboard {{{ 671 | 672 | map kitty_mod+c copy_to_clipboard 673 | 674 | #: There is also a copy_or_interrupt action that can be optionally 675 | #: mapped to Ctrl+c. It will copy only if there is a selection and 676 | #: send an interrupt otherwise. 677 | 678 | map kitty_mod+v paste_from_clipboard 679 | map kitty_mod+s paste_from_selection 680 | map shift+insert paste_from_selection 681 | map kitty_mod+o pass_selection_to_program 682 | 683 | #: You can also pass the contents of the current selection to any 684 | #: program using pass_selection_to_program. By default, the system's 685 | #: open program is used, but you can specify your own, for example:: 686 | 687 | #: map kitty_mod+o pass_selection_to_program firefox 688 | 689 | #: You can pass the current selection to a terminal program running in 690 | #: a new kitty window, by using the @selection placeholder:: 691 | 692 | #: map kitty_mod+y new_window less @selection 693 | 694 | #: }}} 695 | 696 | #: Scrolling {{{ 697 | 698 | map kitty_mod+up scroll_line_up 699 | map kitty_mod+k scroll_line_up 700 | map kitty_mod+down scroll_line_down 701 | map kitty_mod+j scroll_line_down 702 | map kitty_mod+page_up scroll_page_up 703 | map kitty_mod+page_down scroll_page_down 704 | map kitty_mod+home scroll_home 705 | map kitty_mod+end scroll_end 706 | map kitty_mod+h show_scrollback 707 | 708 | #: You can pipe the contents of the current screen + history buffer as 709 | #: STDIN to an arbitrary program using the ``pipe`` function. For 710 | #: example, the following opens the scrollback buffer in less in an 711 | #: overlay window:: 712 | 713 | #: map f1 pipe @ansi overlay less +G -R 714 | 715 | #: For more details on piping screen and buffer contents to external 716 | #: programs, see pipe. 717 | 718 | #: }}} 719 | 720 | #: Window management {{{ 721 | 722 | map kitty_mod+enter new_window 723 | 724 | #: You can open a new window running an arbitrary program, for 725 | #: example:: 726 | 727 | #: map kitty_mod+y new_window mutt 728 | 729 | #: You can open a new window with the current working directory set to 730 | #: the working directory of the current window using:: 731 | 732 | #: map ctrl+alt+enter new_window_with_cwd 733 | 734 | #: You can open a new window that is allowed to control kitty via the 735 | #: kitty remote control facility by prefixing the command line with @. 736 | #: Any programs running in that window will be allowed to control 737 | #: kitty. For example:: 738 | 739 | #: map ctrl+enter new_window @ some_program 740 | 741 | map kitty_mod+n new_os_window 742 | map kitty_mod+w close_window 743 | map kitty_mod+] next_window 744 | map kitty_mod+[ previous_window 745 | map kitty_mod+f move_window_forward 746 | map kitty_mod+b move_window_backward 747 | map kitty_mod+` move_window_to_top 748 | map kitty_mod+r start_resizing_window 749 | map kitty_mod+1 first_window 750 | map kitty_mod+2 second_window 751 | map kitty_mod+3 third_window 752 | map kitty_mod+4 fourth_window 753 | map kitty_mod+5 fifth_window 754 | map kitty_mod+6 sixth_window 755 | map kitty_mod+7 seventh_window 756 | map kitty_mod+8 eighth_window 757 | map kitty_mod+9 ninth_window 758 | map kitty_mod+0 tenth_window 759 | #: }}} 760 | 761 | #: Tab management {{{ 762 | 763 | map kitty_mod+right next_tab 764 | map kitty_mod+left previous_tab 765 | map kitty_mod+t new_tab 766 | map kitty_mod+q close_tab 767 | map kitty_mod+. move_tab_forward 768 | map kitty_mod+, move_tab_backward 769 | map kitty_mod+alt+t set_tab_title 770 | 771 | #: You can also create shortcuts to go to specific tabs, with 1 being 772 | #: the first tab, 2 the second tab and -1 being the previously active 773 | #: tab:: 774 | 775 | #: map ctrl+alt+1 goto_tab 1 776 | #: map ctrl+alt+2 goto_tab 2 777 | 778 | #: Just as with new_window above, you can also pass the name of 779 | #: arbitrary commands to run when using new_tab and use 780 | #: new_tab_with_cwd. Finally, if you want the new tab to open next to 781 | #: the current tab rather than at the end of the tabs list, use:: 782 | 783 | #: map ctrl+t new_tab !neighbor [optional cmd to run] 784 | #: }}} 785 | 786 | #: Layout management {{{ 787 | 788 | map kitty_mod+l next_layout 789 | 790 | 791 | #: You can also create shortcuts to switch to specific layouts:: 792 | 793 | #: map ctrl+alt+t goto_layout tall 794 | #: map ctrl+alt+s goto_layout stack 795 | 796 | #: Similarly, to switch back to the previous layout:: 797 | 798 | #: map ctrl+alt+p last_used_layout 799 | #: }}} 800 | 801 | #: Font sizes {{{ 802 | 803 | #: You can change the font size for all top-level kitty OS windows at 804 | #: a time or only the current one. 805 | 806 | map kitty_mod+equal change_font_size all +2.0 807 | map kitty_mod+minus change_font_size all -2.0 808 | map kitty_mod+backspace change_font_size all 0 809 | 810 | #: To setup shortcuts for specific font sizes:: 811 | 812 | #: map kitty_mod+f6 change_font_size all 10.0 813 | 814 | #: To setup shortcuts to change only the current OS window's font 815 | #: size:: 816 | 817 | #: map kitty_mod+f6 change_font_size current 10.0 818 | #: }}} 819 | 820 | #: Select and act on visible text {{{ 821 | 822 | #: Use the hints kitten to select text and either pass it to an 823 | #: external program or insert it into the terminal or copy it to the 824 | #: clipboard. 825 | 826 | map kitty_mod+e kitten hints 827 | 828 | #: Open a currently visible URL using the keyboard. The program used 829 | #: to open the URL is specified in open_url_with. 830 | 831 | map kitty_mod+p>f kitten hints --type path --program - 832 | 833 | #: Select a path/filename and insert it into the terminal. Useful, for 834 | #: instance to run git commands on a filename output from a previous 835 | #: git command. 836 | 837 | map kitty_mod+p>shift+f kitten hints --type path 838 | 839 | #: Select a path/filename and open it with the default open program. 840 | 841 | map kitty_mod+p>l kitten hints --type line --program - 842 | 843 | #: Select a line of text and insert it into the terminal. Use for the 844 | #: output of things like: ls -1 845 | 846 | map kitty_mod+p>w kitten hints --type word --program - 847 | 848 | #: Select words and insert into terminal. 849 | 850 | map kitty_mod+p>h kitten hints --type hash --program - 851 | 852 | #: Select something that looks like a hash and insert it into the 853 | #: terminal. Useful with git, which uses sha1 hashes to identify 854 | #: commits 855 | 856 | 857 | #: The hints kitten has many more modes of operation that you can map 858 | #: to different shortcuts. For a full description see kittens/hints. 859 | #: }}} 860 | 861 | #: Miscellaneous {{{ 862 | 863 | map kitty_mod+f11 toggle_fullscreen 864 | map kitty_mod+u kitten unicode_input 865 | map kitty_mod+f2 edit_config_file 866 | map kitty_mod+escape kitty_shell window 867 | 868 | #: Open the kitty shell in a new window/tab/overlay/os_window to 869 | #: control kitty using commands. 870 | 871 | dynamic_background_opacity yes 872 | background_opacity 1 873 | 874 | map kitty_mod+a>m set_background_opacity +0.1 875 | map kitty_mod+a>l set_background_opacity -0.1 876 | map kitty_mod+a>1 set_background_opacity 1 877 | map kitty_mod+a>d set_background_opacity default 878 | map kitty_mod+delete clear_terminal reset active 879 | 880 | #: You can create shortcuts to clear/reset the terminal. For example:: 881 | 882 | #: # Reset the terminal 883 | #: map kitty_mod+f9 clear_terminal reset active 884 | #: # Clear the terminal screen by erasing all contents 885 | #: map kitty_mod+f10 clear_terminal clear active 886 | #: # Clear the terminal scrollback by erasing it 887 | #: map kitty_mod+f11 clear_terminal scrollback active 888 | #: # Scroll the contents of the screen into the scrollback 889 | #: map kitty_mod+f12 clear_terminal scroll active 890 | 891 | #: If you want to operate on all windows instead of just the current 892 | #: one, use all instead of :italic`active`. 893 | 894 | #: It is also possible to remap Ctrl+L to both scroll the current 895 | #: screen contents into the scrollback buffer and clear the screen, 896 | #: instead of just clearing the screen:: 897 | 898 | #: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c 899 | 900 | 901 | #: You can tell kitty to send arbitrary (UTF-8) encoded text to the 902 | #: client program when pressing specified shortcut keys. For example:: 903 | 904 | #: map ctrl+alt+a send_text all Special text 905 | 906 | #: This will send "Special text" when you press the ctrl+alt+a key 907 | #: combination. The text to be sent is a python string literal so you 908 | #: can use escapes like \x1b to send control codes or \u21fb to send 909 | #: unicode characters (or you can just input the unicode characters 910 | #: directly as UTF-8 text). The first argument to send_text is the 911 | #: keyboard modes in which to activate the shortcut. The possible 912 | #: values are normal or application or kitty or a comma separated 913 | #: combination of them. The special keyword all means all modes. The 914 | #: modes normal and application refer to the DECCKM cursor key mode 915 | #: for terminals, and kitty refers to the special kitty extended 916 | #: keyboard protocol. 917 | 918 | #: Another example, that outputs a word and then moves the cursor to 919 | #: the start of the line (same as pressing the Home key):: 920 | 921 | #: map ctrl+alt+a send_text normal Word\x1b[H 922 | #: map ctrl+alt+a send_text application Word\x1bOH 923 | 924 | #: }}} 925 | 926 | # }}} 927 | -------------------------------------------------------------------------------- /.config/kitty/mocha.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin Kitty Mocha 4 | ## author: Catppuccin Org 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #CDD6F4 13 | background #1E1E2E 14 | selection_foreground #1E1E2E 15 | selection_background #F5E0DC 16 | 17 | # Cursor colors 18 | cursor #F5E0DC 19 | cursor_text_color #1E1E2E 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #F5E0DC 23 | 24 | # Kitty window border colors 25 | active_border_color #B4BEFE 26 | inactive_border_color #6C7086 27 | bell_border_color #F9E2AF 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #11111B 35 | active_tab_background #CBA6F7 36 | inactive_tab_foreground #CDD6F4 37 | inactive_tab_background #181825 38 | tab_bar_background #11111B 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #1E1E2E 42 | mark1_background #B4BEFE 43 | mark2_foreground #1E1E2E 44 | mark2_background #CBA6F7 45 | mark3_foreground #1E1E2E 46 | mark3_background #74C7EC 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #45475A 52 | color8 #585B70 53 | 54 | # red 55 | color1 #F38BA8 56 | color9 #F38BA8 57 | 58 | # green 59 | color2 #A6E3A1 60 | color10 #A6E3A1 61 | 62 | # yellow 63 | color3 #F9E2AF 64 | color11 #F9E2AF 65 | 66 | # blue 67 | color4 #89B4FA 68 | color12 #89B4FA 69 | 70 | # magenta 71 | color5 #F5C2E7 72 | color13 #F5C2E7 73 | 74 | # cyan 75 | color6 #94E2D5 76 | color14 #94E2D5 77 | 78 | # white 79 | color7 #BAC2DE 80 | color15 #A6ADC8 81 | -------------------------------------------------------------------------------- /.config/nvim/.netrwhist: -------------------------------------------------------------------------------- 1 | let g:netrw_dirhistmax =10 2 | let g:netrw_dirhistcnt =8 3 | let g:netrw_dirhist_8='scp://kenzie@mage.black//var/www/mage.black/lofi/player/' 4 | let g:netrw_dirhist_7='scp://kenzie@mage.black//var/www/mage.black/lofi/' 5 | let g:netrw_dirhist_6='scp://kenzie@mage.black//var/www/mage.black/' 6 | let g:netrw_dirhist_5='scp://kenzie@mage.black//var/www/mage.black/lofi/player/js/' 7 | let g:netrw_dirhist_4='scp://kenzie@mage.black//var/www/mage.black/lofi/player/' 8 | let g:netrw_dirhist_3='scp://kenzie@mage.black//var/www/mage.black/lofi/' 9 | let g:netrw_dirhist_2='scp://kenzie@mage.black//var/www/mage.black/' 10 | let g:netrw_dirhist_1='scp://kenzie@mage.black//var/www/mage.black/nh/fonts/iconmonstr/css/' 11 | let g:netrw_dirhist_0='scp://kenzie@mage.black//var/www/mage.black/nh/fonts/iconmonstr/' 12 | let g:netrw_dirhist_9='scp://kenzie@mage.black//var/www/mage.black/nh/fonts/' 13 | -------------------------------------------------------------------------------- /.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | set runtimepath+=~/.nvim/,~/.nvim/after/ 2 | set packpath+=~/.nvim/ 3 | source ~/.nvim/plugs 4 | source ~/.nvim/vimrc 5 | 6 | 7 | -------------------------------------------------------------------------------- /.config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "barbecue": { "branch": "main", "commit": "d60fb8d8e240e5be04a20636f5b35b05a0d4712c" }, 3 | "jedi-vim": { "branch": "master", "commit": "be483a2dcb63e992b02c5a0faff5d555720246fc" }, 4 | "lazy.nvim": { "branch": "main", "commit": "887eb75591520a01548134c4623617b639289d0b" }, 5 | "nvim-lspconfig": { "branch": "master", "commit": "736c39e4bab977f0171c78328415c6402c58e64a" }, 6 | "nvim-navic": { "branch": "master", "commit": "f1ffbc3f5736add66c31e02f4c53d238e040600b" }, 7 | "nvim-web-devicons": { "branch": "master", "commit": "467d135bbefa6fbe8380c8b6498228f8b21244a6" }, 8 | "tokyonight.nvim": { "branch": "main", "commit": "edffa82026914be54c8220973b0385f61d3392f0" }, 9 | "vim-autoclose": { "branch": "master", "commit": "a9a3b7384657bc1f60a963fd6c08c63fc48d61c3" }, 10 | "vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" }, 11 | "vim-latex": { "branch": "master", "commit": "5987380b4ff4c960c99c02df1d379a639ac461a7" }, 12 | "vim-polyglot": { "branch": "master", "commit": "bc8a81d3592dab86334f27d1d43c080ebf680d42" }, 13 | "vim-template": { "branch": "master", "commit": "0bf607233719a0ed6e14bf0197ba8950bf8833fc" }, 14 | "winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" } 15 | } -------------------------------------------------------------------------------- /.config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "name": "top", 3 | "modules-left": [ 4 | "hyprland/workspaces", 5 | ], 6 | "modules-right": [ 7 | "pulseaudio#icon", "pulseaudio", 8 | "backlight#icon", "backlight", 9 | "battery#icon", "battery" 10 | ], 11 | 12 | "margin-top": 20, 13 | "margin-bottom": 0, 14 | "margin-left": 20, 15 | "margin-right": 20, 16 | 17 | "hyprland/window#class": { 18 | "format": "{class}" 19 | }, 20 | 21 | "hyprland/window#title": { 22 | "format": "{title}", 23 | "rewrite": { 24 | "(.*) — Mozilla Firefox": "$1" 25 | } 26 | }, 27 | 28 | "clock#date": { 29 | "format": "{:%A %d. %B}" 30 | }, 31 | "clock#time": { 32 | "format": "{:%H:%M}" 33 | }, 34 | 35 | "pulseaudio#icon": { 36 | "format": "V", 37 | "format-muted": "M", 38 | "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle" 39 | }, 40 | 41 | "pulseaudio": { 42 | "format": "{volume}%", 43 | }, 44 | 45 | "backlight#icon": { 46 | "format": "{icon}", 47 | "format-icons": ["L"] 48 | }, 49 | 50 | "backlight": { 51 | "format": "{percent}%", 52 | }, 53 | 54 | "battery#icon": { 55 | "format": "{icon}", 56 | "interval": 5, 57 | "format-charging": "C", 58 | "states": { 59 | "warning": 30, 60 | "critical": 15 61 | }, 62 | "format-charging-icons": [ 63 | "C", 64 | "C", 65 | "C" 66 | ], 67 | "format-icons": [ 68 | "B", 69 | "B", 70 | "B" 71 | ] 72 | }, 73 | 74 | "battery": { 75 | "format": "{capacity}%", 76 | "interval": 5, 77 | "format-charging": "{capacity}% - {time} until full", 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /.config/waybar/style.css: -------------------------------------------------------------------------------- 1 | @define-color fore #CDD6F4; 2 | @define-color back #1E1E2E; 3 | 4 | @define-color black #45475A; 5 | @define-color red #F38BA8; 6 | @define-color green #A6E3A1; 7 | @define-color yellow #F9E2AF; 8 | @define-color blue #89B4FA; 9 | @define-color magenta #F5C2E7; 10 | @define-color cyan #94E2D5; 11 | @define-color white #BAC2DE; 12 | 13 | @define-color lavender #b4befe; 14 | @define-color peach #fab387; 15 | 16 | * { 17 | font-family: Iosevka; 18 | font-size: 18px; 19 | } 20 | 21 | window { 22 | padding: 10px 23 | } 24 | 25 | window#waybar { 26 | background-color: rgba(0,0,0,0); 27 | } 28 | 29 | .modules-right, 30 | .modules-center, 31 | .modules-left { 32 | background-color: @back; 33 | border-radius: 5px; 34 | color: @fore; 35 | } 36 | 37 | #workspaces { 38 | padding: 5px; 39 | } 40 | 41 | 42 | #workspaces button.active { 43 | color: @back; 44 | border-radius: 5px; 45 | background-color: @lavender; 46 | } 47 | 48 | #workspaces button { 49 | color: @fore; 50 | } 51 | 52 | #workspaces button:hover { 53 | color: @fore; 54 | background: transparent; 55 | background-color: transparent; 56 | border-color: @back; 57 | box-shadow: none; 58 | text-shadow: none; 59 | } 60 | 61 | #workspaces button.active:hover { 62 | color: @back; 63 | background-color: @lavender; 64 | border-color: @lavender; 65 | } 66 | 67 | #clock { 68 | padding: 5px 15px; 69 | } 70 | 71 | #clock.time { 72 | background-color: @lavender; 73 | color: @back; 74 | margin: 5px; 75 | border-radius: 5px; 76 | } 77 | 78 | #pulseaudio { 79 | padding: 5px 15px; 80 | } 81 | 82 | #pulseaudio.icon { 83 | background-color: @yellow; 84 | color: @back; 85 | margin: 5px; 86 | border-radius: 5px; 87 | } 88 | 89 | #pulseaudio.icon.muted { 90 | background-color: @red; 91 | } 92 | 93 | #backlight { 94 | padding: 5px 15px; 95 | } 96 | 97 | #backlight.icon { 98 | background-color: @blue; 99 | color: @back; 100 | margin: 5px; 101 | border-radius: 5px; 102 | } 103 | 104 | #battery { 105 | padding: 5px 15px; 106 | } 107 | 108 | #battery.icon { 109 | color: @back; 110 | background-color: @green; 111 | margin: 5px; 112 | border-radius: 5px; 113 | } 114 | 115 | #battery.icon.warning { 116 | background-color: @peach; 117 | } 118 | 119 | #battery.icon.critical { 120 | background-color: @red; 121 | } 122 | 123 | #battery.icon.charging { 124 | background-color: @yellow; 125 | color: @back; 126 | } 127 | 128 | #window { 129 | padding: 5px 15px; 130 | } 131 | 132 | window#waybar.empty #window { 133 | padding: 0; 134 | margin: 0; 135 | opacity: 0; 136 | } 137 | 138 | #window.class { 139 | background-color: @lavender; 140 | color: @back; 141 | border-radius: 5px; 142 | margin: 5px; 143 | } 144 | 145 | #window.class.empty { 146 | padding: 0px; 147 | background-color: @red; 148 | } 149 | -------------------------------------------------------------------------------- /.dotfiles/catpp-wallps/kitty.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/.dotfiles/catpp-wallps/kitty.jpeg -------------------------------------------------------------------------------- /.dotfiles/ekb: -------------------------------------------------------------------------------- 1 | partial alphanumeric_keys 2 | xkb_symbols "e" { 3 | 4 | include "us(intl)" 5 | name[Group2]= "English (US, alt. intl. e)"; 6 | 7 | key { [ grave, asciitilde, dead_grave, dead_tilde ] }; 8 | key { [ 5, percent, EuroSign ] }; 9 | key { [ 6, asciicircum, dead_circumflex, asciicircum ] }; 10 | key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; 11 | key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; 12 | key { [ minus, underscore, dead_macron, dead_belowdot ] }; 13 | key { [ equal, plus, dead_doubleacute, dead_horn ] }; 14 | 15 | key { [ e, E, EuroSign, cent ] }; 16 | 17 | key { [ semicolon, colon, dead_ogonek, dead_diaeresis ] }; 18 | key { [ dead_acute, quotedbl , apostrophe, dead_diaeresis ] }; 19 | 20 | key { [ comma, less, dead_cedilla, dead_caron ] }; 21 | key { [ period, greater, dead_abovedot, dead_circumflex ] }; 22 | key { [ slash, question, dead_hook, dead_hook ] }; 23 | 24 | key { [ backslash, bar, backslash, bar ] }; 25 | 26 | include "level3(ralt_switch)" 27 | }; 28 | -------------------------------------------------------------------------------- /.dotfiles/mpd-notify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while : 3 | do 4 | file=`mpc -f "$HOME/Music/%file%" current --wait` 5 | 6 | $HOME/.dotfiles/nowplaying "$file" 7 | done 8 | -------------------------------------------------------------------------------- /.dotfiles/nowplaying: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | track="$(mpc --format %id% current)" 4 | 5 | if [[ $track != "" ]] 6 | then 7 | ffmpeg -i "$1" -loglevel quiet -an -vcodec copy /tmp/cover.jpg 8 | 9 | notify-send -i /tmp/cover.jpg "$(mpc --format '%title%\n%artist%' current)" 10 | 11 | rm /tmp/cover.jpg 12 | fi 13 | 14 | -------------------------------------------------------------------------------- /.dotfiles/pfetch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | PF_ASCII="Catppuccin"\ 3 | PF_COL1=8 \ 4 | PF_COL3=3 \ 5 | PF_INFO="palette ascii title os uptime ip weather" \ 6 | PF_SEP="- " \ 7 | PF_WEATHER="$HOME/.dotfiles/vedur-nuna" \ 8 | pfetch 9 | -------------------------------------------------------------------------------- /.dotfiles/scheme: -------------------------------------------------------------------------------- 1 | fore=#CDD6F4 2 | back=#1E1E2E 3 | 4 | black1=#45475A 5 | black2=#585B70 6 | 7 | red1=#F38BA8 8 | red2=#F38BA8 9 | 10 | green1=#A6E3A1 11 | green2=#A6E3A1 12 | 13 | yellow1=#F9E2AF 14 | yellow2=#F9E2AF 15 | 16 | blue1=#89B4FA 17 | blue2=#89B4FA 18 | 19 | magenta1=#F5C2E7 20 | magenta2=#F5C2E7 21 | 22 | cyan1=#94E2D5 23 | cyan2=#94E2D5 24 | 25 | white1=#BAC2DE 26 | white2=#BAC2DE 27 | -------------------------------------------------------------------------------- /.dotfiles/screenshot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | file=$(grimshot save anything) 3 | 4 | notify-send -i $file "Screenshot captured!" $file 5 | -------------------------------------------------------------------------------- /.dotfiles/setup-ekb.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # 3 | # setup-trilli-kb.sh 4 | # Copyright (C) 2021 kenzie 5 | # 6 | # Distributed under terms of the MIT license. 7 | # 8 | 9 | XKB_SYMBOLS="/usr/share/X11/xkb/symbols/us" 10 | 11 | echo >> $XKB_SYMBOLS 12 | cat /home/kenzie/.dotfiles/ekb >> $XKB_SYMBOLS 13 | 14 | su kenzie -c "setxkbmap us -variant e" 15 | -------------------------------------------------------------------------------- /.dotfiles/vedur.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | import re 3 | import requests 4 | import os.path 5 | 6 | from argparse import ArgumentParser 7 | 8 | parser = ArgumentParser() 9 | 10 | parser.add_argument("location") 11 | parser.add_argument("file") 12 | 13 | args = parser.parse_args() 14 | 15 | location_regex = r"^[A-Za-z]+" 16 | temp_regex = r"([+-]{0,1}\d+(?:\([+-]{0,1}\d+\)){0,1} °C)" 17 | 18 | # Get wttr.in 19 | wttr = requests.get(f"http://wttr.in/{args.location}?0?q?T").content.decode("utf-8") 20 | 21 | # Find strings 22 | location = re.findall(location_regex, wttr)[0] 23 | temp = re.findall(temp_regex, wttr)[0].replace(" ", "") 24 | 25 | weather_info = f"{temp} ({location})" 26 | file_locaton = os.path.expanduser(args.file) 27 | 28 | with open(file_locaton, "w+") as f: 29 | f.write(weather_info) 30 | -------------------------------------------------------------------------------- /.nvim/after/ftplugin/tex.vim: -------------------------------------------------------------------------------- 1 | call IMAP('EBX', "\\begin{bmatrix}\<++>\\\end{bmatrix}", 'tex') 2 | call IMAP('EVX', "\\begin{vmatrix}\<++>\\\end{vmatrix}", 'tex') 3 | call IMAP("ETB", "\\begin{tabular}{<++>}\<++>\\\end{tabular}", "tex") 4 | call IMAP("EAA", "\\begin{alignat*}{<++>}\<++>\\\end{alignat*}", "tex") 5 | call IMAP("MBB", "\\mathbb{<++>}<++>", "tex") 6 | call IMAP("MBF", "\\mathbf{<++>}<++>", "tex") 7 | call IMAP("SSS", "\\subsection*{<++>}<++>", "tex") 8 | call IMAP("SSU", "\\section*{<++>}<++>","tex") 9 | call IMAP("ESE", "\\begin{setning}[<++>]\<++>\\\end{setning}", "tex") 10 | call IMAP("ESG", "\\begin{skilgr}[<++>]\<++>\\\end{skilgr}", "tex") 11 | call IMAP("ESR", "\\begin{siderules}\<++>\\\end{siderules}", "tex") 12 | call IMAP("TSV", "\\tag*{svo} ", "tex") 13 | call IMAP("TOG", "\\tag*{og} ", "tex") 14 | call IMAP("MLI", "\\lim_{<++>\\to<++>} <++>", "tex") 15 | call IMAP("MCA", "\\mathcal{<++>}<++>", "tex") 16 | call IMAP("PRE", "\\left( <++> \\right)<++>", "tex") 17 | call IMAP("PSQ", "\\left[ <++> \\right]<++>", "tex") 18 | call IMAP("PCU", "\\left\\{ <++> \\right\\}<++>", "tex") 19 | -------------------------------------------------------------------------------- /.nvim/after/ftplugin/tex_mappings.vim: -------------------------------------------------------------------------------- 1 | inoremap : silent exec '.!inkscape-figures create "'.getline('.').'" "'.expand('%:p:h').'/figures/"':w 2 | inoremap : silent exec '.!inkscape-figures create "'.getline('.').'" "'.expand('%:p:h').'/figures/"':w 3 | -------------------------------------------------------------------------------- /.nvim/after/syntax/tex.vim: -------------------------------------------------------------------------------- 1 | if !has('conceal') 2 | finish 3 | endif 4 | 5 | " Original file is https://github.com/wjakob/wjakob.vim/blob/master/after/syntax/tex.vim 6 | 7 | " more reasonably sized symbols that were already defined 8 | " syn match texMathSymbol '\\Rightarrow\>' contained conceal cchar=⇒ 9 | syn match arrowheadr 'arrow' transparent contained conceal cchar=> 10 | syn match arrowheadl 'arrow' transparent contained conceal cchar=> 11 | 12 | syn match texMathSymbol '\\Rightarrow\>' contained contains=arrowheadr conceal cchar== 13 | syn match texMathSymbol '\\Leftarrow\>' contained contains=arrowheadl conceal cchar== 14 | syn match texMathSymbol '\\rightarrow\>' contained contains=arrowheadr conceal cchar=- 15 | syn match texMathSymbol '\\leftarrow\>' contained contains=arrowheadl conceal cchar=- 16 | syn match texMathSymbol '\\emptyset\>' contained conceal cchar=Ø 17 | syn match texMathSymbol '\\varphi\>' contained conceal cchar=φ 18 | syn match texMathSymbol '\\phi\>' contained conceal cchar=Φ 19 | syn match texMathSymbol '\\langle\>\s*' contained conceal cchar=⟨ 20 | syn match texMathSymbol '\s*\\rangle\>' contained conceal cchar=⟩ 21 | syn match texMathSymbol '\\\\' contained conceal cchar=⏎ 22 | 23 | " logical symbols 24 | syn match texMathSymbol '\\lor\>' contained conceal cchar=∨ 25 | syn match texMathSymbol '\\land\>' contained conceal cchar=∧ 26 | syn match texMathSymbol '\\lnot\>' contained conceal cchar=¬ 27 | syn match texMathSymbol '\\implies\>' contained conceal cchar=⇒ 28 | syn match texMathSymbol '\\geqslant\>' contained conceal cchar=⩾ 29 | syn match texMathSymbol '\\leqslant\>' contained conceal cchar=⩽ 30 | 31 | " \mathbb characters 32 | syn match texMathSymbol '\\mathbb{\s*A\s*}' contained conceal cchar=𝔸 33 | syn match texMathSymbol '\\mathbb{\s*B\s*}' contained conceal cchar=𝔹 34 | syn match texMathSymbol '\\mathbb{\s*C\s*}' contained conceal cchar=ℂ 35 | syn match texMathSymbol '\\mathbb{\s*D\s*}' contained conceal cchar=𝔻 36 | syn match texMathSymbol '\\mathbb{\s*E\s*}' contained conceal cchar=𝔼 37 | syn match texMathSymbol '\\mathbb{\s*F\s*}' contained conceal cchar=𝔽 38 | syn match texMathSymbol '\\mathbb{\s*G\s*}' contained conceal cchar=𝔾 39 | syn match texMathSymbol '\\mathbb{\s*H\s*}' contained conceal cchar=ℍ 40 | syn match texMathSymbol '\\mathbb{\s*I\s*}' contained conceal cchar=𝕀 41 | syn match texMathSymbol '\\mathbb{\s*J\s*}' contained conceal cchar=𝕁 42 | syn match texMathSymbol '\\mathbb{\s*K\s*}' contained conceal cchar=𝕂 43 | syn match texMathSymbol '\\mathbb{\s*L\s*}' contained conceal cchar=𝕃 44 | syn match texMathSymbol '\\mathbb{\s*M\s*}' contained conceal cchar=𝕄 45 | syn match texMathSymbol '\\mathbb{\s*N\s*}' contained conceal cchar=ℕ 46 | syn match texMathSymbol '\\mathbb{\s*O\s*}' contained conceal cchar=𝕆 47 | syn match texMathSymbol '\\mathbb{\s*P\s*}' contained conceal cchar=ℙ 48 | syn match texMathSymbol '\\mathbb{\s*Q\s*}' contained conceal cchar=ℚ 49 | syn match texMathSymbol '\\mathbb{\s*R\s*}' contained conceal cchar=ℝ 50 | syn match texMathSymbol '\\mathbb{\s*S\s*}' contained conceal cchar=𝕊 51 | syn match texMathSymbol '\\mathbb{\s*T\s*}' contained conceal cchar=𝕋 52 | syn match texMathSymbol '\\mathbb{\s*U\s*}' contained conceal cchar=𝕌 53 | syn match texMathSymbol '\\mathbb{\s*V\s*}' contained conceal cchar=𝕍 54 | syn match texMathSymbol '\\mathbb{\s*W\s*}' contained conceal cchar=𝕎 55 | syn match texMathSymbol '\\mathbb{\s*X\s*}' contained conceal cchar=𝕏 56 | syn match texMathSymbol '\\mathbb{\s*Y\s*}' contained conceal cchar=𝕐 57 | syn match texMathSymbol '\\mathbb{\s*Z\s*}' contained conceal cchar=ℤ 58 | 59 | " \mathsf characters 60 | syn match texMathSymbol '\\mathsf{\s*a\s*}' contained conceal cchar=𝖺 61 | syn match texMathSymbol '\\mathsf{\s*b\s*}' contained conceal cchar=𝖻 62 | syn match texMathSymbol '\\mathsf{\s*c\s*}' contained conceal cchar=𝖼 63 | syn match texMathSymbol '\\mathsf{\s*d\s*}' contained conceal cchar=𝖽 64 | syn match texMathSymbol '\\mathsf{\s*e\s*}' contained conceal cchar=𝖾 65 | syn match texMathSymbol '\\mathsf{\s*f\s*}' contained conceal cchar=𝖿 66 | syn match texMathSymbol '\\mathsf{\s*g\s*}' contained conceal cchar=𝗀 67 | syn match texMathSymbol '\\mathsf{\s*h\s*}' contained conceal cchar=𝗁 68 | syn match texMathSymbol '\\mathsf{\s*i\s*}' contained conceal cchar=𝗂 69 | syn match texMathSymbol '\\mathsf{\s*j\s*}' contained conceal cchar=𝗃 70 | syn match texMathSymbol '\\mathsf{\s*k\s*}' contained conceal cchar=𝗄 71 | syn match texMathSymbol '\\mathsf{\s*l\s*}' contained conceal cchar=𝗅 72 | syn match texMathSymbol '\\mathsf{\s*m\s*}' contained conceal cchar=𝗆 73 | syn match texMathSymbol '\\mathsf{\s*n\s*}' contained conceal cchar=𝗇 74 | syn match texMathSymbol '\\mathsf{\s*o\s*}' contained conceal cchar=𝗈 75 | syn match texMathSymbol '\\mathsf{\s*p\s*}' contained conceal cchar=𝗉 76 | syn match texMathSymbol '\\mathsf{\s*q\s*}' contained conceal cchar=𝗊 77 | syn match texMathSymbol '\\mathsf{\s*r\s*}' contained conceal cchar=𝗋 78 | syn match texMathSymbol '\\mathsf{\s*s\s*}' contained conceal cchar=𝗌 79 | syn match texMathSymbol '\\mathsf{\s*t\s*}' contained conceal cchar=𝗍 80 | syn match texMathSymbol '\\mathsf{\s*u\s*}' contained conceal cchar=𝗎 81 | syn match texMathSymbol '\\mathsf{\s*v\s*}' contained conceal cchar=𝗏 82 | syn match texMathSymbol '\\mathsf{\s*w\s*}' contained conceal cchar=𝗐 83 | syn match texMathSymbol '\\mathsf{\s*x\s*}' contained conceal cchar=𝗑 84 | syn match texMathSymbol '\\mathsf{\s*y\s*}' contained conceal cchar=𝗒 85 | syn match texMathSymbol '\\mathsf{\s*z\s*}' contained conceal cchar=𝗓 86 | syn match texMathSymbol '\\mathsf{\s*A\s*}' contained conceal cchar=𝖠 87 | syn match texMathSymbol '\\mathsf{\s*B\s*}' contained conceal cchar=𝖡 88 | syn match texMathSymbol '\\mathsf{\s*C\s*}' contained conceal cchar=𝖢 89 | syn match texMathSymbol '\\mathsf{\s*D\s*}' contained conceal cchar=𝖣 90 | syn match texMathSymbol '\\mathsf{\s*E\s*}' contained conceal cchar=𝖤 91 | syn match texMathSymbol '\\mathsf{\s*F\s*}' contained conceal cchar=𝖥 92 | syn match texMathSymbol '\\mathsf{\s*G\s*}' contained conceal cchar=𝖦 93 | syn match texMathSymbol '\\mathsf{\s*H\s*}' contained conceal cchar=𝖧 94 | syn match texMathSymbol '\\mathsf{\s*I\s*}' contained conceal cchar=𝖨 95 | syn match texMathSymbol '\\mathsf{\s*J\s*}' contained conceal cchar=𝖩 96 | syn match texMathSymbol '\\mathsf{\s*K\s*}' contained conceal cchar=𝖪 97 | syn match texMathSymbol '\\mathsf{\s*L\s*}' contained conceal cchar=𝖫 98 | syn match texMathSymbol '\\mathsf{\s*M\s*}' contained conceal cchar=𝖬 99 | syn match texMathSymbol '\\mathsf{\s*N\s*}' contained conceal cchar=𝖭 100 | syn match texMathSymbol '\\mathsf{\s*O\s*}' contained conceal cchar=𝖮 101 | syn match texMathSymbol '\\mathsf{\s*P\s*}' contained conceal cchar=𝖯 102 | syn match texMathSymbol '\\mathsf{\s*Q\s*}' contained conceal cchar=𝖰 103 | syn match texMathSymbol '\\mathsf{\s*R\s*}' contained conceal cchar=𝖱 104 | syn match texMathSymbol '\\mathsf{\s*S\s*}' contained conceal cchar=𝖲 105 | syn match texMathSymbol '\\mathsf{\s*T\s*}' contained conceal cchar=𝖳 106 | syn match texMathSymbol '\\mathsf{\s*U\s*}' contained conceal cchar=𝖴 107 | syn match texMathSymbol '\\mathsf{\s*V\s*}' contained conceal cchar=𝖵 108 | syn match texMathSymbol '\\mathsf{\s*W\s*}' contained conceal cchar=𝖶 109 | syn match texMathSymbol '\\mathsf{\s*X\s*}' contained conceal cchar=𝖷 110 | syn match texMathSymbol '\\mathsf{\s*Y\s*}' contained conceal cchar=𝖸 111 | syn match texMathSymbol '\\mathsf{\s*Z\s*}' contained conceal cchar=𝖹 112 | 113 | " \mathfrak characters 114 | syn match texMathSymbol '\\mathfrak{\s*a\s*}' contained conceal cchar=𝔞 115 | syn match texMathSymbol '\\mathfrak{\s*b\s*}' contained conceal cchar=𝔟 116 | syn match texMathSymbol '\\mathfrak{\s*c\s*}' contained conceal cchar=𝔠 117 | syn match texMathSymbol '\\mathfrak{\s*d\s*}' contained conceal cchar=𝔡 118 | syn match texMathSymbol '\\mathfrak{\s*e\s*}' contained conceal cchar=𝔢 119 | syn match texMathSymbol '\\mathfrak{\s*f\s*}' contained conceal cchar=𝔣 120 | syn match texMathSymbol '\\mathfrak{\s*g\s*}' contained conceal cchar=𝔤 121 | syn match texMathSymbol '\\mathfrak{\s*h\s*}' contained conceal cchar=𝔥 122 | syn match texMathSymbol '\\mathfrak{\s*i\s*}' contained conceal cchar=𝔦 123 | syn match texMathSymbol '\\mathfrak{\s*j\s*}' contained conceal cchar=𝔧 124 | syn match texMathSymbol '\\mathfrak{\s*k\s*}' contained conceal cchar=𝔨 125 | syn match texMathSymbol '\\mathfrak{\s*l\s*}' contained conceal cchar=𝔩 126 | syn match texMathSymbol '\\mathfrak{\s*m\s*}' contained conceal cchar=𝔪 127 | syn match texMathSymbol '\\mathfrak{\s*n\s*}' contained conceal cchar=𝔫 128 | syn match texMathSymbol '\\mathfrak{\s*o\s*}' contained conceal cchar=𝔬 129 | syn match texMathSymbol '\\mathfrak{\s*p\s*}' contained conceal cchar=𝔭 130 | syn match texMathSymbol '\\mathfrak{\s*q\s*}' contained conceal cchar=𝔮 131 | syn match texMathSymbol '\\mathfrak{\s*r\s*}' contained conceal cchar=𝔯 132 | syn match texMathSymbol '\\mathfrak{\s*s\s*}' contained conceal cchar=𝔰 133 | syn match texMathSymbol '\\mathfrak{\s*t\s*}' contained conceal cchar=𝔱 134 | syn match texMathSymbol '\\mathfrak{\s*u\s*}' contained conceal cchar=𝔲 135 | syn match texMathSymbol '\\mathfrak{\s*v\s*}' contained conceal cchar=𝔳 136 | syn match texMathSymbol '\\mathfrak{\s*w\s*}' contained conceal cchar=𝔴 137 | syn match texMathSymbol '\\mathfrak{\s*x\s*}' contained conceal cchar=𝔵 138 | syn match texMathSymbol '\\mathfrak{\s*y\s*}' contained conceal cchar=𝔶 139 | syn match texMathSymbol '\\mathfrak{\s*z\s*}' contained conceal cchar=𝔷 140 | syn match texMathSymbol '\\mathfrak{\s*A\s*}' contained conceal cchar=𝔄 141 | syn match texMathSymbol '\\mathfrak{\s*B\s*}' contained conceal cchar=𝔅 142 | syn match texMathSymbol '\\mathfrak{\s*C\s*}' contained conceal cchar=ℭ 143 | syn match texMathSymbol '\\mathfrak{\s*D\s*}' contained conceal cchar=𝔇 144 | syn match texMathSymbol '\\mathfrak{\s*E\s*}' contained conceal cchar=𝔈 145 | syn match texMathSymbol '\\mathfrak{\s*F\s*}' contained conceal cchar=𝔉 146 | syn match texMathSymbol '\\mathfrak{\s*G\s*}' contained conceal cchar=𝔊 147 | syn match texMathSymbol '\\mathfrak{\s*H\s*}' contained conceal cchar=ℌ 148 | syn match texMathSymbol '\\mathfrak{\s*I\s*}' contained conceal cchar=ℑ 149 | syn match texMathSymbol '\\mathfrak{\s*J\s*}' contained conceal cchar=𝔍 150 | syn match texMathSymbol '\\mathfrak{\s*K\s*}' contained conceal cchar=𝔎 151 | syn match texMathSymbol '\\mathfrak{\s*L\s*}' contained conceal cchar=𝔏 152 | syn match texMathSymbol '\\mathfrak{\s*M\s*}' contained conceal cchar=𝔐 153 | syn match texMathSymbol '\\mathfrak{\s*N\s*}' contained conceal cchar=𝔑 154 | syn match texMathSymbol '\\mathfrak{\s*O\s*}' contained conceal cchar=𝔒 155 | syn match texMathSymbol '\\mathfrak{\s*P\s*}' contained conceal cchar=𝔓 156 | syn match texMathSymbol '\\mathfrak{\s*Q\s*}' contained conceal cchar=𝔔 157 | syn match texMathSymbol '\\mathfrak{\s*R\s*}' contained conceal cchar=ℜ 158 | syn match texMathSymbol '\\mathfrak{\s*S\s*}' contained conceal cchar=𝔖 159 | syn match texMathSymbol '\\mathfrak{\s*T\s*}' contained conceal cchar=𝔗 160 | syn match texMathSymbol '\\mathfrak{\s*U\s*}' contained conceal cchar=𝔘 161 | syn match texMathSymbol '\\mathfrak{\s*V\s*}' contained conceal cchar=𝔙 162 | syn match texMathSymbol '\\mathfrak{\s*W\s*}' contained conceal cchar=𝔚 163 | syn match texMathSymbol '\\mathfrak{\s*X\s*}' contained conceal cchar=𝔛 164 | syn match texMathSymbol '\\mathfrak{\s*Y\s*}' contained conceal cchar=𝔜 165 | syn match texMathSymbol '\\mathfrak{\s*Z\s*}' contained conceal cchar=ℨ 166 | 167 | " \mathcal characters 168 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*A\s*}' contained conceal cchar=𝓐 169 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*B\s*}' contained conceal cchar=𝓑 170 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*C\s*}' contained conceal cchar=𝓒 171 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*D\s*}' contained conceal cchar=𝓓 172 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*E\s*}' contained conceal cchar=𝓔 173 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*F\s*}' contained conceal cchar=𝓕 174 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*G\s*}' contained conceal cchar=𝓖 175 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*H\s*}' contained conceal cchar=𝓗 176 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*I\s*}' contained conceal cchar=𝓘 177 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*J\s*}' contained conceal cchar=𝓙 178 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*K\s*}' contained conceal cchar=𝓚 179 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*L\s*}' contained conceal cchar=𝓛 180 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*M\s*}' contained conceal cchar=𝓜 181 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*N\s*}' contained conceal cchar=𝓝 182 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*O\s*}' contained conceal cchar=𝓞 183 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*P\s*}' contained conceal cchar=𝓟 184 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*Q\s*}' contained conceal cchar=𝓠 185 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*R\s*}' contained conceal cchar=𝓡 186 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*S\s*}' contained conceal cchar=𝓢 187 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*T\s*}' contained conceal cchar=𝓣 188 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*U\s*}' contained conceal cchar=𝓤 189 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*V\s*}' contained conceal cchar=𝓥 190 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*W\s*}' contained conceal cchar=𝓦 191 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*X\s*}' contained conceal cchar=𝓧 192 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*Y\s*}' contained conceal cchar=𝓨 193 | syn match texMathSymbol '\\math\%(scr\|cal\){\s*Z\s*}' contained conceal cchar=𝓩 194 | 195 | syn match texSpecialChar '\\#' contained conceal cchar=# 196 | 197 | syn match texStatement '``' contained conceal cchar=“ 198 | syn match texStatement '\'\'' contained conceal cchar=” 199 | syn match texStatement '\\item\>' contained conceal cchar=• 200 | syn match texStatement '\\ldots' contained conceal cchar=… 201 | syn match texStatement '\\quad' contained conceal cchar= 202 | syn match texStatement '\\qquad' contained conceal cchar= 203 | "syn match texStatement '\\\[' contained conceal cchar=⟦ 204 | "syn match texStatement '\\\]' contained conceal cchar=⟧ 205 | syn match texDelimiter '\\{' contained conceal cchar={ 206 | syn match texDelimiter '\\}' contained conceal cchar=} 207 | syn match texMathSymbol '\\setminus\>' contained conceal cchar=\ 208 | syn match texMathSymbol '\\coloneqq\>' contained conceal cchar=≔ 209 | syn match texMathSymbol '\\colon\>' contained conceal cchar=: 210 | syn match texMathSymbol '\\:' contained conceal cchar= 211 | syn match texMathSymbol '\\;' contained conceal cchar= 212 | syn match texMathSymbol '\\,' contained conceal cchar= 213 | syn match texMathSymbol '\\ ' contained conceal cchar= 214 | syn match texMathSymbol '\\quad' contained conceal cchar= 215 | syn match texMathSymbol '\\qquad' contained conceal cchar= 216 | syn match texMathSymbol '\\sqrt' contained conceal cchar=√ 217 | syn match texMathSymbol '\\sqrt\[3]' contained conceal cchar=∛ 218 | syn match texMathSymbol '\\sqrt\[4]' contained conceal cchar=∜ 219 | syn match texMathSymbol '\\\!' contained conceal 220 | syn match texMathSymbol '\\therefore' contained conceal cchar=∴ 221 | syn match texMathSymbol '\\because' contained conceal cchar=∵ 222 | 223 | if !exists('g:tex_conceal_frac') 224 | let g:tex_conceal_frac = 0 225 | endif 226 | if g:tex_conceal_frac == 1 227 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(2\|{2}\)' contained conceal cchar=½ 228 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(3\|{3}\)' contained conceal cchar=⅓ 229 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(2\|{2}\)\(3\|{3}\)' contained conceal cchar=⅔ 230 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(4\|{4}\)' contained conceal cchar=¼ 231 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(5\|{5}\)' contained conceal cchar=⅕ 232 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(2\|{2}\)\(5\|{5}\)' contained conceal cchar=⅖ 233 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(3\|{3}\)\(5\|{5}\)' contained conceal cchar=⅗ 234 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(4\|{4}\)\(5\|{5}\)' contained conceal cchar=⅘ 235 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(6\|{6}\)' contained conceal cchar=⅙ 236 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(5\|{5}\)\(6\|{6}\)' contained conceal cchar=⅚ 237 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(1\|{1}\)\(8\|{8}\)' contained conceal cchar=⅛ 238 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(3\|{3}\)\(8\|{8}\)' contained conceal cchar=⅜ 239 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(5\|{5}\)\(8\|{8}\)' contained conceal cchar=⅝ 240 | syn match texMathSymbol '\\\(\(d\|t\)\|\)frac\(7\|{7}\)\(8\|{8}\)' contained conceal cchar=⅞ 241 | end 242 | 243 | " hide \text delimiter etc inside math mode 244 | if !exists("g:tex_nospell") || !g:tex_nospell 245 | syn region texMathText matchgroup=texStatement start='\\\%(\%(inter\)\=mathrm\)\s*{' end='}' concealends keepend contains=@texFoldGroup containedin=texMathMatcher 246 | syn region texMathText matchgroup=texStatement start='\\\%(\%(inter\)\=text\|mbox\)\s*{' end='}' concealends keepend contains=@texFoldGroup,@Spell containedin=texMathMatcher 247 | else 248 | syn region texMathText matchgroup=texStatement start='\\\%(\%(inter\)\=text\|mbox\|mathrm\)\s*{' end='}' concealends keepend contains=@texFoldGroup containedin=texMathMatcher 249 | endif 250 | 251 | syn region texBoldMathText matchgroup=texStatement start='\\\%(mathbf\|bm\|symbf\|pmb\){' end='}' concealends contains=@texMathZoneGroup containedin=texMathMatcher 252 | syn cluster texMathZoneGroup add=texBoldMathText 253 | 254 | syn region texBoldItalStyle matchgroup=texTypeStyle start="\\emph\s*{" end="}" concealends contains=@texItalGroup 255 | syn region texItalStyle matchgroup=texTypeStyle start="\\emph\s*{" end="}" concealends contains=@texItalGroup 256 | syn region texMatcher matchgroup=texTypeStyle start="\\\%(underline\|uline\){" end="}" concealends contains=@texItalGroup 257 | 258 | hi texBoldMathText cterm=bold gui=bold 259 | hi texUnderStyle cterm=underline gui=underline 260 | match texUnderStyle /\\\%(underline\|uline\){\zs\(.\([^\\]}\)\@/()=]' 268 | else 269 | let s:tex_superscripts= g:tex_superscripts 270 | endif 271 | if !exists("g:tex_subscripts") 272 | let s:tex_subscripts= "[0-9aeijoruvx,+-/().]" 273 | else 274 | let s:tex_subscripts= g:tex_subscripts 275 | endif 276 | 277 | " s:SuperSub: 278 | fun! s:SuperSub(leader, pat, cchar) 279 | if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts) 280 | exe "syn match texMathSymbol '".a:leader.'\%('.a:pat.'\|{\s*'.a:pat.'\s*}\)'."' contained conceal cchar=".a:cchar 281 | endif 282 | endfun 283 | 284 | call s:SuperSub('\^','0','⁰') 285 | call s:SuperSub('\^','1','¹') 286 | call s:SuperSub('\^','2','²') 287 | call s:SuperSub('\^','3','³') 288 | call s:SuperSub('\^','4','⁴') 289 | call s:SuperSub('\^','5','⁵') 290 | call s:SuperSub('\^','6','⁶') 291 | call s:SuperSub('\^','7','⁷') 292 | call s:SuperSub('\^','8','⁸') 293 | call s:SuperSub('\^','9','⁹') 294 | call s:SuperSub('\^','a','ᵃ') 295 | call s:SuperSub('\^','b','ᵇ') 296 | call s:SuperSub('\^','c','ᶜ') 297 | call s:SuperSub('\^','d','ᵈ') 298 | call s:SuperSub('\^','e','ᵉ') 299 | call s:SuperSub('\^','f','ᶠ') 300 | call s:SuperSub('\^','g','ᵍ') 301 | call s:SuperSub('\^','h','ʰ') 302 | call s:SuperSub('\^','i','ⁱ') 303 | call s:SuperSub('\^','j','ʲ') 304 | call s:SuperSub('\^','k','ᵏ') 305 | call s:SuperSub('\^','l','ˡ') 306 | call s:SuperSub('\^','m','ᵐ') 307 | call s:SuperSub('\^','n','ⁿ') 308 | call s:SuperSub('\^','o','ᵒ') 309 | call s:SuperSub('\^','p','ᵖ') 310 | call s:SuperSub('\^','r','ʳ') 311 | call s:SuperSub('\^','s','ˢ') 312 | call s:SuperSub('\^','t','ᵗ') 313 | call s:SuperSub('\^','u','ᵘ') 314 | call s:SuperSub('\^','v','ᵛ') 315 | call s:SuperSub('\^','w','ʷ') 316 | call s:SuperSub('\^','x','ˣ') 317 | call s:SuperSub('\^','y','ʸ') 318 | call s:SuperSub('\^','z','ᶻ') 319 | call s:SuperSub('\^','A','ᴬ') 320 | call s:SuperSub('\^','B','ᴮ') 321 | call s:SuperSub('\^','D','ᴰ') 322 | call s:SuperSub('\^','E','ᴱ') 323 | call s:SuperSub('\^','G','ᴳ') 324 | call s:SuperSub('\^','H','ᴴ') 325 | call s:SuperSub('\^','I','ᴵ') 326 | call s:SuperSub('\^','J','ᴶ') 327 | call s:SuperSub('\^','K','ᴷ') 328 | call s:SuperSub('\^','L','ᴸ') 329 | call s:SuperSub('\^','M','ᴹ') 330 | call s:SuperSub('\^','N','ᴺ') 331 | call s:SuperSub('\^','O','ᴼ') 332 | call s:SuperSub('\^','P','ᴾ') 333 | call s:SuperSub('\^','R','ᴿ') 334 | call s:SuperSub('\^','T','ᵀ') 335 | call s:SuperSub('\^','U','ᵁ') 336 | call s:SuperSub('\^','W','ᵂ') 337 | call s:SuperSub('\^','+','⁺') 338 | call s:SuperSub('\^','-','⁻') 339 | call s:SuperSub('\^','<','˂') 340 | call s:SuperSub('\^','>','˃') 341 | call s:SuperSub('\^','/','ˊ') 342 | call s:SuperSub('\^','(','⁽') 343 | call s:SuperSub('\^',')','⁾') 344 | call s:SuperSub('\^','\.','˙') 345 | call s:SuperSub('\^','=','˭') 346 | call s:SuperSub('\^','\\alpha','ᵅ') 347 | call s:SuperSub('\^','\\beta','ᵝ') 348 | call s:SuperSub('\^','\\gamma','ᵞ') 349 | call s:SuperSub('\^','\\delta','ᵟ') 350 | call s:SuperSub('\^','\\epsilon','ᵋ') 351 | call s:SuperSub('\^','\\theta','ᶿ') 352 | call s:SuperSub('\^','\\iota','ᶥ') 353 | call s:SuperSub('\^','\\Phi','ᶲ') 354 | call s:SuperSub('\^','\\varphi','ᵠ') 355 | call s:SuperSub('\^','\\chi','ᵡ') 356 | 357 | syn match texMathSymbol '\^\%(\*\|\\ast\|\\star\|{\s*\\\%(ast\|star\)\s*}\)' contained conceal cchar=˟ 358 | syn match texMathSymbol '\^{\s*-1\s*}' contained conceal contains=texSuperscripts 359 | syn match texMathSymbol '\^\%(\\math\%(rm\|sf\){\s*T\s*}\|{\s*\\math\%(rm\|sf\){\s*T\s*}\s*}\)' contained conceal contains=texSuperscripts 360 | syn match texMathSymbol '\^\%(\\math\%(rm\|sf\){\s*-T\s*}\|{\s*\\math\%(rm\|sf\){\s*-T\s*}\s*}\|{\s*-\s*\\math\%(rm\|sf\){\s*T\s*}\s*}\)' contained conceal contains=texSuperscripts 361 | syn match texSuperscripts '1' contained conceal cchar=¹ 362 | syn match texSuperscripts '-' contained conceal cchar=⁻ 363 | syn match texSuperscripts 'T' contained conceal cchar=ᵀ 364 | 365 | call s:SuperSub('_','0','₀') 366 | call s:SuperSub('_','1','₁') 367 | call s:SuperSub('_','2','₂') 368 | call s:SuperSub('_','3','₃') 369 | call s:SuperSub('_','4','₄') 370 | call s:SuperSub('_','5','₅') 371 | call s:SuperSub('_','6','₆') 372 | call s:SuperSub('_','7','₇') 373 | call s:SuperSub('_','8','₈') 374 | call s:SuperSub('_','9','₉') 375 | call s:SuperSub('_','a','ₐ') 376 | call s:SuperSub('_','e','ₑ') 377 | call s:SuperSub('_','h','ₕ') 378 | call s:SuperSub('_','i','ᵢ') 379 | call s:SuperSub('_','j','ⱼ') 380 | call s:SuperSub('_','k','ₖ') 381 | call s:SuperSub('_','l','ₗ') 382 | call s:SuperSub('_','m','ₘ') 383 | call s:SuperSub('_','n','ₙ') 384 | call s:SuperSub('_','o','ₒ') 385 | call s:SuperSub('_','p','ₚ') 386 | call s:SuperSub('_','r','ᵣ') 387 | call s:SuperSub('_','s','ₛ') 388 | call s:SuperSub('_','t','ₜ') 389 | call s:SuperSub('_','u','ᵤ') 390 | call s:SuperSub('_','v','ᵥ') 391 | call s:SuperSub('_','x','ₓ') 392 | call s:SuperSub('_','+','₊') 393 | call s:SuperSub('_','-','₋') 394 | call s:SuperSub('_','/','ˏ') 395 | call s:SuperSub('_','(','₍') 396 | call s:SuperSub('_',')','₎') 397 | call s:SuperSub('_','\\beta','ᵦ') 398 | call s:SuperSub('_','\\rho','ᵨ') 399 | call s:SuperSub('_','\\phi','ᵩ') 400 | call s:SuperSub('_','\\gamma','ᵧ') 401 | call s:SuperSub('_','\\chi','ᵪ') 402 | -------------------------------------------------------------------------------- /.nvim/after/syntax/tex/amsmath.vim: -------------------------------------------------------------------------------- 1 | " amsmath.vim 2 | " Author: Charles E. Campbell 3 | " Date: Jun 29, 2018 - Apr 01, 2019 4 | " Version: 1d ASTRO-ONLY 5 | " 6 | " Useful for \usepackage{amssymb,amsmath} 7 | " --------------------------------------------------------------------- 8 | let b:loaded_amsmath = "v1d" 9 | let s:keepcpo = &cpo 10 | set cpo&vim 11 | 12 | " --------------------------------------------------------------------- 13 | " AMS-Math Package Support: {{{1 14 | call TexNewMathZone("E","align",1) 15 | call TexNewMathZone("F","alignat",1) 16 | call TexNewMathZone("G","equation",1) 17 | call TexNewMathZone("H","flalign",1) 18 | call TexNewMathZone("I","gather",1) 19 | call TexNewMathZone("J","multline",1) 20 | call TexNewMathZone("K","xalignat",1) 21 | call TexNewMathZone("L","xxalignat",0) 22 | 23 | syn match texBadMath "\\end\s*{\s*\(align\|alignat\|equation\|flalign\|gather\|multline\|xalignat\|xxalignat\)\*\=\s*}" 24 | 25 | " Amsmath [lr][vV]ert (Holger Mitschke) 26 | let s:texMathDelimList=[ 27 | \ ['\\lvert' , '|'] , 28 | \ ['\\rvert' , '|'] , 29 | \ ['\\lVert' , '‖'] , 30 | \ ['\\rVert' , '‖'] , 31 | \ ] 32 | for texmath in s:texMathDelimList 33 | execute "syntax match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1] 34 | endfor 35 | 36 | " --------------------------------------------------------------------- 37 | " AMS-Math and AMS-Symb Package Support: {{{1 38 | let s:texMathList=[ 39 | \ ['backepsilon' , '∍'] , 40 | \ ['backsimeq' , '≃'] , 41 | \ ['barwedge' , '⊼'] , 42 | \ ['because' , '∵'] , 43 | \ ['beth' , 'ܒ'] , 44 | \ ['between' , '≬'] , 45 | \ ['blacksquare' , '∎'] , 46 | \ ['Box' , '☐'] , 47 | \ ['boxdot' , '⊡'] , 48 | \ ['boxminus' , '⊟'] , 49 | \ ['boxplus' , '⊞'] , 50 | \ ['boxtimes' , '⊠'] , 51 | \ ['bumpeq' , '≏'] , 52 | \ ['Bumpeq' , '≎'] , 53 | \ ['Cap' , '⋒'] , 54 | \ ['circeq' , '≗'] , 55 | \ ['circlearrowleft' , '↺'] , 56 | \ ['circlearrowright' , '↻'] , 57 | \ ['circledast' , '⊛'] , 58 | \ ['circledcirc' , '⊚'] , 59 | \ ['colon' , ':'] , 60 | \ ['complement' , '∁'] , 61 | \ ['Cup' , '⋓'] , 62 | \ ['curlyeqprec' , '⋞'] , 63 | \ ['curlyeqsucc' , '⋟'] , 64 | \ ['curlyvee' , '⋎'] , 65 | \ ['curlywedge' , '⋏'] , 66 | \ ['doteqdot' , '≑'] , 67 | \ ['dotplus' , '∔'] , 68 | \ ['dotsb' , '⋯'] , 69 | \ ['dotsc' , '…'] , 70 | \ ['dotsi' , '⋯'] , 71 | \ ['dotso' , '…'] , 72 | \ ['doublebarwedge' , '⩞'] , 73 | \ ['eqcirc' , '≖'] , 74 | \ ['eqsim' , '≂'] , 75 | \ ['eqslantgtr' , '⪖'] , 76 | \ ['eqslantless' , '⪕'] , 77 | \ ['eth' , 'ð'] , 78 | \ ['fallingdotseq' , '≒'] , 79 | \ ['geqq' , '≧'] , 80 | \ ['gimel' , 'ℷ'] , 81 | \ ['gneqq' , '≩'] , 82 | \ ['gtrdot' , '⋗'] , 83 | \ ['gtreqless' , '⋛'] , 84 | \ ['gtrless' , '≷'] , 85 | \ ['gtrsim' , '≳'] , 86 | \ ['iiint' , '∭'] , 87 | \ ['iint' , '∬'] , 88 | \ ['implies' , '⇒'] , 89 | \ ['leadsto' , '↝'] , 90 | \ ['leftarrowtail' , '↢'] , 91 | \ ['leftrightsquigarrow', '↭'] , 92 | \ ['leftthreetimes' , '⋋'] , 93 | \ ['leqq' , '≦'] , 94 | \ ['lessdot' , '⋖'] , 95 | \ ['lesseqgtr' , '⋚'] , 96 | \ ['lesssim' , '≲'] , 97 | \ ['lneqq' , '≨'] , 98 | \ ['ltimes' , '⋉'] , 99 | \ ['measuredangle' , '∡'] , 100 | \ ['ncong' , '≇'] , 101 | \ ['nexists' , '∄'] , 102 | \ ['ngeq' , '≱'] , 103 | \ ['ngeqq' , '≱'] , 104 | \ ['ngtr' , '≯'] , 105 | \ ['nleftarrow' , '↚'] , 106 | \ ['nLeftarrow' , '⇍'] , 107 | \ ['nLeftrightarrow' , '⇎'] , 108 | \ ['nleq' , '≰'] , 109 | \ ['nleqq' , '≰'] , 110 | \ ['nless' , '≮'] , 111 | \ ['nmid' , '∤'] , 112 | \ ['nparallel' , '∦'] , 113 | \ ['nprec' , '⊀'] , 114 | \ ['nrightarrow' , '↛'] , 115 | \ ['nRightarrow' , '⇏'] , 116 | \ ['nsim' , '≁'] , 117 | \ ['nsucc' , '⊁'] , 118 | \ ['ntriangleleft' , '⋪'] , 119 | \ ['ntrianglelefteq' , '⋬'] , 120 | \ ['ntriangleright' , '⋫'] , 121 | \ ['ntrianglerighteq' , '⋭'] , 122 | \ ['nvdash' , '⊬'] , 123 | \ ['nvDash' , '⊭'] , 124 | \ ['nVdash' , '⊮'] , 125 | \ ['pitchfork' , '⋔'] , 126 | \ ['precapprox' , '⪷'] , 127 | \ ['preccurlyeq' , '≼'] , 128 | \ ['precnapprox' , '⪹'] , 129 | \ ['precneqq' , '⪵'] , 130 | \ ['precsim' , '≾'] , 131 | \ ['rightarrowtail' , '↣'] , 132 | \ ['rightsquigarrow' , '↝'] , 133 | \ ['rightthreetimes' , '⋌'] , 134 | \ ['risingdotseq' , '≓'] , 135 | \ ['rtimes' , '⋊'] , 136 | \ ['sphericalangle' , '∢'] , 137 | \ ['star' , '✫'] , 138 | \ ['subset' , '⊂'] , 139 | \ ['Subset' , '⋐'] , 140 | \ ['subseteqq' , '⫅'] , 141 | \ ['subsetneq' , '⊊'] , 142 | \ ['subsetneqq' , '⫋'] , 143 | \ ['succapprox' , '⪸'] , 144 | \ ['succcurlyeq' , '≽'] , 145 | \ ['succnapprox' , '⪺'] , 146 | \ ['succneqq' , '⪶'] , 147 | \ ['succsim' , '≿'] , 148 | \ ['Supset' , '⋑'] , 149 | \ ['supseteqq' , '⫆'] , 150 | \ ['supsetneq' , '⊋'] , 151 | \ ['supsetneqq' , '⫌'] , 152 | \ ['therefore' , '∴'] , 153 | \ ['trianglelefteq' , '⊴'] , 154 | \ ['triangleq' , '≜'] , 155 | \ ['trianglerighteq' , '⊵'] , 156 | \ ['twoheadleftarrow' , '↞'] , 157 | \ ['twoheadrightarrow' , '↠'] , 158 | \ ['ulcorner' , '⌜'] , 159 | \ ['urcorner' , '⌝'] , 160 | \ ['varnothing' , '∅'] , 161 | \ ['vartriangle' , '∆'] , 162 | \ ['vDash' , '⊨'] , 163 | \ ['Vdash' , '⊩'] , 164 | \ ['veebar' , '⊻'] , 165 | \ ['Vvdash' , '⊪']] 166 | 167 | for texmath in s:texMathList 168 | if texmath[0] =~# '\w$' 169 | exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] 170 | else 171 | exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1] 172 | endif 173 | endfor 174 | 175 | 176 | " --------------------------------------------------------------------- 177 | " Restore: {{{1 178 | let &cpo= s:keepcpo 179 | unlet s:keepcpo 180 | " vim: ts=4 fdm=marker 181 | -------------------------------------------------------------------------------- /.nvim/plugs: -------------------------------------------------------------------------------- 1 | " vim 2 | call plug#begin('~/.nvim/plugged') 3 | 4 | Plug 'preservim/nerdtree' 5 | " Plug 'davidhalter/jedi-vim' 6 | Plug 'itchyny/lightline.vim' 7 | Plug 'junegunn/goyo.vim' 8 | Plug 'arcticicestudio/nord-vim' 9 | Plug 'Townk/vim-autoclose' 10 | Plug 'tpope/vim-commentary' 11 | Plug 'vim-latex/vim-latex' 12 | Plug 'sheerun/vim-polyglot' 13 | Plug 'aperezdc/vim-template' 14 | Plug 'catppuccin/nvim', { 'as': 'catppuccin' } 15 | 16 | call plug#end() 17 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.bash: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # %FFILE% 4 | # Copyright (C) %YEAR% %USER% <%MAIL%> 5 | # 6 | # Distributed under terms of the %LICENSE% license. 7 | # 8 | 9 | 10 | %HERE% 11 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.c: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.c++: -------------------------------------------------------------------------------- 1 | // Author: Tristan Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.cc: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.cmake: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | 3 | # projectname is the same as the main-executable 4 | project(%HERE%%FDIR%) 5 | 6 | add_definitions('-g') 7 | add_definitions('-Wall') 8 | #add_definitions('-std=c++11') 9 | 10 | add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) 11 | 12 | add_custom_target(${PROJECT_NAME}-symlink ALL ln --force -s ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/${PROJECT_NAME} DEPENDS ${PROJECT_NAME}) 13 | set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}) 14 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.coffee: -------------------------------------------------------------------------------- 1 | ### 2 | # %FFILE% 3 | # Copyright (C) %YEAR% %USER% <%MAIL%> 4 | # 5 | # Distributed under terms of the %LICENSE% license. 6 | ### 7 | 8 | %HERE% 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.cpp: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll; 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.css: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | 8 | body { 9 | %HERE%background: white; 10 | color: black; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.cxx: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.dart: -------------------------------------------------------------------------------- 1 | // 2 | // %FFILE% 3 | // Copyright (C) %YEAR% %USER% <%MAIL%> 4 | // 5 | // Distributed under terms of the %LICENSE% license. 6 | // 7 | 8 | %HERE% 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.f: -------------------------------------------------------------------------------- 1 | ! 2 | ! %FFILE% 3 | ! Copyright (C) %YEAR% %USER% <%MAIL%> 4 | ! 5 | ! Distributed under terms of the %LICENSE% license. 6 | ! 7 | 8 | %HERE% 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.f90: -------------------------------------------------------------------------------- 1 | ! 2 | ! %FFILE% 3 | ! Copyright (C) %YEAR% %USER% <%MAIL%> 4 | ! 5 | ! Distributed under terms of the %LICENSE% license. 6 | ! 7 | 8 | %HERE% 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.go: -------------------------------------------------------------------------------- 1 | // 2 | // %FFILE% 3 | // Copyright (C) %YEAR% %USER% <%MAIL%> 4 | // 5 | // Distributed under terms of the %LICENSE% license. 6 | // 7 | 8 | package main 9 | 10 | %HERE% 11 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.h: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | 8 | #ifndef %GUARD% 9 | #define %GUARD% 10 | 11 | %HERE% 12 | 13 | #endif /* !%GUARD% */ 14 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.hs: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env runhugs +l 2 | -- 3 | -- %FFILE% 4 | -- Copyright (C) %YEAR% %USER% <%MAIL%> 5 | -- 6 | -- Distributed under terms of the %LICENSE% license. 7 | -- 8 | 9 | module %FILE% where 10 | 11 | 12 | %HERE% 13 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %CLASS% 6 | 7 | 8 | %HERE% 9 | 10 | 11 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.humans.txt: -------------------------------------------------------------------------------- 1 | /* TEAM */ 2 | Your title: %USER% 3 | Site: %MAIL%, link to a contact form, etc. 4 | Twitter: your Twitter username. 5 | Location: City, Country. 6 | 7 | %HERE% 8 | 9 | /* THANKS */ 10 | Name: name or url 11 | 12 | /* SITE */ 13 | Last update: YYYY/MM/DD 14 | Standards: HTML5, CSS3,.. 15 | Components: Modernizr, jQuery, etc. 16 | Software: Software used for the development 17 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.java: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | 8 | public class %FILE% 9 | { 10 | public %FILE%() { 11 | %HERE% 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.jl: -------------------------------------------------------------------------------- 1 | #= 2 | %FILE% 3 | Copyright © %YEAR% %USER% <%MAIL%> 4 | 5 | Distributed under terms of the %LICENSE% license. 6 | =# 7 | 8 | %HERE% 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.js: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | (function(){ 8 | 'use strict'; 9 | 10 | %HERE% 11 | })(); 12 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;Charset=UTF-8" pageEncoding="UTF-8" %> 2 | <%@ taglib prefix="" tagdir="/WEB-INF/tags"%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | %HERE% 11 | 12 | 13 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.jsx: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | import React, { Component } from 'react' 8 | 9 | 10 | class %FILE% extends Component { 11 | constructor(props: any) { 12 | super(props) 13 | 14 | } 15 | 16 | render() { 17 | return ( 18 | %HERE% 19 | ) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.lhs: -------------------------------------------------------------------------------- 1 | %FILE% by %USER% 2 | %FDATE% 3 | 4 | %HERE% 5 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.lua: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env lua 2 | -- 3 | -- %FFILE% 4 | -- Copyright (C) %YEAR% %USER% <%MAIL%> 5 | -- 6 | -- Distributed under terms of the %LICENSE% license. 7 | -- 8 | 9 | %HERE% 10 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.m: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.mk: -------------------------------------------------------------------------------- 1 | # 2 | # %FFILE% 3 | # %USER%, %FDATE% 4 | # 5 | 6 | all: 7 | %HERE%@echo "%FFILE% needs your attention" 8 | 9 | 10 | # vim:ft=make 11 | # -------------------------------------------------------------------------------- /.nvim/templates/=template=.ml: -------------------------------------------------------------------------------- 1 | (* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | *) 7 | 8 | 9 | let %HERE% 10 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.mm: -------------------------------------------------------------------------------- 1 | // Author: Erica Ferrua 2 | // %YEAR%-%MONTH%-%DATE% %TIME% 3 | // Filename %FFILE% 4 | 5 | #include 6 | 7 | using namespace std; 8 | 9 | typedef long long ll 10 | 11 | int main() { 12 | 13 | %HERE% 14 | 15 | return 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 0.1 8 | * @copyright (C) %YEAR% %USER% <%MAIL%> 9 | * @license %LICENSE% 10 | */ 11 | 12 | %HERE% 13 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.pl: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env perl 2 | # 3 | # Short description for %FFILE% 4 | # 5 | # Author %USER% <%MAIL%> 6 | # Version 0.1 7 | # Copyright (C) %YEAR% %USER% <%MAIL%> 8 | # Modified On %FDATE% 9 | # Created %FDATE% 10 | # 11 | use strict; 12 | use warnings; 13 | 14 | 15 | 16 | %HERE% 17 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.pls: -------------------------------------------------------------------------------- 1 | create or replace package %FILE% 2 | is 3 | /* 4 | * %FFILE% 5 | * Copyright (C) %YEAR% %USER% <%MAIL%> 6 | * 7 | * Distributed under terms of the %LICENSE% license. 8 | */ 9 | 10 | procedure main (pv_param1 varchar2(50) 11 | ,pv_param2 varchar2(50)); 12 | 13 | end %FILE% 14 | / 15 | 16 | show errors 17 | exit 18 | 19 | 20 | create or replace package body %FILE% 21 | is 22 | /* 23 | * %FFILE% 24 | * Copyright (C) %YEAR% %USER% <%MAIL%> 25 | * 26 | * Distributed under terms of the %LICENSE% license. 27 | */ 28 | 29 | procedure main (pv_param1 varchar2(50) 30 | ,pv_param2 varchar2(50)) 31 | is 32 | 33 | begin 34 | 35 | null; 36 | 37 | exception 38 | when others then 39 | 40 | raise; 41 | 42 | end main; 43 | 44 | end %FILE% 45 | / 46 | 47 | show errors 48 | exit 49 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.pm: -------------------------------------------------------------------------------- 1 | package %FILE%; 2 | # 3 | # Short description for %FFILE% 4 | # 5 | # Author %USER% <%MAIL%> 6 | # Version 0.1 7 | # Copyright (C) %YEAR% %USER% <%MAIL%> 8 | # Modified On %FDATE% 9 | # Created %FDATE% 10 | # 11 | use strict; 12 | use warnings; 13 | 14 | our @ISA = qw(Exporter); 15 | our %EXPORT_TAGS = ( 'all' => [ qw() ] ); 16 | our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); 17 | our @EXPORT = qw(); 18 | our $VERSION = '1.00'; 19 | require Exporter; 20 | use AutoLoader qw(AUTOLOAD); 21 | 22 | 23 | sub new 24 | { 25 | my $class = shift; 26 | my $arg = shift; 27 | my $self = {}; 28 | 29 | %HERE% 30 | 31 | bless($self, $class); 32 | return $self; 33 | } 34 | 35 | 36 | 1; 37 | # __END__ 38 | # # Below is stub documentation for your module. You'd better edit it! 39 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.pro: -------------------------------------------------------------------------------- 1 | PRO %FILE% 2 | ;+ 3 | ; Name: 4 | ; %FILE% 5 | ; Purpose: 6 | ; 7 | ; Calling sequence: 8 | ; %FILE% 9 | ; Input: 10 | ; 11 | ; Output: 12 | ; 13 | ; Keywords: 14 | ; 15 | ; History: 16 | ; 17 | ; Author: 18 | ; Copyright © %YEAR% %USER% <%MAIL%> 19 | ; Distributed under terms of the %LICENSE% license. 20 | ;- 21 | 22 | COMPILE_OPT IDL2 ;Set compile options 23 | 24 | %HERE% 25 | 26 | END 27 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.py: -------------------------------------------------------------------------------- 1 | # Author: Erica Ferrua 2 | # %YEAR%-%MONTH%-%DAY% %TIME% 3 | # Filename: %FFILE% 4 | 5 | import math 6 | 7 | %HERE% 8 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # 3 | # %FFILE% 4 | # Copyright (C) %YEAR% %USER% <%MAIL%> 5 | # 6 | # Distributed under terms of the %LICENSE% license. 7 | # 8 | 9 | 10 | %HERE% 11 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.robots.txt: -------------------------------------------------------------------------------- 1 | # 2 | # The Web Robots Pages (http://www.robotstxt.org/) 3 | # 4 | 5 | User-agent: * 6 | Disallow: 7 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.rs: -------------------------------------------------------------------------------- 1 | // 2 | // %FFILE% 3 | // Copyright (C) %YEAR% %USER% <%MAIL%> 4 | // Distributed under terms of the %LICENSE% license. 5 | // 6 | 7 | %HERE% 8 | 9 | 10 | #[cfg(test)] 11 | mod tests { 12 | use super::*; 13 | 14 | #[test] 15 | fn it_works() { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # 3 | # %FFILE% 4 | # Copyright (C) %YEAR% %USER% <%MAIL%> 5 | # 6 | # Distributed under terms of the %LICENSE% license. 7 | # 8 | 9 | 10 | %HERE% 11 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.sol: -------------------------------------------------------------------------------- 1 | // Copyright © %YEAR% %USER% <%MAIL%> 2 | // 3 | // Distributed under terms of the %LICENSE% license. 4 | 5 | pragma solidity ^0.4.4; 6 | 7 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * %FFILE% 3 | * Copyright (C) %YEAR% %USER% <%MAIL%> 4 | * 5 | * Distributed under terms of the %LICENSE% license. 6 | */ 7 | 8 | select %HERE% 9 | 10 | 11 | -- vim:et 12 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.tex: -------------------------------------------------------------------------------- 1 | % vim:ft=tex: 2 | % 3 | \documentclass[a4paper,notitlepage]{article} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage[T1]{fontenc} 6 | \usepackage[icelandic]{babel} 7 | \usepackage{fancyhdr} 8 | \usepackage{amsmath} 9 | \usepackage{amssymb} 10 | \usepackage{enumitem} 11 | \usepackage[margin=1.5in]{geometry} 12 | 13 | \fancypagestyle{firstpage}{ 14 | \fancyhf{} 15 | \fancyhead[L]{Grein \\ ABC123 \\ } 16 | \fancyhead[R]{Erica Ferrua Edwardsdóttir \\ Dags \\ tfe1@hi.is} 17 | \fancyfoot[C]{\thepage} 18 | } 19 | 20 | \title{Titill} 21 | \date{} 22 | \author{} 23 | 24 | \fancypagestyle{otherpages}{ 25 | \fancyhf{} 26 | \fancyfoot[C]{\thepage} 27 | } 28 | 29 | \newcommand{\quotes}[1]{,,#1''} 30 | 31 | \makeatletter 32 | \newcommand{\leqnomode}{\tagsleft@true} 33 | \newcommand{\reqnomode}{\tagsleft@false} 34 | \makeatother 35 | 36 | \renewcommand{\headrulewidth}{0pt} 37 | \renewcommand{\labelenumi}{\alph{enumi}.} 38 | 39 | \setlength{\parindent}{0ex} 40 | 41 | \pagestyle{otherpages} 42 | 43 | \DeclareMathOperator*{\adj}{adj} 44 | \DeclareMathOperator*{\nul}{Null} 45 | \DeclareMathOperator*{\col}{Col} 46 | \newcommand{\detmat}[1]{\left|\begin{matrix} #1 \end{matrix}\right|} 47 | \newcommand{\vect}[1]{\left[\begin{array}{r} #1 \end{array}\right]} 48 | 49 | \begin{document} 50 | 51 | \maketitle 52 | \thispagestyle{firstpage} 53 | 54 | %HERE% 55 | 56 | \end{document} 57 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.txt: -------------------------------------------------------------------------------- 1 | %FFILE% 2 | 3 | :Author: %USER% 4 | :Email: %MAIL% 5 | :Date: %FDATE% 6 | 7 | %HERE% 8 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.xml: -------------------------------------------------------------------------------- 1 | 2 | <%FILE%> 3 | 4 | %HERE% 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | %HERE% 11 | 12 | 13 | -------------------------------------------------------------------------------- /.nvim/templates/=template=.zcml: -------------------------------------------------------------------------------- 1 | 5 | 6 | %HERE% 7 | 8 | 9 | -------------------------------------------------------------------------------- /.nvim/templates/=template=CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | 3 | # projectname is the same as the main-executable 4 | project(%HERE%%FDIR%) 5 | 6 | add_definitions('-g') 7 | add_definitions('-Wall') 8 | #add_definitions('-std=c++11') 9 | 10 | add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) 11 | 12 | add_custom_target(${PROJECT_NAME}-symlink ALL ln --force -s ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/${PROJECT_NAME} DEPENDS ${PROJECT_NAME}) 13 | set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}) 14 | -------------------------------------------------------------------------------- /.nvim/templates/=template=GNUmakefile: -------------------------------------------------------------------------------- 1 | # 2 | # %FFILE% 3 | # %USER%, %FDATE% 4 | # 5 | 6 | all: 7 | %HERE%@echo "%FFILE% needs your attention" 8 | 9 | 10 | # vim:ft=make 11 | # -------------------------------------------------------------------------------- /.nvim/templates/=template=Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # %FFILE% 3 | # %USER%, %FDATE% 4 | # 5 | 6 | all: 7 | %HERE%@echo "%FFILE% needs your attention" 8 | 9 | 10 | # vim:ft=make 11 | # -------------------------------------------------------------------------------- /.nvim/vimrc: -------------------------------------------------------------------------------- 1 | let mapleader="," 2 | 3 | inoremap jj 4 | 5 | let g:kite_supported_languages = ['python', 'cpp', 'js'] 6 | 7 | 8 | " C++ 9 | noremap :!g++ % -std=c++17 -o temp 10 | noremap :!g++ % -std=c++17 -o temp; ./temp; rm temp 11 | noremap :!python % 12 | 13 | " Git 14 | nnoremap ga :!git add . 15 | nnoremap gu :!git pull 16 | nnoremap gp :!git commit -am "=strftime("%d %b. %Y")"; git push 17 | 18 | " Look & feel 19 | set number 20 | set nohlsearch 21 | set cmdheight=1 22 | set scrolloff=10 23 | set noshowmode 24 | 25 | " Filetypes 26 | syntax on 27 | 28 | " Colorscheme 29 | set termguicolors 30 | 31 | colorscheme catppuccin-mocha 32 | 33 | " Lightline 34 | let g:lightline = { 35 | \ 'colorscheme': 'catppuccin', 36 | \ 'active': { 37 | \ 'left': [ ['mode', 'paste'], 38 | \ ['readonly', 'filename','kite', 'modified'] ] 39 | \ }, 40 | \ } 41 | set laststatus=2 42 | 43 | 44 | " Tab 45 | filetype plugin indent on 46 | 47 | set expandtab 48 | set autoindent 49 | 50 | set shiftwidth=4 51 | set softtabstop=4 52 | 53 | " LaTeX 54 | let g:Tex_DefaultTargetFormat = 'pdf' 55 | let g:Tex_CompileRule_pdf = 'pdflatex -shell-escape $*' 56 | let g:Tex_ViewRule_pdf = 'zathura -c ~/.dotfiles/zathura' 57 | let g:Tex_GotoError=0 58 | 59 | let g:Tex_AdvancedMath = 1 60 | 61 | let g:Tex_IgnoredWarnings = 62 | \"Underfull\n". 63 | \"\\headheight is too small\n". 64 | \"Overfull\n". 65 | \"specifier changed to\n". 66 | \"You have requested\n". 67 | \"Missing number, treated as zero.\n". 68 | \"There were undefined references\n". 69 | \"Citation %.%# undefined\n" 70 | 71 | let g:Tex_IgnoreLevel = 8 72 | 73 | let g:Tex_UseMakefile = 1 74 | 75 | " NerdTree 76 | map :NERDTreeToggle 77 | 78 | " Autoclose 79 | let g:AutoClosePairs = {'"': '"', '[': ']', '''': '''', '(': ')', '{': '}'} 80 | 81 | " Templates 82 | let g:templates_directory = '~/.nvim/templates' 83 | 84 | " Conceal 85 | set conceallevel=2 86 | let g:tex_conceal="abdgm" 87 | hi clear Conceal 88 | 89 | " Random number 90 | let g:seed = srand() 91 | :imap =rand(g:seed) % 1000000 92 | 93 | " Jedi 94 | let g:jedi#show_call_signatures = "1" 95 | autocmd FileType python setlocal completeopt-=preview 96 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | # Path to your oh-my-zsh installation. 5 | export ZSH="/home/kenzie/.oh-my-zsh" 6 | 7 | # Set name of the theme to load --- if set to "random", it will 8 | # load a random theme each time oh-my-zsh is loaded, in which case, 9 | # to know which specific one was loaded, run: echo $RANDOM_THEME 10 | # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 11 | #ZSH_THEME="spaceship" 12 | 13 | # Set list of themes to pick from when loading at random 14 | # Setting this variable when ZSH_THEME=random will cause zsh to load 15 | # a theme from this variable instead of looking in $ZSH/themes/ 16 | # If set to an empty array, this variable will have no effect. 17 | # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) 18 | 19 | # Uncomment the following line to use case-sensitive completion. 20 | # CASE_SENSITIVE="true" 21 | 22 | # Uncomment the following line to use hyphen-insensitive completion. 23 | # Case-sensitive completion must be off. _ and - will be interchangeable. 24 | # HYPHEN_INSENSITIVE="true" 25 | 26 | # Uncomment the following line to disable bi-weekly auto-update checks. 27 | # DISABLE_AUTO_UPDATE="true" 28 | 29 | # Uncomment the following line to automatically update without prompting. 30 | # DISABLE_UPDATE_PROMPT="true" 31 | 32 | # Uncomment the following line to change how often to auto-update (in days). 33 | # export UPDATE_ZSH_DAYS=13 34 | 35 | # Uncomment the following line if pasting URLs and other text is messed up. 36 | # DISABLE_MAGIC_FUNCTIONS="true" 37 | 38 | # Uncomment the following line to disable colors in ls. 39 | # DISABLE_LS_COLORS="true" 40 | 41 | # Uncomment the following line to disable auto-setting terminal title. 42 | # DISABLE_AUTO_TITLE="true" 43 | 44 | # Uncomment the following line to enable command auto-correction. 45 | # ENABLE_CORRECTION="true" 46 | 47 | # Uncomment the following line to display red dots whilst waiting for completion. 48 | # Caution: this setting can cause issues with multiline prompts (zsh 5.7.1 and newer seem to work) 49 | # See https://github.com/ohmyzsh/ohmyzsh/issues/5765 50 | # COMPLETION_WAITING_DOTS="true" 51 | 52 | # Uncomment the following line if you want to disable marking untracked files 53 | # under VCS as dirty. This makes repository status check for large repositories 54 | # much, much faster. 55 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 56 | 57 | # Uncomment the following line if you want to change the command execution time 58 | # stamp shown in the history command output. 59 | # You can set one of the optional three formats: 60 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 61 | # or set a custom format using the strftime function format specifications, 62 | # see 'man strftime' for details. 63 | # HIST_STAMPS="mm/dd/yyyy" 64 | 65 | # Would you like to use another custom folder than $ZSH/custom? 66 | # ZSH_CUSTOM=/path/to/new-custom-folder 67 | 68 | # Which plugins would you like to load? 69 | # Standard plugins can be found in $ZSH/plugins/ 70 | # Custom plugins may be added to $ZSH_CUSTOM/plugins/ 71 | # Example format: plugins=(rails git textmate ruby lighthouse) 72 | # Add wisely, as too many plugins slow down shell startup. 73 | plugins=(git) 74 | 75 | source $ZSH/oh-my-zsh.sh 76 | 77 | # User configuration 78 | 79 | # export MANPATH="/usr/local/man:$MANPATH" 80 | 81 | # You may need to manually set your language environment 82 | # export LANG=en_US.UTF-8 83 | 84 | # Preferred editor for local and remote sessions 85 | # if [[ -n $SSH_CONNECTION ]]; then 86 | # export EDITOR='vim' 87 | # else 88 | # export EDITOR='mvim' 89 | # fi 90 | 91 | # Compilation flags 92 | # export ARCHFLAGS="-arch x86_64" 93 | 94 | # Set personal aliases, overriding those provided by oh-my-zsh libs, 95 | # plugins, and themes. Aliases can be placed here, though oh-my-zsh 96 | # users are encouraged to define aliases within the ZSH_CUSTOM folder. 97 | # For a full list of active aliases, run `alias`. 98 | # 99 | # Example aliases 100 | # alias zshconfig="mate ~/.zshrc" 101 | # alias ohmyzsh="mate ~/.oh-my-zsh" 102 | 103 | #fpath+=$HOME/.zsh/pure 104 | # autoload -U promptinit; promptinit 105 | # prompt pure 106 | # PURE_PROMPT_SYMBOL='-' 107 | eval $(ssh-agent -s) > /dev/null 108 | 109 | alias vim="nvim" 110 | alias icat="kitty +kitten icat" 111 | 112 | alias matlab="matlab -nodesktop -nosplash" 113 | 114 | function get_loc() { 115 | curl -s "https://location.services.mozilla.com/v1/geolocate?key=geoclue" | jq -j ".location | \"\(.lat):\(.lng)\"" 116 | } 117 | 118 | alias redshift='(){ redshift $* -l $(get_loc) ;} 2>&1 | ts >> ~/.redshift.log &; disown' 119 | 120 | zstyle :prompt:pure:prompt:success color green 121 | 122 | # Ruby 123 | # export GEM_HOME="$(ruby -e 'puts Gem.user_dir')" 124 | # path+=('$GEM_HOME/bin') 125 | 126 | # go 127 | path+=$HOME/go/bin 128 | path+=$HOME/.local/bin 129 | 130 | $HOME/.dotfiles/pfetch 131 | 132 | eval "$(starship init zsh)" 133 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # .dotfiles 2 | 3 |
4 | 5 | 6 | 7 |
8 | 9 | ## Widgets 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | ## Pictured 18 | - Window manager: [Hyprland](https://hyprland.org/) 19 | - Color scheme: [Catppuccin](https://github.com/catppuccin/catppuccin) 20 | - fetch: [pfetch-with-kitties](https://github.com/andreasgrafen/pfetch-with-kitties) with [some modifications](https://github.com/GuardKenzie/pfetch-with-kitties) 21 | - PDF viewer: Zathura 22 | - Terminal: [Kitty](https://sw.kovidgoyal.net/kitty/) 23 | - Shell: [Zsh with oh-my-zsh](https://ohmyz.sh/) 24 | - Prompt: [Starship](https://starship.rs/) 25 | - Network and player widget: [EWW](https://github.com/elkowar/eww) 26 | - Workspace and control center widgets: [Waybar](https://github.com/Alexays/Waybar) 27 | - Website: [pokedex.mage.black](https://pokedex.mage.black) 28 | - Editors: [Neovim](https://neovim.io/) and [VSCode](https://code.visualstudio.com/) 29 | - Firefox theme: [Cascade](https://github.com/andreasgrafen/cascade) 30 | 31 | ## Requires 32 | - `nmcli` 33 | - `playerctl` 34 | - `mpc` 35 | - [`python-mpd2`](https://python-mpd2.readthedocs.io/) 36 | -------------------------------------------------------------------------------- /assets/_: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/corner.png -------------------------------------------------------------------------------- /assets/fetch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/fetch.png -------------------------------------------------------------------------------- /assets/network.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/network.gif -------------------------------------------------------------------------------- /assets/player.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/player.gif -------------------------------------------------------------------------------- /assets/pokemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/pokemon.png -------------------------------------------------------------------------------- /assets/tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuardKenzie/kastali/cf4c989fb742f4560d82384872e1576f25fd82fe/assets/tex.png --------------------------------------------------------------------------------