feat: init
6ba25b63
107 file(s) · +11104 −0
| 1 | + | /zed/conversations/* |
|
| 2 | + | .DS_Store |
|
| 3 | + | /zed/.config/zed/prompts/prompts-library-db.0.mdb/ |
|
| 4 | + | */.DS_Store |
|
| 5 | + |
| 1 | + | [general] |
|
| 2 | + | live_config_reload = true |
|
| 3 | + | ||
| 4 | + | [env] |
|
| 5 | + | TERM = "xterm-256color" |
|
| 6 | + | ||
| 7 | + | [window] |
|
| 8 | + | decorations = "None" |
|
| 9 | + | dimensions = { columns = 85, lines = 30 } |
|
| 10 | + | padding = { x = 10, y = 4 } |
|
| 11 | + | dynamic_padding = false |
|
| 12 | + | opacity = 0.9 |
|
| 13 | + | ||
| 14 | + | [font] |
|
| 15 | + | size = 11 |
|
| 16 | + | ||
| 17 | + | [font.normal] |
|
| 18 | + | family = "BerkeleyMono Nerd Font" |
|
| 19 | + | style = "Regular" |
|
| 20 | + | ||
| 21 | + | [font.bold] |
|
| 22 | + | family = "BerkeleyMono Nerd Font" |
|
| 23 | + | style = "Bold" |
|
| 24 | + | ||
| 25 | + | [font.italic] |
|
| 26 | + | family = "BerkeleyMono Nerd Font" |
|
| 27 | + | style = "Italic" |
|
| 28 | + | ||
| 29 | + | [font.bold_italic] |
|
| 30 | + | family = "BerkeleyMono Nerd Font" |
|
| 31 | + | style = "Bold Italic" |
|
| 32 | + | ||
| 33 | + | [mouse] |
|
| 34 | + | hide_when_typing = true |
|
| 35 | + | ||
| 36 | + | [cursor] |
|
| 37 | + | style = { shape = "Block", blinking = "Off" } |
|
| 38 | + | ||
| 39 | + | # Darkmatter |
|
| 40 | + | [colors.primary] |
|
| 41 | + | background = "#121113" |
|
| 42 | + | foreground = "#ffffff" |
|
| 43 | + | ||
| 44 | + | [colors.cursor] |
|
| 45 | + | text = "#121113" |
|
| 46 | + | cursor = "#ffffff" |
|
| 47 | + | ||
| 48 | + | [colors.selection] |
|
| 49 | + | text = "#000000" |
|
| 50 | + | background = "#222222" |
|
| 51 | + | ||
| 52 | + | [colors.normal] |
|
| 53 | + | black = "#121113" |
|
| 54 | + | red = "#5f8787" |
|
| 55 | + | green = "#fbcb97" |
|
| 56 | + | yellow = "#e78a53" |
|
| 57 | + | blue = "#888888" |
|
| 58 | + | magenta = "#999999" |
|
| 59 | + | cyan = "#aaaaaa" |
|
| 60 | + | white = "#c1c1c1" |
|
| 61 | + | ||
| 62 | + | [colors.bright] |
|
| 63 | + | black = "#333333" |
|
| 64 | + | red = "#5f8787" |
|
| 65 | + | green = "#fbcb97" |
|
| 66 | + | yellow = "#e78a53" |
|
| 67 | + | blue = "#888888" |
|
| 68 | + | magenta = "#999999" |
|
| 69 | + | cyan = "#aaaaaa" |
|
| 70 | + | white = "#c1c1c1" |
| 1 | + | # This is the default config file. |
|
| 2 | + | # It also shows all the default values, if you don't create the file. |
|
| 3 | + | # You can edit this file to set your own configuration for Amfora. |
|
| 4 | + | ||
| 5 | + | # When Amfora updates, defaults may change, but this file on your drive will not. |
|
| 6 | + | # You can always get the latest defaults on GitHub. |
|
| 7 | + | # https://github.com/makeworld-the-better-one/amfora/blob/master/default-config.toml |
|
| 8 | + | ||
| 9 | + | # Please also check out the Amfora Wiki for more help |
|
| 10 | + | # https://github.com/makeworld-the-better-one/amfora/wiki |
|
| 11 | + | # gemini://makeworld.space/amfora-wiki/ |
|
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | # All URL values may omit the scheme and/or port, as well as the beginning double slash |
|
| 16 | + | # Valid URL examples: |
|
| 17 | + | # gemini://example.com |
|
| 18 | + | # //example.com |
|
| 19 | + | # example.com |
|
| 20 | + | # example.com:123 |
|
| 21 | + | ||
| 22 | + | ||
| 23 | + | [a-general] |
|
| 24 | + | # Press Ctrl-H to access it |
|
| 25 | + | home = "gemini://geminiprotocol.net" |
|
| 26 | + | ||
| 27 | + | # Follow up to 5 Gemini redirects without prompting. |
|
| 28 | + | # A prompt is always shown after the 5th redirect and for redirects to protocols other than Gemini. |
|
| 29 | + | # If set to false, a prompt will be shown before following redirects. |
|
| 30 | + | auto_redirect = false |
|
| 31 | + | ||
| 32 | + | # What command to run to open a HTTP(S) URL. |
|
| 33 | + | # Set to "default" to try to guess the browser, or set to "off" to not open HTTP(S) URLs. |
|
| 34 | + | # If a command is set, than the URL will be added (in quotes) to the end of the command. |
|
| 35 | + | # A space will be prepended to the URL. |
|
| 36 | + | # |
|
| 37 | + | # The best way to define a command is using a string array. |
|
| 38 | + | # Examples: |
|
| 39 | + | # http = ['firefox'] |
|
| 40 | + | # http = ['custom-browser', '--flag', '--option=2'] |
|
| 41 | + | # http = ['/path/with spaces/in it/firefox'] |
|
| 42 | + | # |
|
| 43 | + | # Note the use of single quotes, so that backslashes will not be escaped. |
|
| 44 | + | # Using just a string will also work, but it is deprecated, and will degrade if |
|
| 45 | + | # you use paths with spaces. |
|
| 46 | + | ||
| 47 | + | http = 'default' |
|
| 48 | + | ||
| 49 | + | # Any URL that will accept a query string can be put here |
|
| 50 | + | search = "gemini://kennedy.gemi.dev/search" |
|
| 51 | + | ||
| 52 | + | # Whether colors will be used in the terminal |
|
| 53 | + | color = true |
|
| 54 | + | ||
| 55 | + | # Whether ANSI color codes from the page content should be rendered |
|
| 56 | + | ansi = true |
|
| 57 | + | ||
| 58 | + | # Whether or not to support source code highlighting in preformatted blocks based on alt text |
|
| 59 | + | highlight_code = true |
|
| 60 | + | ||
| 61 | + | # Which highlighting style to use (see https://xyproto.github.io/splash/docs/) |
|
| 62 | + | highlight_style = "monokai" |
|
| 63 | + | ||
| 64 | + | # Whether to replace list asterisks with unicode bullets |
|
| 65 | + | bullets = true |
|
| 66 | + | ||
| 67 | + | # Whether to show link after link text |
|
| 68 | + | show_link = false |
|
| 69 | + | ||
| 70 | + | # The max number of columns to wrap a page's text to. Preformatted blocks are not wrapped. |
|
| 71 | + | max_width = 80 |
|
| 72 | + | ||
| 73 | + | # 'downloads' is the path to a downloads folder. |
|
| 74 | + | # An empty value means the code will find the default downloads folder for your system. |
|
| 75 | + | # If the path does not exist it will be created. |
|
| 76 | + | # Note the use of single quotes, so that backslashes will not be escaped. |
|
| 77 | + | downloads = '' |
|
| 78 | + | ||
| 79 | + | # Max size for displayable content in bytes - after that size a download window pops up |
|
| 80 | + | page_max_size = 2097152 # 2 MiB |
|
| 81 | + | # Max time it takes to load a page in seconds - after that a download window pops up |
|
| 82 | + | page_max_time = 10 |
|
| 83 | + | ||
| 84 | + | # When a scrollbar appears. "never", "auto", and "always" are the only valid values. |
|
| 85 | + | # "auto" means the scrollbar only appears when the page is longer than the window. |
|
| 86 | + | scrollbar = "auto" |
|
| 87 | + | ||
| 88 | + | # Underline non-gemini URLs |
|
| 89 | + | # This is done to help color blind users |
|
| 90 | + | underline = true |
|
| 91 | + | ||
| 92 | + | ||
| 93 | + | [auth] |
|
| 94 | + | # Authentication settings |
|
| 95 | + | # Note the use of single quotes for values, so that backslashes will not be escaped. |
|
| 96 | + | ||
| 97 | + | [auth.certs] |
|
| 98 | + | # Client certificates |
|
| 99 | + | # Set URL equal to path to client cert file |
|
| 100 | + | # |
|
| 101 | + | # "example.com" = 'mycert.crt' # Cert is used for all paths on this domain |
|
| 102 | + | # "example.com/dir/"= 'mycert.crt' # Cert is used for /dir/ and everything below only |
|
| 103 | + | # |
|
| 104 | + | # See the comment at the beginning of this file for examples of all valid types of |
|
| 105 | + | # URLs, ports and schemes can be used too |
|
| 106 | + | "stevedylan.dev" = '/Users/stevedylandev/.local/share/amfora/cert.pem' |
|
| 107 | + | ||
| 108 | + | ||
| 109 | + | [auth.keys] |
|
| 110 | + | # Client certificate keys |
|
| 111 | + | # Same as [auth.certs] but the path is to the client key file. |
|
| 112 | + | "stevedylan.dev" = '/Users/stevedylandev/.local/share/amfora/key.pem' |
|
| 113 | + | ||
| 114 | + | ||
| 115 | + | [commands] |
|
| 116 | + | # Define up to 10 custom commands to execute on the corresponding hotkey press. |
|
| 117 | + | # Commands are run in a new process and will not terminate when Amfora is closed. |
|
| 118 | + | # If you need your command to accept additional input, it is recommended to open |
|
| 119 | + | # a GUI or use a terminal multiplexer like screen or tmux. The string ${url} will |
|
| 120 | + | # be replaced with the current or selected URL. Note that pipes and redirections |
|
| 121 | + | # are not allowed, if these are needed then you should set up a script. Use only |
|
| 122 | + | # absolute paths and/or reference executables in your $PATH. |
|
| 123 | + | # command1 = "my-script -a -b -c ${url}" |
|
| 124 | + | # command2 = "" |
|
| 125 | + | # command3 = "" |
|
| 126 | + | # command4 = "" |
|
| 127 | + | # command5 = "" |
|
| 128 | + | # command6 = "" |
|
| 129 | + | # command7 = "" |
|
| 130 | + | # command8 = "" |
|
| 131 | + | # command9 = "" |
|
| 132 | + | # command0 = "" |
|
| 133 | + | ||
| 134 | + | ||
| 135 | + | [keybindings] |
|
| 136 | + | # If you have a non-US keyboard, use bind_tab1 through bind_tab0 to |
|
| 137 | + | # setup the shift-number bindings: Eg, for US keyboards (the default): |
|
| 138 | + | # bind_tab1 = "!" |
|
| 139 | + | # bind_tab2 = "@" |
|
| 140 | + | # bind_tab3 = "#" |
|
| 141 | + | # bind_tab4 = "$" |
|
| 142 | + | # bind_tab5 = "%" |
|
| 143 | + | # bind_tab6 = "^" |
|
| 144 | + | # bind_tab7 = "&" |
|
| 145 | + | # bind_tab8 = "*" |
|
| 146 | + | # bind_tab9 = "(" |
|
| 147 | + | # bind_tab0 = ")" |
|
| 148 | + | ||
| 149 | + | # Whitespace is not allowed in any of the keybindings! Use 'Space' and 'Tab' to bind to those keys. |
|
| 150 | + | # Multiple keys can be bound to one command, just use a TOML array. |
|
| 151 | + | # To add the Alt modifier, the binding must start with Alt-, should be reasonably universal |
|
| 152 | + | # Ctrl- won't work on all keys, see this for a list: |
|
| 153 | + | # https://github.com/gdamore/tcell/blob/cb1e5d6fa606/key.go#L83 |
|
| 154 | + | ||
| 155 | + | # An example of a TOML array for multiple keys being bound to one command is the default |
|
| 156 | + | # binding for reload: |
|
| 157 | + | # bind_reload = ["R","Ctrl-R"] |
|
| 158 | + | # One thing to note here is that "R" is capitalization sensitive, so it means shift-r. |
|
| 159 | + | # "Ctrl-R" means both ctrl-r and ctrl-shift-R (this is a quirk of what ctrl-r means on |
|
| 160 | + | # an ANSI terminal) |
|
| 161 | + | ||
| 162 | + | # The default binding for opening the bottom bar for entering a URL or link number is: |
|
| 163 | + | # bind_bottom = "Space" |
|
| 164 | + | # This is how to get the Spacebar as a keybinding, if you try to use " ", it won't work. |
|
| 165 | + | # And, finally, an example of a simple, unmodified character is: |
|
| 166 | + | # bind_edit = "e" |
|
| 167 | + | # This binds the "e" key to the command to edit the current URL. |
|
| 168 | + | ||
| 169 | + | # The bind_link[1-90] options are for the commands to go to the first 10 links on a page, |
|
| 170 | + | # typically these are bound to the number keys: |
|
| 171 | + | # bind_link1 = "1" |
|
| 172 | + | # bind_link2 = "2" |
|
| 173 | + | # bind_link3 = "3" |
|
| 174 | + | # bind_link4 = "4" |
|
| 175 | + | # bind_link5 = "5" |
|
| 176 | + | # bind_link6 = "6" |
|
| 177 | + | # bind_link7 = "7" |
|
| 178 | + | # bind_link8 = "8" |
|
| 179 | + | # bind_link9 = "9" |
|
| 180 | + | # bind_link0 = "0" |
|
| 181 | + | ||
| 182 | + | # The bind_command[0-9] options are for the command hotkeys. This will pass the URL of the |
|
| 183 | + | # current tab as an argument. |
|
| 184 | + | # bind_command1 = "Alt-!" |
|
| 185 | + | # bind_command2 = "Alt-@" |
|
| 186 | + | # bind_command3 = "Alt-#" |
|
| 187 | + | # bind_command4 = "Alt-$" |
|
| 188 | + | # bind_command5 = "Alt-%" |
|
| 189 | + | # bind_command6 = "Alt-^" |
|
| 190 | + | # bind_command7 = "Alt-&" |
|
| 191 | + | # bind_command8 = "Alt-*" |
|
| 192 | + | # bind_command9 = "Alt-(" |
|
| 193 | + | # bind_command0 = "Alt-)" |
|
| 194 | + | ||
| 195 | + | # The bind_commandtarget[0-9] options are for command hotkeys that operate on the currently |
|
| 196 | + | # highlighted link. This will pass the URL of the highlighted link as an argument. |
|
| 197 | + | # bind_command_target1 = "Alt-1" |
|
| 198 | + | # bind_command_target2 = "Alt-2" |
|
| 199 | + | # bind_command_target3 = "Alt-3" |
|
| 200 | + | # bind_command_target4 = "Alt-4" |
|
| 201 | + | # bind_command_target5 = "Alt-5" |
|
| 202 | + | # bind_command_target6 = "Alt-6" |
|
| 203 | + | # bind_command_target7 = "Alt-7" |
|
| 204 | + | # bind_command_target8 = "Alt-8" |
|
| 205 | + | # bind_command_target9 = "Alt-9" |
|
| 206 | + | # bind_command_target0 = "Alt-0" |
|
| 207 | + | ||
| 208 | + | # All keybindings: |
|
| 209 | + | # |
|
| 210 | + | # bind_bottom |
|
| 211 | + | # bind_edit |
|
| 212 | + | # bind_home |
|
| 213 | + | # bind_bookmarks |
|
| 214 | + | # bind_add_bookmark |
|
| 215 | + | # bind_save |
|
| 216 | + | # bind_reload |
|
| 217 | + | # bind_back |
|
| 218 | + | # bind_forward |
|
| 219 | + | # bind_moveup |
|
| 220 | + | # bind_movedown |
|
| 221 | + | # bind_moveleft |
|
| 222 | + | # bind_moveright |
|
| 223 | + | # bind_pgup |
|
| 224 | + | # bind_pgdn |
|
| 225 | + | # bind_new_tab |
|
| 226 | + | # bind_close_tab |
|
| 227 | + | # bind_next_tab |
|
| 228 | + | # bind_prev_tab |
|
| 229 | + | # bind_quit |
|
| 230 | + | # bind_help |
|
| 231 | + | # bind_sub: for viewing the subscriptions page |
|
| 232 | + | # bind_add_sub |
|
| 233 | + | # bind_copy_page_url |
|
| 234 | + | # bind_copy_target_url |
|
| 235 | + | # bind_beginning: moving to beginning of page (top left) |
|
| 236 | + | # bind_end: same but the for the end (bottom left) |
|
| 237 | + | # bind_url_handler_open: Open highlighted URL with URL handler (#143) |
|
| 238 | + | ||
| 239 | + | # Search |
|
| 240 | + | # bind_search = "/" |
|
| 241 | + | # bind_next_match = "n" |
|
| 242 | + | # bind_prev_match = "N" |
|
| 243 | + | ||
| 244 | + | [url-handlers] |
|
| 245 | + | # Allows setting the commands to run for various URL schemes. |
|
| 246 | + | # E.g. to open FTP URLs with FileZilla set the following key: |
|
| 247 | + | # ftp = ['filezilla'] |
|
| 248 | + | # You can set any scheme to 'off' or '' to disable handling it, or |
|
| 249 | + | # just leave the key unset. |
|
| 250 | + | # |
|
| 251 | + | # DO NOT use this for setting the HTTP command. |
|
| 252 | + | # Use the http setting in the "a-general" section above. |
|
| 253 | + | # |
|
| 254 | + | # NOTE: These settings are overridden by the ones in the proxies section. |
|
| 255 | + | # |
|
| 256 | + | # The best way to define a command is using a string array. |
|
| 257 | + | # Examples: |
|
| 258 | + | # magnet = ['transmission'] |
|
| 259 | + | # foo = ['custom-browser', '--flag', '--option=2'] |
|
| 260 | + | # tel = ['/path/with spaces/in it/telephone'] |
|
| 261 | + | # |
|
| 262 | + | # Note the use of single quotes, so that backslashes will not be escaped. |
|
| 263 | + | # Using just a string will also work, but it is deprecated, and will degrade if |
|
| 264 | + | # you use paths with spaces. |
|
| 265 | + | ||
| 266 | + | # This is a special key that defines the handler for all URL schemes for which |
|
| 267 | + | # no handler is defined. |
|
| 268 | + | # It uses the special value 'default', which will try and use the default |
|
| 269 | + | # application on your computer for opening this kind of URI. |
|
| 270 | + | other = 'default' |
|
| 271 | + | ||
| 272 | + | [url-prompts] |
|
| 273 | + | # Specify whether a confirmation prompt should be shown before following URL schemes. |
|
| 274 | + | # The special key 'other' matches all schemes that don't match any other key. |
|
| 275 | + | # |
|
| 276 | + | # Example: prompt on every non-gemini URL |
|
| 277 | + | # other = true |
|
| 278 | + | # gemini = false |
|
| 279 | + | # |
|
| 280 | + | # Example: only prompt on HTTP(S) |
|
| 281 | + | # other = false |
|
| 282 | + | # http = true |
|
| 283 | + | # https = true |
|
| 284 | + | ||
| 285 | + | # [[mediatype-handlers]] section |
|
| 286 | + | # --------------------------------- |
|
| 287 | + | # |
|
| 288 | + | # Specify what applications will open certain media types. |
|
| 289 | + | # By default your default application will be used to open the file when you select "Open". |
|
| 290 | + | # You only need to configure this section if you want to override your default application, |
|
| 291 | + | # or do special things like streaming. |
|
| 292 | + | # |
|
| 293 | + | # Note the use of single quotes for commands, so that backslashes will not be escaped. |
|
| 294 | + | # |
|
| 295 | + | # |
|
| 296 | + | # To open jpeg files with the feh command: |
|
| 297 | + | # |
|
| 298 | + | # [[mediatype-handlers]] |
|
| 299 | + | # cmd = ['feh'] |
|
| 300 | + | # types = ["image/jpeg"] |
|
| 301 | + | # |
|
| 302 | + | # Each command that you specify must come under its own [[mediatype-handlers]]. You may |
|
| 303 | + | # specify as many [[mediatype-handlers]] as you want to setup multiple commands. |
|
| 304 | + | # |
|
| 305 | + | # If the subtype is omitted then the specified command will be used for the |
|
| 306 | + | # entire type: |
|
| 307 | + | # |
|
| 308 | + | # [[mediatype-handlers]] |
|
| 309 | + | # command = ['vlc', '--flag'] |
|
| 310 | + | # types = ["audio", "video"] |
|
| 311 | + | # |
|
| 312 | + | # A catch-all handler can by specified with "*". |
|
| 313 | + | # Note that there are already catch-all handlers in place for all OSes, |
|
| 314 | + | # that open the file using your default application. This is only if you |
|
| 315 | + | # want to override that. |
|
| 316 | + | # |
|
| 317 | + | # [[mediatype-handlers]] |
|
| 318 | + | # cmd = ['some-command'] |
|
| 319 | + | # types = [ |
|
| 320 | + | # "application/pdf", |
|
| 321 | + | # "*", |
|
| 322 | + | # ] |
|
| 323 | + | # |
|
| 324 | + | # You can also choose to stream the data instead of downloading it all before |
|
| 325 | + | # opening it. This is especially useful for large video or audio files, as |
|
| 326 | + | # well as radio streams, which will never complete. You can do this like so: |
|
| 327 | + | # |
|
| 328 | + | # [[mediatype-handlers]] |
|
| 329 | + | # cmd = ['vlc', '-'] |
|
| 330 | + | # types = ["audio", "video"] |
|
| 331 | + | # stream = true |
|
| 332 | + | # |
|
| 333 | + | # This uses vlc to stream all video and audio content. |
|
| 334 | + | # By default stream is set to off for all handlers |
|
| 335 | + | # |
|
| 336 | + | # |
|
| 337 | + | # If you want to always open a type in its viewer without the download or open |
|
| 338 | + | # prompt appearing, you can add no_prompt = true |
|
| 339 | + | # |
|
| 340 | + | # [[mediatype-handlers]] |
|
| 341 | + | # cmd = ['feh'] |
|
| 342 | + | # types = ["image"] |
|
| 343 | + | # no_prompt = true |
|
| 344 | + | # |
|
| 345 | + | # Note: Multiple handlers cannot be defined for the same full media type, but |
|
| 346 | + | # still there needs to be an order for which handlers are used. The following |
|
| 347 | + | # order applies regardless of the order written in the config: |
|
| 348 | + | # |
|
| 349 | + | # 1. Full media type: "image/jpeg" |
|
| 350 | + | # 2. Just type: "image" |
|
| 351 | + | # 3. Catch-all: "*" |
|
| 352 | + | ||
| 353 | + | ||
| 354 | + | [cache] |
|
| 355 | + | # Options for page cache - which is only for text pages |
|
| 356 | + | # Increase the cache size to speed up browsing at the expense of memory |
|
| 357 | + | # Zero values mean there is no limit |
|
| 358 | + | ||
| 359 | + | max_size = 0 # Size in bytes |
|
| 360 | + | max_pages = 30 # The maximum number of pages the cache will store |
|
| 361 | + | ||
| 362 | + | # How long a page will stay in cache, in seconds. |
|
| 363 | + | timeout = 1800 # 30 mins |
|
| 364 | + | ||
| 365 | + | [proxies] |
|
| 366 | + | # Allows setting a Gemini proxy for different schemes. |
|
| 367 | + | # The settings are similar to the url-handlers section above. |
|
| 368 | + | # E.g. to open a gopher page by connecting to a Gemini proxy server: |
|
| 369 | + | # gopher = "example.com:123" |
|
| 370 | + | # |
|
| 371 | + | # Port 1965 is assumed if no port is specified. |
|
| 372 | + | # |
|
| 373 | + | # NOTE: These settings override any external handlers specified in |
|
| 374 | + | # the url-handlers section. |
|
| 375 | + | # |
|
| 376 | + | # Note that HTTP and HTTPS are treated as separate protocols here. |
|
| 377 | + | ||
| 378 | + | ||
| 379 | + | [subscriptions] |
|
| 380 | + | # For tracking feeds and pages |
|
| 381 | + | ||
| 382 | + | # Whether a pop-up appears when viewing a potential feed |
|
| 383 | + | popup = true |
|
| 384 | + | ||
| 385 | + | # How often to check for updates to subscriptions in the background, in seconds. |
|
| 386 | + | # Set it to 0 to disable this feature. You can still update individual feeds |
|
| 387 | + | # manually, or restart the browser. |
|
| 388 | + | # |
|
| 389 | + | # Note Amfora will check for updates on browser start no matter what this setting is. |
|
| 390 | + | update_interval = 1800 # 30 mins |
|
| 391 | + | ||
| 392 | + | # How many subscriptions can be checked at the same time when updating. |
|
| 393 | + | # If you have many subscriptions you may want to increase this for faster |
|
| 394 | + | # update times. Any value below 1 will be corrected to 1. |
|
| 395 | + | workers = 3 |
|
| 396 | + | ||
| 397 | + | # The number of subscription updates displayed per page. |
|
| 398 | + | entries_per_page = 20 |
|
| 399 | + | ||
| 400 | + | # Set to false to remove the explanatory text from the top of the subscription page |
|
| 401 | + | header = true |
|
| 402 | + | ||
| 403 | + | ||
| 404 | + | [theme] |
|
| 405 | + | # This section is for changing the COLORS used in Amfora. |
|
| 406 | + | # These colors only apply if 'color' is enabled above. |
|
| 407 | + | # Colors can be set using a W3C color name, or a hex value such as "#ffffff". |
|
| 408 | + | # Setting a background to "default" keeps the terminal default |
|
| 409 | + | # If your terminal has transparency, set any background to "default" to keep it transparent |
|
| 410 | + | # The key "bg" is already set to "default", but this can be used on other backgrounds, |
|
| 411 | + | # like for modals. |
|
| 412 | + | ||
| 413 | + | # Note that not all colors will work on terminals that do not have truecolor support. |
|
| 414 | + | # If you want to stick to the standard 16 or 256 colors, you can get |
|
| 415 | + | # a list of those here: https://jonasjacek.github.io/colors/ |
|
| 416 | + | # DO NOT use the names from that site, just the hex codes. |
|
| 417 | + | ||
| 418 | + | # Definitions: |
|
| 419 | + | # bg = background |
|
| 420 | + | # fg = foreground |
|
| 421 | + | # dl = download |
|
| 422 | + | # btn = button |
|
| 423 | + | # hdg = heading |
|
| 424 | + | # bkmk = bookmark |
|
| 425 | + | # modal = a popup window/box in the middle of the screen |
|
| 426 | + | ||
| 427 | + | # EXAMPLES: |
|
| 428 | + | # hdg_1 = "green" |
|
| 429 | + | # hdg_2 = "#5f0000" |
|
| 430 | + | # bg = "default" |
|
| 431 | + | ||
| 432 | + | # Available keys to set: |
|
| 433 | + | ||
| 434 | + | # bg: background for pages, tab row, app in general |
|
| 435 | + | # tab_num: The number/highlight of the tabs at the top |
|
| 436 | + | # tab_divider: The color of the divider character between tab numbers: | |
|
| 437 | + | # bottombar_label: The color of the prompt that appears when you press space |
|
| 438 | + | # bottombar_text: The color of the text you type |
|
| 439 | + | # bottombar_bg |
|
| 440 | + | # scrollbar: The scrollbar that appears on the right for long pages |
|
| 441 | + | ||
| 442 | + | # You can also set an 'include' key to process another TOML file that contains theme keys. |
|
| 443 | + | # Example: |
|
| 444 | + | # include = "my/path/to/special-theme.toml" |
|
| 445 | + | # |
|
| 446 | + | # Any other theme keys will override this external file. |
|
| 447 | + | # You can use this special key to switch between themes easily. |
|
| 448 | + | # Download other themes here: https://github.com/makeworld-the-better-one/amfora/tree/master/contrib/themes |
|
| 449 | + | ||
| 450 | + | ||
| 451 | + | # hdg_1 |
|
| 452 | + | # hdg_2 |
|
| 453 | + | # hdg_3 |
|
| 454 | + | # amfora_link: A link that Amfora supports viewing. For now this is only gemini:// |
|
| 455 | + | # foreign_link: HTTP(S), Gopher, etc |
|
| 456 | + | # link_number: The silver number that appears to the left of a link |
|
| 457 | + | # regular_text: Normal gemini text, and plaintext documents |
|
| 458 | + | # quote_text |
|
| 459 | + | # preformatted_text |
|
| 460 | + | # list_text |
|
| 461 | + | ||
| 462 | + | # btn_bg: The bg color for all modal buttons |
|
| 463 | + | # btn_text: The text color for all modal buttons |
|
| 464 | + | ||
| 465 | + | # dl_choice_modal_bg |
|
| 466 | + | # dl_choice_modal_text |
|
| 467 | + | # dl_modal_bg |
|
| 468 | + | # dl_modal_text |
|
| 469 | + | # info_modal_bg |
|
| 470 | + | # info_modal_text |
|
| 471 | + | # error_modal_bg |
|
| 472 | + | # error_modal_text |
|
| 473 | + | # yesno_modal_bg |
|
| 474 | + | # yesno_modal_text |
|
| 475 | + | # tofu_modal_bg |
|
| 476 | + | # tofu_modal_text |
|
| 477 | + | # subscription_modal_bg |
|
| 478 | + | # subscription_modal_text |
|
| 479 | + | ||
| 480 | + | # input_modal_bg |
|
| 481 | + | # input_modal_text |
|
| 482 | + | # input_modal_field_bg: The bg of the input field, where you type the text |
|
| 483 | + | # input_modal_field_text: The color of the text you type |
|
| 484 | + | ||
| 485 | + | # bkmk_modal_bg |
|
| 486 | + | # bkmk_modal_text |
|
| 487 | + | # bkmk_modal_label |
|
| 488 | + | # bkmk_modal_field_bg |
|
| 489 | + | # bkmk_modal_field_text |
|
| 490 | + | ||
| 491 | + | # Darkmatter Theme |
|
| 492 | + | bg = "#121113" |
|
| 493 | + | tab_num = "#e78a53" |
|
| 494 | + | tab_divider = "#333333" |
|
| 495 | + | bottombar_label = "#e78a53" |
|
| 496 | + | bottombar_text = "#ffffff" |
|
| 497 | + | bottombar_bg = "#222222" |
|
| 498 | + | scrollbar = "#333333" |
|
| 499 | + | ||
| 500 | + | hdg_1 = "#ffffff" |
|
| 501 | + | hdg_2 = "#c1c1c1" |
|
| 502 | + | hdg_3 = "#aaaaaa" |
|
| 503 | + | amfora_link = "#e78a53" |
|
| 504 | + | foreign_link = "#fbcb97" |
|
| 505 | + | link_number = "#888888" |
|
| 506 | + | regular_text = "#ffffff" |
|
| 507 | + | quote_text = "#5f8787" |
|
| 508 | + | preformatted_text = "#fbcb97" |
|
| 509 | + | list_text = "#ffffff" |
|
| 510 | + | ||
| 511 | + | btn_bg = "#333333" |
|
| 512 | + | btn_text = "#ffffff" |
|
| 513 | + | ||
| 514 | + | dl_choice_modal_bg = "#222222" |
|
| 515 | + | dl_choice_modal_text = "#ffffff" |
|
| 516 | + | dl_modal_bg = "#222222" |
|
| 517 | + | dl_modal_text = "#ffffff" |
|
| 518 | + | info_modal_bg = "#222222" |
|
| 519 | + | info_modal_text = "#ffffff" |
|
| 520 | + | error_modal_bg = "#222222" |
|
| 521 | + | error_modal_text = "#e78a53" |
|
| 522 | + | yesno_modal_bg = "#222222" |
|
| 523 | + | yesno_modal_text = "#ffffff" |
|
| 524 | + | tofu_modal_bg = "#222222" |
|
| 525 | + | tofu_modal_text = "#ffffff" |
|
| 526 | + | subscription_modal_bg = "#222222" |
|
| 527 | + | subscription_modal_text = "#ffffff" |
|
| 528 | + | ||
| 529 | + | input_modal_bg = "#222222" |
|
| 530 | + | input_modal_text = "#ffffff" |
|
| 531 | + | input_modal_field_bg = "#333333" |
|
| 532 | + | input_modal_field_text = "#ffffff" |
|
| 533 | + | ||
| 534 | + | bkmk_modal_bg = "#222222" |
|
| 535 | + | bkmk_modal_text = "#ffffff" |
|
| 536 | + | bkmk_modal_label = "#e78a53" |
|
| 537 | + | bkmk_modal_field_bg = "#333333" |
|
| 538 | + | bkmk_modal_field_text = "#ffffff" |
Binary file — no preview.
Binary file — no preview.
Binary file — no preview.
Binary file — no preview.
Binary file — no preview.
Binary file — no preview.
| 1 | + | # ~/.bash_profile |
|
| 2 | + | # Login shells read this, not ~/.bashrc. |
|
| 3 | + | # Source ~/.bashrc so interactive config loads either way. |
|
| 4 | + | [ -f ~/.bashrc ] && . ~/.bashrc |
| 1 | + | # ~/.bashrc — mirrors the nushell config |
|
| 2 | + | # |
|
| 3 | + | # Linked via: fling link -s bash -l ~ |
|
| 4 | + | ||
| 5 | + | # Interactive-only guard |
|
| 6 | + | case $- in |
|
| 7 | + | *i*) ;; |
|
| 8 | + | *) return ;; |
|
| 9 | + | esac |
|
| 10 | + | ||
| 11 | + | # ============================================================================= |
|
| 12 | + | # History |
|
| 13 | + | # ============================================================================= |
|
| 14 | + | HISTSIZE=100000 |
|
| 15 | + | HISTFILESIZE=100000 |
|
| 16 | + | HISTCONTROL=ignoreboth |
|
| 17 | + | shopt -s histappend |
|
| 18 | + | ||
| 19 | + | # vi mode (matches nushell edit_mode: vi) |
|
| 20 | + | set -o vi |
|
| 21 | + | ||
| 22 | + | # ============================================================================= |
|
| 23 | + | # Environment |
|
| 24 | + | # ============================================================================= |
|
| 25 | + | export EDITOR="nvim" |
|
| 26 | + | export CLICOLOR=1 |
|
| 27 | + | ||
| 28 | + | # Go |
|
| 29 | + | export GOROOT="/usr/local/go" |
|
| 30 | + | export GOPATH="$HOME/.local/share/go" |
|
| 31 | + | export GOMODCACHE="$HOME/.local/share/go-mod-cache" |
|
| 32 | + | #export GOPRIVATE="*gitlab*" |
|
| 33 | + | ||
| 34 | + | # bat |
|
| 35 | + | export BAT_THEME="ansi" |
|
| 36 | + | export BAT_THEME_DARK="ansi" |
|
| 37 | + | ||
| 38 | + | # gpg |
|
| 39 | + | export GPG_TTY="$(tty)" |
|
| 40 | + | ||
| 41 | + | # misc |
|
| 42 | + | export BULLETS_FEEDS="feeds.stevedylan.dev/feed.xml" |
|
| 43 | + | export FLOW_BOARD_PATH="$HOME/notes/board" |
|
| 44 | + | ||
| 45 | + | # pnpm |
|
| 46 | + | export PNPM_HOME="$HOME/.local/share/pnpm" |
|
| 47 | + | ||
| 48 | + | # fzf |
|
| 49 | + | export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude ".git"' |
|
| 50 | + | export FZF_DEFAULT_OPTS=' |
|
| 51 | + | --color=fg:8:bold,fg+:15,bg:-1,bg+:-1 |
|
| 52 | + | --color=hl:10:bold,hl+:10:bold |
|
| 53 | + | --color=info:8,spinner:9,header:4 |
|
| 54 | + | --color=prompt:2,pointer:9,marker:1 |
|
| 55 | + | --color=border:7,label:15:bold,query:15 |
|
| 56 | + | --border="rounded" |
|
| 57 | + | --border-label="" |
|
| 58 | + | --preview-window="border-rounded" |
|
| 59 | + | --prompt="> " |
|
| 60 | + | --marker=" " |
|
| 61 | + | --pointer="◆" |
|
| 62 | + | --separator="" |
|
| 63 | + | --scrollbar="" |
|
| 64 | + | --gutter=" " |
|
| 65 | + | --info=inline-right' |
|
| 66 | + | ||
| 67 | + | # ============================================================================= |
|
| 68 | + | # PATH |
|
| 69 | + | # ============================================================================= |
|
| 70 | + | # path_add <dir>: prepend if not already present and dir exists |
|
| 71 | + | path_add() { |
|
| 72 | + | case ":$PATH:" in |
|
| 73 | + | *":$1:"*) ;; |
|
| 74 | + | *) [ -d "$1" ] && PATH="$1:$PATH" ;; |
|
| 75 | + | esac |
|
| 76 | + | } |
|
| 77 | + | ||
| 78 | + | path_add "/home/linuxbrew/.linuxbrew/bin" |
|
| 79 | + | path_add "/usr/local/go/bin" |
|
| 80 | + | path_add "$HOME/.cargo/bin" |
|
| 81 | + | path_add "$HOME/.local/share/go/bin" |
|
| 82 | + | path_add "$HOME/.local/bin" |
|
| 83 | + | path_add "/usr/local/bin" |
|
| 84 | + | path_add "$HOME/.bun/bin" |
|
| 85 | + | path_add "$HOME/.deno/bin" |
|
| 86 | + | path_add "$HOME/.foundry/bin" |
|
| 87 | + | path_add "$HOME/.local/share" |
|
| 88 | + | path_add "$HOME/.local/share/solana/install/active_release/bin" |
|
| 89 | + | path_add "$HOME/.radicle/bin" |
|
| 90 | + | path_add "$HOME/.nargo/bin" |
|
| 91 | + | path_add "$HOME/.aztec/bin" |
|
| 92 | + | path_add "$HOME/.helios/bin" |
|
| 93 | + | path_add "$HOME/.tmux/plugins/t-smart-tmux-session-manager/bin" |
|
| 94 | + | path_add "$PNPM_HOME" |
|
| 95 | + | ||
| 96 | + | export PATH |
|
| 97 | + | ||
| 98 | + | # fnm (node version manager) |
|
| 99 | + | if command -v fnm >/dev/null 2>&1; then |
|
| 100 | + | eval "$(fnm env --shell bash)" |
|
| 101 | + | path_add "$FNM_MULTISHELL_PATH/bin" |
|
| 102 | + | export PATH |
|
| 103 | + | # auto-switch node version on cd when .node-version / .nvmrc present |
|
| 104 | + | __fnm_autouse() { |
|
| 105 | + | if [ -f .node-version ] || [ -f .nvmrc ]; then |
|
| 106 | + | fnm use --silent-if-unchanged 2>/dev/null |
|
| 107 | + | fi |
|
| 108 | + | } |
|
| 109 | + | PROMPT_COMMAND="__fnm_autouse${PROMPT_COMMAND:+; $PROMPT_COMMAND}" |
|
| 110 | + | fi |
|
| 111 | + | ||
| 112 | + | # cargo |
|
| 113 | + | [ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env" |
|
| 114 | + | ||
| 115 | + | # ============================================================================= |
|
| 116 | + | # Aliases |
|
| 117 | + | # ============================================================================= |
|
| 118 | + | alias ll='ls -l' |
|
| 119 | + | alias la='ls -a' |
|
| 120 | + | alias lg='lazygit' |
|
| 121 | + | alias nf='neofetch' |
|
| 122 | + | alias fl='fastfetch -c ~/.config/fastfetch/presets/examples/8.jsonc' |
|
| 123 | + | alias ff='fastfetch -c ~/.config/fastfetch/presets/examples/20.jsonc' |
|
| 124 | + | alias nvimrc='nvim ~/.config/nvim' |
|
| 125 | + | alias shitter='ssh itter' |
|
| 126 | + | alias ai='aichat' |
|
| 127 | + | alias system='macchina' |
|
| 128 | + | alias bonsai='cbonsai -li -t 0.4' |
|
| 129 | + | alias lst='lstr --icons --color=always --size' |
|
| 130 | + | alias keys='keysmasher' |
|
| 131 | + | alias timestamp='node -e "process.stdout.write(new Date().toISOString())"' |
|
| 132 | + | ||
| 133 | + | # tailscale is in PATH natively on linux (no app bundle alias needed) |
|
| 134 | + | ||
| 135 | + | # ============================================================================= |
|
| 136 | + | # Functions |
|
| 137 | + | # ============================================================================= |
|
| 138 | + | # Open a sesh session via gum filter |
|
| 139 | + | t() { |
|
| 140 | + | local selected |
|
| 141 | + | selected=$(sesh list -i | gum filter --limit 1 --placeholder "Choose a session" --height 50 --prompt="> " --indicator.foreground="2" --match.foreground="2") |
|
| 142 | + | if [ -z "$selected" ]; then |
|
| 143 | + | echo "No session selected" |
|
| 144 | + | else |
|
| 145 | + | sesh connect "$selected" |
|
| 146 | + | fi |
|
| 147 | + | } |
|
| 148 | + | ||
| 149 | + | # Fuzzy-find a file and open in nvim |
|
| 150 | + | nvimf() { |
|
| 151 | + | local file |
|
| 152 | + | file=$(fd --type f --hidden --exclude .git | fzf --preview "bat --color=always {}") |
|
| 153 | + | if [ -z "$file" ]; then |
|
| 154 | + | echo "No file selected" |
|
| 155 | + | else |
|
| 156 | + | nvim "$file" |
|
| 157 | + | fi |
|
| 158 | + | } |
|
| 159 | + | ||
| 160 | + | # Install a tree-sitter parser into the nvim luarocks tree |
|
| 161 | + | tsi() { |
|
| 162 | + | local parser="$1" |
|
| 163 | + | local tree="$HOME/.local/share/nvim/site" |
|
| 164 | + | luarocks --lua-version=5.1 "--tree=$tree" install "tree-sitter-$parser" |
|
| 165 | + | } |
|
| 166 | + | ||
| 167 | + | # nvim startup time -> grep summary line |
|
| 168 | + | ns() { |
|
| 169 | + | rm -f ~/.nvim-startup.txt |
|
| 170 | + | nvim --headless --startuptime ~/.nvim-startup.txt +qa |
|
| 171 | + | grep "NVIM STARTED" ~/.nvim-startup.txt |
|
| 172 | + | } |
|
| 173 | + | ||
| 174 | + | # nvim startup time -> full bat dump |
|
| 175 | + | nh() { |
|
| 176 | + | rm -f ~/.nvim-startup.txt |
|
| 177 | + | nvim --headless --startuptime ~/.nvim-startup.txt +qa |
|
| 178 | + | bat ~/.nvim-startup.txt |
|
| 179 | + | } |
|
| 180 | + | ||
| 181 | + | # Copy file contents to clipboard |
|
| 182 | + | cpf() { |
|
| 183 | + | if command -v wl-copy >/dev/null 2>&1; then |
|
| 184 | + | wl-copy < "$1" |
|
| 185 | + | elif command -v xclip >/dev/null 2>&1; then |
|
| 186 | + | xclip -selection clipboard < "$1" |
|
| 187 | + | elif command -v xsel >/dev/null 2>&1; then |
|
| 188 | + | xsel --clipboard --input < "$1" |
|
| 189 | + | else |
|
| 190 | + | echo "No clipboard tool found (wl-copy/xclip/xsel)" >&2 |
|
| 191 | + | return 1 |
|
| 192 | + | fi |
|
| 193 | + | echo "✔︎ Copied to clipboard!" |
|
| 194 | + | } |
|
| 195 | + | ||
| 196 | + | # Set orbiter key to personal |
|
| 197 | + | orbiter-personal() { |
|
| 198 | + | gum spin --spinner dot --spinner.foreground="2" --title "Updating..." -- orbiter auth --key "$(op read 'op://Personal/orbiter-api-key/credential')" |
|
| 199 | + | local check |
|
| 200 | + | check=$(gum style --foreground="2" "✓ ") |
|
| 201 | + | gum join "$check" "Orbiter key set to personal!" |
|
| 202 | + | } |
|
| 203 | + | ||
| 204 | + | # Set orbiter key to orbiter account |
|
| 205 | + | orbiter-account() { |
|
| 206 | + | gum spin --spinner dot --spinner.foreground="2" --title "Updating..." -- orbiter auth --key "$(op read 'op://Personal/orbiter-account-api-key/credential')" |
|
| 207 | + | local check |
|
| 208 | + | check=$(gum style --foreground="2" "✓ ") |
|
| 209 | + | gum join "$check" "Orbiter key set to Orbiter account!" |
|
| 210 | + | } |
|
| 211 | + | ||
| 212 | + | # UTC timestamp for blog frontmatter |
|
| 213 | + | blogdate() { |
|
| 214 | + | date -u +"%Y-%m-%dT%H:%M:%SZ" |
|
| 215 | + | } |
|
| 216 | + | ||
| 217 | + | # ============================================================================= |
|
| 218 | + | # Tooling init |
|
| 219 | + | # ============================================================================= |
|
| 220 | + | command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init bash)" |
|
| 221 | + | command -v starship >/dev/null 2>&1 && eval "$(starship init bash)" |
|
| 222 | + | command -v fzf >/dev/null 2>&1 && eval "$(fzf --bash)" |
| 1 | + | #? Config file for btop v. 1.4.4 |
|
| 2 | + | ||
| 3 | + | #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. |
|
| 4 | + | #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" |
|
| 5 | + | color_theme = "TTY" |
|
| 6 | + | ||
| 7 | + | #* If the theme set background should be shown, set to False if you want terminal background transparency. |
|
| 8 | + | theme_background = True |
|
| 9 | + | ||
| 10 | + | #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. |
|
| 11 | + | truecolor = True |
|
| 12 | + | ||
| 13 | + | #* Set to true to force tty mode regardless if a real tty has been detected or not. |
|
| 14 | + | #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. |
|
| 15 | + | force_tty = False |
|
| 16 | + | ||
| 17 | + | #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. |
|
| 18 | + | #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. |
|
| 19 | + | #* Use whitespace " " as separator between different presets. |
|
| 20 | + | #* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" |
|
| 21 | + | presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" |
|
| 22 | + | ||
| 23 | + | #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. |
|
| 24 | + | #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. |
|
| 25 | + | vim_keys = True |
|
| 26 | + | ||
| 27 | + | #* Rounded corners on boxes, is ignored if TTY mode is ON. |
|
| 28 | + | rounded_corners = True |
|
| 29 | + | ||
| 30 | + | #* Default symbols to use for graph creation, "braille", "block" or "tty". |
|
| 31 | + | #* "braille" offers the highest resolution but might not be included in all fonts. |
|
| 32 | + | #* "block" has half the resolution of braille but uses more common characters. |
|
| 33 | + | #* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. |
|
| 34 | + | #* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. |
|
| 35 | + | graph_symbol = "braille" |
|
| 36 | + | ||
| 37 | + | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". |
|
| 38 | + | graph_symbol_cpu = "default" |
|
| 39 | + | ||
| 40 | + | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". |
|
| 41 | + | graph_symbol_mem = "default" |
|
| 42 | + | ||
| 43 | + | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". |
|
| 44 | + | graph_symbol_net = "default" |
|
| 45 | + | ||
| 46 | + | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". |
|
| 47 | + | graph_symbol_proc = "default" |
|
| 48 | + | ||
| 49 | + | #* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. |
|
| 50 | + | shown_boxes = "cpu mem net proc" |
|
| 51 | + | ||
| 52 | + | #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. |
|
| 53 | + | update_ms = 2000 |
|
| 54 | + | ||
| 55 | + | #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", |
|
| 56 | + | #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. |
|
| 57 | + | proc_sorting = "memory" |
|
| 58 | + | ||
| 59 | + | #* Reverse sorting order, True or False. |
|
| 60 | + | proc_reversed = True |
|
| 61 | + | ||
| 62 | + | #* Show processes as a tree. |
|
| 63 | + | proc_tree = False |
|
| 64 | + | ||
| 65 | + | #* Use the cpu graph colors in the process list. |
|
| 66 | + | proc_colors = True |
|
| 67 | + | ||
| 68 | + | #* Use a darkening gradient in the process list. |
|
| 69 | + | proc_gradient = True |
|
| 70 | + | ||
| 71 | + | #* If process cpu usage should be of the core it's running on or usage of the total available cpu power. |
|
| 72 | + | proc_per_core = True |
|
| 73 | + | ||
| 74 | + | #* Show process memory as bytes instead of percent. |
|
| 75 | + | proc_mem_bytes = True |
|
| 76 | + | ||
| 77 | + | #* Show cpu graph for each process. |
|
| 78 | + | proc_cpu_graphs = True |
|
| 79 | + | ||
| 80 | + | #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) |
|
| 81 | + | proc_info_smaps = False |
|
| 82 | + | ||
| 83 | + | #* Show proc box on left side of screen instead of right. |
|
| 84 | + | proc_left = False |
|
| 85 | + | ||
| 86 | + | #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). |
|
| 87 | + | proc_filter_kernel = False |
|
| 88 | + | ||
| 89 | + | #* In tree-view, always accumulate child process resources in the parent process. |
|
| 90 | + | proc_aggregate = False |
|
| 91 | + | ||
| 92 | + | #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. |
|
| 93 | + | #* Select from a list of detected attributes from the options menu. |
|
| 94 | + | cpu_graph_upper = "Auto" |
|
| 95 | + | ||
| 96 | + | #* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. |
|
| 97 | + | #* Select from a list of detected attributes from the options menu. |
|
| 98 | + | cpu_graph_lower = "Auto" |
|
| 99 | + | ||
| 100 | + | #* Toggles if the lower CPU graph should be inverted. |
|
| 101 | + | cpu_invert_lower = True |
|
| 102 | + | ||
| 103 | + | #* Set to True to completely disable the lower CPU graph. |
|
| 104 | + | cpu_single_graph = False |
|
| 105 | + | ||
| 106 | + | #* Show cpu box at bottom of screen instead of top. |
|
| 107 | + | cpu_bottom = False |
|
| 108 | + | ||
| 109 | + | #* Shows the system uptime in the CPU box. |
|
| 110 | + | show_uptime = True |
|
| 111 | + | ||
| 112 | + | #* Show cpu temperature. |
|
| 113 | + | check_temp = True |
|
| 114 | + | ||
| 115 | + | #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. |
|
| 116 | + | cpu_sensor = "Auto" |
|
| 117 | + | ||
| 118 | + | #* Show temperatures for cpu cores also if check_temp is True and sensors has been found. |
|
| 119 | + | show_coretemp = True |
|
| 120 | + | ||
| 121 | + | #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. |
|
| 122 | + | #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. |
|
| 123 | + | #* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. |
|
| 124 | + | #* Example: "4:0 5:1 6:3" |
|
| 125 | + | cpu_core_map = "" |
|
| 126 | + | ||
| 127 | + | #* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". |
|
| 128 | + | temp_scale = "celsius" |
|
| 129 | + | ||
| 130 | + | #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. |
|
| 131 | + | base_10_sizes = False |
|
| 132 | + | ||
| 133 | + | #* Show CPU frequency. |
|
| 134 | + | show_cpu_freq = True |
|
| 135 | + | ||
| 136 | + | #* Draw a clock at top of screen, formatting according to strftime, empty string to disable. |
|
| 137 | + | #* Special formatting: /host = hostname | /user = username | /uptime = system uptime |
|
| 138 | + | clock_format = "%X" |
|
| 139 | + | ||
| 140 | + | #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. |
|
| 141 | + | background_update = True |
|
| 142 | + | ||
| 143 | + | #* Custom cpu model name, empty string to disable. |
|
| 144 | + | custom_cpu_name = "" |
|
| 145 | + | ||
| 146 | + | #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". |
|
| 147 | + | #* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" |
|
| 148 | + | disks_filter = "" |
|
| 149 | + | ||
| 150 | + | #* Show graphs instead of meters for memory values. |
|
| 151 | + | mem_graphs = True |
|
| 152 | + | ||
| 153 | + | #* Show mem box below net box instead of above. |
|
| 154 | + | mem_below_net = False |
|
| 155 | + | ||
| 156 | + | #* Count ZFS ARC in cached and available memory. |
|
| 157 | + | zfs_arc_cached = True |
|
| 158 | + | ||
| 159 | + | #* If swap memory should be shown in memory box. |
|
| 160 | + | show_swap = True |
|
| 161 | + | ||
| 162 | + | #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. |
|
| 163 | + | swap_disk = True |
|
| 164 | + | ||
| 165 | + | #* If mem box should be split to also show disks info. |
|
| 166 | + | show_disks = True |
|
| 167 | + | ||
| 168 | + | #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. |
|
| 169 | + | only_physical = True |
|
| 170 | + | ||
| 171 | + | #* Read disks list from /etc/fstab. This also disables only_physical. |
|
| 172 | + | use_fstab = True |
|
| 173 | + | ||
| 174 | + | #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) |
|
| 175 | + | zfs_hide_datasets = False |
|
| 176 | + | ||
| 177 | + | #* Set to true to show available disk space for privileged users. |
|
| 178 | + | disk_free_priv = False |
|
| 179 | + | ||
| 180 | + | #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. |
|
| 181 | + | show_io_stat = True |
|
| 182 | + | ||
| 183 | + | #* Toggles io mode for disks, showing big graphs for disk read/write speeds. |
|
| 184 | + | io_mode = True |
|
| 185 | + | ||
| 186 | + | #* Set to True to show combined read/write io graphs in io mode. |
|
| 187 | + | io_graph_combined = False |
|
| 188 | + | ||
| 189 | + | #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". |
|
| 190 | + | #* Example: "/mnt/media:100 /:20 /boot:1". |
|
| 191 | + | io_graph_speeds = "" |
|
| 192 | + | ||
| 193 | + | #* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. |
|
| 194 | + | net_download = 100 |
|
| 195 | + | ||
| 196 | + | net_upload = 100 |
|
| 197 | + | ||
| 198 | + | #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. |
|
| 199 | + | net_auto = True |
|
| 200 | + | ||
| 201 | + | #* Sync the auto scaling for download and upload to whichever currently has the highest scale. |
|
| 202 | + | net_sync = True |
|
| 203 | + | ||
| 204 | + | #* Starts with the Network Interface specified here. |
|
| 205 | + | net_iface = "" |
|
| 206 | + | ||
| 207 | + | #* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. |
|
| 208 | + | base_10_bitrate = "Auto" |
|
| 209 | + | ||
| 210 | + | #* Show battery stats in top right if battery is present. |
|
| 211 | + | show_battery = True |
|
| 212 | + | ||
| 213 | + | #* Which battery to use if multiple are present. "Auto" for auto detection. |
|
| 214 | + | selected_battery = "Auto" |
|
| 215 | + | ||
| 216 | + | #* Show power stats of battery next to charge indicator. |
|
| 217 | + | show_battery_watts = True |
|
| 218 | + | ||
| 219 | + | #* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". |
|
| 220 | + | #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. |
|
| 221 | + | log_level = "WARNING" |
| 1 | + | avm v0.30.1 (https://github.com/coral-xyz/anchor#8eec2e3b): |
|
| 2 | + | anchor |
|
| 3 | + | avm |
|
| 4 | + | create-gpui-app v0.1.5: |
|
| 5 | + | create-gpui-app |
|
| 6 | + | du-dust v1.2.0: |
|
| 7 | + | dust |
|
| 8 | + | lazy-etherscan v0.1.1: |
|
| 9 | + | lazy-etherscan |
|
| 10 | + | lstr v0.2.0: |
|
| 11 | + | lstr |
|
| 12 | + | postman2openapi-cli v1.2.1: |
|
| 13 | + | postman2openapi |
| 1 | + | [global] |
|
| 2 | + | ### Display ### |
|
| 3 | + | ||
| 4 | + | # Which monitor should the notifications be displayed on. |
|
| 5 | + | monitor = 0 |
|
| 6 | + | ||
| 7 | + | # Display notification on focused monitor. Possible modes are: |
|
| 8 | + | # mouse: follow mouse pointer |
|
| 9 | + | # keyboard: follow window with keyboard focus |
|
| 10 | + | # none: don't follow anything |
|
| 11 | + | # |
|
| 12 | + | # "keyboard" needs a window manager that exports the |
|
| 13 | + | # _NET_ACTIVE_WINDOW property. |
|
| 14 | + | # This should be the case for almost all modern window managers. |
|
| 15 | + | # |
|
| 16 | + | # If this option is set to mouse or keyboard, the monitor option |
|
| 17 | + | # will be ignored. |
|
| 18 | + | follow = mouse |
|
| 19 | + | ||
| 20 | + | # The geometry of the window: |
|
| 21 | + | # [{width}]x{height}[+/-{x}+/-{y}] |
|
| 22 | + | # The geometry of the message window. |
|
| 23 | + | # The height is measured in number of notifications everything else |
|
| 24 | + | # in pixels. If the width is omitted but the height is given |
|
| 25 | + | # ("-geometry x2"), the message window expands over the whole screen |
|
| 26 | + | # (dmenu-like). If width is 0, the window expands to the longest |
|
| 27 | + | # message displayed. A positive x is measured from the left, a |
|
| 28 | + | # negative from the right side of the screen. Y is measured from |
|
| 29 | + | # the top and down respectively. |
|
| 30 | + | # The width can be negative. In this case the actual width is the |
|
| 31 | + | # screen width minus the width defined in within the geometry option. |
|
| 32 | + | geometry = "350x7-13+32" |
|
| 33 | + | ||
| 34 | + | # Show how many messages are currently hidden (because of geometry). |
|
| 35 | + | indicate_hidden = yes |
|
| 36 | + | ||
| 37 | + | # Shrink window if it's smaller than the width. Will be ignored if |
|
| 38 | + | # width is 0. |
|
| 39 | + | shrink = no |
|
| 40 | + | ||
| 41 | + | # The transparency of the window. Range: [0; 100]. |
|
| 42 | + | # This option will only work if a compositing window manager is |
|
| 43 | + | # present (e.g. xcompmgr, compiz, etc.). |
|
| 44 | + | transparency = 1 |
|
| 45 | + | ||
| 46 | + | # The height of the entire notification. If the height is smaller |
|
| 47 | + | # than the font height and padding combined, it will be raised |
|
| 48 | + | # to the font height and padding. |
|
| 49 | + | notification_height = 0 |
|
| 50 | + | ||
| 51 | + | # Draw a line of "separator_height" pixel height between two |
|
| 52 | + | # notifications. |
|
| 53 | + | # Set to 0 to disable. |
|
| 54 | + | separator_height = 2 |
|
| 55 | + | ||
| 56 | + | # Padding between text and separator. |
|
| 57 | + | padding = 8 |
|
| 58 | + | ||
| 59 | + | # Horizontal padding. |
|
| 60 | + | horizontal_padding = 8 |
|
| 61 | + | ||
| 62 | + | # Defines width in pixels of frame around the notification window. |
|
| 63 | + | # Set to 0 to disable. |
|
| 64 | + | frame_width = 2 |
|
| 65 | + | ||
| 66 | + | # Defines color of the frame around the notification window. |
|
| 67 | + | frame_color = "#5E81AC" |
|
| 68 | + | ||
| 69 | + | # Define a color for the separator. |
|
| 70 | + | # possible values are: |
|
| 71 | + | # * auto: dunst tries to find a color fitting to the background; |
|
| 72 | + | # * foreground: use the same color as the foreground; |
|
| 73 | + | # * frame: use the same color as the frame; |
|
| 74 | + | # * anything else will be interpreted as a X color. |
|
| 75 | + | separator_color = frame |
|
| 76 | + | ||
| 77 | + | # Sort messages by urgency. |
|
| 78 | + | sort = yes |
|
| 79 | + | ||
| 80 | + | # Don't remove messages, if the user is idle (no mouse or keyboard input) |
|
| 81 | + | # for longer than idle_threshold seconds. |
|
| 82 | + | # Set to 0 to disable. |
|
| 83 | + | idle_threshold = 200 |
|
| 84 | + | ||
| 85 | + | ### Text ### |
|
| 86 | + | ||
| 87 | + | font = SF Pro Display 11 |
|
| 88 | + | ||
| 89 | + | # The spacing between lines. If the height is smaller than the |
|
| 90 | + | # font height, it will get raised to the font height. |
|
| 91 | + | line_height = 1 |
|
| 92 | + | ||
| 93 | + | # Possible values are: |
|
| 94 | + | # full: Allow a small subset of html markup in notifications: |
|
| 95 | + | # <b>bold</b> |
|
| 96 | + | # <i>italic</i> |
|
| 97 | + | # <s>strikethrough</s> |
|
| 98 | + | # <u>underline</u> |
|
| 99 | + | # |
|
| 100 | + | # For a complete reference see |
|
| 101 | + | # <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>. |
|
| 102 | + | # |
|
| 103 | + | # strip: This setting is provided for compatibility with some broken |
|
| 104 | + | # clients that send markup even though it's not enabled on the |
|
| 105 | + | # server. Dunst will try to strip the markup but the parsing is |
|
| 106 | + | # simplistic so using this option outside of matching rules for |
|
| 107 | + | # specific applications *IS GREATLY DISCOURAGED*. |
|
| 108 | + | # |
|
| 109 | + | # no: Disable markup parsing, incoming notifications will be treated as |
|
| 110 | + | # plain text. Dunst will not advertise that it has the body-markup |
|
| 111 | + | # capability if this is set as a global setting. |
|
| 112 | + | # |
|
| 113 | + | # It's important to note that markup inside the format option will be parsed |
|
| 114 | + | # regardless of what this is set to. |
|
| 115 | + | markup = yes |
|
| 116 | + | ||
| 117 | + | # The format of the message. Possible variables are: |
|
| 118 | + | # %a appname |
|
| 119 | + | # %s summary |
|
| 120 | + | # %b body |
|
| 121 | + | # %i iconname (including its path) |
|
| 122 | + | # %I iconname (without its path) |
|
| 123 | + | # %p progress value if set ([ 0%] to [100%]) or nothing |
|
| 124 | + | # %n progress value if set without any extra characters |
|
| 125 | + | # Markup is allowed |
|
| 126 | + | #format = "<b>%s</b>\n%b" |
|
| 127 | + | format = "<b>%s %p</b>\n%b\n%p" |
|
| 128 | + | ||
| 129 | + | # Alignment of message text. |
|
| 130 | + | # Possible values are "left", "center" and "right". |
|
| 131 | + | alignment = center |
|
| 132 | + | ||
| 133 | + | # Show age of message if message is older than show_age_threshold |
|
| 134 | + | # seconds. |
|
| 135 | + | # Set to -1 to disable. |
|
| 136 | + | show_age_threshold = 60 |
|
| 137 | + | ||
| 138 | + | # Split notifications into multiple lines if they don't fit into |
|
| 139 | + | # geometry. |
|
| 140 | + | word_wrap = yes |
|
| 141 | + | ||
| 142 | + | # Ignore newlines '\n' in notifications. |
|
| 143 | + | ignore_newline = no |
|
| 144 | + | ||
| 145 | + | ellipsize = middle |
|
| 146 | + | ||
| 147 | + | # Merge multiple notifications with the same content |
|
| 148 | + | stack_duplicates = true |
|
| 149 | + | ||
| 150 | + | # Hide the count of merged notifications with the same content |
|
| 151 | + | hide_duplicate_count = false |
|
| 152 | + | ||
| 153 | + | # Display indicators for URLs (U) and actions (A). |
|
| 154 | + | show_indicators = yes |
|
| 155 | + | ||
| 156 | + | ### Icons ### |
|
| 157 | + | ||
| 158 | + | # Align icons left/right/off |
|
| 159 | + | icon_position = left |
|
| 160 | + | ||
| 161 | + | # Scale larger icons down to this size, set to 0 to disable |
|
| 162 | + | max_icon_size = 32 |
|
| 163 | + | ||
| 164 | + | # Paths to default icons. |
|
| 165 | + | icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/ |
|
| 166 | + | ||
| 167 | + | # Should a notification popped up from history be sticky or timeout |
|
| 168 | + | # as if it would normally do. |
|
| 169 | + | sticky_history = yes |
|
| 170 | + | ||
| 171 | + | # Maximum amount of notifications kept in history |
|
| 172 | + | history_length = 20 |
|
| 173 | + | ||
| 174 | + | ### Misc/Advanced ### |
|
| 175 | + | ||
| 176 | + | # dmenu path. |
|
| 177 | + | dmenu = /usr/bin/dmenu -p dunst: |
|
| 178 | + | ||
| 179 | + | # Browser for opening urls in context menu. |
|
| 180 | + | browser = /usr/bin/brave |
|
| 181 | + | ||
| 182 | + | # Always run rule-defined scripts, even if the notification is suppressed |
|
| 183 | + | always_run_script = true |
|
| 184 | + | ||
| 185 | + | # Define the title of the windows spawned by dunst |
|
| 186 | + | title = Dunst |
|
| 187 | + | ||
| 188 | + | # Define the class of the windows spawned by dunst |
|
| 189 | + | class = Dunst |
|
| 190 | + | ||
| 191 | + | # Print a notification on startup. |
|
| 192 | + | # This is mainly for error detection, since dbus (re-)starts dunst |
|
| 193 | + | # automatically after a crash. |
|
| 194 | + | startup_notification = false |
|
| 195 | + | ||
| 196 | + | ### Legacy |
|
| 197 | + | ||
| 198 | + | # Use the Xinerama extension instead of RandR for multi-monitor support. |
|
| 199 | + | # This setting is provided for compatibility with older nVidia drivers that |
|
| 200 | + | # do not support RandR and using it on systems that support RandR is highly |
|
| 201 | + | # discouraged. |
|
| 202 | + | # |
|
| 203 | + | # By enabling this setting dunst will not be able to detect when a monitor |
|
| 204 | + | # is connected or disconnected which might break follow mode if the screen |
|
| 205 | + | # layout changes. |
|
| 206 | + | force_xinerama = false |
|
| 207 | + | ||
| 208 | + | # Experimental features that may or may not work correctly. Do not expect them |
|
| 209 | + | # to have a consistent behaviour across releases. |
|
| 210 | + | [experimental] |
|
| 211 | + | # Calculate the dpi to use on a per-monitor basis. |
|
| 212 | + | # If this setting is enabled the Xft.dpi value will be ignored and instead |
|
| 213 | + | # dunst will attempt to calculate an appropriate dpi value for each monitor |
|
| 214 | + | # using the resolution and physical size. This might be useful in setups |
|
| 215 | + | # where there are multiple screens with very different dpi values. |
|
| 216 | + | per_monitor_dpi = false |
|
| 217 | + | ||
| 218 | + | [shortcuts] |
|
| 219 | + | ||
| 220 | + | # Shortcuts are specified as [modifier+][modifier+]...key |
|
| 221 | + | # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", |
|
| 222 | + | # "mod3" and "mod4" (windows-key). |
|
| 223 | + | # Xev might be helpful to find names for keys. |
|
| 224 | + | ||
| 225 | + | # Close notification. |
|
| 226 | + | close = ctrl+space |
|
| 227 | + | ||
| 228 | + | # Close all notifications. |
|
| 229 | + | close_all = ctrl+shift+space |
|
| 230 | + | ||
| 231 | + | # Redisplay last message(s). |
|
| 232 | + | # On the US keyboard layout "grave" is normally above TAB and left |
|
| 233 | + | # of "1". Make sure this key actually exists on your keyboard layout, |
|
| 234 | + | # e.g. check output of 'xmodmap -pke' |
|
| 235 | + | history = ctrl+mod1+j |
|
| 236 | + | ||
| 237 | + | ||
| 238 | + | [urgency_low] |
|
| 239 | + | msg_urgency = low |
|
| 240 | + | background = "#2E344090" |
|
| 241 | + | foreground = "#D8DEE9" |
|
| 242 | + | timeout= 4 |
|
| 243 | + | ||
| 244 | + | [urgency_normal] |
|
| 245 | + | msg_urgency = normal |
|
| 246 | + | background = "#3B425299" |
|
| 247 | + | foreground = "#E5E9F0" |
|
| 248 | + | timeout = 4 |
|
| 249 | + | ||
| 250 | + | [urgency_critical] |
|
| 251 | + | msg_urgency = critical |
|
| 252 | + | background = "#2E344099" |
|
| 253 | + | foreground = "#D08770" |
|
| 254 | + | timeout = 0 |
|
| 255 | + | ||
| 256 | + | ||
| 257 | + | # Every section that isn't one of the above is interpreted as a rules to |
|
| 258 | + | # override settings for certain messages. |
|
| 259 | + | # Messages can be matched by "appname", "summary", "body", "icon", "category", |
|
| 260 | + | # "msg_urgency" and you can override the "timeout", "urgency", "foreground", |
|
| 261 | + | # "background", "new_icon" and "format". |
|
| 262 | + | # Shell-like globbing will get expanded. |
|
| 263 | + | # |
|
| 264 | + | # SCRIPTING |
|
| 265 | + | # You can specify a script that gets run when the rule matches by |
|
| 266 | + | # setting the "script" option. |
|
| 267 | + | # The script will be called as follows: |
|
| 268 | + | # script appname summary body icon urgency |
|
| 269 | + | # where urgency can be "LOW", "NORMAL" or "CRITICAL". |
|
| 270 | + | # |
|
| 271 | + | # NOTE: if you don't want a notification to be displayed, set the format |
|
| 272 | + | # to "". |
|
| 273 | + | # NOTE: It might be helpful to run dunst -print in a terminal in order |
|
| 274 | + | # to find fitting options for rules. |
|
| 275 | + | ||
| 276 | + | #[espeak] |
|
| 277 | + | # summary = "*" |
|
| 278 | + | # script = dunst_espeak.sh |
|
| 279 | + | ||
| 280 | + | #[script-test] |
|
| 281 | + | # summary = "*script*" |
|
| 282 | + | # script = dunst_test.sh |
|
| 283 | + | ||
| 284 | + | #[ignore] |
|
| 285 | + | # # This notification will not be displayed |
|
| 286 | + | # summary = "foobar" |
|
| 287 | + | # format = "" |
|
| 288 | + | ||
| 289 | + | #[history-ignore] |
|
| 290 | + | # # This notification will not be saved in history |
|
| 291 | + | # summary = "foobar" |
|
| 292 | + | # history_ignore = yes |
|
| 293 | + | ||
| 294 | + | #[signed_on] |
|
| 295 | + | # appname = Pidgin |
|
| 296 | + | # summary = "*signed on*" |
|
| 297 | + | # urgency = low |
|
| 298 | + | # |
|
| 299 | + | #[signed_off] |
|
| 300 | + | # appname = Pidgin |
|
| 301 | + | # summary = *signed off* |
|
| 302 | + | # urgency = low |
|
| 303 | + | # |
|
| 304 | + | #[says] |
|
| 305 | + | # appname = Pidgin |
|
| 306 | + | # summary = *says* |
|
| 307 | + | # urgency = critical |
|
| 308 | + | # |
|
| 309 | + | #[twitter] |
|
| 310 | + | # appname = Pidgin |
|
| 311 | + | # summary = *twitter.com* |
|
| 312 | + | # urgency = normal |
|
| 313 | + | # |
|
| 314 | + | ||
| 315 | + | # vim: ft=cfg |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "modules": [ |
|
| 4 | + | { |
|
| 5 | + | "type": "title", |
|
| 6 | + | "key": "User", |
|
| 7 | + | "format": "{user-name}" |
|
| 8 | + | }, |
|
| 9 | + | { |
|
| 10 | + | "type": "title", |
|
| 11 | + | "key": "Hostname", |
|
| 12 | + | "format": "{host-name}" |
|
| 13 | + | }, |
|
| 14 | + | { |
|
| 15 | + | "type": "host", |
|
| 16 | + | "key": "Model" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "type": "os", |
|
| 20 | + | "format": "{pretty-name} {version-id} {arch}" |
|
| 21 | + | }, |
|
| 22 | + | "kernel", |
|
| 23 | + | "uptime", |
|
| 24 | + | { |
|
| 25 | + | "type": "loadavg", |
|
| 26 | + | "key": "Load Average" |
|
| 27 | + | }, |
|
| 28 | + | "processes", |
|
| 29 | + | { |
|
| 30 | + | "type": "wm", |
|
| 31 | + | "key": "Window Manager" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "type": "de", |
|
| 35 | + | "key": "Desktop Environment" |
|
| 36 | + | }, |
|
| 37 | + | "shell", |
|
| 38 | + | { |
|
| 39 | + | "type": "terminal", |
|
| 40 | + | "format": "{pretty-name} {version} {#37}█{#97}█ {#36}█{#96}█ {#35}█{#95}█ {#34}█{#94}█ {#33}█{#93}█ {#32}█{#92}█ {#31}█{#91}█ {#30}█{#90}█" |
|
| 41 | + | }, |
|
| 42 | + | { |
|
| 43 | + | "type": "packages", |
|
| 44 | + | "format": "{all}" |
|
| 45 | + | }, |
|
| 46 | + | { |
|
| 47 | + | "type": "cpu", |
|
| 48 | + | "key": "Temperature", |
|
| 49 | + | "temp": true, |
|
| 50 | + | "format": "{temperature}" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "type": "cpu", |
|
| 54 | + | "key": "CPU", |
|
| 55 | + | "format": "{cores-logical} x {name}" |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "type": "gpu", |
|
| 59 | + | "format": "{name}" |
|
| 60 | + | }, |
|
| 61 | + | { |
|
| 62 | + | "type": "memory", |
|
| 63 | + | "key": "RAM" |
|
| 64 | + | }, |
|
| 65 | + | { |
|
| 66 | + | "type": "disk", |
|
| 67 | + | "key": "Disk", |
|
| 68 | + | "folders": "/" |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "type": "localip", |
|
| 72 | + | "key": "LAN IP", |
|
| 73 | + | "showIpv6": true, |
|
| 74 | + | "showPrefixLen": false |
|
| 75 | + | }, |
|
| 76 | + | { |
|
| 77 | + | "type": "publicip", |
|
| 78 | + | "key": "WAN IP", |
|
| 79 | + | "timeout": 1000 |
|
| 80 | + | } |
|
| 81 | + | ] |
|
| 82 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small", |
|
| 5 | + | "padding": { |
|
| 6 | + | "top": 1, |
|
| 7 | + | }, |
|
| 8 | + | }, |
|
| 9 | + | "modules": [ |
|
| 10 | + | "title", |
|
| 11 | + | "separator", |
|
| 12 | + | "os", |
|
| 13 | + | "host", |
|
| 14 | + | "uptime", |
|
| 15 | + | "packages", |
|
| 16 | + | "shell", |
|
| 17 | + | "theme", |
|
| 18 | + | "cursor", |
|
| 19 | + | "terminal", |
|
| 20 | + | "memory", |
|
| 21 | + | "disk", |
|
| 22 | + | "battery", |
|
| 23 | + | "temperature", |
|
| 24 | + | "poweradapter", |
|
| 25 | + | "break", |
|
| 26 | + | "colors", |
|
| 27 | + | ], |
|
| 28 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "padding": { |
|
| 5 | + | "top": 2 |
|
| 6 | + | } |
|
| 7 | + | }, |
|
| 8 | + | "modules": [ |
|
| 9 | + | "title", |
|
| 10 | + | "separator", |
|
| 11 | + | "os", |
|
| 12 | + | "host", |
|
| 13 | + | "bios", |
|
| 14 | + | "bootmgr", |
|
| 15 | + | "board", |
|
| 16 | + | "chassis", |
|
| 17 | + | "kernel", |
|
| 18 | + | "initsystem", |
|
| 19 | + | "uptime", |
|
| 20 | + | "loadavg", |
|
| 21 | + | "processes", |
|
| 22 | + | "packages", |
|
| 23 | + | "shell", |
|
| 24 | + | "editor", |
|
| 25 | + | "display", |
|
| 26 | + | "brightness", |
|
| 27 | + | "monitor", |
|
| 28 | + | "lm", |
|
| 29 | + | "de", |
|
| 30 | + | "wm", |
|
| 31 | + | "wmtheme", |
|
| 32 | + | "theme", |
|
| 33 | + | "icons", |
|
| 34 | + | "font", |
|
| 35 | + | "cursor", |
|
| 36 | + | "wallpaper", |
|
| 37 | + | "terminal", |
|
| 38 | + | "terminalfont", |
|
| 39 | + | "terminalsize", |
|
| 40 | + | "terminaltheme", |
|
| 41 | + | { |
|
| 42 | + | "type": "cpu", |
|
| 43 | + | "showPeCoreCount": true, |
|
| 44 | + | "temp": true |
|
| 45 | + | }, |
|
| 46 | + | "cpucache", |
|
| 47 | + | "cpuusage", |
|
| 48 | + | { |
|
| 49 | + | "type": "gpu", |
|
| 50 | + | "driverSpecific": true, |
|
| 51 | + | "temp": true |
|
| 52 | + | }, |
|
| 53 | + | "memory", |
|
| 54 | + | "physicalmemory", |
|
| 55 | + | "swap", |
|
| 56 | + | "disk", |
|
| 57 | + | "btrfs", |
|
| 58 | + | "zpool", |
|
| 59 | + | { |
|
| 60 | + | "type": "battery", |
|
| 61 | + | "temp": true |
|
| 62 | + | }, |
|
| 63 | + | "poweradapter", |
|
| 64 | + | "player", |
|
| 65 | + | "media", |
|
| 66 | + | { |
|
| 67 | + | "type": "publicip", |
|
| 68 | + | "timeout": 1000 |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "type": "localip", |
|
| 72 | + | "showIpv6": true, |
|
| 73 | + | "showMac": true, |
|
| 74 | + | "showSpeed": true, |
|
| 75 | + | "showMtu": true, |
|
| 76 | + | "showLoop": true, |
|
| 77 | + | "showFlags": true, |
|
| 78 | + | "showAllIps": true |
|
| 79 | + | }, |
|
| 80 | + | "dns", |
|
| 81 | + | "wifi", |
|
| 82 | + | "datetime", |
|
| 83 | + | "locale", |
|
| 84 | + | "vulkan", |
|
| 85 | + | "opengl", |
|
| 86 | + | "opencl", |
|
| 87 | + | "users", |
|
| 88 | + | "bluetooth", |
|
| 89 | + | "bluetoothradio", |
|
| 90 | + | "sound", |
|
| 91 | + | "camera", |
|
| 92 | + | "gamepad", |
|
| 93 | + | { |
|
| 94 | + | "type": "weather", |
|
| 95 | + | "timeout": 1000 |
|
| 96 | + | }, |
|
| 97 | + | "netio", |
|
| 98 | + | "diskio", |
|
| 99 | + | { |
|
| 100 | + | "type": "physicaldisk", |
|
| 101 | + | "temp": true |
|
| 102 | + | }, |
|
| 103 | + | "tpm", |
|
| 104 | + | "version", |
|
| 105 | + | "break", |
|
| 106 | + | "colors" |
|
| 107 | + | ] |
|
| 108 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "modules": [ |
|
| 4 | + | { |
|
| 5 | + | "type": "title", |
|
| 6 | + | "key": "User", |
|
| 7 | + | "format": "{user-name}" |
|
| 8 | + | }, |
|
| 9 | + | { |
|
| 10 | + | "type": "title", |
|
| 11 | + | "key": "Hostname", |
|
| 12 | + | "format": "{host-name}" |
|
| 13 | + | }, |
|
| 14 | + | { |
|
| 15 | + | "type": "host", |
|
| 16 | + | "key": "Model" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "type": "os", |
|
| 20 | + | "format": "{pretty-name} {version-id} {arch}" |
|
| 21 | + | }, |
|
| 22 | + | "kernel", |
|
| 23 | + | "uptime", |
|
| 24 | + | { |
|
| 25 | + | "type": "loadavg", |
|
| 26 | + | "key": "Load Average" |
|
| 27 | + | }, |
|
| 28 | + | "processes", |
|
| 29 | + | { |
|
| 30 | + | "type": "wm", |
|
| 31 | + | "key": "Window Manager" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "type": "de", |
|
| 35 | + | "key": "Desktop Environment" |
|
| 36 | + | }, |
|
| 37 | + | "shell", |
|
| 38 | + | { |
|
| 39 | + | "type": "terminal", |
|
| 40 | + | "format": "{pretty-name} {version} {#37}█{#97}█ {#36}█{#96}█ {#35}█{#95}█ {#34}█{#94}█ {#33}█{#93}█ {#32}█{#92}█ {#31}█{#91}█ {#30}█{#90}█" |
|
| 41 | + | }, |
|
| 42 | + | { |
|
| 43 | + | "type": "packages", |
|
| 44 | + | "format": "{all}" |
|
| 45 | + | }, |
|
| 46 | + | { |
|
| 47 | + | "type": "cpu", |
|
| 48 | + | "key": "Temperature", |
|
| 49 | + | "temp": true, |
|
| 50 | + | "format": "{temperature}" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "type": "cpu", |
|
| 54 | + | "key": "CPU", |
|
| 55 | + | "format": "{cores-logical} x {name}" |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "type": "gpu", |
|
| 59 | + | "format": "{name}" |
|
| 60 | + | }, |
|
| 61 | + | { |
|
| 62 | + | "type": "memory", |
|
| 63 | + | "key": "RAM" |
|
| 64 | + | }, |
|
| 65 | + | { |
|
| 66 | + | "type": "disk", |
|
| 67 | + | "key": "Disk", |
|
| 68 | + | "folders": "/" |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "type": "localip", |
|
| 72 | + | "key": "LAN IP", |
|
| 73 | + | "showIpv6": true, |
|
| 74 | + | "showPrefixLen": false |
|
| 75 | + | }, |
|
| 76 | + | { |
|
| 77 | + | "type": "publicip", |
|
| 78 | + | "key": "WAN IP", |
|
| 79 | + | "timeout": 1000 |
|
| 80 | + | } |
|
| 81 | + | ] |
|
| 82 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "display": { |
|
| 4 | + | "stat": true, |
|
| 5 | + | "pipe": true, |
|
| 6 | + | "showErrors": true, |
|
| 7 | + | "noBuffer": true |
|
| 8 | + | }, |
|
| 9 | + | "logo": null, |
|
| 10 | + | "modules": [ |
|
| 11 | + | "title", |
|
| 12 | + | "separator", |
|
| 13 | + | "os", |
|
| 14 | + | "host", |
|
| 15 | + | "bios", |
|
| 16 | + | "bootmgr", |
|
| 17 | + | "board", |
|
| 18 | + | "chassis", |
|
| 19 | + | "kernel", |
|
| 20 | + | "initsystem", |
|
| 21 | + | "uptime", |
|
| 22 | + | "loadavg", |
|
| 23 | + | "processes", |
|
| 24 | + | "packages", |
|
| 25 | + | "shell", |
|
| 26 | + | "editor", |
|
| 27 | + | "display", |
|
| 28 | + | "brightness", |
|
| 29 | + | "monitor", |
|
| 30 | + | "lm", |
|
| 31 | + | "de", |
|
| 32 | + | "wm", |
|
| 33 | + | "wmtheme", |
|
| 34 | + | "theme", |
|
| 35 | + | "icons", |
|
| 36 | + | "font", |
|
| 37 | + | "cursor", |
|
| 38 | + | "wallpaper", |
|
| 39 | + | "terminal", |
|
| 40 | + | "terminalfont", |
|
| 41 | + | "terminalsize", |
|
| 42 | + | "terminaltheme", |
|
| 43 | + | { |
|
| 44 | + | "type": "cpu", |
|
| 45 | + | "showPeCoreCount": true, |
|
| 46 | + | "temp": true |
|
| 47 | + | }, |
|
| 48 | + | "cpucache", |
|
| 49 | + | "cpuusage", |
|
| 50 | + | { |
|
| 51 | + | "type": "gpu", |
|
| 52 | + | "driverSpecific": true, |
|
| 53 | + | "temp": true |
|
| 54 | + | }, |
|
| 55 | + | "memory", |
|
| 56 | + | "physicalmemory", |
|
| 57 | + | "swap", |
|
| 58 | + | "disk", |
|
| 59 | + | "btrfs", |
|
| 60 | + | "zpool", |
|
| 61 | + | { |
|
| 62 | + | "type": "battery", |
|
| 63 | + | "temp": true |
|
| 64 | + | }, |
|
| 65 | + | "poweradapter", |
|
| 66 | + | "player", |
|
| 67 | + | "media", |
|
| 68 | + | { |
|
| 69 | + | "type": "publicip", |
|
| 70 | + | "timeout": 1000 |
|
| 71 | + | }, |
|
| 72 | + | { |
|
| 73 | + | "type": "localip", |
|
| 74 | + | "showIpv6": true, |
|
| 75 | + | "showMac": true, |
|
| 76 | + | "showSpeed": true, |
|
| 77 | + | "showMtu": true, |
|
| 78 | + | "showLoop": true, |
|
| 79 | + | "showFlags": true, |
|
| 80 | + | "showAllIps": true |
|
| 81 | + | }, |
|
| 82 | + | "dns", |
|
| 83 | + | "wifi", |
|
| 84 | + | "datetime", |
|
| 85 | + | "locale", |
|
| 86 | + | "vulkan", |
|
| 87 | + | "opengl", |
|
| 88 | + | "opencl", |
|
| 89 | + | "users", |
|
| 90 | + | "bluetooth", |
|
| 91 | + | "bluetoothradio", |
|
| 92 | + | "sound", |
|
| 93 | + | "camera", |
|
| 94 | + | "gamepad", |
|
| 95 | + | { |
|
| 96 | + | "type": "weather", |
|
| 97 | + | "timeout": 1000 |
|
| 98 | + | }, |
|
| 99 | + | "netio", |
|
| 100 | + | "diskio", |
|
| 101 | + | { |
|
| 102 | + | "type": "physicaldisk", |
|
| 103 | + | "temp": true |
|
| 104 | + | }, |
|
| 105 | + | "tpm", |
|
| 106 | + | "version", |
|
| 107 | + | "break", |
|
| 108 | + | "colors" |
|
| 109 | + | ] |
|
| 110 | + | } |
| 1 | + | // Load with --load-config examples/2.jsonc |
|
| 2 | + | // Note that you must replace the image path to an existing image to display it. |
|
| 3 | + | ||
| 4 | + | { |
|
| 5 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 6 | + | "logo": { |
|
| 7 | + | "padding": { |
|
| 8 | + | "top": 2 |
|
| 9 | + | } |
|
| 10 | + | }, |
|
| 11 | + | "display": { |
|
| 12 | + | "separator": " -> ", |
|
| 13 | + | "constants": [ |
|
| 14 | + | "──────────────────────────────" |
|
| 15 | + | ] |
|
| 16 | + | }, |
|
| 17 | + | "modules": [ |
|
| 18 | + | { |
|
| 19 | + | "type": "custom", |
|
| 20 | + | "format": "┌{$1}{$1}┐", |
|
| 21 | + | "outputColor": "90" |
|
| 22 | + | }, |
|
| 23 | + | { |
|
| 24 | + | "type": "title", |
|
| 25 | + | "keyWidth": 10 |
|
| 26 | + | }, |
|
| 27 | + | { |
|
| 28 | + | "type": "custom", |
|
| 29 | + | "format": "└{$1}{$1}┘", |
|
| 30 | + | "outputColor": "90" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "type": "custom", |
|
| 34 | + | "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39} {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}" |
|
| 35 | + | }, |
|
| 36 | + | { |
|
| 37 | + | "type": "custom", |
|
| 38 | + | "format": "┌{$1}{$1}┐", |
|
| 39 | + | "outputColor": "90" |
|
| 40 | + | }, |
|
| 41 | + | { |
|
| 42 | + | "type": "os", |
|
| 43 | + | "key": "{icon} OS", |
|
| 44 | + | "keyColor": "yellow" |
|
| 45 | + | }, |
|
| 46 | + | { |
|
| 47 | + | "type": "kernel", |
|
| 48 | + | "key": "│ ├", |
|
| 49 | + | "keyColor": "yellow" |
|
| 50 | + | }, |
|
| 51 | + | { |
|
| 52 | + | "type": "packages", |
|
| 53 | + | "key": "│ ├", |
|
| 54 | + | "keyColor": "yellow" |
|
| 55 | + | }, |
|
| 56 | + | { |
|
| 57 | + | "type": "shell", |
|
| 58 | + | "key": "│ └", |
|
| 59 | + | "keyColor": "yellow" |
|
| 60 | + | }, |
|
| 61 | + | { |
|
| 62 | + | "type": "wm", |
|
| 63 | + | "key": " DE/WM", |
|
| 64 | + | "keyColor": "blue" |
|
| 65 | + | }, |
|
| 66 | + | { |
|
| 67 | + | "type": "lm", |
|
| 68 | + | "key": "│ ├", |
|
| 69 | + | "keyColor": "blue" |
|
| 70 | + | }, |
|
| 71 | + | { |
|
| 72 | + | "type": "wmtheme", |
|
| 73 | + | "key": "│ ├", |
|
| 74 | + | "keyColor": "blue" |
|
| 75 | + | }, |
|
| 76 | + | { |
|
| 77 | + | "type": "icons", |
|
| 78 | + | "key": "│ ├", |
|
| 79 | + | "keyColor": "blue" |
|
| 80 | + | }, |
|
| 81 | + | { |
|
| 82 | + | "type": "terminal", |
|
| 83 | + | "key": "│ ├", |
|
| 84 | + | "keyColor": "blue" |
|
| 85 | + | }, |
|
| 86 | + | { |
|
| 87 | + | "type": "wallpaper", |
|
| 88 | + | "key": "│ └", |
|
| 89 | + | "keyColor": "blue" |
|
| 90 | + | }, |
|
| 91 | + | { |
|
| 92 | + | "type": "host", |
|
| 93 | + | "key": " PC", |
|
| 94 | + | "keyColor": "green" |
|
| 95 | + | }, |
|
| 96 | + | { |
|
| 97 | + | "type": "cpu", |
|
| 98 | + | "key": "│ ├", |
|
| 99 | + | "keyColor": "green" |
|
| 100 | + | }, |
|
| 101 | + | { |
|
| 102 | + | "type": "gpu", |
|
| 103 | + | "key": "│ ├", |
|
| 104 | + | "keyColor": "green" |
|
| 105 | + | }, |
|
| 106 | + | { |
|
| 107 | + | "type": "disk", |
|
| 108 | + | "key": "│ ├", |
|
| 109 | + | "keyColor": "green" |
|
| 110 | + | }, |
|
| 111 | + | { |
|
| 112 | + | "type": "memory", |
|
| 113 | + | "key": "│ ├", |
|
| 114 | + | "keyColor": "green" |
|
| 115 | + | }, |
|
| 116 | + | { |
|
| 117 | + | "type": "swap", |
|
| 118 | + | "key": "│ ├", |
|
| 119 | + | "keyColor": "green" |
|
| 120 | + | }, |
|
| 121 | + | { |
|
| 122 | + | "type": "uptime", |
|
| 123 | + | "key": "│ ├", |
|
| 124 | + | "keyColor": "green" |
|
| 125 | + | }, |
|
| 126 | + | { |
|
| 127 | + | "type": "display", |
|
| 128 | + | "key": "│ └", |
|
| 129 | + | "keyColor": "green" |
|
| 130 | + | }, |
|
| 131 | + | { |
|
| 132 | + | "type": "sound", |
|
| 133 | + | "key": " SND", |
|
| 134 | + | "keyColor": "cyan" |
|
| 135 | + | }, |
|
| 136 | + | { |
|
| 137 | + | "type": "player", |
|
| 138 | + | "key": "│ ├", |
|
| 139 | + | "keyColor": "cyan" |
|
| 140 | + | }, |
|
| 141 | + | { |
|
| 142 | + | "type": "media", |
|
| 143 | + | "key": "│ └", |
|
| 144 | + | "keyColor": "cyan" |
|
| 145 | + | }, |
|
| 146 | + | { |
|
| 147 | + | "type": "custom", |
|
| 148 | + | "format": "└{$1}{$1}┘", |
|
| 149 | + | "outputColor": "90" |
|
| 150 | + | }, |
|
| 151 | + | "break", |
|
| 152 | + | { |
|
| 153 | + | "type": "custom", |
|
| 154 | + | "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39} {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}" |
|
| 155 | + | } |
|
| 156 | + | ] |
|
| 157 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small" |
|
| 5 | + | }, |
|
| 6 | + | "display": { |
|
| 7 | + | "separator": "-> ", |
|
| 8 | + | "color": { |
|
| 9 | + | "separator": "red" |
|
| 10 | + | } |
|
| 11 | + | }, |
|
| 12 | + | "modules": [ |
|
| 13 | + | { |
|
| 14 | + | "key": "Distro ", |
|
| 15 | + | "type": "os" |
|
| 16 | + | }, |
|
| 17 | + | { |
|
| 18 | + | "key": "Shell ", |
|
| 19 | + | "type": "shell" |
|
| 20 | + | }, |
|
| 21 | + | { |
|
| 22 | + | "key": "Terminal ", |
|
| 23 | + | "type": "terminal" |
|
| 24 | + | }, |
|
| 25 | + | { |
|
| 26 | + | "key": "Display ", |
|
| 27 | + | "type": "display" |
|
| 28 | + | }, |
|
| 29 | + | { |
|
| 30 | + | "key": "Backlight ", |
|
| 31 | + | "type": "brightness" |
|
| 32 | + | }, |
|
| 33 | + | "break", |
|
| 34 | + | { |
|
| 35 | + | "type": "colors", |
|
| 36 | + | "paddingLeft": 6, |
|
| 37 | + | "symbol": "circle" |
|
| 38 | + | } |
|
| 39 | + | ] |
|
| 40 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "none" |
|
| 5 | + | }, |
|
| 6 | + | "display": { |
|
| 7 | + | "separator": "-> ", |
|
| 8 | + | "color": { |
|
| 9 | + | "separator": "1" // Bold |
|
| 10 | + | }, |
|
| 11 | + | "constants": [ |
|
| 12 | + | "───────────────────────────" |
|
| 13 | + | ], |
|
| 14 | + | "key": { |
|
| 15 | + | "type": "both", |
|
| 16 | + | "paddingLeft": 4 |
|
| 17 | + | } |
|
| 18 | + | }, |
|
| 19 | + | "modules": [ |
|
| 20 | + | { |
|
| 21 | + | "type": "title", |
|
| 22 | + | "format": " {user-name-colored}{at-symbol-colored}{host-name-colored}" |
|
| 23 | + | }, |
|
| 24 | + | "break", |
|
| 25 | + | { |
|
| 26 | + | "type": "custom", |
|
| 27 | + | "format": "┌{$1} {#1}System Information{#} {$1}┐" |
|
| 28 | + | }, |
|
| 29 | + | "break", |
|
| 30 | + | { |
|
| 31 | + | "key": "OS ", |
|
| 32 | + | "keyColor": "red", |
|
| 33 | + | "type": "os" |
|
| 34 | + | }, |
|
| 35 | + | { |
|
| 36 | + | "key": "Machine ", |
|
| 37 | + | "keyColor": "green", |
|
| 38 | + | "type": "host" |
|
| 39 | + | }, |
|
| 40 | + | { |
|
| 41 | + | "key": "Kernel ", |
|
| 42 | + | "keyColor": "magenta", |
|
| 43 | + | "type": "kernel" |
|
| 44 | + | }, |
|
| 45 | + | { |
|
| 46 | + | "key": "Uptime ", |
|
| 47 | + | "keyColor": "red", |
|
| 48 | + | "type": "uptime" |
|
| 49 | + | }, |
|
| 50 | + | { |
|
| 51 | + | "key": "Resolution ", |
|
| 52 | + | "keyColor": "yellow", |
|
| 53 | + | "type": "display", |
|
| 54 | + | "compactType": "original-with-refresh-rate" |
|
| 55 | + | }, |
|
| 56 | + | { |
|
| 57 | + | "key": "WM ", |
|
| 58 | + | "keyColor": "blue", |
|
| 59 | + | "type": "wm" |
|
| 60 | + | }, |
|
| 61 | + | { |
|
| 62 | + | "key": "DE ", |
|
| 63 | + | "keyColor": "green", |
|
| 64 | + | "type": "de" |
|
| 65 | + | }, |
|
| 66 | + | { |
|
| 67 | + | "key": "Shell ", |
|
| 68 | + | "keyColor": "cyan", |
|
| 69 | + | "type": "shell" |
|
| 70 | + | }, |
|
| 71 | + | { |
|
| 72 | + | "key": "Terminal ", |
|
| 73 | + | "keyColor": "red", |
|
| 74 | + | "type": "terminal" |
|
| 75 | + | }, |
|
| 76 | + | { |
|
| 77 | + | "key": "CPU ", |
|
| 78 | + | "keyColor": "yellow", |
|
| 79 | + | "type": "cpu" |
|
| 80 | + | }, |
|
| 81 | + | { |
|
| 82 | + | "key": "GPU ", |
|
| 83 | + | "keyColor": "blue", |
|
| 84 | + | "type": "gpu" |
|
| 85 | + | }, |
|
| 86 | + | { |
|
| 87 | + | "key": "Memory ", |
|
| 88 | + | "keyColor": "magenta", |
|
| 89 | + | "type": "memory" |
|
| 90 | + | }, |
|
| 91 | + | { |
|
| 92 | + | "key": "Local IP ", |
|
| 93 | + | "keyColor": "red", |
|
| 94 | + | "type": "localip", |
|
| 95 | + | "compact": true |
|
| 96 | + | }, |
|
| 97 | + | { |
|
| 98 | + | "key": "Public IP ", |
|
| 99 | + | "keyColor": "cyan", |
|
| 100 | + | "type": "publicip", |
|
| 101 | + | "timeout": 1000 |
|
| 102 | + | }, |
|
| 103 | + | "break", |
|
| 104 | + | { |
|
| 105 | + | "type": "custom", |
|
| 106 | + | "format": "└{$1}────────────────────{$1}┘" |
|
| 107 | + | }, |
|
| 108 | + | "break", |
|
| 109 | + | { |
|
| 110 | + | "type": "colors", |
|
| 111 | + | "paddingLeft": 34, |
|
| 112 | + | "symbol": "circle" |
|
| 113 | + | } |
|
| 114 | + | ] |
|
| 115 | + | } |
| 1 | + | // Inspired by Catnap |
|
| 2 | + | { |
|
| 3 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 4 | + | "logo": { |
|
| 5 | + | "type": "small", |
|
| 6 | + | "padding": { |
|
| 7 | + | "top": 1 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": " " |
|
| 12 | + | }, |
|
| 13 | + | "modules": [ |
|
| 14 | + | { |
|
| 15 | + | "key": "╭───────────╮", |
|
| 16 | + | "type": "custom" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "key": "│ {#31} user {#keys}│", |
|
| 20 | + | "type": "title", |
|
| 21 | + | "format": "{user-name}" |
|
| 22 | + | }, |
|
| 23 | + | { |
|
| 24 | + | "key": "│ {#32} hname {#keys}│", |
|
| 25 | + | "type": "title", |
|
| 26 | + | "format": "{host-name}" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "key": "│ {#33} uptime {#keys}│", |
|
| 30 | + | "type": "uptime" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "key": "│ {#34}{icon} distro {#keys}│", |
|
| 34 | + | "type": "os" |
|
| 35 | + | }, |
|
| 36 | + | { |
|
| 37 | + | "key": "│ {#35} kernel {#keys}│", |
|
| 38 | + | "type": "kernel" |
|
| 39 | + | }, |
|
| 40 | + | { |
|
| 41 | + | "key": "│ {#36} desktop {#keys}│", |
|
| 42 | + | "type": "de" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "key": "│ {#31} term {#keys}│", |
|
| 46 | + | "type": "terminal" |
|
| 47 | + | }, |
|
| 48 | + | { |
|
| 49 | + | "key": "│ {#32} shell {#keys}│", |
|
| 50 | + | "type": "shell" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "key": "│ {#33} cpu {#keys}│", |
|
| 54 | + | "type": "cpu", |
|
| 55 | + | "showPeCoreCount": true |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "key": "│ {#34} disk {#keys}│", |
|
| 59 | + | "type": "disk", |
|
| 60 | + | "folders": "/" |
|
| 61 | + | }, |
|
| 62 | + | { |
|
| 63 | + | "key": "│ {#35} memory {#keys}│", |
|
| 64 | + | "type": "memory" |
|
| 65 | + | }, |
|
| 66 | + | { |
|
| 67 | + | "key": "│ {#36} network {#keys}│", |
|
| 68 | + | "type": "localip", |
|
| 69 | + | "format": "{ipv4} ({ifname})" |
|
| 70 | + | }, |
|
| 71 | + | { |
|
| 72 | + | "key": "├───────────┤", |
|
| 73 | + | "type": "custom" |
|
| 74 | + | }, |
|
| 75 | + | { |
|
| 76 | + | "key": "│ {#39} colors {#keys}│", |
|
| 77 | + | "type": "colors", |
|
| 78 | + | "symbol": "circle" |
|
| 79 | + | }, |
|
| 80 | + | { |
|
| 81 | + | "key": "╰───────────╯", |
|
| 82 | + | "type": "custom" |
|
| 83 | + | } |
|
| 84 | + | ] |
|
| 85 | + | } |
| 1 | + | // Inspired by Catnap |
|
| 2 | + | { |
|
| 3 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 4 | + | "logo": { |
|
| 5 | + | "type": "small" |
|
| 6 | + | }, |
|
| 7 | + | "display": { |
|
| 8 | + | "separator": "", |
|
| 9 | + | "key": { |
|
| 10 | + | "width": 15 |
|
| 11 | + | } |
|
| 12 | + | }, |
|
| 13 | + | "modules": [ |
|
| 14 | + | { |
|
| 15 | + | // draw borders first to make colors of left and right border consistant |
|
| 16 | + | "key": " user", |
|
| 17 | + | "type": "title", |
|
| 18 | + | "format": "{user-name}", |
|
| 19 | + | "keyColor": "31" |
|
| 20 | + | }, |
|
| 21 | + | { |
|
| 22 | + | "key": " hname", |
|
| 23 | + | "type": "title", |
|
| 24 | + | "format": "{host-name}", |
|
| 25 | + | "keyColor": "32" |
|
| 26 | + | ||
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "key": " uptime", |
|
| 30 | + | "type": "uptime", |
|
| 31 | + | "keyColor": "33" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "key": "{icon} distro", |
|
| 35 | + | "type": "os", |
|
| 36 | + | "keyColor": "34" |
|
| 37 | + | }, |
|
| 38 | + | { |
|
| 39 | + | "key": " kernel", |
|
| 40 | + | "type": "kernel", |
|
| 41 | + | "keyColor": "35" |
|
| 42 | + | }, |
|
| 43 | + | { |
|
| 44 | + | "key": " desktop", |
|
| 45 | + | "type": "de", |
|
| 46 | + | "keyColor": "36" |
|
| 47 | + | }, |
|
| 48 | + | { |
|
| 49 | + | "key": " term", |
|
| 50 | + | "type": "terminal", |
|
| 51 | + | "keyColor": "31" |
|
| 52 | + | }, |
|
| 53 | + | { |
|
| 54 | + | "key": " shell", |
|
| 55 | + | "type": "shell", |
|
| 56 | + | "keyColor": "32" |
|
| 57 | + | }, |
|
| 58 | + | { |
|
| 59 | + | "key": " cpu", |
|
| 60 | + | "type": "cpu", |
|
| 61 | + | "showPeCoreCount": true, |
|
| 62 | + | "keyColor": "33" |
|
| 63 | + | }, |
|
| 64 | + | { |
|
| 65 | + | "key": " disk", |
|
| 66 | + | "type": "disk", |
|
| 67 | + | "folders": "/", |
|
| 68 | + | "keyColor": "34" |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "key": " memory", |
|
| 72 | + | "type": "memory", |
|
| 73 | + | "keyColor": "35" |
|
| 74 | + | }, |
|
| 75 | + | { |
|
| 76 | + | "key": " network", |
|
| 77 | + | "type": "localip", |
|
| 78 | + | "format": "{ipv4} ({ifname})", |
|
| 79 | + | "keyColor": "36" |
|
| 80 | + | }, |
|
| 81 | + | { |
|
| 82 | + | "key": " colors", |
|
| 83 | + | "type": "colors", |
|
| 84 | + | "symbol": "circle", |
|
| 85 | + | "keyColor": "39" |
|
| 86 | + | } |
|
| 87 | + | ] |
|
| 88 | + | } |
| 1 | + | // Inspired by Catnap |
|
| 2 | + | { |
|
| 3 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 4 | + | "logo": { |
|
| 5 | + | "type": "small", |
|
| 6 | + | "padding": { |
|
| 7 | + | "top": 1 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": " " |
|
| 12 | + | }, |
|
| 13 | + | "modules": [ |
|
| 14 | + | { |
|
| 15 | + | "key": "•••••••••••••", |
|
| 16 | + | "type": "custom" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "key": "• {#31} user {#keys}•", |
|
| 20 | + | "type": "title", |
|
| 21 | + | "format": "{user-name}" |
|
| 22 | + | }, |
|
| 23 | + | { |
|
| 24 | + | "key": "• {#32} hname {#keys}•", |
|
| 25 | + | "type": "title", |
|
| 26 | + | "format": "{host-name}" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "key": "• {#33} uptime {#keys}•", |
|
| 30 | + | "type": "uptime" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "key": "• {#34}{icon} distro {#keys}•", |
|
| 34 | + | "type": "os" |
|
| 35 | + | }, |
|
| 36 | + | { |
|
| 37 | + | "key": "• {#35} kernel {#keys}•", |
|
| 38 | + | "type": "kernel" |
|
| 39 | + | }, |
|
| 40 | + | { |
|
| 41 | + | "key": "• {#36} desktop {#keys}•", |
|
| 42 | + | "type": "de" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "key": "• {#31} term {#keys}•", |
|
| 46 | + | "type": "terminal" |
|
| 47 | + | }, |
|
| 48 | + | { |
|
| 49 | + | "key": "• {#32} shell {#keys}•", |
|
| 50 | + | "type": "shell" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "key": "• {#33} cpu {#keys}•", |
|
| 54 | + | "type": "cpu", |
|
| 55 | + | "showPeCoreCount": true |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "key": "• {#34} disk {#keys}•", |
|
| 59 | + | "type": "disk", |
|
| 60 | + | "folders": "/" |
|
| 61 | + | }, |
|
| 62 | + | { |
|
| 63 | + | "key": "• {#35} memory {#keys}•", |
|
| 64 | + | "type": "memory" |
|
| 65 | + | }, |
|
| 66 | + | { |
|
| 67 | + | "key": "• {#36} network {#keys}•", |
|
| 68 | + | "type": "localip", |
|
| 69 | + | "format": "{ipv4} ({ifname})" |
|
| 70 | + | }, |
|
| 71 | + | { |
|
| 72 | + | "key": "•••••••••••••", |
|
| 73 | + | "type": "custom" |
|
| 74 | + | }, |
|
| 75 | + | { |
|
| 76 | + | "key": "• {#39} colors {#keys}•", |
|
| 77 | + | "type": "colors", |
|
| 78 | + | "symbol": "circle" |
|
| 79 | + | }, |
|
| 80 | + | { |
|
| 81 | + | "key": "•••••••••••••", |
|
| 82 | + | "type": "custom" |
|
| 83 | + | } |
|
| 84 | + | ] |
|
| 85 | + | } |
| 1 | + | // Inspired by Catnap |
|
| 2 | + | { |
|
| 3 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 4 | + | "logo": { |
|
| 5 | + | "type": "small", |
|
| 6 | + | "padding": { |
|
| 7 | + | "top": 1 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": " " |
|
| 12 | + | }, |
|
| 13 | + | "modules": [ |
|
| 14 | + | { |
|
| 15 | + | "key": "╔═══════════╗", |
|
| 16 | + | "type": "custom" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "key": "║ {#31} user {#keys}║", |
|
| 20 | + | "type": "title", |
|
| 21 | + | "format": "{user-name}" |
|
| 22 | + | }, |
|
| 23 | + | { |
|
| 24 | + | "key": "║ {#32} hname {#keys}║", |
|
| 25 | + | "type": "title", |
|
| 26 | + | "format": "{host-name}" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "key": "║ {#33} uptime {#keys}║", |
|
| 30 | + | "type": "uptime" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "key": "║ {#34}{icon} distro {#keys}║", |
|
| 34 | + | "type": "os" |
|
| 35 | + | }, |
|
| 36 | + | { |
|
| 37 | + | "key": "║ {#35} kernel {#keys}║", |
|
| 38 | + | "type": "kernel" |
|
| 39 | + | }, |
|
| 40 | + | { |
|
| 41 | + | "key": "║ {#36} desktop {#keys}║", |
|
| 42 | + | "type": "de" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "key": "║ {#31} term {#keys}║", |
|
| 46 | + | "type": "terminal" |
|
| 47 | + | }, |
|
| 48 | + | { |
|
| 49 | + | "key": "║ {#32} shell {#keys}║", |
|
| 50 | + | "type": "shell" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "key": "║ {#33} cpu {#keys}║", |
|
| 54 | + | "type": "cpu", |
|
| 55 | + | "showPeCoreCount": true |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "key": "║ {#34} disk {#keys}║", |
|
| 59 | + | "type": "disk", |
|
| 60 | + | "folders": "/" |
|
| 61 | + | }, |
|
| 62 | + | { |
|
| 63 | + | "key": "║ {#35} memory {#keys}║", |
|
| 64 | + | "type": "memory" |
|
| 65 | + | }, |
|
| 66 | + | { |
|
| 67 | + | "key": "║ {#36} network {#keys}║", |
|
| 68 | + | "type": "localip", |
|
| 69 | + | "format": "{ipv4} ({ifname})" |
|
| 70 | + | }, |
|
| 71 | + | { |
|
| 72 | + | "key": "╠═══════════╣", |
|
| 73 | + | "type": "custom" |
|
| 74 | + | }, |
|
| 75 | + | { |
|
| 76 | + | "key": "║ {#39} colors {#keys}║", |
|
| 77 | + | "type": "colors", |
|
| 78 | + | "symbol": "circle" |
|
| 79 | + | }, |
|
| 80 | + | { |
|
| 81 | + | "key": "╚═══════════╝", |
|
| 82 | + | "type": "custom" |
|
| 83 | + | } |
|
| 84 | + | ] |
|
| 85 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small", |
|
| 5 | + | "padding": { |
|
| 6 | + | "top": 1, |
|
| 7 | + | "right": 2 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": "> ", |
|
| 12 | + | "color": { |
|
| 13 | + | "separator": "red" |
|
| 14 | + | }, |
|
| 15 | + | "constants": [ |
|
| 16 | + | "───────────────────────────────────────────────────────────────────────────", |
|
| 17 | + | "│\u001b[75C│\u001b[75D" |
|
| 18 | + | ] |
|
| 19 | + | }, |
|
| 20 | + | "modules": [ |
|
| 21 | + | { |
|
| 22 | + | "format": "{#1}{#keys}╭{$1}╮\u001b[76D {user-name-colored}{at-symbol-colored}{host-name-colored} 🖥 ", |
|
| 23 | + | "type": "title" |
|
| 24 | + | }, |
|
| 25 | + | { |
|
| 26 | + | "key": "{$2}{#31} kernel ", |
|
| 27 | + | "type": "kernel" |
|
| 28 | + | }, |
|
| 29 | + | { |
|
| 30 | + | "key": "{$2}{#32} uptime ", |
|
| 31 | + | "type": "uptime" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "key": "{$2}{#33}{icon} distro ", |
|
| 35 | + | "type": "os" |
|
| 36 | + | }, |
|
| 37 | + | { |
|
| 38 | + | "key": "{$2}{#34} desktop ", |
|
| 39 | + | "type": "de" |
|
| 40 | + | }, |
|
| 41 | + | { |
|
| 42 | + | "key": "{$2}{#35} term ", |
|
| 43 | + | "type": "terminal" |
|
| 44 | + | }, |
|
| 45 | + | { |
|
| 46 | + | "key": "{$2}{#36} shell ", |
|
| 47 | + | "type": "shell" |
|
| 48 | + | }, |
|
| 49 | + | { |
|
| 50 | + | "key": "{$2}{#35} cpu ", |
|
| 51 | + | "type": "cpu", |
|
| 52 | + | "showPeCoreCount": true, |
|
| 53 | + | "temp": true |
|
| 54 | + | }, |
|
| 55 | + | { |
|
| 56 | + | "key": "{$2}{#34} gpu ", |
|
| 57 | + | "type": "gpu" |
|
| 58 | + | }, |
|
| 59 | + | { |
|
| 60 | + | "key": "{$2}{#33} disk ", |
|
| 61 | + | "type": "disk", |
|
| 62 | + | "folders": "/" |
|
| 63 | + | }, |
|
| 64 | + | { |
|
| 65 | + | "key": "{$2}{#32} memory ", |
|
| 66 | + | "type": "memory" |
|
| 67 | + | }, |
|
| 68 | + | { |
|
| 69 | + | "key": "{$2}{#31} network ", |
|
| 70 | + | "type": "localip", |
|
| 71 | + | "format": "{ipv4} ({ifname})" |
|
| 72 | + | }, |
|
| 73 | + | { |
|
| 74 | + | "format": "{#1}{#keys}├{$1}┤", |
|
| 75 | + | "type": "custom" |
|
| 76 | + | }, |
|
| 77 | + | { |
|
| 78 | + | "key": "{$2}{#39} colors ", |
|
| 79 | + | "type": "colors", |
|
| 80 | + | "symbol": "circle" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "format": "{#1}{#keys}╰{$1}╯", |
|
| 84 | + | "type": "custom" |
|
| 85 | + | } |
|
| 86 | + | ] |
|
| 87 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small", |
|
| 5 | + | "padding": { |
|
| 6 | + | "top": 1, |
|
| 7 | + | "right": 2 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": "> ", |
|
| 12 | + | "color": { |
|
| 13 | + | "separator": "red" |
|
| 14 | + | }, |
|
| 15 | + | "constants": [ |
|
| 16 | + | "═══════════════════════════════════════════════════════════════════════════", |
|
| 17 | + | "║\u001b[75C║\u001b[75D" |
|
| 18 | + | ] |
|
| 19 | + | }, |
|
| 20 | + | "modules": [ |
|
| 21 | + | { |
|
| 22 | + | "format": "{#1}{#keys}╔{$1}╗\u001b[76D {user-name-colored}{at-symbol-colored}{host-name-colored} 💻 ", |
|
| 23 | + | "type": "title" |
|
| 24 | + | }, |
|
| 25 | + | { |
|
| 26 | + | "key": "{$2}{#31} kernel ", |
|
| 27 | + | "type": "kernel" |
|
| 28 | + | }, |
|
| 29 | + | { |
|
| 30 | + | "key": "{$2}{#32} uptime ", |
|
| 31 | + | "type": "uptime" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "key": "{$2}{#33}{icon} distro ", |
|
| 35 | + | "type": "os" |
|
| 36 | + | }, |
|
| 37 | + | { |
|
| 38 | + | "key": "{$2}{#34} desktop ", |
|
| 39 | + | "type": "de" |
|
| 40 | + | }, |
|
| 41 | + | { |
|
| 42 | + | "key": "{$2}{#35} term ", |
|
| 43 | + | "type": "terminal" |
|
| 44 | + | }, |
|
| 45 | + | { |
|
| 46 | + | "key": "{$2}{#36} shell ", |
|
| 47 | + | "type": "shell" |
|
| 48 | + | }, |
|
| 49 | + | { |
|
| 50 | + | "key": "{$2}{#35} cpu ", |
|
| 51 | + | "type": "cpu", |
|
| 52 | + | "showPeCoreCount": true, |
|
| 53 | + | "temp": true |
|
| 54 | + | }, |
|
| 55 | + | { |
|
| 56 | + | "key": "{$2}{#34} gpu ", |
|
| 57 | + | "type": "gpu" |
|
| 58 | + | }, |
|
| 59 | + | { |
|
| 60 | + | "key": "{$2}{#33} disk ", |
|
| 61 | + | "type": "disk", |
|
| 62 | + | "folders": "/" |
|
| 63 | + | }, |
|
| 64 | + | { |
|
| 65 | + | "key": "{$2}{#32} memory ", |
|
| 66 | + | "type": "memory" |
|
| 67 | + | }, |
|
| 68 | + | { |
|
| 69 | + | "key": "{$2}{#31} network ", |
|
| 70 | + | "type": "localip", |
|
| 71 | + | "format": "{ipv4} ({ifname})" |
|
| 72 | + | }, |
|
| 73 | + | { |
|
| 74 | + | "format": "{#1}{#keys}╠{$1}╣", |
|
| 75 | + | "type": "custom" |
|
| 76 | + | }, |
|
| 77 | + | { |
|
| 78 | + | "key": "{$2}{#39} colors ", |
|
| 79 | + | "type": "colors", |
|
| 80 | + | "symbol": "circle" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "format": "{#1}{#keys}╚{$1}╝", |
|
| 84 | + | "type": "custom" |
|
| 85 | + | } |
|
| 86 | + | ] |
|
| 87 | + | } |
| 1 | + | // _____ _____ _____ _____ _____ _____ _____ _____ _____ |
|
| 2 | + | // | __| _ | __|_ _| __| __|_ _| | | | |
|
| 3 | + | // | __| |__ | | | | __| __| | | | --| | |
|
| 4 | + | // |__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__| |
|
| 5 | + | // |
|
| 6 | + | // By CarterLi - https://github.com/CarterLi |
|
| 7 | + | // Homepage - https://github.com/fastfetch-cli/fastfetch |
|
| 8 | + | // config.jsonc - ニリ @niri-san |
|
| 9 | + | // pokemon-colorscripts - https://gitlab.com/phoneybadger/pokemon-colorscripts |
|
| 10 | + | { |
|
| 11 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 12 | + | "logo": { |
|
| 13 | + | "source": " _____ _____ _____ _____ _____ _____ _____ _____ _____\n| __| _ | __|_ _| __| __|_ _| | | |\n| __| |__ | | | | __| __| | | | --| |\n|__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|", |
|
| 14 | + | "type": "data", |
|
| 15 | + | "position": "top", |
|
| 16 | + | "padding": { |
|
| 17 | + | "right": 2 |
|
| 18 | + | } |
|
| 19 | + | }, |
|
| 20 | + | "display": { |
|
| 21 | + | "separator": " - " |
|
| 22 | + | }, |
|
| 23 | + | "modules": [ |
|
| 24 | + | { |
|
| 25 | + | "type": "custom", // HardwareInfo |
|
| 26 | + | "format": "• {#green}SYSTEM INFORMATION" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "type": "host", |
|
| 30 | + | "key": "HOST", |
|
| 31 | + | "format": "{name}{?vendor} ({vendor}){?}", |
|
| 32 | + | "keyColor": "green" |
|
| 33 | + | }, |
|
| 34 | + | { |
|
| 35 | + | "type": "chassis", |
|
| 36 | + | "key": "COMPUTER TYPE", |
|
| 37 | + | "keyColor": "green" |
|
| 38 | + | }, |
|
| 39 | + | { |
|
| 40 | + | "type": "cpu", |
|
| 41 | + | "key": "CPU", |
|
| 42 | + | "keyColor": "green" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "type": "gpu", |
|
| 46 | + | "key": "GPU", |
|
| 47 | + | "keyColor": "green" |
|
| 48 | + | }, |
|
| 49 | + | { |
|
| 50 | + | "type": "memory", |
|
| 51 | + | "key": "MEMORY USED", |
|
| 52 | + | "keyColor": "green" |
|
| 53 | + | }, |
|
| 54 | + | { |
|
| 55 | + | "type": "swap", |
|
| 56 | + | "key": "SWAP USED", |
|
| 57 | + | "keyColor": "green" |
|
| 58 | + | }, |
|
| 59 | + | { |
|
| 60 | + | "type": "disk", |
|
| 61 | + | "key": "DISK", |
|
| 62 | + | "folders": "/", |
|
| 63 | + | "keyColor": "green" |
|
| 64 | + | }, |
|
| 65 | + | { |
|
| 66 | + | "type": "custom", // SoftwareInfo |
|
| 67 | + | "format": "• {#red}SOFTWARE INFORMATION" |
|
| 68 | + | }, |
|
| 69 | + | { |
|
| 70 | + | "type": "os", |
|
| 71 | + | "key": "DISTRO", |
|
| 72 | + | "keyColor": "red" |
|
| 73 | + | }, |
|
| 74 | + | { |
|
| 75 | + | "type": "disk", |
|
| 76 | + | "folders": "/", // Use "/System/Volumes/VM" or something else on macOS |
|
| 77 | + | "format": "{create-time}", |
|
| 78 | + | "key": "INSTALLED DATE", |
|
| 79 | + | "keyColor": "red" |
|
| 80 | + | }, |
|
| 81 | + | { |
|
| 82 | + | "type": "kernel", |
|
| 83 | + | "key": "KERNEL", |
|
| 84 | + | "keyColor": "red" |
|
| 85 | + | }, |
|
| 86 | + | { |
|
| 87 | + | "type": "packages", |
|
| 88 | + | "key": "PACKAGES", |
|
| 89 | + | "keyColor": "red" |
|
| 90 | + | }, |
|
| 91 | + | { |
|
| 92 | + | "type": "uptime", |
|
| 93 | + | "key": "UPTIME", |
|
| 94 | + | "keyColor": "red" |
|
| 95 | + | }, |
|
| 96 | + | { |
|
| 97 | + | "type": "custom", // DisplayInfo |
|
| 98 | + | "format": "• {#blue}DISPLAY INFORMATION" |
|
| 99 | + | }, |
|
| 100 | + | { |
|
| 101 | + | "type": "de", |
|
| 102 | + | "key": "DESKTOP ENVIRONMENT", |
|
| 103 | + | "keyColor": "blue" |
|
| 104 | + | }, |
|
| 105 | + | { |
|
| 106 | + | "type": "lm", |
|
| 107 | + | "key": "LOGIN MANAGER", |
|
| 108 | + | "format": "{type}", |
|
| 109 | + | "keyColor": "blue" |
|
| 110 | + | }, |
|
| 111 | + | { |
|
| 112 | + | "type": "wm", |
|
| 113 | + | "key": "WM", |
|
| 114 | + | "keyColor": "blue" |
|
| 115 | + | }, |
|
| 116 | + | { |
|
| 117 | + | "type": "wmtheme", |
|
| 118 | + | "key": "WM THEME", |
|
| 119 | + | "keyColor": "blue" |
|
| 120 | + | }, |
|
| 121 | + | { |
|
| 122 | + | "type": "display", |
|
| 123 | + | "key": "MONITOR ({name})", |
|
| 124 | + | "keyColor": "blue", |
|
| 125 | + | "format": "{width}x{height} @ {refresh-rate} Hz - {physical-width}x{physical-height} mm ({inch} inches, {ppi} ppi)" |
|
| 126 | + | }, |
|
| 127 | + | { |
|
| 128 | + | "type": "custom", // DesignInfo |
|
| 129 | + | "format": "• {#yellow}DESIGN INFORMATION" |
|
| 130 | + | }, |
|
| 131 | + | { |
|
| 132 | + | "type": "wallpaper", |
|
| 133 | + | "key": "WALLPAPER", |
|
| 134 | + | "keyColor": "yellow" |
|
| 135 | + | }, |
|
| 136 | + | { |
|
| 137 | + | "type": "theme", |
|
| 138 | + | "key": "KDE THEME", |
|
| 139 | + | "format": "{1}", |
|
| 140 | + | "keyColor": "yellow" |
|
| 141 | + | }, |
|
| 142 | + | { |
|
| 143 | + | "type": "icons", |
|
| 144 | + | "key": "ICON THEME", |
|
| 145 | + | "format": "{1}", |
|
| 146 | + | "keyColor": "yellow" |
|
| 147 | + | }, |
|
| 148 | + | { |
|
| 149 | + | "type": "font", |
|
| 150 | + | "key": "FONT", |
|
| 151 | + | "format": "{?1}{1} [Qt]{?}{/1}Unknown", // Remove "[Qt]" if not using Qt |
|
| 152 | + | "keyColor": "yellow" |
|
| 153 | + | }, |
|
| 154 | + | { |
|
| 155 | + | "type": "terminalfont", |
|
| 156 | + | "key": "TERMINAL FONT", |
|
| 157 | + | "keyColor": "yellow" |
|
| 158 | + | }, |
|
| 159 | + | { |
|
| 160 | + | "type": "cursor", |
|
| 161 | + | "key": "CURSOR", |
|
| 162 | + | "keyColor": "yellow" |
|
| 163 | + | }, |
|
| 164 | + | { |
|
| 165 | + | "type": "custom", // OtherInfo |
|
| 166 | + | "format": "• {#cyan}VARIOUS INFORMATION" |
|
| 167 | + | }, |
|
| 168 | + | { |
|
| 169 | + | "type": "media", |
|
| 170 | + | "key": "NOW PLAYING", |
|
| 171 | + | "format": "{?artist}{artist} - {?}{title}", |
|
| 172 | + | "keyColor": "cyan" |
|
| 173 | + | }, |
|
| 174 | + | { |
|
| 175 | + | "type": "weather", |
|
| 176 | + | "key": "WEATHER", |
|
| 177 | + | "timeout": 1000, |
|
| 178 | + | "keyColor": "cyan" |
|
| 179 | + | }, |
|
| 180 | + | { |
|
| 181 | + | "type": "version", |
|
| 182 | + | "key": "INFO", |
|
| 183 | + | "keyColor": "cyan" |
|
| 184 | + | }, |
|
| 185 | + | "break", |
|
| 186 | + | "colors", |
|
| 187 | + | "break" |
|
| 188 | + | ] |
|
| 189 | + | } |
| 1 | + | // Load with --load-config examples/2.jsonc |
|
| 2 | + | // Note that you must replace the image path to an existing image to display it. |
|
| 3 | + | ||
| 4 | + | { |
|
| 5 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 6 | + | // "logo": { |
|
| 7 | + | // "type": "iterm", |
|
| 8 | + | // "source": "~/Desktop/apple1.png", |
|
| 9 | + | // "width": 28, |
|
| 10 | + | // "height": 12 |
|
| 11 | + | // }, |
|
| 12 | + | "display": { |
|
| 13 | + | "separator": " ", |
|
| 14 | + | "constants": [ |
|
| 15 | + | "─────────────────" // {$1}, used in Custom module |
|
| 16 | + | ], |
|
| 17 | + | "key": { |
|
| 18 | + | "type": "icon", |
|
| 19 | + | "paddingLeft": 2 |
|
| 20 | + | } |
|
| 21 | + | }, |
|
| 22 | + | "modules": [ |
|
| 23 | + | { |
|
| 24 | + | "type": "custom", // HardwareStart |
|
| 25 | + | // {#1} is equivalent to `\u001b[1m`. {#} is equivalent to `\u001b[m` |
|
| 26 | + | "format": "┌{$1} {#1}Hardware Information{#} {$1}┐" |
|
| 27 | + | }, |
|
| 28 | + | "host", |
|
| 29 | + | "cpu", |
|
| 30 | + | "gpu", |
|
| 31 | + | "disk", |
|
| 32 | + | "memory", |
|
| 33 | + | "swap", |
|
| 34 | + | "display", |
|
| 35 | + | "brightness", |
|
| 36 | + | "battery", |
|
| 37 | + | "poweradapter", |
|
| 38 | + | "bluetooth", |
|
| 39 | + | "sound", |
|
| 40 | + | "gamepad", |
|
| 41 | + | { |
|
| 42 | + | "type": "custom", // SoftwareStart |
|
| 43 | + | "format": "├{$1} {#1}Software Information{#} {$1}┤" |
|
| 44 | + | }, |
|
| 45 | + | { |
|
| 46 | + | "type": "title", |
|
| 47 | + | "keyIcon": "", |
|
| 48 | + | "key": "Title", // Title module has no key by default, so that icon is not displayed |
|
| 49 | + | "format": "{user-name}@{host-name}" |
|
| 50 | + | }, |
|
| 51 | + | "os", |
|
| 52 | + | "kernel", |
|
| 53 | + | "lm", |
|
| 54 | + | "de", |
|
| 55 | + | "wm", |
|
| 56 | + | "shell", |
|
| 57 | + | "terminal", |
|
| 58 | + | "terminalfont", |
|
| 59 | + | "theme", |
|
| 60 | + | "icons", |
|
| 61 | + | "wallpaper", |
|
| 62 | + | "packages", |
|
| 63 | + | "uptime", |
|
| 64 | + | "media", |
|
| 65 | + | { |
|
| 66 | + | "type": "localip", |
|
| 67 | + | "compact": true |
|
| 68 | + | }, |
|
| 69 | + | { |
|
| 70 | + | "type": "publicip", |
|
| 71 | + | "timeout": 1000 |
|
| 72 | + | }, |
|
| 73 | + | { |
|
| 74 | + | "type": "wifi", |
|
| 75 | + | "format": "{ssid}" |
|
| 76 | + | }, |
|
| 77 | + | "locale", |
|
| 78 | + | { |
|
| 79 | + | "type": "custom", // InformationEnd |
|
| 80 | + | "format": "└{$1}──────────────────────{$1}┘" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "type": "colors", |
|
| 84 | + | "paddingLeft": 2, |
|
| 85 | + | "symbol": "circle" |
|
| 86 | + | } |
|
| 87 | + | ] |
|
| 88 | + | } |
| 1 | + | // Inspired by https://github.com/usgraphics/TR-100 |
|
| 2 | + | { |
|
| 3 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 4 | + | "logo": null, |
|
| 5 | + | "display": { |
|
| 6 | + | "pipe": true, |
|
| 7 | + | "key": { |
|
| 8 | + | "width": 16 |
|
| 9 | + | }, |
|
| 10 | + | "separator": "│ ", |
|
| 11 | + | "percent": { |
|
| 12 | + | "type": 6 |
|
| 13 | + | }, |
|
| 14 | + | "bar": { |
|
| 15 | + | "border": { |
|
| 16 | + | "left": "", |
|
| 17 | + | "right": "", |
|
| 18 | + | ||
| 19 | + | }, |
|
| 20 | + | "char": { |
|
| 21 | + | "elapsed": "█", |
|
| 22 | + | }, |
|
| 23 | + | "charTotal": "░", |
|
| 24 | + | "width": 40 |
|
| 25 | + | }, |
|
| 26 | + | "constants": [ |
|
| 27 | + | "\u001b[42C" |
|
| 28 | + | ] |
|
| 29 | + | }, |
|
| 30 | + | "modules": [ |
|
| 31 | + | { |
|
| 32 | + | "type": "custom", |
|
| 33 | + | "format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐" |
|
| 34 | + | }, |
|
| 35 | + | { |
|
| 36 | + | "type": "custom", |
|
| 37 | + | "format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤" |
|
| 38 | + | }, |
|
| 39 | + | { |
|
| 40 | + | "type": "custom", |
|
| 41 | + | "format": "│ TR-100 MACHINE REPORT │" |
|
| 42 | + | }, |
|
| 43 | + | { |
|
| 44 | + | "type": "custom", |
|
| 45 | + | "format": "├────────────┬──────────────────────────────────────────┤" |
|
| 46 | + | }, |
|
| 47 | + | { |
|
| 48 | + | "type": "os", |
|
| 49 | + | "key": "│ OS │{$1}" |
|
| 50 | + | }, |
|
| 51 | + | { |
|
| 52 | + | "type": "kernel", |
|
| 53 | + | "key": "│ KERNEL │{$1}" |
|
| 54 | + | }, |
|
| 55 | + | { |
|
| 56 | + | "type": "custom", |
|
| 57 | + | "format": "├────────────┼──────────────────────────────────────────┤" |
|
| 58 | + | }, |
|
| 59 | + | { |
|
| 60 | + | "type": "title", |
|
| 61 | + | "key": "│ HOSTNAME │{$1}", |
|
| 62 | + | "format": "{host-name}" |
|
| 63 | + | }, |
|
| 64 | + | { |
|
| 65 | + | "type": "title", |
|
| 66 | + | "key": "│ USER │{$1}", |
|
| 67 | + | "format": "{user-name}" |
|
| 68 | + | }, |
|
| 69 | + | { |
|
| 70 | + | "type": "host", |
|
| 71 | + | "key": "│ MACHINE │{$1}", |
|
| 72 | + | "format": "MacBook Pro" |
|
| 73 | + | }, |
|
| 74 | + | { |
|
| 75 | + | "type": "custom", |
|
| 76 | + | "format": "├────────────┼──────────────────────────────────────────┤" |
|
| 77 | + | }, |
|
| 78 | + | { |
|
| 79 | + | "type": "cpu", |
|
| 80 | + | "key": "│ PROCESSOR │{$1}", |
|
| 81 | + | "format": "{name}" |
|
| 82 | + | }, |
|
| 83 | + | { |
|
| 84 | + | "type": "cpu", |
|
| 85 | + | "key": "│ CORES │{$1}", |
|
| 86 | + | "format": "{cores-physical} PHYSICAL CORES / {cores-logical} THREADS", |
|
| 87 | + | "showPeCoreCount": false |
|
| 88 | + | }, |
|
| 89 | + | { |
|
| 90 | + | "type": "cpu", |
|
| 91 | + | "key": "│ CPU FREQ │{$1}", |
|
| 92 | + | "format": "{freq-max}{/freq-max}{freq-base}{/}" |
|
| 93 | + | }, |
|
| 94 | + | { |
|
| 95 | + | "type": "loadavg", |
|
| 96 | + | "compact": false, |
|
| 97 | + | "key": "│ LOAD {duration>2}m │{$1}" // pad duration to 2 chars |
|
| 98 | + | }, |
|
| 99 | + | { |
|
| 100 | + | "type": "custom", |
|
| 101 | + | "format": "├────────────┼──────────────────────────────────────────┤" |
|
| 102 | + | }, |
|
| 103 | + | { |
|
| 104 | + | "type": "memory", |
|
| 105 | + | "key": "│ MEMORY │{$1}", |
|
| 106 | + | "format": "{used} / {total} [{percentage}]" |
|
| 107 | + | }, |
|
| 108 | + | { |
|
| 109 | + | "type": "memory", |
|
| 110 | + | "key": "│ USAGE │{$1}", |
|
| 111 | + | "format": "" |
|
| 112 | + | }, |
|
| 113 | + | { |
|
| 114 | + | "type": "custom", |
|
| 115 | + | "format": "├────────────┼──────────────────────────────────────────┤" |
|
| 116 | + | }, |
|
| 117 | + | { |
|
| 118 | + | "type": "disk", |
|
| 119 | + | "key": "│ VOLUME │{$1}", |
|
| 120 | + | "format": "{size-used} / {size-total} [{size-percentage}]", |
|
| 121 | + | "folders": "/" |
|
| 122 | + | }, |
|
| 123 | + | { |
|
| 124 | + | "type": "disk", |
|
| 125 | + | "key": "│ DISK USAGE │{$1}", |
|
| 126 | + | "format": "" |
|
| 127 | + | }, |
|
| 128 | + | { |
|
| 129 | + | "type": "custom", |
|
| 130 | + | "format": "├────────────┼──────────────────────────────────────────┤" |
|
| 131 | + | }, |
|
| 132 | + | { |
|
| 133 | + | "type": "users", |
|
| 134 | + | "key": "│ LAST LOGIN │{$1}", |
|
| 135 | + | "format": "{login-time}{?client-ip} ({client-ip})", |
|
| 136 | + | "myselfOnly": true |
|
| 137 | + | }, |
|
| 138 | + | { |
|
| 139 | + | "type": "uptime", |
|
| 140 | + | "key": "│ UPTIME │{$1}" |
|
| 141 | + | }, |
|
| 142 | + | { |
|
| 143 | + | "type": "custom", |
|
| 144 | + | "format": "└────────────┴──────────────────────────────────────────┘" |
|
| 145 | + | } |
|
| 146 | + | ] |
|
| 147 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small" |
|
| 5 | + | }, |
|
| 6 | + | "display": { |
|
| 7 | + | "constants": [ |
|
| 8 | + | "██ " |
|
| 9 | + | ] |
|
| 10 | + | }, |
|
| 11 | + | "modules": [ |
|
| 12 | + | { |
|
| 13 | + | "key": "{$1}Distro", |
|
| 14 | + | "keyColor": "38;5;210", |
|
| 15 | + | "type": "os" |
|
| 16 | + | }, |
|
| 17 | + | { |
|
| 18 | + | "key": "{$1}Kernel", |
|
| 19 | + | "keyColor": "38;5;84", |
|
| 20 | + | "type": "kernel" |
|
| 21 | + | }, |
|
| 22 | + | { |
|
| 23 | + | "key": "{$1}Shell", |
|
| 24 | + | "keyColor": "38;5;147", |
|
| 25 | + | "type": "shell" |
|
| 26 | + | }, |
|
| 27 | + | { |
|
| 28 | + | "key": "{$1}Packages", |
|
| 29 | + | "keyColor": "38;5;200", |
|
| 30 | + | "type": "packages" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "key": "{$1}WM", |
|
| 34 | + | "keyColor": "38;5;44", |
|
| 35 | + | "type": "wm" |
|
| 36 | + | }, |
|
| 37 | + | { |
|
| 38 | + | "key": "{$1}CPU", |
|
| 39 | + | "keyColor": "38;5;75", |
|
| 40 | + | "type": "cpu" |
|
| 41 | + | }, |
|
| 42 | + | { |
|
| 43 | + | "key": "{$1}Memory", |
|
| 44 | + | "keyColor": "38;5;123", |
|
| 45 | + | "type": "memory" |
|
| 46 | + | } |
|
| 47 | + | ] |
|
| 48 | + | } |
| 1 | + | // Designed for Arch Linux |
|
| 2 | + | // Modified from: https://github.com/fastfetch-cli/fastfetch/pull/1025#issuecomment-2177566138 |
|
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": { |
|
| 6 | + | "source": "arch3", |
|
| 7 | + | "color": { |
|
| 8 | + | "1": "red", |
|
| 9 | + | "2": "yellow" |
|
| 10 | + | } |
|
| 11 | + | }, |
|
| 12 | + | "display": { |
|
| 13 | + | "color": { |
|
| 14 | + | "separator": "blue" |
|
| 15 | + | }, |
|
| 16 | + | "separator": " | ", |
|
| 17 | + | "constants": [ |
|
| 18 | + | ">-----------<+>---------------------------------------------<" |
|
| 19 | + | ] |
|
| 20 | + | }, |
|
| 21 | + | "modules": [ |
|
| 22 | + | { |
|
| 23 | + | "type": "kernel", |
|
| 24 | + | "key": " /\\rch Linux", |
|
| 25 | + | "keyColor": "magenta" |
|
| 26 | + | }, |
|
| 27 | + | { |
|
| 28 | + | "type": "custom", |
|
| 29 | + | "format": "{$1}", |
|
| 30 | + | "outputColor": "separator" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "type": "uptime", |
|
| 34 | + | "key": " Uptime ", |
|
| 35 | + | "keyColor": "green" |
|
| 36 | + | }, |
|
| 37 | + | { |
|
| 38 | + | "type": "shell", |
|
| 39 | + | "key": " Shell ", |
|
| 40 | + | "keyColor": "green" |
|
| 41 | + | }, |
|
| 42 | + | { |
|
| 43 | + | "type": "terminal", |
|
| 44 | + | "key": " Terminal ", |
|
| 45 | + | "keyColor": "green" |
|
| 46 | + | }, |
|
| 47 | + | { |
|
| 48 | + | "type": "terminalfont", |
|
| 49 | + | "key": " Font ", |
|
| 50 | + | "keyColor": "green" |
|
| 51 | + | }, |
|
| 52 | + | { |
|
| 53 | + | "type": "packages", |
|
| 54 | + | "key": " Packages ", |
|
| 55 | + | "keyColor": "green" |
|
| 56 | + | }, |
|
| 57 | + | { |
|
| 58 | + | "type": "localip", |
|
| 59 | + | "key": " Local IP ", |
|
| 60 | + | "keyColor": "green" |
|
| 61 | + | }, |
|
| 62 | + | { |
|
| 63 | + | "type": "custom", |
|
| 64 | + | "format": "{$1}", |
|
| 65 | + | "outputColor": "separator" |
|
| 66 | + | }, |
|
| 67 | + | { |
|
| 68 | + | "type": "display", |
|
| 69 | + | "key": " Display ", |
|
| 70 | + | "keyColor": "cyan" |
|
| 71 | + | }, |
|
| 72 | + | { |
|
| 73 | + | "type": "cpu", |
|
| 74 | + | "key": " CPU ", |
|
| 75 | + | "keyColor": "cyan" |
|
| 76 | + | }, |
|
| 77 | + | { |
|
| 78 | + | "type": "gpu", |
|
| 79 | + | "key": " GPU ", |
|
| 80 | + | "keyColor": "cyan" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "type": "memory", |
|
| 84 | + | "key": " RAM ", |
|
| 85 | + | "keyColor": "cyan" |
|
| 86 | + | }, |
|
| 87 | + | { |
|
| 88 | + | "type": "swap", |
|
| 89 | + | "key": " SWAP ", |
|
| 90 | + | "keyColor": "cyan" |
|
| 91 | + | }, |
|
| 92 | + | { |
|
| 93 | + | "type": "disk", |
|
| 94 | + | "key": " Disk ", |
|
| 95 | + | "keyColor": "cyan" |
|
| 96 | + | }, |
|
| 97 | + | { |
|
| 98 | + | "type": "battery", |
|
| 99 | + | "key": " Battery ", |
|
| 100 | + | "keyColor": "cyan" |
|
| 101 | + | }, |
|
| 102 | + | { |
|
| 103 | + | "type": "custom", |
|
| 104 | + | "format": "{$1}", |
|
| 105 | + | "outputColor": "separator" |
|
| 106 | + | }, |
|
| 107 | + | "break", |
|
| 108 | + | { |
|
| 109 | + | "type": "colors", |
|
| 110 | + | "paddingLeft": 15 |
|
| 111 | + | } |
|
| 112 | + | ] |
|
| 113 | + | } |
| 1 | + | // designed for presenting Vanilla Linux |
|
| 2 | + | // inspired from imstilllearnin's Vanilla Logo Ultra |
|
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": { |
|
| 6 | + | "type": "small" |
|
| 7 | + | }, |
|
| 8 | + | "display": { |
|
| 9 | + | "color": { |
|
| 10 | + | "output": "cyan" |
|
| 11 | + | }, |
|
| 12 | + | "separator": "" |
|
| 13 | + | }, |
|
| 14 | + | "modules": [ |
|
| 15 | + | { |
|
| 16 | + | "type": "kernel", |
|
| 17 | + | "key": "[_Kernel___> ", |
|
| 18 | + | "keyColor": "blue" |
|
| 19 | + | }, |
|
| 20 | + | { |
|
| 21 | + | "type": "packages", |
|
| 22 | + | "outputColor": "white", |
|
| 23 | + | "key": " [_Packages_> ", |
|
| 24 | + | "keyColor": "green" |
|
| 25 | + | }, |
|
| 26 | + | { |
|
| 27 | + | "type": "localip", |
|
| 28 | + | "outputColor": "white", |
|
| 29 | + | "key": " [_Local_IP_> ", |
|
| 30 | + | "keyColor": "green" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "type": "memory", |
|
| 34 | + | "format": "[{3}] {1} / {2}", |
|
| 35 | + | "key": " [_RAM______> ", |
|
| 36 | + | "keyColor": "magenta" |
|
| 37 | + | }, |
|
| 38 | + | { |
|
| 39 | + | "type": "swap", |
|
| 40 | + | "format": "[{3}] {1} / {2}", |
|
| 41 | + | "key": " [_SWAP_____> ", |
|
| 42 | + | "keyColor": "magenta" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "type": "disk", |
|
| 46 | + | "format": "[{3}] {1} / {2} {9}", |
|
| 47 | + | "key": " [_Disk_____> ", |
|
| 48 | + | "keyColor": "magenta" |
|
| 49 | + | }, |
|
| 50 | + | { |
|
| 51 | + | "type": "battery", |
|
| 52 | + | "format": "[{4}] {5}", |
|
| 53 | + | "key": " [_Battery__> ", |
|
| 54 | + | "keyColor": "magenta" |
|
| 55 | + | }, |
|
| 56 | + | "break", |
|
| 57 | + | { |
|
| 58 | + | "type": "colors", |
|
| 59 | + | "paddingLeft": 9, |
|
| 60 | + | "symbol": "circle" |
|
| 61 | + | } |
|
| 62 | + | ] |
|
| 63 | + | } |
| 1 | + | // By jan-rex |
|
| 2 | + | // Modified from: https://github.com/fastfetch-cli/fastfetch/discussions/1269 |
|
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": { |
|
| 6 | + | "padding": { |
|
| 7 | + | "top": 2 |
|
| 8 | + | } |
|
| 9 | + | }, |
|
| 10 | + | "display": { |
|
| 11 | + | "separator": "", |
|
| 12 | + | "constants": [ |
|
| 13 | + | // CONSTANT {$1} - COLOR BACKGROUND FOR KEY |
|
| 14 | + | "\u001b[48;2;43;43;69m", |
|
| 15 | + | // CONSTANT {$2} - COLOR BACKGROUND FOR OUTPUT |
|
| 16 | + | "\u001b[48;2;56;59;78m", |
|
| 17 | + | // CONSTANT {$3} - VERTICAL BARS AT START AND 75th CHARACTERS FORWARD AND BACKWARD |
|
| 18 | + | "\u001b[90m│ │\u001b[60D\u001b[39m", |
|
| 19 | + | ] |
|
| 20 | + | }, |
|
| 21 | + | "modules": [ |
|
| 22 | + | // CUSTOM - Top UI bar |
|
| 23 | + | { |
|
| 24 | + | "type": "custom", |
|
| 25 | + | "key": "{#90}{$1}╭─────────────╮", |
|
| 26 | + | "format": "{#90}{$2}╭────────────────────────────────────────────────────────────╮", |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "type": "title", |
|
| 30 | + | "key": "{#90}{$1}│ {#92}User {#90}│", |
|
| 31 | + | "format": "{$2}{$3}{user-name} {#2}[{home-dir}]" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "type": "users", |
|
| 35 | + | "key": "{#90}{$1}│ {#92}Users {#90}│", |
|
| 36 | + | "myselfOnly": false, |
|
| 37 | + | "format": "{$2}{$3}{1}@{host-name}{/host-name}localhost{/}{?client-ip} {#2}[IP:{client-ip}]{?} {#2}[Login time: {login-time}]", |
|
| 38 | + | }, |
|
| 39 | + | { |
|
| 40 | + | "type": "datetime", |
|
| 41 | + | "key": "{#90}{$1}│ {#92}Datetime {#90}│", |
|
| 42 | + | "format": "{$2}{$3}{year}-{month-pretty}-{day-in-month} {hour-pretty}:{minute-pretty}:{second-pretty} {#2}{weekday} {#2}[W{week}] {#2}[UTC{offset-from-utc}]" |
|
| 43 | + | }, |
|
| 44 | + | { |
|
| 45 | + | "type": "title", |
|
| 46 | + | "key": "{#90}{$1}│ {#93}Host: {#90}│", |
|
| 47 | + | "format": "{$2}{$3}{#1}{#36}{host-name}" |
|
| 48 | + | }, |
|
| 49 | + | { |
|
| 50 | + | "type": "host", |
|
| 51 | + | "key": "{#90}{$1}│ {#93}Machine {#90}│", |
|
| 52 | + | "format": "{$2}{$3}{name} {#2}{version}" |
|
| 53 | + | }, |
|
| 54 | + | { |
|
| 55 | + | "type": "os", |
|
| 56 | + | "key": "{#90}{$1}│ {#93}OS {#90}│", |
|
| 57 | + | "format": "{$2}{$3}{pretty-name} {codename} {#2}[v{version}] {#2}[{arch}]" |
|
| 58 | + | }, |
|
| 59 | + | { |
|
| 60 | + | "type": "kernel", |
|
| 61 | + | "key": "{#90}{$1}│ {#93}Kernel {#90}│", |
|
| 62 | + | "format": "{$2}{$3}{sysname} {#2}[v{release}]" |
|
| 63 | + | }, |
|
| 64 | + | { |
|
| 65 | + | "type": "uptime", |
|
| 66 | + | "key": "{#90}{$1}│ {#93}Uptime {#90}│", |
|
| 67 | + | "format": "{$2}{$3}{?days}{days} Days + {?}{hours}:{minutes}:{seconds}" |
|
| 68 | + | }, |
|
| 69 | + | { |
|
| 70 | + | "type": "cpu", |
|
| 71 | + | "key": "{#90}{$1}│ {#91}CPU {#90}│", |
|
| 72 | + | "showPeCoreCount": true, |
|
| 73 | + | "temp": true, |
|
| 74 | + | "format": "{$2}{$3}{name} {#2}[C:{core-types}] {#2}[{freq-max}]" |
|
| 75 | + | }, |
|
| 76 | + | { |
|
| 77 | + | "type": "gpu", |
|
| 78 | + | "key": "{#90}{$1}│ {#91}GPU {#90}│", |
|
| 79 | + | "detectionMethod": "auto", |
|
| 80 | + | "driverSpecific": true, |
|
| 81 | + | "format": "{$2}{$3}{name} {#2}[C:{core-count}] {#2}[{type}]" |
|
| 82 | + | }, |
|
| 83 | + | { |
|
| 84 | + | "type": "memory", |
|
| 85 | + | "key": "{#90}{$1}│ {#91}Memory {#90}│", |
|
| 86 | + | "format": "{$2}{$3}{used} / {total} ({percentage}{$2})" |
|
| 87 | + | }, |
|
| 88 | + | { |
|
| 89 | + | "type": "disk", |
|
| 90 | + | "key": "{#90}{$1}│ {#91}Disk {#90}│", |
|
| 91 | + | "format": "{$2}{$3}{size-used} / {size-total} ({size-percentage}{$2})" |
|
| 92 | + | }, |
|
| 93 | + | { |
|
| 94 | + | "type": "poweradapter", |
|
| 95 | + | "key": "{#90}{$1}│ {#91}Power {#90}│", |
|
| 96 | + | "format": "{$2}{$3}{name}" |
|
| 97 | + | }, |
|
| 98 | + | { |
|
| 99 | + | "type": "terminal", |
|
| 100 | + | "key": "{#90}{$1}│ {#95}Terminal {#90}│", |
|
| 101 | + | "format": "{$2}{$3}{pretty-name} {#2}[{version}] [PID:{pid}]" |
|
| 102 | + | }, |
|
| 103 | + | { |
|
| 104 | + | "type": "terminalfont", |
|
| 105 | + | "key": "{#90}{$1}│ {#95}Font {#90}│", |
|
| 106 | + | "format": "{$2}{$3}{name} {#2}[{size}]" |
|
| 107 | + | }, |
|
| 108 | + | { |
|
| 109 | + | "type": "shell", |
|
| 110 | + | "key": "{#90}{$1}│ {#95}Shell {#90}│", |
|
| 111 | + | "format": "{$2}{$3}{pretty-name} {#2}[v{version}] [PID:{pid}]" |
|
| 112 | + | }, |
|
| 113 | + | { |
|
| 114 | + | // localip IPv4 |
|
| 115 | + | "type": "localip", |
|
| 116 | + | "key": "{#90}{$1}│ {#94}Local IPv4 {#90}│", |
|
| 117 | + | "showPrefixLen": true, |
|
| 118 | + | "showIpv4": true, |
|
| 119 | + | "showIpv6": false, |
|
| 120 | + | "showMtu": true, |
|
| 121 | + | "format": "{$2}{$3}{ifname}: {ipv4} {#2}[MTU:{mtu}]" |
|
| 122 | + | }, |
|
| 123 | + | { |
|
| 124 | + | // localip IPv6 |
|
| 125 | + | "type": "localip", |
|
| 126 | + | "key": "{#90}{$1}│ {#94}Local IPv6 {#90}│", |
|
| 127 | + | "showPrefixLen": true, |
|
| 128 | + | "showIpv4": false, |
|
| 129 | + | "showIpv6": true, |
|
| 130 | + | "showMtu": true, |
|
| 131 | + | "format": "{$2}{$3}{ifname}: {ipv6} {#2}[MTU:{mtu}]" |
|
| 132 | + | }, |
|
| 133 | + | { |
|
| 134 | + | "type": "publicip", |
|
| 135 | + | "key": "{#90}{$1}│ {#94}Public IPv4 {#90}│", |
|
| 136 | + | "ipv6": false, |
|
| 137 | + | "format": "{$2}{$3}{ip} {#2}[{location}]" |
|
| 138 | + | }, |
|
| 139 | + | { |
|
| 140 | + | "type": "publicip", |
|
| 141 | + | "key": "{#90}{$1}│ {#94}Public IPv6 {#90}│", |
|
| 142 | + | "ipv6": true, |
|
| 143 | + | "format": "{$2}{$3}{ip} {#2}[{location}]" |
|
| 144 | + | }, |
|
| 145 | + | // CUSTOM - Button UI bar |
|
| 146 | + | { |
|
| 147 | + | "type": "custom", |
|
| 148 | + | "key": "{#90}{$1}╰─────────────╯", |
|
| 149 | + | "format": "{#90}{$2}╰────────────────────────────────────────────────────────────╯", |
|
| 150 | + | } |
|
| 151 | + | ] |
|
| 152 | + | } |
| 1 | + | // Load with --load-config examples/3.jsonc |
|
| 2 | + | ||
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": { |
|
| 6 | + | "type": "small" |
|
| 7 | + | }, |
|
| 8 | + | "display": { |
|
| 9 | + | "size": { |
|
| 10 | + | "binaryPrefix": "si" |
|
| 11 | + | } |
|
| 12 | + | }, |
|
| 13 | + | "modules": [ |
|
| 14 | + | "vulkan", |
|
| 15 | + | "opengl", |
|
| 16 | + | "opencl", |
|
| 17 | + | "memory", |
|
| 18 | + | { |
|
| 19 | + | "type": "disk", |
|
| 20 | + | "folders": "/:/home:/boot:/efi" |
|
| 21 | + | }, |
|
| 22 | + | "localip" |
|
| 23 | + | ] |
|
| 24 | + | } |
| 1 | + | // Load with --load-config examples/4.jsonc |
|
| 2 | + | ||
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": { |
|
| 6 | + | "type": "small", |
|
| 7 | + | "padding": { |
|
| 8 | + | "right": 1 |
|
| 9 | + | } |
|
| 10 | + | }, |
|
| 11 | + | "display": { |
|
| 12 | + | "size": { |
|
| 13 | + | "binaryPrefix": "si" |
|
| 14 | + | }, |
|
| 15 | + | "color": "blue", |
|
| 16 | + | "separator": " " |
|
| 17 | + | }, |
|
| 18 | + | "modules": [ |
|
| 19 | + | { |
|
| 20 | + | "type": "datetime", |
|
| 21 | + | "key": "Date", |
|
| 22 | + | "format": "{1}-{3}-{11}" |
|
| 23 | + | }, |
|
| 24 | + | { |
|
| 25 | + | "type": "datetime", |
|
| 26 | + | "key": "Time", |
|
| 27 | + | "format": "{14}:{17}:{20}" |
|
| 28 | + | }, |
|
| 29 | + | "break", |
|
| 30 | + | "player", |
|
| 31 | + | "media" |
|
| 32 | + | ] |
|
| 33 | + | } |
| 1 | + | // Load with --load-config examples/5.jsonc |
|
| 2 | + | ||
| 3 | + | { |
|
| 4 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 5 | + | "logo": null, |
|
| 6 | + | "display": { |
|
| 7 | + | "color": "magenta" |
|
| 8 | + | }, |
|
| 9 | + | "modules": [ |
|
| 10 | + | { |
|
| 11 | + | "type": "theme", |
|
| 12 | + | "key": "T" |
|
| 13 | + | }, |
|
| 14 | + | { |
|
| 15 | + | "type": "icons", |
|
| 16 | + | "key": "I" |
|
| 17 | + | }, |
|
| 18 | + | { |
|
| 19 | + | "type": "font", |
|
| 20 | + | "key": "F" |
|
| 21 | + | }, |
|
| 22 | + | { |
|
| 23 | + | "type": "cursor", |
|
| 24 | + | "key": "C" |
|
| 25 | + | } |
|
| 26 | + | ] |
|
| 27 | + | } |
| 1 | + | // Load with --load-config examples/2.jsonc |
|
| 2 | + | // Note that you must replace the image path to an existing image to display it. |
|
| 3 | + | ||
| 4 | + | { |
|
| 5 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 6 | + | "display": { |
|
| 7 | + | "separator": " " |
|
| 8 | + | }, |
|
| 9 | + | "modules": [ |
|
| 10 | + | { |
|
| 11 | + | "type": "host", |
|
| 12 | + | "key": "╭─", |
|
| 13 | + | "keyColor": "green" |
|
| 14 | + | }, |
|
| 15 | + | { |
|
| 16 | + | "type": "cpu", |
|
| 17 | + | "key": "├─", |
|
| 18 | + | "keyColor": "green" |
|
| 19 | + | }, |
|
| 20 | + | { |
|
| 21 | + | "type": "gpu", |
|
| 22 | + | "key": "├─", |
|
| 23 | + | "keyColor": "green" |
|
| 24 | + | }, |
|
| 25 | + | { |
|
| 26 | + | "type": "disk", |
|
| 27 | + | "key": "├─", |
|
| 28 | + | "keyColor": "green" |
|
| 29 | + | }, |
|
| 30 | + | { |
|
| 31 | + | "type": "memory", |
|
| 32 | + | "key": "├─", |
|
| 33 | + | "keyColor": "green" |
|
| 34 | + | }, |
|
| 35 | + | { |
|
| 36 | + | "type": "swap", |
|
| 37 | + | "key": "├─", |
|
| 38 | + | "keyColor": "green" |
|
| 39 | + | }, |
|
| 40 | + | { |
|
| 41 | + | "type": "display", |
|
| 42 | + | "key": "├─", |
|
| 43 | + | "keyColor": "green" |
|
| 44 | + | }, |
|
| 45 | + | { |
|
| 46 | + | "type": "brightness", |
|
| 47 | + | "key": "├─", |
|
| 48 | + | "keyColor": "green" |
|
| 49 | + | }, |
|
| 50 | + | { |
|
| 51 | + | "type": "battery", |
|
| 52 | + | "key": "├─", |
|
| 53 | + | "keyColor": "green" |
|
| 54 | + | }, |
|
| 55 | + | { |
|
| 56 | + | "type": "poweradapter", |
|
| 57 | + | "key": "├─", |
|
| 58 | + | "keyColor": "green" |
|
| 59 | + | }, |
|
| 60 | + | { |
|
| 61 | + | "type": "gamepad", |
|
| 62 | + | "key": "├─", |
|
| 63 | + | "keyColor": "green" |
|
| 64 | + | }, |
|
| 65 | + | { |
|
| 66 | + | "type": "bluetooth", |
|
| 67 | + | "key": "├─", |
|
| 68 | + | "keyColor": "green" |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "type": "sound", |
|
| 72 | + | "key": "╰─", |
|
| 73 | + | "keyColor": "green" |
|
| 74 | + | }, |
|
| 75 | + | "break", |
|
| 76 | + | ||
| 77 | + | { |
|
| 78 | + | "type": "shell", |
|
| 79 | + | "key": "╭─", |
|
| 80 | + | "keyColor": "yellow" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "type": "terminal", |
|
| 84 | + | "key": "├─", |
|
| 85 | + | "keyColor": "yellow" |
|
| 86 | + | }, |
|
| 87 | + | { |
|
| 88 | + | "type": "terminalfont", |
|
| 89 | + | "key": "├─", |
|
| 90 | + | "keyColor": "yellow" |
|
| 91 | + | }, |
|
| 92 | + | { |
|
| 93 | + | "type": "lm", |
|
| 94 | + | "key": "├─", |
|
| 95 | + | "keyColor": "yellow" |
|
| 96 | + | }, |
|
| 97 | + | { |
|
| 98 | + | "type": "de", |
|
| 99 | + | "key": "├─", |
|
| 100 | + | "keyColor": "yellow" |
|
| 101 | + | }, |
|
| 102 | + | { |
|
| 103 | + | "type": "wm", |
|
| 104 | + | "key": "├─", |
|
| 105 | + | "keyColor": "yellow" |
|
| 106 | + | }, |
|
| 107 | + | { |
|
| 108 | + | "type": "theme", |
|
| 109 | + | "key": "├─", |
|
| 110 | + | "keyColor": "yellow" |
|
| 111 | + | }, |
|
| 112 | + | { |
|
| 113 | + | "type": "icons", |
|
| 114 | + | "key": "├─", |
|
| 115 | + | "keyColor": "yellow" |
|
| 116 | + | }, |
|
| 117 | + | { |
|
| 118 | + | "type": "wallpaper", |
|
| 119 | + | "key": "╰─", |
|
| 120 | + | "keyColor": "yellow" |
|
| 121 | + | }, |
|
| 122 | + | "break", |
|
| 123 | + | ||
| 124 | + | { |
|
| 125 | + | "type": "title", |
|
| 126 | + | "key": "╭─", |
|
| 127 | + | "format": "{user-name}@{host-name}", |
|
| 128 | + | "keyColor": "blue" |
|
| 129 | + | }, |
|
| 130 | + | { |
|
| 131 | + | "type": "os", |
|
| 132 | + | "key": "├─{icon}", // Just get your distro's logo off nerdfonts.com |
|
| 133 | + | "keyColor": "blue" |
|
| 134 | + | }, |
|
| 135 | + | { |
|
| 136 | + | "type": "kernel", |
|
| 137 | + | "key": "├─", |
|
| 138 | + | "keyColor": "blue" |
|
| 139 | + | }, |
|
| 140 | + | { |
|
| 141 | + | "type": "packages", |
|
| 142 | + | "key": "├─", |
|
| 143 | + | "keyColor": "blue" |
|
| 144 | + | }, |
|
| 145 | + | { |
|
| 146 | + | "type": "uptime", |
|
| 147 | + | "key": "├─", |
|
| 148 | + | "keyColor": "blue" |
|
| 149 | + | }, |
|
| 150 | + | { |
|
| 151 | + | "type": "media", |
|
| 152 | + | "key": "├─", |
|
| 153 | + | "keyColor": "blue" |
|
| 154 | + | }, |
|
| 155 | + | { |
|
| 156 | + | "type": "localip", |
|
| 157 | + | "key": "├─", |
|
| 158 | + | "compact": true, |
|
| 159 | + | "keyColor": "blue" |
|
| 160 | + | }, |
|
| 161 | + | { |
|
| 162 | + | "type": "publicip", |
|
| 163 | + | "key": "├─", |
|
| 164 | + | "keyColor": "blue", |
|
| 165 | + | "timeout": 1000 |
|
| 166 | + | }, |
|
| 167 | + | { |
|
| 168 | + | "type": "wifi", |
|
| 169 | + | "key": "├─", |
|
| 170 | + | "format": "{ssid}", |
|
| 171 | + | "keyColor": "blue" |
|
| 172 | + | }, |
|
| 173 | + | { |
|
| 174 | + | "type": "locale", |
|
| 175 | + | "key": "╰─", |
|
| 176 | + | "keyColor": "blue" |
|
| 177 | + | } |
|
| 178 | + | ] |
|
| 179 | + | } |
| 1 | + | // Load with --load-config examples/2.jsonc |
|
| 2 | + | // Note that you must replace the image path to an existing image to display it. |
|
| 3 | + | ||
| 4 | + | { |
|
| 5 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 6 | + | "logo": { |
|
| 7 | + | "padding": { |
|
| 8 | + | "top": 2 |
|
| 9 | + | } |
|
| 10 | + | }, |
|
| 11 | + | "display": { |
|
| 12 | + | "separator": " -> " |
|
| 13 | + | }, |
|
| 14 | + | "modules": [ |
|
| 15 | + | "title", |
|
| 16 | + | "separator", |
|
| 17 | + | { |
|
| 18 | + | "type": "os", |
|
| 19 | + | "key": " OS", |
|
| 20 | + | "keyColor": "yellow", |
|
| 21 | + | "format": "{2}" |
|
| 22 | + | }, |
|
| 23 | + | { |
|
| 24 | + | "type": "os", |
|
| 25 | + | "key": "├{icon}", // Just get your distro's logo off nerdfonts.com |
|
| 26 | + | "keyColor": "yellow" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "type": "kernel", |
|
| 30 | + | "key": "├", |
|
| 31 | + | "keyColor": "yellow" |
|
| 32 | + | }, |
|
| 33 | + | { |
|
| 34 | + | "type": "packages", |
|
| 35 | + | "key": "├", |
|
| 36 | + | "keyColor": "yellow" |
|
| 37 | + | }, |
|
| 38 | + | { |
|
| 39 | + | "type": "shell", |
|
| 40 | + | "key": "└", |
|
| 41 | + | "keyColor": "yellow" |
|
| 42 | + | }, |
|
| 43 | + | "break", |
|
| 44 | + | ||
| 45 | + | { |
|
| 46 | + | "type": "wm", |
|
| 47 | + | "key": " DE/WM", |
|
| 48 | + | "keyColor": "blue" |
|
| 49 | + | }, |
|
| 50 | + | { |
|
| 51 | + | "type": "lm", |
|
| 52 | + | "key": "├", |
|
| 53 | + | "keyColor": "blue" |
|
| 54 | + | }, |
|
| 55 | + | { |
|
| 56 | + | "type": "wmtheme", |
|
| 57 | + | "key": "├", |
|
| 58 | + | "keyColor": "blue" |
|
| 59 | + | }, |
|
| 60 | + | { |
|
| 61 | + | "type": "icons", |
|
| 62 | + | "key": "├", |
|
| 63 | + | "keyColor": "blue" |
|
| 64 | + | }, |
|
| 65 | + | { |
|
| 66 | + | "type": "terminal", |
|
| 67 | + | "key": "├", |
|
| 68 | + | "keyColor": "blue" |
|
| 69 | + | }, |
|
| 70 | + | { |
|
| 71 | + | "type": "wallpaper", |
|
| 72 | + | "key": "└", |
|
| 73 | + | "keyColor": "blue" |
|
| 74 | + | }, |
|
| 75 | + | ||
| 76 | + | "break", |
|
| 77 | + | { |
|
| 78 | + | "type": "host", |
|
| 79 | + | "key": " PC", |
|
| 80 | + | "keyColor": "green" |
|
| 81 | + | }, |
|
| 82 | + | { |
|
| 83 | + | "type": "cpu", |
|
| 84 | + | "key": "├", |
|
| 85 | + | "keyColor": "green" |
|
| 86 | + | }, |
|
| 87 | + | { |
|
| 88 | + | "type": "gpu", |
|
| 89 | + | "key": "├", |
|
| 90 | + | "keyColor": "green" |
|
| 91 | + | }, |
|
| 92 | + | { |
|
| 93 | + | "type": "disk", |
|
| 94 | + | "key": "├", |
|
| 95 | + | "keyColor": "green" |
|
| 96 | + | }, |
|
| 97 | + | { |
|
| 98 | + | "type": "memory", |
|
| 99 | + | "key": "├", |
|
| 100 | + | "keyColor": "green" |
|
| 101 | + | }, |
|
| 102 | + | { |
|
| 103 | + | "type": "swap", |
|
| 104 | + | "key": "├", |
|
| 105 | + | "keyColor": "green" |
|
| 106 | + | }, |
|
| 107 | + | { |
|
| 108 | + | "type": "display", |
|
| 109 | + | "key": "├", |
|
| 110 | + | "keyColor": "green" |
|
| 111 | + | }, |
|
| 112 | + | { |
|
| 113 | + | "type": "uptime", |
|
| 114 | + | "key": "└", |
|
| 115 | + | "keyColor": "green" |
|
| 116 | + | }, |
|
| 117 | + | ||
| 118 | + | "break", |
|
| 119 | + | { |
|
| 120 | + | "type": "sound", |
|
| 121 | + | "key": " SOUND", |
|
| 122 | + | "keyColor": "cyan" |
|
| 123 | + | }, |
|
| 124 | + | { |
|
| 125 | + | "type": "player", |
|
| 126 | + | "key": "├", |
|
| 127 | + | "keyColor": "cyan" |
|
| 128 | + | }, |
|
| 129 | + | { |
|
| 130 | + | "type": "media", |
|
| 131 | + | "key": "└", |
|
| 132 | + | "keyColor": "cyan" |
|
| 133 | + | }, |
|
| 134 | + | ||
| 135 | + | "break", |
|
| 136 | + | "colors" |
|
| 137 | + | ] |
|
| 138 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small" |
|
| 5 | + | }, |
|
| 6 | + | "display": { |
|
| 7 | + | "separator": " ", |
|
| 8 | + | "color": { |
|
| 9 | + | "keys": "magenta" |
|
| 10 | + | }, |
|
| 11 | + | "size": { |
|
| 12 | + | "ndigits": 0, |
|
| 13 | + | "maxPrefix": "MB" |
|
| 14 | + | }, |
|
| 15 | + | "key": { |
|
| 16 | + | "type": "icon" |
|
| 17 | + | } |
|
| 18 | + | }, |
|
| 19 | + | "modules": [ |
|
| 20 | + | { |
|
| 21 | + | "type": "title", |
|
| 22 | + | "color": { |
|
| 23 | + | "user": "green", |
|
| 24 | + | "at": "red", |
|
| 25 | + | "host": "blue" |
|
| 26 | + | } |
|
| 27 | + | }, |
|
| 28 | + | "os", |
|
| 29 | + | "kernel", |
|
| 30 | + | "memory", |
|
| 31 | + | "packages", |
|
| 32 | + | "uptime", |
|
| 33 | + | { |
|
| 34 | + | "type": "colors", |
|
| 35 | + | "key": "Colors", // For printing icon |
|
| 36 | + | "block": { |
|
| 37 | + | "range": [1, 6] |
|
| 38 | + | } |
|
| 39 | + | } |
|
| 40 | + | ] |
|
| 41 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "logo": { |
|
| 4 | + | "type": "small" |
|
| 5 | + | }, |
|
| 6 | + | "display": { |
|
| 7 | + | "key": { |
|
| 8 | + | "width": 11 |
|
| 9 | + | }, |
|
| 10 | + | "bar": { |
|
| 11 | + | "charElapsed": "=", |
|
| 12 | + | "charTotal": "-", |
|
| 13 | + | "width": 13 |
|
| 14 | + | }, |
|
| 15 | + | "percent": { |
|
| 16 | + | "type": 2 |
|
| 17 | + | } |
|
| 18 | + | }, |
|
| 19 | + | "modules": [ |
|
| 20 | + | "title", |
|
| 21 | + | "separator", |
|
| 22 | + | "memory", |
|
| 23 | + | "swap", |
|
| 24 | + | { |
|
| 25 | + | "type": "disk", |
|
| 26 | + | "folders": "/" |
|
| 27 | + | }, |
|
| 28 | + | { |
|
| 29 | + | "type": "battery", |
|
| 30 | + | "key": "Battery" |
|
| 31 | + | }, |
|
| 32 | + | { |
|
| 33 | + | "type": "colors", |
|
| 34 | + | "paddingLeft": 10, |
|
| 35 | + | "symbol": "circle" |
|
| 36 | + | } |
|
| 37 | + | ] |
|
| 38 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "display": { |
|
| 4 | + | "size": { |
|
| 5 | + | "maxPrefix": "MB", |
|
| 6 | + | "ndigits": 0 |
|
| 7 | + | } |
|
| 8 | + | }, |
|
| 9 | + | "modules": [ |
|
| 10 | + | "title", |
|
| 11 | + | "separator", |
|
| 12 | + | "os", |
|
| 13 | + | "host", |
|
| 14 | + | { |
|
| 15 | + | "type": "kernel", |
|
| 16 | + | "format": "{release}" |
|
| 17 | + | }, |
|
| 18 | + | "uptime", |
|
| 19 | + | "packages", |
|
| 20 | + | "shell", |
|
| 21 | + | { |
|
| 22 | + | "type": "display", |
|
| 23 | + | "compactType": "original", |
|
| 24 | + | "key": "Resolution" |
|
| 25 | + | }, |
|
| 26 | + | "de", |
|
| 27 | + | "wm", |
|
| 28 | + | "wmtheme", |
|
| 29 | + | "theme", |
|
| 30 | + | "icons", |
|
| 31 | + | "terminal", |
|
| 32 | + | { |
|
| 33 | + | "type": "terminalfont", |
|
| 34 | + | "format": "{/name}{-}{/}{name}{?size} {size}{?}" |
|
| 35 | + | }, |
|
| 36 | + | "cpu", |
|
| 37 | + | { |
|
| 38 | + | "type": "gpu", |
|
| 39 | + | "key": "GPU" |
|
| 40 | + | }, |
|
| 41 | + | { |
|
| 42 | + | "type": "memory", |
|
| 43 | + | "format": "{} / {}" |
|
| 44 | + | }, |
|
| 45 | + | "break", |
|
| 46 | + | "colors" |
|
| 47 | + | ] |
|
| 48 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "modules": [ |
|
| 4 | + | "title", |
|
| 5 | + | "separator", |
|
| 6 | + | "os", |
|
| 7 | + | { |
|
| 8 | + | "type": "host", |
|
| 9 | + | "format": "{/2}{-}{/}{2}{?3} {3}{?}" |
|
| 10 | + | }, |
|
| 11 | + | "kernel", |
|
| 12 | + | "uptime", |
|
| 13 | + | { |
|
| 14 | + | "type": "battery", |
|
| 15 | + | "format": "{/4}{-}{/}{4}{?5} [{5}]{?}" |
|
| 16 | + | }, |
|
| 17 | + | "break", |
|
| 18 | + | "packages", |
|
| 19 | + | "shell", |
|
| 20 | + | "display", |
|
| 21 | + | "terminal", |
|
| 22 | + | "break", |
|
| 23 | + | "cpu", |
|
| 24 | + | { |
|
| 25 | + | "type": "gpu", |
|
| 26 | + | "key": "GPU" |
|
| 27 | + | }, |
|
| 28 | + | "memory", |
|
| 29 | + | "break", |
|
| 30 | + | "colors" |
|
| 31 | + | ] |
|
| 32 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", |
|
| 3 | + | "modules": [ |
|
| 4 | + | "title", |
|
| 5 | + | "os", |
|
| 6 | + | "kernel", |
|
| 7 | + | "uptime", |
|
| 8 | + | { |
|
| 9 | + | "type": "packages", |
|
| 10 | + | "format": "{all}" |
|
| 11 | + | }, |
|
| 12 | + | "shell", |
|
| 13 | + | { |
|
| 14 | + | "type": "display", |
|
| 15 | + | "key": "Resolution", |
|
| 16 | + | "compactType": "original" |
|
| 17 | + | }, |
|
| 18 | + | "de", |
|
| 19 | + | "wm", |
|
| 20 | + | "wmtheme", |
|
| 21 | + | { |
|
| 22 | + | "type": "terminalfont", |
|
| 23 | + | "key": "font" |
|
| 24 | + | }, |
|
| 25 | + | { |
|
| 26 | + | "type": "disk", |
|
| 27 | + | "folders": "/", |
|
| 28 | + | "key": "Disk" |
|
| 29 | + | }, |
|
| 30 | + | "cpu", |
|
| 31 | + | "gpu", |
|
| 32 | + | { |
|
| 33 | + | "type": "memory", |
|
| 34 | + | "key": "RAM" |
|
| 35 | + | } |
|
| 36 | + | ] |
|
| 37 | + | } |
| 1 | + | export global_title="gem.stevedylan.dev" |
|
| 2 | + | export global_description="Floating out into space, looking back on the pale blue dot" |
|
| 3 | + | export global_url="gemini://gem.stevedylan.dev/" # link to base url of gemlog |
|
| 4 | + | export global_author="Steve" |
|
| 5 | + | export global_author_email="contact@stevedylan.dev" |
|
| 6 | + | export global_author_url="gemini://gem.stevedylan.dev/" # homepage of author |
|
| 7 | + | export global_license="" |
|
| 8 | + | ||
| 9 | + | export gemlog_feed="atom.xml" # filename of the atom feed |
|
| 10 | + | export number_of_feed_articles="50" # maximum number of posts added to atom feed |
|
| 11 | + | export feed_base_url="gemini://gem.stevedylan.dev/" # base url that the feed is hosted at |
|
| 12 | + | export feed_web_url="" # base url that the feed is hosted at on the web |
|
| 13 | + | ||
| 14 | + | export index="gemlog/index.gmi" # main page of gemlog, not recommended to change |
|
| 15 | + | ||
| 16 | + | export use_year_divider=true # separate posts from different years with a heading? |
|
| 17 | + | ||
| 18 | + | # these 2 are exclusive, and use_month_divider_nl takes priority if both are set |
|
| 19 | + | export use_month_divider_nl=true # separate posts from different months with a newline? |
|
| 20 | + | export use_month_divider_hd=false # separate posts from different months with a heading? |
|
| 21 | + | ||
| 22 | + | ||
| 23 | + | export gemlog_sh_link="https://git.sr.ht/~nytpu/gemlog.sh" # link to the utility, you should change this if you've made substantial non-configuration changes |
| 1 | + | ||
| 2 | + | ────────────────── |
|
| 3 | + | ||
| 4 | + | => gemini://gem.stevedylan.dev Go Back |
| 1 | + | # Steve's Capsule |
|
| 2 | + | ||
| 3 | + | Floating out into space, looking back on the pale blue dot |
|
| 4 | + |
| 1 | + | font-family = BerkeleyMono Nerd Font |
|
| 2 | + | font-family-bold = BerkeleyMono Nerd Font |
|
| 3 | + | font-family-italic = BerkeleyMono Nerd Font |
|
| 4 | + | font-family-bold-italic = BerkeleyMono Nerd Font |
|
| 5 | + | font-size = 14 |
|
| 6 | + | ||
| 7 | + | confirm-close-surface = false |
|
| 8 | + | clipboard-read = allow |
|
| 9 | + | clipboard-write = allow |
|
| 10 | + | mouse-hide-while-typing = true |
|
| 11 | + | window-padding-x = 6 |
|
| 12 | + | window-padding-balance = true |
|
| 13 | + | window-width = 85 |
|
| 14 | + | window-height = 30 |
|
| 15 | + | window-decoration = none |
|
| 16 | + | window-save-state = never |
|
| 17 | + | window-position-x = 530 |
|
| 18 | + | window-position-y = 200 |
|
| 19 | + | ||
| 20 | + | macos-titlebar-proxy-icon = hidden |
|
| 21 | + | ||
| 22 | + | keybind = ctrl+shift+f=write_screen_file:paste |
|
| 23 | + | ||
| 24 | + | # theme = Poimandres |
|
| 25 | + | ||
| 26 | + | # background = #1B1E28 |
|
| 27 | + | # foreground = #ACCDFF |
|
| 28 | + | # |
|
| 29 | + | # selection-background = #7CB424 |
|
| 30 | + | # selection-foreground = #000000 |
|
| 31 | + | # |
|
| 32 | + | # palette = 0=#1B1E28 |
|
| 33 | + | # palette = 1=#679DFF |
|
| 34 | + | # palette = 2=#E4C7FF |
|
| 35 | + | # palette = 3=#FAC2FF |
|
| 36 | + | # palette = 4=#DDFFFF |
|
| 37 | + | # palette = 5=#C5E9FF |
|
| 38 | + | # palette = 6=#DDFFFF |
|
| 39 | + | # palette = 7=#FFFFFF |
|
| 40 | + | # palette = 8=#ACCDFF |
|
| 41 | + | # palette = 9=#679DFF |
|
| 42 | + | # palette = 10=#E4C7FF |
|
| 43 | + | # palette = 11=#FAC2FF |
|
| 44 | + | # palette = 12=#DDFFFF |
|
| 45 | + | # palette = 13=#C5E9FF |
|
| 46 | + | # palette = 14=#DDFFFF |
|
| 47 | + | # palette = 15=#FFFFFF |
|
| 48 | + | ||
| 49 | + | # Compline |
|
| 50 | + | ||
| 51 | + | # background = #1a1d21 |
|
| 52 | + | # foreground = #f0efeb |
|
| 53 | + | # cursor-color = #d4ccb4 |
|
| 54 | + | # cursor-text = #1a1d21 |
|
| 55 | + | # selection-background = #3d424a |
|
| 56 | + | # selection-foreground = #f0efeb |
|
| 57 | + | # palette = 0=#22262b |
|
| 58 | + | # palette = 1=#cdacac |
|
| 59 | + | # palette = 2=#b8c4b8 |
|
| 60 | + | # palette = 3=#d4ccb4 |
|
| 61 | + | # palette = 4=#b4bcc4 |
|
| 62 | + | # palette = 5=#ccc4b4 |
|
| 63 | + | # palette = 6=#b4c0c8 |
|
| 64 | + | # palette = 7=#8b919a |
|
| 65 | + | # palette = 8=#515761 |
|
| 66 | + | # palette = 9=#cdacac |
|
| 67 | + | # palette = 10=#b8c4b8 |
|
| 68 | + | # palette = 11=#d4ccb4 |
|
| 69 | + | # palette = 12=#b4bcc4 |
|
| 70 | + | # palette = 13=#ccc4b4 |
|
| 71 | + | # palette = 14=#b4c0c8 |
|
| 72 | + | # palette = 15=#e0dcd4 |
|
| 73 | + | ||
| 74 | + | # Darkmatter |
|
| 75 | + | ||
| 76 | + | background = #121113 |
|
| 77 | + | foreground = #ffffff |
|
| 78 | + | ||
| 79 | + | selection-background = #222222 |
|
| 80 | + | selection-foreground = #000000 |
|
| 81 | + | ||
| 82 | + | palette = 0=#121113 |
|
| 83 | + | palette = 1=#5f8787 |
|
| 84 | + | palette = 2=#fbcb97 |
|
| 85 | + | palette = 3=#e78a53 |
|
| 86 | + | palette = 4=#888888 |
|
| 87 | + | palette = 5=#999999 |
|
| 88 | + | palette = 6=#aaaaaa |
|
| 89 | + | palette = 7=#c1c1c1 |
|
| 90 | + | palette = 8=#333333 |
|
| 91 | + | palette = 9=#5f8787 |
|
| 92 | + | palette = 10=#fbcb97 |
|
| 93 | + | palette = 11=#e78a53 |
|
| 94 | + | palette = 12=#888888 |
|
| 95 | + | palette = 13=#999999 |
|
| 96 | + | palette = 14=#aaaaaa |
|
| 97 | + | palette = 15=#c1c1c1 |
|
| 98 | + | ||
| 99 | + | auto-update-channel = stable |
|
| 100 | + | click-repeat-interval = 500 |
| 1 | + | font-family = CommitMono Nerd Font |
|
| 2 | + | font-family-bold = CommitMono Nerd Font |
|
| 3 | + | font-family-italic = CommitMono Nerd Font |
|
| 4 | + | font-family-bold-italic = CommitMono Nerd Font |
|
| 5 | + | font-size = 14 |
|
| 6 | + | ||
| 7 | + | confirm-close-surface = false |
|
| 8 | + | clipboard-read = allow |
|
| 9 | + | clipboard-write = allow |
|
| 10 | + | mouse-hide-while-typing = true |
|
| 11 | + | window-padding-x = 6 |
|
| 12 | + | window-padding-balance = true |
|
| 13 | + | window-save-state = always |
|
| 14 | + | window-width = 85 |
|
| 15 | + | window-height = 25 |
|
| 16 | + | window-theme = ghostty |
|
| 17 | + | window-titlebar-background = #000000 |
|
| 18 | + | macos-titlebar-proxy-icon = hidden |
|
| 19 | + | ||
| 20 | + | background = #121113 |
|
| 21 | + | foreground = #ffffff |
|
| 22 | + | ||
| 23 | + | selection-background = #222222 |
|
| 24 | + | selection-foreground = #000000 |
|
| 25 | + | ||
| 26 | + | palette = 0=#121113 |
|
| 27 | + | palette = 1=#5f8787 |
|
| 28 | + | palette = 2=#fbcb97 |
|
| 29 | + | palette = 3=#e78a53 |
|
| 30 | + | palette = 4=#888888 |
|
| 31 | + | palette = 5=#999999 |
|
| 32 | + | palette = 6=#aaaaaa |
|
| 33 | + | palette = 7=#c1c1c1 |
|
| 34 | + | palette = 8=#333333 |
|
| 35 | + | palette = 9=#5f8787 |
|
| 36 | + | palette = 10=#fbcb97 |
|
| 37 | + | palette = 11=#e78a53 |
|
| 38 | + | palette = 12=#888888 |
|
| 39 | + | palette = 13=#999999 |
|
| 40 | + | palette = 14=#aaaaaa |
|
| 41 | + | palette = 15=#c1c1c1 |
|
| 42 | + | ||
| 43 | + | auto-update-channel = stable |
|
| 44 | + | click-repeat-interval = 500 |
|
| 45 | + |
| 1 | + | [user] |
|
| 2 | + | name = Steve |
|
| 3 | + | email = contact@stevedylan.dev |
|
| 4 | + | signingkey = contact@stevedylan.dev |
|
| 5 | + | ||
| 6 | + | [alias] |
|
| 7 | + | ac = "!f() { git add . && git commit -m \"$1\"; }; f" |
|
| 8 | + | wip = "!f() { git add . && git commit -m \"wip\" && git push; }; f" |
|
| 9 | + | d = difftool -y --tool=oy |
|
| 10 | + | ||
| 11 | + | [difftool "oy"] |
|
| 12 | + | cmd = oy "$LOCAL" "$REMOTE" |
|
| 13 | + | ||
| 14 | + | [difftool] |
|
| 15 | + | prompt = false |
|
| 16 | + | ||
| 17 | + | [column] |
|
| 18 | + | ui = auto |
|
| 19 | + | ||
| 20 | + | [branch] |
|
| 21 | + | sort = -committerdate |
|
| 22 | + | ||
| 23 | + | [init] |
|
| 24 | + | defaultBranch = main |
|
| 25 | + | ||
| 26 | + | [diff] |
|
| 27 | + | tool = oy |
|
| 28 | + | algorithm = histogram |
|
| 29 | + | colorMoved = plain |
|
| 30 | + | mnemonicPrefix = true |
|
| 31 | + | renames = true |
|
| 32 | + | context = 3 |
|
| 33 | + | interHunkContext = 10 |
|
| 34 | + | ||
| 35 | + | [delta] |
|
| 36 | + | navigate = true |
|
| 37 | + | light = false |
|
| 38 | + | side-by-side = true |
|
| 39 | + | ||
| 40 | + | ||
| 41 | + | [status] |
|
| 42 | + | branch = true |
|
| 43 | + | showStash = true |
|
| 44 | + | showUntrackedFiles = all |
|
| 45 | + | ||
| 46 | + | [interactive] |
|
| 47 | + | diffFilter = delta --color-only --dark --true-color always |
|
| 48 | + | ||
| 49 | + | ||
| 50 | + | [push] |
|
| 51 | + | default = simple |
|
| 52 | + | autoSetupRemote = true |
|
| 53 | + | followTags = true |
|
| 54 | + | ||
| 55 | + | [pull] |
|
| 56 | + | rebase = true |
|
| 57 | + | ||
| 58 | + | [rebase] |
|
| 59 | + | autoStash = true |
|
| 60 | + | missingCommitsCheck = warn |
|
| 61 | + | ||
| 62 | + | [fetch] |
|
| 63 | + | prune = true |
|
| 64 | + | pruneTags = true |
|
| 65 | + | all = true |
|
| 66 | + | ||
| 67 | + | [help] |
|
| 68 | + | autocorrect = prompt |
|
| 69 | + | ||
| 70 | + | [commit] |
|
| 71 | + | gpgsign = true |
|
| 72 | + | verbose = true |
|
| 73 | + | ||
| 74 | + | [core] |
|
| 75 | + | excludesfile = ~/.gitignore |
|
| 76 | + | ||
| 77 | + | [tag] |
|
| 78 | + | gpgsign = true |
|
| 79 | + | ||
| 80 | + | [log] |
|
| 81 | + | abbrevCommit = true |
|
| 82 | + | graphColors = blue,yellow,cyan,megenta,green,red |
|
| 83 | + | ||
| 84 | + | [color "diff"] |
|
| 85 | + | meta = black bold |
|
| 86 | + | frag = magenta |
|
| 87 | + | context = white |
|
| 88 | + | whitespace = yellow reverse |
|
| 89 | + | old = red |
|
| 90 | + | ||
| 91 | + | [color "decorate"] |
|
| 92 | + | HEAD = red |
|
| 93 | + | branch = blue |
|
| 94 | + | tag = yellow |
|
| 95 | + | remoteBranch = magenta |
|
| 96 | + | ||
| 97 | + | [color "branch"] |
|
| 98 | + | current = magenta |
|
| 99 | + | local = default |
|
| 100 | + | remote = yellow |
|
| 101 | + | upstream = green |
|
| 102 | + | plain = blue |
|
| 103 | + |
| 1 | + | # Python specific |
|
| 2 | + | .venv/ |
|
| 3 | + | .mypy_cache/ |
|
| 4 | + | .pytest_cache/ |
|
| 5 | + | __pycache__/ |
|
| 6 | + | .hypothesis/ |
|
| 7 | + | .ruff_cache/ |
|
| 8 | + | .ropeproject/ |
|
| 9 | + | ||
| 10 | + | # Typescript |
|
| 11 | + | node_modules/ |
|
| 12 | + | dist/ |
|
| 13 | + | *.tsbuildinfo |
|
| 14 | + | .npm |
|
| 15 | + | .yarn |
|
| 16 | + | yarn-error.log |
|
| 17 | + | npm-debug.log |
|
| 18 | + | .env |
|
| 19 | + | .env.local |
|
| 20 | + | .env.development.local |
|
| 21 | + | .env.test.local |
|
| 22 | + | .env.production.local |
|
| 23 | + | ||
| 24 | + | # Rust |
|
| 25 | + | /target/ |
|
| 26 | + | **/*.rs.bk |
|
| 27 | + | Cargo.lock |
|
| 28 | + | .cargo/ |
|
| 29 | + | ||
| 30 | + | # Go |
|
| 31 | + | /bin/ |
|
| 32 | + | /pkg/ |
|
| 33 | + | /vendor/ |
|
| 34 | + | *.exe |
|
| 35 | + | *.exe~ |
|
| 36 | + | *.dll |
|
| 37 | + | *.so |
|
| 38 | + | *.dylib |
|
| 39 | + | *.test |
|
| 40 | + | *.out |
|
| 41 | + | go.work |
|
| 42 | + | ||
| 43 | + | # Common |
|
| 44 | + | .DS_Store |
|
| 45 | + | .idea/ |
|
| 46 | + | .vscode/ |
|
| 47 | + | *.swp |
|
| 48 | + | *.swo |
|
| 49 | + | .project |
|
| 50 | + | .classpath |
|
| 51 | + | .settings/ |
| 1 | + | # feat: ✨ |
|
| 2 | + | # feat: 🔍 |
|
| 3 | + | # feat: 🔗 |
|
| 4 | + | # feat: 🔒 |
|
| 5 | + | ||
| 6 | + | # fix: 🐛 |
|
| 7 | + | # fix: 🐞 |
|
| 8 | + | # fix: 🩹 |
|
| 9 | + | # fix: 🚑️ |
|
| 10 | + | ||
| 11 | + | # style: 💅 |
|
| 12 | + | # style: 🎨 |
|
| 13 | + | # style: 💄 |
|
| 14 | + | ||
| 15 | + | # ci: 🦊 |
|
| 16 | + | # ci: 📦 |
|
| 17 | + | ||
| 18 | + | # deploy: 🚀 |
|
| 19 | + | # deploy: 📦 |
|
| 20 | + | ||
| 21 | + | # chore: 🧹 |
|
| 22 | + | # chore: 🔧 |
|
| 23 | + | # chore: ⚙️ |
|
| 24 | + | # docs: 📜 |
|
| 25 | + | ||
| 26 | + | # refactor: 🔨 |
|
| 27 | + | # perf: 🚀 |
|
| 28 | + | ||
| 29 | + | # test: 🚦 |
|
| 30 | + | # debug: 🧪 |
|
| 31 | + | ||
| 32 | + | # BREAKING CHANGE: 🚨 |
|
| 33 | + | # BREAKING CHANGE: 💥 |
|
| 34 | + | # BREAKING CHANGE: 💣 |
| 1 | + | { |
|
| 2 | + | "name": "Mode SeventyFive H", |
|
| 3 | + | "vendorProductId": 14579058, |
|
| 4 | + | "macros": [ |
|
| 5 | + | "{KC_LCTL,KC_P}", |
|
| 6 | + | "{KC_LGUI,KC_LALT,KC_G}", |
|
| 7 | + | "{KC_LGUI,KC_LSFT,KC_LALT,KC_M}", |
|
| 8 | + | "{KC_LCTL,KC_LALT,KC_LGUI,KC_C}", |
|
| 9 | + | "", |
|
| 10 | + | "", |
|
| 11 | + | "", |
|
| 12 | + | "", |
|
| 13 | + | "", |
|
| 14 | + | "", |
|
| 15 | + | "", |
|
| 16 | + | "", |
|
| 17 | + | "", |
|
| 18 | + | "", |
|
| 19 | + | "", |
|
| 20 | + | "" |
|
| 21 | + | ], |
|
| 22 | + | "layers": [ |
|
| 23 | + | [ |
|
| 24 | + | "KC_ESC", |
|
| 25 | + | "KC_F1", |
|
| 26 | + | "KC_F2", |
|
| 27 | + | "MACRO00", |
|
| 28 | + | "MACRO01", |
|
| 29 | + | "KC_NO", |
|
| 30 | + | "MACRO02", |
|
| 31 | + | "MACRO03", |
|
| 32 | + | "KC_MPRV", |
|
| 33 | + | "KC_MPLY", |
|
| 34 | + | "KC_MNXT", |
|
| 35 | + | "KC_MUTE", |
|
| 36 | + | "KC_VOLD", |
|
| 37 | + | "KC_VOLU", |
|
| 38 | + | "KC_NO", |
|
| 39 | + | "KC_DEL", |
|
| 40 | + | "KC_GRV", |
|
| 41 | + | "KC_1", |
|
| 42 | + | "KC_2", |
|
| 43 | + | "KC_3", |
|
| 44 | + | "KC_4", |
|
| 45 | + | "KC_5", |
|
| 46 | + | "KC_6", |
|
| 47 | + | "KC_7", |
|
| 48 | + | "KC_8", |
|
| 49 | + | "KC_9", |
|
| 50 | + | "KC_0", |
|
| 51 | + | "KC_MINS", |
|
| 52 | + | "KC_EQL", |
|
| 53 | + | "KC_BSPC", |
|
| 54 | + | "KC_NO", |
|
| 55 | + | "KC_WWW_HOME", |
|
| 56 | + | "KC_TAB", |
|
| 57 | + | "KC_Q", |
|
| 58 | + | "KC_W", |
|
| 59 | + | "KC_E", |
|
| 60 | + | "KC_R", |
|
| 61 | + | "KC_T", |
|
| 62 | + | "KC_Y", |
|
| 63 | + | "KC_U", |
|
| 64 | + | "KC_I", |
|
| 65 | + | "KC_O", |
|
| 66 | + | "KC_P", |
|
| 67 | + | "KC_LBRC", |
|
| 68 | + | "KC_RBRC", |
|
| 69 | + | "KC_NO", |
|
| 70 | + | "KC_BSLS", |
|
| 71 | + | "KC_PGUP", |
|
| 72 | + | "KC_CAPS", |
|
| 73 | + | "KC_A", |
|
| 74 | + | "KC_S", |
|
| 75 | + | "KC_D", |
|
| 76 | + | "KC_F", |
|
| 77 | + | "KC_G", |
|
| 78 | + | "KC_H", |
|
| 79 | + | "KC_J", |
|
| 80 | + | "KC_K", |
|
| 81 | + | "KC_L", |
|
| 82 | + | "KC_SCLN", |
|
| 83 | + | "KC_QUOT", |
|
| 84 | + | "KC_NO", |
|
| 85 | + | "KC_NO", |
|
| 86 | + | "KC_ENT", |
|
| 87 | + | "KC_PGDN", |
|
| 88 | + | "KC_LSFT", |
|
| 89 | + | "KC_NO", |
|
| 90 | + | "KC_Z", |
|
| 91 | + | "KC_X", |
|
| 92 | + | "KC_C", |
|
| 93 | + | "KC_V", |
|
| 94 | + | "KC_B", |
|
| 95 | + | "KC_N", |
|
| 96 | + | "KC_M", |
|
| 97 | + | "KC_COMM", |
|
| 98 | + | "KC_DOT", |
|
| 99 | + | "KC_SLSH", |
|
| 100 | + | "KC_RSFT", |
|
| 101 | + | "KC_NO", |
|
| 102 | + | "KC_UP", |
|
| 103 | + | "KC_END", |
|
| 104 | + | "KC_LCTL", |
|
| 105 | + | "KC_LALT", |
|
| 106 | + | "KC_LGUI", |
|
| 107 | + | "KC_NO", |
|
| 108 | + | "KC_NO", |
|
| 109 | + | "KC_NO", |
|
| 110 | + | "KC_NO", |
|
| 111 | + | "KC_NO", |
|
| 112 | + | "KC_NO", |
|
| 113 | + | "KC_NO", |
|
| 114 | + | "KC_NO", |
|
| 115 | + | "KC_NO", |
|
| 116 | + | "KC_NO", |
|
| 117 | + | "KC_NO", |
|
| 118 | + | "KC_NO", |
|
| 119 | + | "KC_NO", |
|
| 120 | + | "KC_NO", |
|
| 121 | + | "KC_NO", |
|
| 122 | + | "KC_NO", |
|
| 123 | + | "KC_NO", |
|
| 124 | + | "KC_NO", |
|
| 125 | + | "KC_NO", |
|
| 126 | + | "KC_SPC", |
|
| 127 | + | "KC_NO", |
|
| 128 | + | "KC_NO", |
|
| 129 | + | "KC_NO", |
|
| 130 | + | "KC_RGUI", |
|
| 131 | + | "FN_MO13", |
|
| 132 | + | "KC_NO", |
|
| 133 | + | "KC_LEFT", |
|
| 134 | + | "KC_DOWN", |
|
| 135 | + | "KC_RGHT" |
|
| 136 | + | ], |
|
| 137 | + | [ |
|
| 138 | + | "KC_TRNS", |
|
| 139 | + | "KC_F1", |
|
| 140 | + | "KC_F2", |
|
| 141 | + | "KC_F3", |
|
| 142 | + | "KC_F4", |
|
| 143 | + | "KC_NO", |
|
| 144 | + | "KC_F5", |
|
| 145 | + | "KC_F6", |
|
| 146 | + | "KC_F7", |
|
| 147 | + | "KC_F8", |
|
| 148 | + | "KC_F9", |
|
| 149 | + | "KC_F10", |
|
| 150 | + | "KC_F11", |
|
| 151 | + | "KC_F12", |
|
| 152 | + | "KC_NO", |
|
| 153 | + | "KC_TRNS", |
|
| 154 | + | "KC_TRNS", |
|
| 155 | + | "KC_TRNS", |
|
| 156 | + | "KC_TRNS", |
|
| 157 | + | "KC_TRNS", |
|
| 158 | + | "KC_TRNS", |
|
| 159 | + | "KC_TRNS", |
|
| 160 | + | "KC_TRNS", |
|
| 161 | + | "KC_TRNS", |
|
| 162 | + | "KC_TRNS", |
|
| 163 | + | "KC_TRNS", |
|
| 164 | + | "KC_TRNS", |
|
| 165 | + | "KC_TRNS", |
|
| 166 | + | "KC_TRNS", |
|
| 167 | + | "KC_TRNS", |
|
| 168 | + | "KC_NO", |
|
| 169 | + | "KC_MUTE", |
|
| 170 | + | "KC_TRNS", |
|
| 171 | + | "KC_TRNS", |
|
| 172 | + | "KC_TRNS", |
|
| 173 | + | "KC_TRNS", |
|
| 174 | + | "KC_TRNS", |
|
| 175 | + | "KC_TRNS", |
|
| 176 | + | "KC_TRNS", |
|
| 177 | + | "KC_TRNS", |
|
| 178 | + | "KC_TRNS", |
|
| 179 | + | "KC_TRNS", |
|
| 180 | + | "KC_TRNS", |
|
| 181 | + | "KC_TRNS", |
|
| 182 | + | "KC_TRNS", |
|
| 183 | + | "KC_NO", |
|
| 184 | + | "KC_TRNS", |
|
| 185 | + | "KC_VOLU", |
|
| 186 | + | "KC_TRNS", |
|
| 187 | + | "KC_TRNS", |
|
| 188 | + | "KC_TRNS", |
|
| 189 | + | "KC_TRNS", |
|
| 190 | + | "KC_TRNS", |
|
| 191 | + | "KC_TRNS", |
|
| 192 | + | "KC_TRNS", |
|
| 193 | + | "KC_TRNS", |
|
| 194 | + | "KC_TRNS", |
|
| 195 | + | "KC_TRNS", |
|
| 196 | + | "KC_TRNS", |
|
| 197 | + | "KC_TRNS", |
|
| 198 | + | "KC_NO", |
|
| 199 | + | "KC_NO", |
|
| 200 | + | "KC_TRNS", |
|
| 201 | + | "KC_VOLD", |
|
| 202 | + | "FN_MO23", |
|
| 203 | + | "KC_NO", |
|
| 204 | + | "KC_TRNS", |
|
| 205 | + | "KC_TRNS", |
|
| 206 | + | "KC_TRNS", |
|
| 207 | + | "KC_TRNS", |
|
| 208 | + | "KC_TRNS", |
|
| 209 | + | "KC_TRNS", |
|
| 210 | + | "KC_TRNS", |
|
| 211 | + | "KC_TRNS", |
|
| 212 | + | "KC_TRNS", |
|
| 213 | + | "KC_TRNS", |
|
| 214 | + | "KC_TRNS", |
|
| 215 | + | "KC_NO", |
|
| 216 | + | "KC_TRNS", |
|
| 217 | + | "KC_MPLY", |
|
| 218 | + | "KC_TRNS", |
|
| 219 | + | "KC_TRNS", |
|
| 220 | + | "KC_TRNS", |
|
| 221 | + | "KC_NO", |
|
| 222 | + | "KC_NO", |
|
| 223 | + | "KC_NO", |
|
| 224 | + | "KC_NO", |
|
| 225 | + | "KC_NO", |
|
| 226 | + | "KC_NO", |
|
| 227 | + | "KC_NO", |
|
| 228 | + | "KC_NO", |
|
| 229 | + | "KC_NO", |
|
| 230 | + | "KC_NO", |
|
| 231 | + | "KC_NO", |
|
| 232 | + | "KC_NO", |
|
| 233 | + | "KC_NO", |
|
| 234 | + | "KC_NO", |
|
| 235 | + | "KC_NO", |
|
| 236 | + | "KC_NO", |
|
| 237 | + | "KC_NO", |
|
| 238 | + | "KC_NO", |
|
| 239 | + | "KC_NO", |
|
| 240 | + | "KC_TRNS", |
|
| 241 | + | "KC_NO", |
|
| 242 | + | "KC_NO", |
|
| 243 | + | "KC_NO", |
|
| 244 | + | "KC_TRNS", |
|
| 245 | + | "KC_TRNS", |
|
| 246 | + | "KC_NO", |
|
| 247 | + | "KC_TRNS", |
|
| 248 | + | "KC_TRNS", |
|
| 249 | + | "KC_TRNS" |
|
| 250 | + | ], |
|
| 251 | + | [ |
|
| 252 | + | "KC_TRNS", |
|
| 253 | + | "KC_F13", |
|
| 254 | + | "KC_F14", |
|
| 255 | + | "KC_F15", |
|
| 256 | + | "KC_F16", |
|
| 257 | + | "KC_NO", |
|
| 258 | + | "KC_F17", |
|
| 259 | + | "KC_F18", |
|
| 260 | + | "KC_F19", |
|
| 261 | + | "KC_F20", |
|
| 262 | + | "KC_F21", |
|
| 263 | + | "KC_F22", |
|
| 264 | + | "KC_F23", |
|
| 265 | + | "KC_F24", |
|
| 266 | + | "KC_NO", |
|
| 267 | + | "KC_TRNS", |
|
| 268 | + | "KC_TRNS", |
|
| 269 | + | "KC_TRNS", |
|
| 270 | + | "KC_TRNS", |
|
| 271 | + | "KC_TRNS", |
|
| 272 | + | "KC_TRNS", |
|
| 273 | + | "KC_TRNS", |
|
| 274 | + | "KC_TRNS", |
|
| 275 | + | "KC_TRNS", |
|
| 276 | + | "KC_TRNS", |
|
| 277 | + | "KC_TRNS", |
|
| 278 | + | "KC_TRNS", |
|
| 279 | + | "KC_TRNS", |
|
| 280 | + | "KC_TRNS", |
|
| 281 | + | "KC_TRNS", |
|
| 282 | + | "KC_NO", |
|
| 283 | + | "KC_TRNS", |
|
| 284 | + | "KC_TRNS", |
|
| 285 | + | "KC_TRNS", |
|
| 286 | + | "KC_TRNS", |
|
| 287 | + | "KC_TRNS", |
|
| 288 | + | "KC_TRNS", |
|
| 289 | + | "KC_TRNS", |
|
| 290 | + | "KC_TRNS", |
|
| 291 | + | "KC_TRNS", |
|
| 292 | + | "KC_TRNS", |
|
| 293 | + | "KC_TRNS", |
|
| 294 | + | "KC_TRNS", |
|
| 295 | + | "KC_TRNS", |
|
| 296 | + | "KC_TRNS", |
|
| 297 | + | "KC_NO", |
|
| 298 | + | "KC_TRNS", |
|
| 299 | + | "KC_TRNS", |
|
| 300 | + | "KC_TRNS", |
|
| 301 | + | "KC_TRNS", |
|
| 302 | + | "KC_TRNS", |
|
| 303 | + | "KC_TRNS", |
|
| 304 | + | "KC_TRNS", |
|
| 305 | + | "KC_TRNS", |
|
| 306 | + | "KC_TRNS", |
|
| 307 | + | "KC_TRNS", |
|
| 308 | + | "KC_TRNS", |
|
| 309 | + | "KC_TRNS", |
|
| 310 | + | "KC_TRNS", |
|
| 311 | + | "KC_TRNS", |
|
| 312 | + | "KC_NO", |
|
| 313 | + | "KC_NO", |
|
| 314 | + | "KC_TRNS", |
|
| 315 | + | "KC_TRNS", |
|
| 316 | + | "KC_TRNS", |
|
| 317 | + | "KC_NO", |
|
| 318 | + | "KC_TRNS", |
|
| 319 | + | "KC_TRNS", |
|
| 320 | + | "KC_TRNS", |
|
| 321 | + | "KC_TRNS", |
|
| 322 | + | "KC_TRNS", |
|
| 323 | + | "KC_TRNS", |
|
| 324 | + | "KC_TRNS", |
|
| 325 | + | "KC_TRNS", |
|
| 326 | + | "KC_TRNS", |
|
| 327 | + | "KC_TRNS", |
|
| 328 | + | "KC_TRNS", |
|
| 329 | + | "KC_NO", |
|
| 330 | + | "KC_TRNS", |
|
| 331 | + | "KC_TRNS", |
|
| 332 | + | "KC_TRNS", |
|
| 333 | + | "KC_TRNS", |
|
| 334 | + | "KC_TRNS", |
|
| 335 | + | "KC_NO", |
|
| 336 | + | "KC_NO", |
|
| 337 | + | "KC_NO", |
|
| 338 | + | "KC_NO", |
|
| 339 | + | "KC_NO", |
|
| 340 | + | "KC_NO", |
|
| 341 | + | "KC_NO", |
|
| 342 | + | "KC_NO", |
|
| 343 | + | "KC_NO", |
|
| 344 | + | "KC_NO", |
|
| 345 | + | "KC_NO", |
|
| 346 | + | "KC_NO", |
|
| 347 | + | "KC_NO", |
|
| 348 | + | "KC_NO", |
|
| 349 | + | "KC_NO", |
|
| 350 | + | "KC_NO", |
|
| 351 | + | "KC_NO", |
|
| 352 | + | "KC_NO", |
|
| 353 | + | "KC_NO", |
|
| 354 | + | "KC_TRNS", |
|
| 355 | + | "KC_NO", |
|
| 356 | + | "KC_NO", |
|
| 357 | + | "KC_NO", |
|
| 358 | + | "KC_TRNS", |
|
| 359 | + | "KC_TRNS", |
|
| 360 | + | "KC_NO", |
|
| 361 | + | "KC_TRNS", |
|
| 362 | + | "KC_TRNS", |
|
| 363 | + | "KC_TRNS" |
|
| 364 | + | ], |
|
| 365 | + | [ |
|
| 366 | + | "KC_TRNS", |
|
| 367 | + | "KC_TRNS", |
|
| 368 | + | "KC_TRNS", |
|
| 369 | + | "KC_TRNS", |
|
| 370 | + | "KC_TRNS", |
|
| 371 | + | "KC_NO", |
|
| 372 | + | "KC_TRNS", |
|
| 373 | + | "KC_TRNS", |
|
| 374 | + | "KC_TRNS", |
|
| 375 | + | "KC_TRNS", |
|
| 376 | + | "KC_TRNS", |
|
| 377 | + | "KC_TRNS", |
|
| 378 | + | "KC_TRNS", |
|
| 379 | + | "KC_TRNS", |
|
| 380 | + | "KC_NO", |
|
| 381 | + | "KC_TRNS", |
|
| 382 | + | "KC_TRNS", |
|
| 383 | + | "KC_TRNS", |
|
| 384 | + | "KC_TRNS", |
|
| 385 | + | "KC_TRNS", |
|
| 386 | + | "KC_TRNS", |
|
| 387 | + | "KC_TRNS", |
|
| 388 | + | "KC_TRNS", |
|
| 389 | + | "KC_TRNS", |
|
| 390 | + | "KC_TRNS", |
|
| 391 | + | "KC_TRNS", |
|
| 392 | + | "KC_TRNS", |
|
| 393 | + | "KC_TRNS", |
|
| 394 | + | "KC_TRNS", |
|
| 395 | + | "KC_TRNS", |
|
| 396 | + | "KC_NO", |
|
| 397 | + | "KC_TRNS", |
|
| 398 | + | "KC_TRNS", |
|
| 399 | + | "KC_TRNS", |
|
| 400 | + | "KC_TRNS", |
|
| 401 | + | "KC_TRNS", |
|
| 402 | + | "KC_TRNS", |
|
| 403 | + | "KC_TRNS", |
|
| 404 | + | "KC_TRNS", |
|
| 405 | + | "KC_TRNS", |
|
| 406 | + | "KC_TRNS", |
|
| 407 | + | "KC_TRNS", |
|
| 408 | + | "KC_TRNS", |
|
| 409 | + | "KC_TRNS", |
|
| 410 | + | "KC_TRNS", |
|
| 411 | + | "KC_NO", |
|
| 412 | + | "KC_TRNS", |
|
| 413 | + | "KC_TRNS", |
|
| 414 | + | "KC_TRNS", |
|
| 415 | + | "KC_TRNS", |
|
| 416 | + | "KC_TRNS", |
|
| 417 | + | "KC_TRNS", |
|
| 418 | + | "KC_TRNS", |
|
| 419 | + | "KC_TRNS", |
|
| 420 | + | "KC_TRNS", |
|
| 421 | + | "KC_TRNS", |
|
| 422 | + | "KC_TRNS", |
|
| 423 | + | "KC_TRNS", |
|
| 424 | + | "KC_TRNS", |
|
| 425 | + | "KC_TRNS", |
|
| 426 | + | "KC_NO", |
|
| 427 | + | "KC_NO", |
|
| 428 | + | "KC_TRNS", |
|
| 429 | + | "KC_TRNS", |
|
| 430 | + | "KC_TRNS", |
|
| 431 | + | "KC_NO", |
|
| 432 | + | "KC_TRNS", |
|
| 433 | + | "KC_TRNS", |
|
| 434 | + | "KC_TRNS", |
|
| 435 | + | "KC_TRNS", |
|
| 436 | + | "KC_TRNS", |
|
| 437 | + | "KC_TRNS", |
|
| 438 | + | "KC_TRNS", |
|
| 439 | + | "KC_TRNS", |
|
| 440 | + | "KC_TRNS", |
|
| 441 | + | "KC_TRNS", |
|
| 442 | + | "KC_TRNS", |
|
| 443 | + | "KC_NO", |
|
| 444 | + | "KC_TRNS", |
|
| 445 | + | "KC_TRNS", |
|
| 446 | + | "KC_TRNS", |
|
| 447 | + | "KC_TRNS", |
|
| 448 | + | "KC_TRNS", |
|
| 449 | + | "KC_NO", |
|
| 450 | + | "KC_NO", |
|
| 451 | + | "KC_NO", |
|
| 452 | + | "KC_NO", |
|
| 453 | + | "KC_NO", |
|
| 454 | + | "KC_NO", |
|
| 455 | + | "KC_NO", |
|
| 456 | + | "KC_NO", |
|
| 457 | + | "KC_NO", |
|
| 458 | + | "KC_NO", |
|
| 459 | + | "KC_NO", |
|
| 460 | + | "KC_NO", |
|
| 461 | + | "KC_NO", |
|
| 462 | + | "KC_NO", |
|
| 463 | + | "KC_NO", |
|
| 464 | + | "KC_NO", |
|
| 465 | + | "KC_NO", |
|
| 466 | + | "KC_NO", |
|
| 467 | + | "KC_NO", |
|
| 468 | + | "KC_TRNS", |
|
| 469 | + | "KC_NO", |
|
| 470 | + | "KC_NO", |
|
| 471 | + | "KC_NO", |
|
| 472 | + | "KC_TRNS", |
|
| 473 | + | "KC_TRNS", |
|
| 474 | + | "KC_NO", |
|
| 475 | + | "KC_TRNS", |
|
| 476 | + | "KC_TRNS", |
|
| 477 | + | "KC_TRNS" |
|
| 478 | + | ] |
|
| 479 | + | ], |
|
| 480 | + | "encoders": [] |
|
| 481 | + | } |
Binary file — no preview.
| 1 | + | lastupdatecheck: 0 |
|
| 2 | + | recentrepos: |
|
| 3 | + | - /Users/stevedsimkins/Developer/steve-dylan-photo-nextjs |
|
| 4 | + | startuppopupversion: 5 |
|
| 5 | + | customcommandshistory: [] |
|
| 6 | + | hidecommandlog: false |
| 1 | + | # Specifies the network interface to use for the LocalIP readout |
|
| 2 | + | interface = "wlan0" |
|
| 3 | + | ||
| 4 | + | # Lengthen uptime output |
|
| 5 | + | long_uptime = true |
|
| 6 | + | ||
| 7 | + | # Lengthen shell output |
|
| 8 | + | long_shell = false |
|
| 9 | + | ||
| 10 | + | # Lengthen kernel output |
|
| 11 | + | long_kernel = false |
|
| 12 | + | ||
| 13 | + | # Toggle between displaying the current shell or your user's default one. |
|
| 14 | + | current_shell = true |
|
| 15 | + | ||
| 16 | + | # Toggle between displaying the number of physical or logical cores of your |
|
| 17 | + | # processor. |
|
| 18 | + | physical_cores = true |
|
| 19 | + | ||
| 20 | + | # Disks to show disk usage for. Defaults to `["/"]`. |
|
| 21 | + | # disks = ["/", "/home/user"] |
|
| 22 | + | ||
| 23 | + | # Show percentage next to disk information |
|
| 24 | + | # disk_space_percentage = true |
|
| 25 | + | ||
| 26 | + | # Show percentage next to memory information |
|
| 27 | + | # memory_percentage = true |
|
| 28 | + | ||
| 29 | + | # Themes need to be placed in "$XDG_CONFIG_DIR/macchina/themes" beforehand. |
|
| 30 | + | # e.g.: |
|
| 31 | + | # if theme path is /home/foo/.config/macchina/themes/Sodium.toml |
|
| 32 | + | # theme should be uncommented and set to "Sodium" |
|
| 33 | + | # |
|
| 34 | + | theme = "Beryllium" |
|
| 35 | + | ||
| 36 | + | # Displays only the specified readouts. |
|
| 37 | + | # Accepted values (case-sensitive): |
|
| 38 | + | # - Host |
|
| 39 | + | # - Machine |
|
| 40 | + | # - Kernel |
|
| 41 | + | # - Distribution |
|
| 42 | + | # - OperatingSystem |
|
| 43 | + | # - DesktopEnvironment |
|
| 44 | + | # - WindowManager |
|
| 45 | + | # - Resolution |
|
| 46 | + | # - Backlight |
|
| 47 | + | # - Packages |
|
| 48 | + | # - LocalIP |
|
| 49 | + | # - Terminal |
|
| 50 | + | # - Shell |
|
| 51 | + | # - Uptime |
|
| 52 | + | # - Processor |
|
| 53 | + | # - ProcessorLoad |
|
| 54 | + | # - Memory |
|
| 55 | + | # - Battery |
|
| 56 | + | # - GPU |
|
| 57 | + | # - DiskSpace |
|
| 58 | + | # Example: |
|
| 59 | + | # show = ["Battery", "Memory", ...] |
| 1 | + | # Beryllium |
|
| 2 | + | ||
| 3 | + | spacing = 3 |
|
| 4 | + | hide_ascii = true |
|
| 5 | + | key_color = "green" |
|
| 6 | + | separator = "" |
|
| 7 | + | ||
| 8 | + | [box] |
|
| 9 | + | border = "plain" |
|
| 10 | + | visible = true |
|
| 11 | + | ||
| 12 | + | [palette] |
|
| 13 | + | glyph = "○" |
|
| 14 | + | spacing = 2 |
|
| 15 | + | visible = true |
|
| 16 | + | ||
| 17 | + | [bar] |
|
| 18 | + | glyph = "○" |
|
| 19 | + | hide_delimiters = true |
|
| 20 | + | visible = true |
|
| 21 | + | ||
| 22 | + | [box.inner_margin] |
|
| 23 | + | x = 2 |
|
| 24 | + | y = 1 |
|
| 25 | + | ||
| 26 | + | [custom_ascii] |
|
| 27 | + | color = "green" |
| 1 | + | # Helium |
|
| 2 | + | ||
| 3 | + | hide_ascii = false |
|
| 4 | + | spacing = 2 |
|
| 5 | + | padding = 0 |
|
| 6 | + | separator = "->" |
|
| 7 | + | key_color = "Blue" |
|
| 8 | + | separator_color = "Yellow" |
|
| 9 | + | ||
| 10 | + | [bar] |
|
| 11 | + | glyph = "o" |
|
| 12 | + | symbol_open = "(" |
|
| 13 | + | symbol_close = ")" |
|
| 14 | + | hide_delimiters = false |
|
| 15 | + | visible = false |
|
| 16 | + | ||
| 17 | + | [box] |
|
| 18 | + | title = " Helium " |
|
| 19 | + | border = "rounded" |
|
| 20 | + | visible = false |
|
| 21 | + | ||
| 22 | + | [box.inner_margin] |
|
| 23 | + | x = 2 |
|
| 24 | + | y = 1 |
|
| 25 | + | ||
| 26 | + | [custom_ascii] |
|
| 27 | + | color = "Yellow" |
|
| 28 | + | ||
| 29 | + | [randomize] |
|
| 30 | + | key_color = false |
|
| 31 | + | separator_color = false |
|
| 32 | + | ||
| 33 | + | [keys] |
|
| 34 | + | host = "Host" |
|
| 35 | + | kernel = "Kernel" |
|
| 36 | + | battery = "Battery" |
|
| 37 | + | os = "OS" |
|
| 38 | + | de = "DE" |
|
| 39 | + | wm = "WM" |
|
| 40 | + | distro = "Distro" |
|
| 41 | + | terminal = "Terminal" |
|
| 42 | + | shell = "Shell" |
|
| 43 | + | packages = "Packages" |
|
| 44 | + | uptime = "Uptime" |
|
| 45 | + | memory = "Memory" |
|
| 46 | + | machine = "Machine" |
|
| 47 | + | local_ip = "IP" |
|
| 48 | + | backlight = "Brightness" |
|
| 49 | + | resolution = "Resolution" |
|
| 50 | + | cpu_load = "CPU Load" |
|
| 51 | + | cpu = "CPU" |
|
| 52 | + | gpu = "GPU" |
|
| 53 | + | disk_space = "Disk Space" |
| 1 | + | # Hydrogen |
|
| 2 | + | ||
| 3 | + | spacing = 2 |
|
| 4 | + | padding = 0 |
|
| 5 | + | hide_ascii = true |
|
| 6 | + | separator = ">" |
|
| 7 | + | key_color = "Cyan" |
|
| 8 | + | separator_color = "White" |
|
| 9 | + | ||
| 10 | + | [palette] |
|
| 11 | + | type = "Full" |
|
| 12 | + | visible = false |
|
| 13 | + | ||
| 14 | + | [bar] |
|
| 15 | + | glyph = "ߋ" |
|
| 16 | + | symbol_open = '[' |
|
| 17 | + | symbol_close = ']' |
|
| 18 | + | hide_delimiters = true |
|
| 19 | + | visible = true |
|
| 20 | + | ||
| 21 | + | [box] |
|
| 22 | + | border = "plain" |
|
| 23 | + | visible = true |
|
| 24 | + | ||
| 25 | + | [box.inner_margin] |
|
| 26 | + | x = 1 |
|
| 27 | + | y = 0 |
|
| 28 | + | ||
| 29 | + | [randomize] |
|
| 30 | + | key_color = false |
|
| 31 | + | separator_color = false |
|
| 32 | + | ||
| 33 | + | [keys] |
|
| 34 | + | host = "Host" |
|
| 35 | + | kernel = "Kernel" |
|
| 36 | + | battery = "Battery" |
|
| 37 | + | os = "OS" |
|
| 38 | + | de = "DE" |
|
| 39 | + | wm = "WM" |
|
| 40 | + | distro = "Distro" |
|
| 41 | + | terminal = "Terminal" |
|
| 42 | + | shell = "Shell" |
|
| 43 | + | packages = "Packages" |
|
| 44 | + | uptime = "Uptime" |
|
| 45 | + | memory = "Memory" |
|
| 46 | + | machine = "Machine" |
|
| 47 | + | local_ip = "Local IP" |
|
| 48 | + | backlight = "Brightness" |
|
| 49 | + | resolution = "Resolution" |
|
| 50 | + | cpu_load = "CPU Load" |
|
| 51 | + | cpu = "CPU" |
|
| 52 | + | gpu = "GPU" |
|
| 53 | + | disk_space = "Disk Space" |
| 1 | + | # Lithium |
|
| 2 | + | ||
| 3 | + | spacing = 1 |
|
| 4 | + | padding = 0 |
|
| 5 | + | hide_ascii = true |
|
| 6 | + | separator = " " |
|
| 7 | + | key_color = "Yellow" |
|
| 8 | + | separator_color = "Yellow" |
|
| 9 | + | ||
| 10 | + | [palette] |
|
| 11 | + | type = "Light" |
|
| 12 | + | glyph = "●" |
|
| 13 | + | spacing = 2 |
|
| 14 | + | visible = true |
|
| 15 | + | ||
| 16 | + | [bar] |
|
| 17 | + | glyph = "●" |
|
| 18 | + | symbol_open = '(' |
|
| 19 | + | symbol_close = ')' |
|
| 20 | + | visible = false |
|
| 21 | + | hide_delimiters = true |
|
| 22 | + | ||
| 23 | + | [box] |
|
| 24 | + | title = " " |
|
| 25 | + | border = "plain" |
|
| 26 | + | visible = false |
|
| 27 | + | ||
| 28 | + | [box.inner_margin] |
|
| 29 | + | x = 2 |
|
| 30 | + | y = 1 |
|
| 31 | + | ||
| 32 | + | [custom_ascii] |
|
| 33 | + | color = "Yellow" |
|
| 34 | + | ||
| 35 | + | [randomize] |
|
| 36 | + | key_color = false |
|
| 37 | + | separator_color = false |
|
| 38 | + | pool = "base" |
|
| 39 | + | ||
| 40 | + | [keys] |
|
| 41 | + | host = "Host" |
|
| 42 | + | kernel = "Kernel" |
|
| 43 | + | battery = "Battery" |
|
| 44 | + | os = "OS" |
|
| 45 | + | de = "DE" |
|
| 46 | + | wm = "WM" |
|
| 47 | + | distro = "Distro" |
|
| 48 | + | terminal = "Terminal" |
|
| 49 | + | shell = "Shell" |
|
| 50 | + | packages = "Packages" |
|
| 51 | + | uptime = "Uptime" |
|
| 52 | + | memory = "Memory" |
|
| 53 | + | machine = "Machine" |
|
| 54 | + | local_ip = "IP" |
|
| 55 | + | backlight = "Brightness" |
|
| 56 | + | resolution = "Resolution" |
|
| 57 | + | cpu_load = "CPU Load" |
|
| 58 | + | cpu = "CPU" |
|
| 59 | + | gpu = "GPU" |
|
| 60 | + | disk_space = "Disk Space" |
| 1 | + | [Personal Blocklist] |
|
| 2 | + | ! Title: Personal Blocklist |
|
| 3 | + | ! Description: Increases security! Blocks Malware, Spam, Scam and Phishing. |
|
| 4 | + | ! Homepage: https://github.com/stevedylandev/dotfiles |
|
| 5 | + | ! Expires: 1 day |
|
| 6 | + | ! Last modified: 06 Sep 2025 18:54 UTC |
|
| 7 | + | ! Version: 2025.0906.1854.58 |
|
| 8 | + | ! Syntax: PersonalBlocklist |
|
| 9 | + | ! Number of entries: 1 |
|
| 10 | + | ! |
|
| 11 | + | ||chat.avatar.ext.hp.com^ |
| 1 | + | require("options") |
|
| 2 | + | require("keymaps") |
|
| 3 | + | require("autocmds") |
|
| 4 | + | require("plugins") |
|
| 5 | + | require("lsp") |
|
| 6 | + | require("treesitter") |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "astro-ls", "--stdio" |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | "astro", |
|
| 7 | + | }, |
|
| 8 | + | root_markers = { "package.json", "tsconfig.json", "jsconfig.json", ".git" }, |
|
| 9 | + | single_file_support = true, |
|
| 10 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 11 | + | init_options = { |
|
| 12 | + | typescript = { |
|
| 13 | + | tsdk = "/Users/stevedylandev/.bun/install/global/node_modules/typescript/lib" |
|
| 14 | + | }, |
|
| 15 | + | }, |
|
| 16 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { "gopls" }, -- Command to start the language server |
|
| 3 | + | filetypes = { "go", "gomod", "gowork", "gotmpl", "gosum" }, -- File types that this server will handle |
|
| 4 | + | root_markers = { "go.mod", "go.work", ".git" }, -- Markers to identify the root of the project |
|
| 5 | + | settings = { -- Settings for the language server |
|
| 6 | + | gopls = { |
|
| 7 | + | gofumpt = true, |
|
| 8 | + | codelenses = { |
|
| 9 | + | gc_details = false, |
|
| 10 | + | generate = true, |
|
| 11 | + | regenerate_cgo = true, |
|
| 12 | + | run_govulncheck = true, |
|
| 13 | + | test = true, |
|
| 14 | + | tidy = true, |
|
| 15 | + | upgrade_dependency = true, |
|
| 16 | + | vendor = true, |
|
| 17 | + | }, |
|
| 18 | + | hints = { |
|
| 19 | + | assignVariableTypes = false, |
|
| 20 | + | compositeLiteralFields = false, |
|
| 21 | + | compositeLiteralTypes = false, |
|
| 22 | + | constantValues = false, |
|
| 23 | + | functionTypeParameters = false, |
|
| 24 | + | parameterNames = false, |
|
| 25 | + | rangeVariableTypes = false, |
|
| 26 | + | }, |
|
| 27 | + | analyses = { |
|
| 28 | + | nilness = true, |
|
| 29 | + | unusedparams = true, |
|
| 30 | + | unusedwrite = true, |
|
| 31 | + | useany = true, |
|
| 32 | + | unreachable = true, |
|
| 33 | + | modernize = true, |
|
| 34 | + | stylecheck = true, |
|
| 35 | + | appends = true, |
|
| 36 | + | asmdecl = true, |
|
| 37 | + | assign = true, |
|
| 38 | + | atomic = true, |
|
| 39 | + | bools = true, |
|
| 40 | + | buildtag = true, |
|
| 41 | + | cgocall = true, |
|
| 42 | + | composite = true, |
|
| 43 | + | contextcheck = true, |
|
| 44 | + | deba = true, |
|
| 45 | + | atomicalign = true, |
|
| 46 | + | composites = true, |
|
| 47 | + | copylocks = true, |
|
| 48 | + | deepequalerrors = true, |
|
| 49 | + | defers = true, |
|
| 50 | + | deprecated = true, |
|
| 51 | + | directive = true, |
|
| 52 | + | embed = true, |
|
| 53 | + | errorsas = true, |
|
| 54 | + | fillreturns = true, |
|
| 55 | + | framepointer = true, |
|
| 56 | + | gofix = true, |
|
| 57 | + | hostport = true, |
|
| 58 | + | infertypeargs = true, |
|
| 59 | + | lostcancel = true, |
|
| 60 | + | httpresponse = true, |
|
| 61 | + | ifaceassert = true, |
|
| 62 | + | loopclosure = true, |
|
| 63 | + | nilfunc = true, |
|
| 64 | + | nonewvars = true, |
|
| 65 | + | noresultvalues = true, |
|
| 66 | + | printf = true, |
|
| 67 | + | shadow = true, |
|
| 68 | + | shift = true, |
|
| 69 | + | sigchanyzer = true, |
|
| 70 | + | simplifycompositelit = true, |
|
| 71 | + | simplifyrange = true, |
|
| 72 | + | simplifyslice = true, |
|
| 73 | + | slog = true, |
|
| 74 | + | sortslice = true, |
|
| 75 | + | stdmethods = true, |
|
| 76 | + | stdversion = true, |
|
| 77 | + | stringintconv = true, |
|
| 78 | + | structtag = true, |
|
| 79 | + | testinggoroutine = true, |
|
| 80 | + | tests = true, |
|
| 81 | + | timeformat = true, |
|
| 82 | + | unmarshal = true, |
|
| 83 | + | unsafeptr = true, |
|
| 84 | + | unusedfunc = true, |
|
| 85 | + | unusedresult = true, |
|
| 86 | + | waitgroup = true, |
|
| 87 | + | yield = true, |
|
| 88 | + | unusedvariable = true, |
|
| 89 | + | }, |
|
| 90 | + | usePlaceholders = true, |
|
| 91 | + | completeUnimported = true, |
|
| 92 | + | staticcheck = true, |
|
| 93 | + | directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, |
|
| 94 | + | semanticTokens = true, |
|
| 95 | + | }, |
|
| 96 | + | }, |
|
| 97 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "vscode-html-language-server", "--stdio" |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | 'html', |
|
| 7 | + | }, |
|
| 8 | + | root_markers = { |
|
| 9 | + | 'index.js', 'index.html', 'styles.css', '.git' }, |
|
| 10 | + | single_file_support = true, |
|
| 11 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 12 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "bunx", "@biomejs/biome", "lsp-proxy" |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | 'json', |
|
| 7 | + | }, |
|
| 8 | + | single_file_support = true, |
|
| 9 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 10 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "lua-language-server", |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | "lua", |
|
| 7 | + | }, |
|
| 8 | + | root_markers = { |
|
| 9 | + | ".git", |
|
| 10 | + | ".luacheckrc", |
|
| 11 | + | ".luarc.json", |
|
| 12 | + | ".luarc.jsonc", |
|
| 13 | + | ".stylua.toml", |
|
| 14 | + | "selene.toml", |
|
| 15 | + | "selene.yml", |
|
| 16 | + | "stylua.toml", |
|
| 17 | + | }, |
|
| 18 | + | settings = { |
|
| 19 | + | Lua = { |
|
| 20 | + | diagnostics = { |
|
| 21 | + | globals = { "vim", "MiniPick", "MiniSnippets" } |
|
| 22 | + | }, |
|
| 23 | + | }, |
|
| 24 | + | }, |
|
| 25 | + | ||
| 26 | + | single_file_support = true, |
|
| 27 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 28 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "rust-analyzer", |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | "rust", |
|
| 7 | + | }, |
|
| 8 | + | root_markers = { |
|
| 9 | + | "Cargo.toml", |
|
| 10 | + | "Cargo.lock", |
|
| 11 | + | ".git", |
|
| 12 | + | }, |
|
| 13 | + | settings = { |
|
| 14 | + | ["rust-analyzer"] = { |
|
| 15 | + | cargo = { |
|
| 16 | + | allFeatures = true, |
|
| 17 | + | loadOutDirsFromCheck = true, |
|
| 18 | + | runBuildScripts = true, |
|
| 19 | + | }, |
|
| 20 | + | -- Add other rust-analyzer specific settings here |
|
| 21 | + | checkOnSave = true, |
|
| 22 | + | procMacro = { |
|
| 23 | + | enable = true, |
|
| 24 | + | ignored = { |
|
| 25 | + | leptos_macro = { |
|
| 26 | + | -- "component", |
|
| 27 | + | "server", |
|
| 28 | + | }, |
|
| 29 | + | }, |
|
| 30 | + | }, |
|
| 31 | + | }, |
|
| 32 | + | }, |
|
| 33 | + | single_file_support = true, |
|
| 34 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 35 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { 'nomicfoundation-solidity-language-server', '--stdio' }, |
|
| 3 | + | filetypes = { |
|
| 4 | + | "sol", |
|
| 5 | + | "solidity" |
|
| 6 | + | }, |
|
| 7 | + | root_markers = { |
|
| 8 | + | ".gitignore", |
|
| 9 | + | "foundry.toml" |
|
| 10 | + | }, |
|
| 11 | + | single_file_support = true, |
|
| 12 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 13 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "vtsls", "--stdio" |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | 'javascript', |
|
| 7 | + | 'javascriptreact', |
|
| 8 | + | 'javascript.jsx', |
|
| 9 | + | 'typescript', |
|
| 10 | + | 'typescriptreact', |
|
| 11 | + | 'typescript.tsx', |
|
| 12 | + | }, |
|
| 13 | + | root_markers = { |
|
| 14 | + | 'tsconfig.json', 'jsconfig.json', 'package.json', '.git' }, |
|
| 15 | + | single_file_support = true, |
|
| 16 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 17 | + | } |
| 1 | + | vim.api.nvim_create_autocmd('TextYankPost', { |
|
| 2 | + | desc = 'Highlight when yanking (copying) text', |
|
| 3 | + | group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), |
|
| 4 | + | callback = function() |
|
| 5 | + | vim.highlight.on_yank() |
|
| 6 | + | end, |
|
| 7 | + | }) |
|
| 8 | + | ||
| 9 | + | vim.api.nvim_create_autocmd("FileType", { |
|
| 10 | + | callback = function(ev) |
|
| 11 | + | local lang = vim.treesitter.language.get_lang(ev.match) or ev.match |
|
| 12 | + | if vim.treesitter.language.add(lang) then |
|
| 13 | + | vim.treesitter.start(ev.buf, lang) |
|
| 14 | + | end |
|
| 15 | + | end |
|
| 16 | + | }) |
|
| 17 | + | ||
| 18 | + | -- Reload files automatically if edited externally |
|
| 19 | + | vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, { |
|
| 20 | + | pattern = "*", |
|
| 21 | + | callback = function() |
|
| 22 | + | if vim.fn.mode() ~= "c" then |
|
| 23 | + | vim.cmd("checktime") |
|
| 24 | + | end |
|
| 25 | + | end, |
|
| 26 | + | }) |
|
| 27 | + | ||
| 28 | + | vim.api.nvim_create_autocmd("VimEnter", { |
|
| 29 | + | callback = function() |
|
| 30 | + | if vim.fn.argv(0) == "" then |
|
| 31 | + | vim.schedule(function() |
|
| 32 | + | require("mini.pick").builtin.files() |
|
| 33 | + | end) |
|
| 34 | + | end |
|
| 35 | + | end, |
|
| 36 | + | }) |
|
| 37 | + | ||
| 38 | + | vim.api.nvim_create_autocmd("FileType", { |
|
| 39 | + | pattern = { "markdown", "mdx", "text" }, |
|
| 40 | + | callback = function() |
|
| 41 | + | vim.opt_local.wrap = true |
|
| 42 | + | vim.opt_local.linebreak = true -- Break at word boundaries |
|
| 43 | + | vim.opt_local.spell = true |
|
| 44 | + | end, |
|
| 45 | + | }) |
| 1 | + | local opts = { noremap = true, silent = true } |
|
| 2 | + | local map = vim.api.nvim_set_keymap |
|
| 3 | + | ||
| 4 | + | -- Saving |
|
| 5 | + | map("n", "++", "<cmd>write!<CR>", opts) |
|
| 6 | + | ||
| 7 | + | -- Tmux Navigation |
|
| 8 | + | map("n", "<C-h>", "<cmd>TmuxNavigateLeft<CR>", opts) |
|
| 9 | + | map("n", "<C-j>", "<cmd>TmuxNavigateDown<CR>", opts) |
|
| 10 | + | map("n", "<C-k>", "<cmd>TmuxNavigateUp<CR>", opts) |
|
| 11 | + | map("n", "<C-l>", "<cmd>TmuxNavigateRight<CR>", opts) |
|
| 12 | + | ||
| 13 | + | -- Navigation |
|
| 14 | + | map("n", "j", "gj", opts) |
|
| 15 | + | map("n", "k", "gk", opts) |
|
| 16 | + | map("n", "n", "nzzzv", opts) |
|
| 17 | + | map("n", "N", "Nzzzv", opts) |
|
| 18 | + | map("n", "<C-d>", "<C-d>zz", opts) |
|
| 19 | + | map("n", "<C-u>", "<C-u>zz", opts) |
|
| 20 | + | ||
| 21 | + | -- Buffers |
|
| 22 | + | map("n", "<S-l>", ":bnext<CR>", opts) |
|
| 23 | + | map("n", "<S-h>", ":bprevious<CR>", opts) |
|
| 24 | + | map("n", "<leader>o", "<cmd>Pick buffers<CR>", opts) |
|
| 25 | + | map("n", "<leader>c", ":bd<cr>", opts) |
|
| 26 | + | ||
| 27 | + | -- Quickfix |
|
| 28 | + | map("n", "<C-n>", "<cmd>cnext<CR>zz", opts) |
|
| 29 | + | map("n", "<C-m>", "<cmd>cprev<CR>zz", opts) |
|
| 30 | + | map("n", "<leader>q", "<cmd>copen<CR>", opts) |
|
| 31 | + | map("n", "<leader>a", "<cmd>cclose<CR>", opts) |
|
| 32 | + | ||
| 33 | + | -- Search |
|
| 34 | + | map("n", "<leader>h", "<cmd>nohlsearch<CR>", opts) |
|
| 35 | + | map("n", "<leader>f", "<cmd>Pick files<CR>", opts) |
|
| 36 | + | map("n", "<leader>/", "<cmd>Pick grep_live<CR>", opts) |
|
| 37 | + | map("n", "<leader>hh", "<cmd>Pick help<CR>", opts) |
|
| 38 | + | ||
| 39 | + | -- Diagnostics |
|
| 40 | + | map("n", "<leader>d", "<cmd>Pick diagnostic<CR>", opts) |
|
| 41 | + | ||
| 42 | + | -- Git |
|
| 43 | + | map("n", "<leader>gg", "<cmd>lua MiniDiff.toggle_overlay()<CR>", opts) |
|
| 44 | + | ||
| 45 | + | -- File explorer |
|
| 46 | + | map("n", "<leader>e", "<cmd>lua MiniFiles.open()<CR>", opts) |
|
| 47 | + | ||
| 48 | + | -- Spelling |
|
| 49 | + | vim.keymap.set("n", "<leader>s", function() |
|
| 50 | + | local word = vim.fn.expand("<cword>") |
|
| 51 | + | local suggestions = vim.fn.spellsuggest(word, 25) |
|
| 52 | + | MiniPick.start({ |
|
| 53 | + | source = { |
|
| 54 | + | items = suggestions, |
|
| 55 | + | name = "Spelling: " .. word, |
|
| 56 | + | choose = function(item) |
|
| 57 | + | vim.schedule(function() |
|
| 58 | + | vim.cmd("normal! ciw" .. item) |
|
| 59 | + | vim.cmd("stopinsert") |
|
| 60 | + | end) |
|
| 61 | + | end, |
|
| 62 | + | }, |
|
| 63 | + | }) |
|
| 64 | + | end, { desc = "Spelling suggestions" }) |
|
| 65 | + | ||
| 66 | + | -- Editing |
|
| 67 | + | map("n", "J", "mzJ`z", opts) |
|
| 68 | + | map("n", "YY", "va{Vy", opts) |
|
| 69 | + | map("x", "p", '"_dP', opts) |
|
| 70 | + | ||
| 71 | + | -- Insert mode |
|
| 72 | + | map("i", "jj", "<ESC>", opts) |
|
| 73 | + | map("i", "jk", "<ESC>", opts) |
|
| 74 | + | map("i", "<C-j>", 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', { expr = true, noremap = true, silent = true }) |
|
| 75 | + | map("i", "<C-k>", 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', { expr = true, noremap = true, silent = true }) |
|
| 76 | + | ||
| 77 | + | -- Visual mode |
|
| 78 | + | map("v", "<", "<gv", opts) |
|
| 79 | + | map("v", ">", ">gv", opts) |
|
| 80 | + | map("v", "J", ":m '>+1<CR>gv=gv", opts) |
|
| 81 | + | map("v", "K", ":m '<-2<CR>gv=gv", opts) |
| 1 | + | vim.lsp.enable({ |
|
| 2 | + | "astro", |
|
| 3 | + | "gopls", |
|
| 4 | + | "lua_ls", |
|
| 5 | + | "tsserver", |
|
| 6 | + | "rust-analyzer", |
|
| 7 | + | "solc", |
|
| 8 | + | "html", |
|
| 9 | + | "json" |
|
| 10 | + | }) |
|
| 11 | + | ||
| 12 | + | vim.api.nvim_create_autocmd("LspAttach", { |
|
| 13 | + | group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }), |
|
| 14 | + | callback = function(event) |
|
| 15 | + | local map = function(keys, func, desc) |
|
| 16 | + | vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) |
|
| 17 | + | end |
|
| 18 | + | ||
| 19 | + | map("gl", vim.diagnostic.open_float, "Open Diagnostic Float") |
|
| 20 | + | map("K", vim.lsp.buf.hover, "Hover Documentation") |
|
| 21 | + | map("gs", vim.lsp.buf.signature_help, "Signature Documentation") |
|
| 22 | + | map("gD", vim.lsp.buf.declaration, "Goto Declaration") |
|
| 23 | + | map("<leader>la", vim.lsp.buf.code_action, "Code Action") |
|
| 24 | + | map("<leader>lr", vim.lsp.buf.rename, "Rename all references") |
|
| 25 | + | map("<leader>lf", vim.lsp.buf.format, "Format") |
|
| 26 | + | map("<leader>v", "<cmd>vsplit | lua vim.lsp.buf.definition()<cr>", "Goto Definition in Vertical Split") |
|
| 27 | + | ||
| 28 | + | local function client_supports_method(client, method, bufnr) |
|
| 29 | + | if vim.fn.has 'nvim-0.11' == 1 then |
|
| 30 | + | return client:supports_method(method, bufnr) |
|
| 31 | + | else |
|
| 32 | + | return client.supports_method(method, { bufnr = bufnr }) |
|
| 33 | + | end |
|
| 34 | + | end |
|
| 35 | + | ||
| 36 | + | local client = vim.lsp.get_client_by_id(event.data.client_id) |
|
| 37 | + | if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then |
|
| 38 | + | local highlight_augroup = vim.api.nvim_create_augroup('lsp-highlight', { clear = false }) |
|
| 39 | + | ||
| 40 | + | -- When cursor stops moving: Highlights all instances of the symbol under the cursor |
|
| 41 | + | vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { |
|
| 42 | + | buffer = event.buf, |
|
| 43 | + | group = highlight_augroup, |
|
| 44 | + | callback = vim.lsp.buf.document_highlight, |
|
| 45 | + | }) |
|
| 46 | + | -- When cursor moves: Clears the highlighting |
|
| 47 | + | vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { |
|
| 48 | + | buffer = event.buf, |
|
| 49 | + | group = highlight_augroup, |
|
| 50 | + | callback = vim.lsp.buf.clear_references, |
|
| 51 | + | }) |
|
| 52 | + | ||
| 53 | + | -- When LSP detaches: Clears the highlighting |
|
| 54 | + | vim.api.nvim_create_autocmd('LspDetach', { |
|
| 55 | + | group = vim.api.nvim_create_augroup('lsp-detach', { clear = true }), |
|
| 56 | + | callback = function(event2) |
|
| 57 | + | vim.lsp.buf.clear_references() |
|
| 58 | + | vim.api.nvim_clear_autocmds { group = 'lsp-highlight', buffer = event2.buf } |
|
| 59 | + | end, |
|
| 60 | + | }) |
|
| 61 | + | end |
|
| 62 | + | end, |
|
| 63 | + | }) |
|
| 64 | + | ||
| 65 | + | vim.diagnostic.config({ |
|
| 66 | + | virtual_lines = false, |
|
| 67 | + | -- virtual_text = true, |
|
| 68 | + | underline = true, |
|
| 69 | + | update_in_insert = false, |
|
| 70 | + | severity_sort = true, |
|
| 71 | + | float = { |
|
| 72 | + | border = "rounded", |
|
| 73 | + | source = true, |
|
| 74 | + | }, |
|
| 75 | + | signs = { |
|
| 76 | + | text = { |
|
| 77 | + | [vim.diagnostic.severity.ERROR] = " ", |
|
| 78 | + | [vim.diagnostic.severity.WARN] = " ", |
|
| 79 | + | [vim.diagnostic.severity.INFO] = " ", |
|
| 80 | + | [vim.diagnostic.severity.HINT] = " ", |
|
| 81 | + | }, |
|
| 82 | + | numhl = { |
|
| 83 | + | [vim.diagnostic.severity.ERROR] = "ErrorMsg", |
|
| 84 | + | [vim.diagnostic.severity.WARN] = "WarningMsg", |
|
| 85 | + | }, |
|
| 86 | + | }, |
|
| 87 | + | }) |
| 1 | + | vim.g.mapleader = " " |
|
| 2 | + | vim.g.maplocalleader = "\\" |
|
| 3 | + | vim.g.autoformat = true |
|
| 4 | + | vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" } |
|
| 5 | + | vim.opt.swapfile = false |
|
| 6 | + | vim.opt.autowrite = true -- Enable auto write |
|
| 7 | + | vim.opt.clipboard = "unnamedplus" -- Sync with system clipboard |
|
| 8 | + | vim.opt.completeopt = "menu,menuone,noselect" |
|
| 9 | + | vim.opt.conceallevel = 3 -- Hide * markup for bold and italic |
|
| 10 | + | vim.opt.confirm = true -- Confirm to save changes before exiting modified buffer |
|
| 11 | + | vim.opt.cursorline = true -- Enable highlighting of the current line |
|
| 12 | + | vim.opt.expandtab = true -- Use spaces instead of tabs |
|
| 13 | + | vim.opt.formatoptions = "jcroqlnt" -- tcqj |
|
| 14 | + | vim.opt.grepformat = "%f:%l:%c:%m" |
|
| 15 | + | vim.opt.grepprg = "rg --vimgrep" |
|
| 16 | + | vim.opt.ignorecase = true -- Ignore case |
|
| 17 | + | vim.opt.inccommand = "nosplit" -- preview incremental substitute |
|
| 18 | + | vim.opt.incsearch = true |
|
| 19 | + | vim.opt.laststatus = 3 -- global statusline |
|
| 20 | + | vim.opt.list = false -- Don't show invisible characters |
|
| 21 | + | vim.opt.mouse = "a" -- Enable mouse mode |
|
| 22 | + | vim.opt.number = true -- Print line number |
|
| 23 | + | vim.opt.pumblend = 10 -- Popup blend |
|
| 24 | + | vim.opt.pumheight = 10 -- Maximum number of entries in a popup |
|
| 25 | + | vim.opt.relativenumber = true -- Relative line numbers |
|
| 26 | + | vim.opt.scrolloff = 4 -- Lines of context |
|
| 27 | + | vim.opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp", "folds" } |
|
| 28 | + | vim.opt.shiftround = true -- Round indent |
|
| 29 | + | vim.opt.shiftwidth = 2 -- Size of an indent |
|
| 30 | + | vim.opt.shortmess:append({ W = true, I = true, c = true, C = true }) |
|
| 31 | + | vim.opt.showmode = false -- Dont show mode since we have a statusline |
|
| 32 | + | vim.opt.sidescrolloff = 8 -- Columns of context |
|
| 33 | + | vim.opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time |
|
| 34 | + | vim.opt.smartcase = true -- Don't ignore case with capitals |
|
| 35 | + | vim.opt.smartindent = true -- Insert indents automatically |
|
| 36 | + | vim.opt.spelllang = { "en" } |
|
| 37 | + | vim.opt.splitbelow = true -- Put new windows below current |
|
| 38 | + | vim.opt.splitkeep = "screen" |
|
| 39 | + | vim.opt.splitright = true -- Put new windows right of current |
|
| 40 | + | vim.opt.tabstop = 2 -- Number of spaces tabs count for |
|
| 41 | + | vim.opt.termguicolors = true -- True color support |
|
| 42 | + | vim.opt.timeoutlen = 300 |
|
| 43 | + | vim.opt.undofile = true |
|
| 44 | + | vim.opt.undolevels = 10000 |
|
| 45 | + | vim.opt.updatetime = 200 -- Save swap file and trigger CursorHold |
|
| 46 | + | vim.opt.virtualedit = "block" -- Allow cursor to move where there is no text in visual block mode |
|
| 47 | + | vim.opt.wildmode = "longest:full,full" -- Command-line completion mode |
|
| 48 | + | vim.opt.winminwidth = 5 -- Minimum window width |
|
| 49 | + | vim.opt.wrap = false -- Disable line wrap |
|
| 50 | + | vim.opt.fillchars = { |
|
| 51 | + | foldopen = "", |
|
| 52 | + | foldclose = "", |
|
| 53 | + | fold = " ", |
|
| 54 | + | foldsep = " ", |
|
| 55 | + | diff = "╱", |
|
| 56 | + | eob = " ", |
|
| 57 | + | } |
|
| 58 | + | vim.opt.shell = "sh" |
|
| 59 | + | vim.opt.smoothscroll = true |
|
| 60 | + | ||
| 61 | + | -- Treesitter folding |
|
| 62 | + | vim.o.foldenable = true |
|
| 63 | + | vim.o.foldlevel = 99 |
|
| 64 | + | vim.o.foldmethod = "expr" |
|
| 65 | + | vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()" |
|
| 66 | + | ||
| 67 | + | -- Fix markdown indentation settings |
|
| 68 | + | vim.g.markdown_recommended_style = 0 |
|
| 69 | + | vim.filetype.add({ extension = { mdx = "mdx", }, }) |
|
| 70 | + | vim.treesitter.language.register("markdown", "mdx") |
|
| 71 | + |
| 1 | + | -- Colorscheme |
|
| 2 | + | vim.pack.add({ |
|
| 3 | + | "https://github.com/stevedylandev/darkmatter-nvim", |
|
| 4 | + | 'https://github.com/echasnovski/mini.nvim', |
|
| 5 | + | 'https://github.com/shaunsingh/nord.nvim' |
|
| 6 | + | }) |
|
| 7 | + | vim.cmd.colorscheme('nord') |
|
| 8 | + | ||
| 9 | + | -- Mini.nvim — startup modules |
|
| 10 | + | local win_config = function() |
|
| 11 | + | local height = math.floor(0.618 * vim.o.lines) |
|
| 12 | + | local width = math.floor(0.618 * vim.o.columns) |
|
| 13 | + | return { |
|
| 14 | + | anchor = 'NW', |
|
| 15 | + | height = height, |
|
| 16 | + | width = width, |
|
| 17 | + | row = math.floor(0.5 * (vim.o.lines - height)), |
|
| 18 | + | col = math.floor(0.5 * (vim.o.columns - width)), |
|
| 19 | + | } |
|
| 20 | + | end |
|
| 21 | + | ||
| 22 | + | require("mini.pick").setup({ |
|
| 23 | + | mappings = { |
|
| 24 | + | choose_marked = '<C-y>', |
|
| 25 | + | move_down = '<C-j>', |
|
| 26 | + | move_up = '<C-k>', |
|
| 27 | + | }, |
|
| 28 | + | window = { config = win_config } |
|
| 29 | + | }) |
|
| 30 | + | ||
| 31 | + | vim.api.nvim_set_hl(0, "MiniPickMatchCurrent", |
|
| 32 | + | { bg = vim.g.terminal_color_8 |
|
| 33 | + | }) |
|
| 34 | + | ||
| 35 | + | require('mini.icons').setup() |
|
| 36 | + | vim.api.nvim_set_hl(0, 'MiniIconsAzure', { fg = vim.g.terminal_color_12 }) |
|
| 37 | + | vim.api.nvim_set_hl(0, 'MiniIconsBlue', { fg = vim.g.terminal_color_4 }) |
|
| 38 | + | vim.api.nvim_set_hl(0, 'MiniIconsCyan', { fg = vim.g.terminal_color_6 }) |
|
| 39 | + | vim.api.nvim_set_hl(0, 'MiniIconsGreen', { fg = vim.g.terminal_color_2 }) |
|
| 40 | + | vim.api.nvim_set_hl(0, 'MiniIconsGrey', { fg = vim.g.terminal_color_8 }) |
|
| 41 | + | vim.api.nvim_set_hl(0, 'MiniIconsOrange', { fg = vim.g.terminal_color_3 }) |
|
| 42 | + | vim.api.nvim_set_hl(0, 'MiniIconsPurple', { fg = vim.g.terminal_color_5 }) |
|
| 43 | + | vim.api.nvim_set_hl(0, 'MiniIconsRed', { fg = vim.g.terminal_color_1 }) |
|
| 44 | + | vim.api.nvim_set_hl(0, 'MiniIconsYellow', { fg = vim.g.terminal_color_11 }) |
|
| 45 | + | ||
| 46 | + | require('mini.diff').setup({ |
|
| 47 | + | view = { |
|
| 48 | + | style = vim.go.number and 'sign' or 'number', |
|
| 49 | + | signs = { |
|
| 50 | + | add = "+", |
|
| 51 | + | change = "~", |
|
| 52 | + | delete = "-", |
|
| 53 | + | topdelete = "", |
|
| 54 | + | changedelete = "▎", |
|
| 55 | + | untracked = "+" |
|
| 56 | + | }, |
|
| 57 | + | priority = 199, |
|
| 58 | + | }, |
|
| 59 | + | }) |
|
| 60 | + | require('mini.statusline').setup() |
|
| 61 | + | require('mini.extra').setup() |
|
| 62 | + | ||
| 63 | + | -- Deferred — loads right after startup via vim.schedule() |
|
| 64 | + | vim.schedule(function() |
|
| 65 | + | vim.pack.add({ |
|
| 66 | + | "https://github.com/christoomey/vim-tmux-navigator", |
|
| 67 | + | "https://github.com/rafamadriz/friendly-snippets", |
|
| 68 | + | }) |
|
| 69 | + | ||
| 70 | + | require("mini.comment").setup({ |
|
| 71 | + | mappings = { |
|
| 72 | + | comment = 'gb', |
|
| 73 | + | comment_visual = 'gb', |
|
| 74 | + | textobject = 'gb' |
|
| 75 | + | } |
|
| 76 | + | }) |
|
| 77 | + | ||
| 78 | + | require('mini.surround').setup({ |
|
| 79 | + | mappings = { |
|
| 80 | + | replace = 'cs', -- Replace surrounding |
|
| 81 | + | }, |
|
| 82 | + | }) |
|
| 83 | + | ||
| 84 | + | require('mini.files').setup({ |
|
| 85 | + | mappings = { |
|
| 86 | + | close = '<ESC>', |
|
| 87 | + | go_in_plus = '<CR>' |
|
| 88 | + | } |
|
| 89 | + | }) |
|
| 90 | + | end) |
|
| 91 | + | ||
| 92 | + | -- Lazy — loads on InsertEnter |
|
| 93 | + | vim.api.nvim_create_autocmd('InsertEnter', { once = true, callback = function() |
|
| 94 | + | require("mini.completion").setup({ |
|
| 95 | + | mappings = { |
|
| 96 | + | scroll_down = '', |
|
| 97 | + | scroll_up = '', |
|
| 98 | + | }, |
|
| 99 | + | }) |
|
| 100 | + | ||
| 101 | + | local gen_loader = require('mini.snippets').gen_loader |
|
| 102 | + | require('mini.snippets').setup({ |
|
| 103 | + | snippets = { |
|
| 104 | + | gen_loader.from_runtime("snippets"), |
|
| 105 | + | gen_loader.from_lang(), |
|
| 106 | + | }, |
|
| 107 | + | mappings = { |
|
| 108 | + | expand = '', |
|
| 109 | + | }, |
|
| 110 | + | }) |
|
| 111 | + | MiniSnippets.start_lsp_server() |
|
| 112 | + | end }) |
| 1 | + | -- Native treesitter parsers installed via luarocks |
|
| 2 | + | local rocks_path = vim.fn.stdpath("data") .. "/site/lib/luarocks/rocks-5.1" |
|
| 3 | + | for _, parser_dir in ipairs(vim.fn.glob(rocks_path .. "/tree-sitter-*/*/", true, true)) do |
|
| 4 | + | vim.opt.runtimepath:prepend(parser_dir) |
|
| 5 | + | end |
| 1 | + | { |
|
| 2 | + | "$schema": "https://opencode.ai/config.json", |
|
| 3 | + | "model": "anthropic/claude-sonnet-4-20250514", |
|
| 4 | + | "theme": "system" |
|
| 5 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://opencode.ai/theme.json", |
|
| 3 | + | "defs": { |
|
| 4 | + | "base00": 0, |
|
| 5 | + | "base01": 8, |
|
| 6 | + | "base02": 10, |
|
| 7 | + | "base03": 11, |
|
| 8 | + | "base04": 12, |
|
| 9 | + | "base05": 7, |
|
| 10 | + | "base06": 14, |
|
| 11 | + | "base07": 15, |
|
| 12 | + | "base08": 1, |
|
| 13 | + | "base09": 9, |
|
| 14 | + | "base0A": 3, |
|
| 15 | + | "base0B": 2, |
|
| 16 | + | "base0C": 6, |
|
| 17 | + | "base0D": 4, |
|
| 18 | + | "base0E": 5, |
|
| 19 | + | "base0F": 13 |
|
| 20 | + | }, |
|
| 21 | + | "theme": { |
|
| 22 | + | "primary": { |
|
| 23 | + | "dark": "base0D", |
|
| 24 | + | "light": "base0D" |
|
| 25 | + | }, |
|
| 26 | + | "secondary": { |
|
| 27 | + | "dark": "base0E", |
|
| 28 | + | "light": "base0E" |
|
| 29 | + | }, |
|
| 30 | + | "accent": { |
|
| 31 | + | "dark": "base0C", |
|
| 32 | + | "light": "base0C" |
|
| 33 | + | }, |
|
| 34 | + | "error": { |
|
| 35 | + | "dark": "base08", |
|
| 36 | + | "light": "base08" |
|
| 37 | + | }, |
|
| 38 | + | "warning": { |
|
| 39 | + | "dark": "base0A", |
|
| 40 | + | "light": "base0A" |
|
| 41 | + | }, |
|
| 42 | + | "success": { |
|
| 43 | + | "dark": "base0B", |
|
| 44 | + | "light": "base0B" |
|
| 45 | + | }, |
|
| 46 | + | "info": { |
|
| 47 | + | "dark": "base0D", |
|
| 48 | + | "light": "base0D" |
|
| 49 | + | }, |
|
| 50 | + | "text": { |
|
| 51 | + | "dark": "base05", |
|
| 52 | + | "light": "base02" |
|
| 53 | + | }, |
|
| 54 | + | "textMuted": { |
|
| 55 | + | "dark": "base04", |
|
| 56 | + | "light": "base03" |
|
| 57 | + | }, |
|
| 58 | + | "background": { |
|
| 59 | + | "dark": "base00", |
|
| 60 | + | "light": "base07" |
|
| 61 | + | }, |
|
| 62 | + | "backgroundPanel": { |
|
| 63 | + | "dark": "base01", |
|
| 64 | + | "light": "base06" |
|
| 65 | + | }, |
|
| 66 | + | "backgroundElement": { |
|
| 67 | + | "dark": "base01", |
|
| 68 | + | "light": "base06" |
|
| 69 | + | }, |
|
| 70 | + | "border": { |
|
| 71 | + | "dark": "base02", |
|
| 72 | + | "light": "base04" |
|
| 73 | + | }, |
|
| 74 | + | "borderActive": { |
|
| 75 | + | "dark": "base03", |
|
| 76 | + | "light": "base03" |
|
| 77 | + | }, |
|
| 78 | + | "borderSubtle": { |
|
| 79 | + | "dark": "base01", |
|
| 80 | + | "light": "base05" |
|
| 81 | + | }, |
|
| 82 | + | "diffAdded": { |
|
| 83 | + | "dark": "base0B", |
|
| 84 | + | "light": "base0B" |
|
| 85 | + | }, |
|
| 86 | + | "diffRemoved": { |
|
| 87 | + | "dark": "base08", |
|
| 88 | + | "light": "base08" |
|
| 89 | + | }, |
|
| 90 | + | "diffContext": { |
|
| 91 | + | "dark": "base04", |
|
| 92 | + | "light": "base04" |
|
| 93 | + | }, |
|
| 94 | + | "diffHunkHeader": { |
|
| 95 | + | "dark": "base03", |
|
| 96 | + | "light": "base03" |
|
| 97 | + | }, |
|
| 98 | + | "diffHighlightAdded": { |
|
| 99 | + | "dark": "base0B", |
|
| 100 | + | "light": "base0B" |
|
| 101 | + | }, |
|
| 102 | + | "diffHighlightRemoved": { |
|
| 103 | + | "dark": "base08", |
|
| 104 | + | "light": "base08" |
|
| 105 | + | }, |
|
| 106 | + | "diffAddedBg": { |
|
| 107 | + | "dark": "base01", |
|
| 108 | + | "light": "base06" |
|
| 109 | + | }, |
|
| 110 | + | "diffRemovedBg": { |
|
| 111 | + | "dark": "base01", |
|
| 112 | + | "light": "base06" |
|
| 113 | + | }, |
|
| 114 | + | "diffContextBg": { |
|
| 115 | + | "dark": "base00", |
|
| 116 | + | "light": "base07" |
|
| 117 | + | }, |
|
| 118 | + | "diffLineNumber": { |
|
| 119 | + | "dark": "base03", |
|
| 120 | + | "light": "base04" |
|
| 121 | + | }, |
|
| 122 | + | "diffAddedLineNumberBg": { |
|
| 123 | + | "dark": "base01", |
|
| 124 | + | "light": "base06" |
|
| 125 | + | }, |
|
| 126 | + | "diffRemovedLineNumberBg": { |
|
| 127 | + | "dark": "base01", |
|
| 128 | + | "light": "base06" |
|
| 129 | + | }, |
|
| 130 | + | "markdownText": { |
|
| 131 | + | "dark": "base05", |
|
| 132 | + | "light": "base02" |
|
| 133 | + | }, |
|
| 134 | + | "markdownHeading": { |
|
| 135 | + | "dark": "base0D", |
|
| 136 | + | "light": "base0D" |
|
| 137 | + | }, |
|
| 138 | + | "markdownLink": { |
|
| 139 | + | "dark": "base0C", |
|
| 140 | + | "light": "base0C" |
|
| 141 | + | }, |
|
| 142 | + | "markdownLinkText": { |
|
| 143 | + | "dark": "base0D", |
|
| 144 | + | "light": "base0D" |
|
| 145 | + | }, |
|
| 146 | + | "markdownCode": { |
|
| 147 | + | "dark": "base0B", |
|
| 148 | + | "light": "base0B" |
|
| 149 | + | }, |
|
| 150 | + | "markdownBlockQuote": { |
|
| 151 | + | "dark": "base03", |
|
| 152 | + | "light": "base03" |
|
| 153 | + | }, |
|
| 154 | + | "markdownEmph": { |
|
| 155 | + | "dark": "base0E", |
|
| 156 | + | "light": "base0E" |
|
| 157 | + | }, |
|
| 158 | + | "markdownStrong": { |
|
| 159 | + | "dark": "base0A", |
|
| 160 | + | "light": "base0A" |
|
| 161 | + | }, |
|
| 162 | + | "markdownHorizontalRule": { |
|
| 163 | + | "dark": "base03", |
|
| 164 | + | "light": "base03" |
|
| 165 | + | }, |
|
| 166 | + | "markdownListItem": { |
|
| 167 | + | "dark": "base0D", |
|
| 168 | + | "light": "base0D" |
|
| 169 | + | }, |
|
| 170 | + | "markdownListEnumeration": { |
|
| 171 | + | "dark": "base0C", |
|
| 172 | + | "light": "base0C" |
|
| 173 | + | }, |
|
| 174 | + | "markdownImage": { |
|
| 175 | + | "dark": "base0C", |
|
| 176 | + | "light": "base0C" |
|
| 177 | + | }, |
|
| 178 | + | "markdownImageText": { |
|
| 179 | + | "dark": "base0D", |
|
| 180 | + | "light": "base0D" |
|
| 181 | + | }, |
|
| 182 | + | "markdownCodeBlock": { |
|
| 183 | + | "dark": "base05", |
|
| 184 | + | "light": "base02" |
|
| 185 | + | }, |
|
| 186 | + | "syntaxComment": { |
|
| 187 | + | "dark": "base03", |
|
| 188 | + | "light": "base04" |
|
| 189 | + | }, |
|
| 190 | + | "syntaxKeyword": { |
|
| 191 | + | "dark": "base0E", |
|
| 192 | + | "light": "base0E" |
|
| 193 | + | }, |
|
| 194 | + | "syntaxFunction": { |
|
| 195 | + | "dark": "base0D", |
|
| 196 | + | "light": "base0D" |
|
| 197 | + | }, |
|
| 198 | + | "syntaxVariable": { |
|
| 199 | + | "dark": "base08", |
|
| 200 | + | "light": "base08" |
|
| 201 | + | }, |
|
| 202 | + | "syntaxString": { |
|
| 203 | + | "dark": "base0B", |
|
| 204 | + | "light": "base0B" |
|
| 205 | + | }, |
|
| 206 | + | "syntaxNumber": { |
|
| 207 | + | "dark": "base09", |
|
| 208 | + | "light": "base09" |
|
| 209 | + | }, |
|
| 210 | + | "syntaxType": { |
|
| 211 | + | "dark": "base0A", |
|
| 212 | + | "light": "base0A" |
|
| 213 | + | }, |
|
| 214 | + | "syntaxOperator": { |
|
| 215 | + | "dark": "base05", |
|
| 216 | + | "light": "base02" |
|
| 217 | + | }, |
|
| 218 | + | "syntaxPunctuation": { |
|
| 219 | + | "dark": "base05", |
|
| 220 | + | "light": "base02" |
|
| 221 | + | } |
|
| 222 | + | } |
|
| 223 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://opencode.ai/theme.json", |
|
| 3 | + | "defs": { |
|
| 4 | + | "nord0": "#121113", |
|
| 5 | + | "nord1": "#121212", |
|
| 6 | + | "nord2": "#222222", |
|
| 7 | + | "nord3": "#333333", |
|
| 8 | + | "nord4": "#999999", |
|
| 9 | + | "nord5": "#c1c1c1", |
|
| 10 | + | "nord6": "#999999", |
|
| 11 | + | "nord7": "#c1c1c1", |
|
| 12 | + | "nord8": "#5f8787", |
|
| 13 | + | "nord9": "#aaaaaa", |
|
| 14 | + | "nord10": "#e78a53", |
|
| 15 | + | "nord11": "#fbcb97", |
|
| 16 | + | "nord12": "#aaaaaa", |
|
| 17 | + | "nord13": "#888888", |
|
| 18 | + | "nord14": "#999999", |
|
| 19 | + | "nord15": "#444444" |
|
| 20 | + | }, |
|
| 21 | + | "theme": { |
|
| 22 | + | "primary": { |
|
| 23 | + | "dark": "nord8", |
|
| 24 | + | "light": "nord10" |
|
| 25 | + | }, |
|
| 26 | + | "secondary": { |
|
| 27 | + | "dark": "nord9", |
|
| 28 | + | "light": "nord9" |
|
| 29 | + | }, |
|
| 30 | + | "accent": { |
|
| 31 | + | "dark": "nord7", |
|
| 32 | + | "light": "nord7" |
|
| 33 | + | }, |
|
| 34 | + | "error": { |
|
| 35 | + | "dark": "nord11", |
|
| 36 | + | "light": "nord11" |
|
| 37 | + | }, |
|
| 38 | + | "warning": { |
|
| 39 | + | "dark": "nord12", |
|
| 40 | + | "light": "nord12" |
|
| 41 | + | }, |
|
| 42 | + | "success": { |
|
| 43 | + | "dark": "nord14", |
|
| 44 | + | "light": "nord14" |
|
| 45 | + | }, |
|
| 46 | + | "info": { |
|
| 47 | + | "dark": "nord8", |
|
| 48 | + | "light": "nord10" |
|
| 49 | + | }, |
|
| 50 | + | "text": { |
|
| 51 | + | "dark": "nord4", |
|
| 52 | + | "light": "nord0" |
|
| 53 | + | }, |
|
| 54 | + | "textMuted": { |
|
| 55 | + | "dark": "nord3", |
|
| 56 | + | "light": "nord1" |
|
| 57 | + | }, |
|
| 58 | + | "background": { |
|
| 59 | + | "dark": "nord0", |
|
| 60 | + | "light": "nord6" |
|
| 61 | + | }, |
|
| 62 | + | "backgroundPanel": { |
|
| 63 | + | "dark": "nord1", |
|
| 64 | + | "light": "nord5" |
|
| 65 | + | }, |
|
| 66 | + | "backgroundElement": { |
|
| 67 | + | "dark": "nord1", |
|
| 68 | + | "light": "nord4" |
|
| 69 | + | }, |
|
| 70 | + | "border": { |
|
| 71 | + | "dark": "nord2", |
|
| 72 | + | "light": "nord3" |
|
| 73 | + | }, |
|
| 74 | + | "borderActive": { |
|
| 75 | + | "dark": "nord3", |
|
| 76 | + | "light": "nord2" |
|
| 77 | + | }, |
|
| 78 | + | "borderSubtle": { |
|
| 79 | + | "dark": "nord2", |
|
| 80 | + | "light": "nord3" |
|
| 81 | + | }, |
|
| 82 | + | "diffAdded": { |
|
| 83 | + | "dark": "nord14", |
|
| 84 | + | "light": "nord14" |
|
| 85 | + | }, |
|
| 86 | + | "diffRemoved": { |
|
| 87 | + | "dark": "nord11", |
|
| 88 | + | "light": "nord11" |
|
| 89 | + | }, |
|
| 90 | + | "diffContext": { |
|
| 91 | + | "dark": "nord3", |
|
| 92 | + | "light": "nord3" |
|
| 93 | + | }, |
|
| 94 | + | "diffHunkHeader": { |
|
| 95 | + | "dark": "nord3", |
|
| 96 | + | "light": "nord3" |
|
| 97 | + | }, |
|
| 98 | + | "diffHighlightAdded": { |
|
| 99 | + | "dark": "nord14", |
|
| 100 | + | "light": "nord14" |
|
| 101 | + | }, |
|
| 102 | + | "diffHighlightRemoved": { |
|
| 103 | + | "dark": "nord11", |
|
| 104 | + | "light": "nord11" |
|
| 105 | + | }, |
|
| 106 | + | "diffAddedBg": { |
|
| 107 | + | "dark": "#3B4252", |
|
| 108 | + | "light": "#E5E9F0" |
|
| 109 | + | }, |
|
| 110 | + | "diffRemovedBg": { |
|
| 111 | + | "dark": "#3B4252", |
|
| 112 | + | "light": "#E5E9F0" |
|
| 113 | + | }, |
|
| 114 | + | "diffContextBg": { |
|
| 115 | + | "dark": "nord1", |
|
| 116 | + | "light": "nord5" |
|
| 117 | + | }, |
|
| 118 | + | "diffLineNumber": { |
|
| 119 | + | "dark": "nord2", |
|
| 120 | + | "light": "nord4" |
|
| 121 | + | }, |
|
| 122 | + | "diffAddedLineNumberBg": { |
|
| 123 | + | "dark": "#3B4252", |
|
| 124 | + | "light": "#E5E9F0" |
|
| 125 | + | }, |
|
| 126 | + | "diffRemovedLineNumberBg": { |
|
| 127 | + | "dark": "#3B4252", |
|
| 128 | + | "light": "#E5E9F0" |
|
| 129 | + | }, |
|
| 130 | + | "markdownText": { |
|
| 131 | + | "dark": "nord4", |
|
| 132 | + | "light": "nord0" |
|
| 133 | + | }, |
|
| 134 | + | "markdownHeading": { |
|
| 135 | + | "dark": "nord8", |
|
| 136 | + | "light": "nord10" |
|
| 137 | + | }, |
|
| 138 | + | "markdownLink": { |
|
| 139 | + | "dark": "nord9", |
|
| 140 | + | "light": "nord9" |
|
| 141 | + | }, |
|
| 142 | + | "markdownLinkText": { |
|
| 143 | + | "dark": "nord7", |
|
| 144 | + | "light": "nord7" |
|
| 145 | + | }, |
|
| 146 | + | "markdownCode": { |
|
| 147 | + | "dark": "nord14", |
|
| 148 | + | "light": "nord14" |
|
| 149 | + | }, |
|
| 150 | + | "markdownBlockQuote": { |
|
| 151 | + | "dark": "nord3", |
|
| 152 | + | "light": "nord3" |
|
| 153 | + | }, |
|
| 154 | + | "markdownEmph": { |
|
| 155 | + | "dark": "nord12", |
|
| 156 | + | "light": "nord12" |
|
| 157 | + | }, |
|
| 158 | + | "markdownStrong": { |
|
| 159 | + | "dark": "nord13", |
|
| 160 | + | "light": "nord13" |
|
| 161 | + | }, |
|
| 162 | + | "markdownHorizontalRule": { |
|
| 163 | + | "dark": "nord3", |
|
| 164 | + | "light": "nord3" |
|
| 165 | + | }, |
|
| 166 | + | "markdownListItem": { |
|
| 167 | + | "dark": "nord8", |
|
| 168 | + | "light": "nord10" |
|
| 169 | + | }, |
|
| 170 | + | "markdownListEnumeration": { |
|
| 171 | + | "dark": "nord7", |
|
| 172 | + | "light": "nord7" |
|
| 173 | + | }, |
|
| 174 | + | "markdownImage": { |
|
| 175 | + | "dark": "nord9", |
|
| 176 | + | "light": "nord9" |
|
| 177 | + | }, |
|
| 178 | + | "markdownImageText": { |
|
| 179 | + | "dark": "nord7", |
|
| 180 | + | "light": "nord7" |
|
| 181 | + | }, |
|
| 182 | + | "markdownCodeBlock": { |
|
| 183 | + | "dark": "nord4", |
|
| 184 | + | "light": "nord0" |
|
| 185 | + | }, |
|
| 186 | + | "syntaxComment": { |
|
| 187 | + | "dark": "nord3", |
|
| 188 | + | "light": "nord3" |
|
| 189 | + | }, |
|
| 190 | + | "syntaxKeyword": { |
|
| 191 | + | "dark": "nord9", |
|
| 192 | + | "light": "nord9" |
|
| 193 | + | }, |
|
| 194 | + | "syntaxFunction": { |
|
| 195 | + | "dark": "nord8", |
|
| 196 | + | "light": "nord8" |
|
| 197 | + | }, |
|
| 198 | + | "syntaxVariable": { |
|
| 199 | + | "dark": "nord7", |
|
| 200 | + | "light": "nord7" |
|
| 201 | + | }, |
|
| 202 | + | "syntaxString": { |
|
| 203 | + | "dark": "nord14", |
|
| 204 | + | "light": "nord14" |
|
| 205 | + | }, |
|
| 206 | + | "syntaxNumber": { |
|
| 207 | + | "dark": "nord15", |
|
| 208 | + | "light": "nord15" |
|
| 209 | + | }, |
|
| 210 | + | "syntaxType": { |
|
| 211 | + | "dark": "nord7", |
|
| 212 | + | "light": "nord7" |
|
| 213 | + | }, |
|
| 214 | + | "syntaxOperator": { |
|
| 215 | + | "dark": "nord9", |
|
| 216 | + | "light": "nord9" |
|
| 217 | + | }, |
|
| 218 | + | "syntaxPunctuation": { |
|
| 219 | + | "dark": "nord4", |
|
| 220 | + | "light": "nord0" |
|
| 221 | + | } |
|
| 222 | + | } |
|
| 223 | + | } |
| 1 | + | { |
|
| 2 | + | "$schema": "https://opencode.ai/theme.json", |
|
| 3 | + | "defs": { |
|
| 4 | + | "base00": "#121113", |
|
| 5 | + | "base01": "#1e1d1f", |
|
| 6 | + | "base02": "#333333", |
|
| 7 | + | "base03": "#555555", |
|
| 8 | + | "base04": "#888888", |
|
| 9 | + | "base05": "#c1c1c1", |
|
| 10 | + | "base06": "#e0e0e0", |
|
| 11 | + | "base07": "#ffffff", |
|
| 12 | + | "base08": "#5f8787", |
|
| 13 | + | "base09": "#e78a53", |
|
| 14 | + | "base0A": "#fbcb97", |
|
| 15 | + | "base0B": "#5f8787", |
|
| 16 | + | "base0C": "#aaaaaa", |
|
| 17 | + | "base0D": "#888888", |
|
| 18 | + | "base0E": "#999999", |
|
| 19 | + | "base0F": "#e78a53" |
|
| 20 | + | }, |
|
| 21 | + | "theme": { |
|
| 22 | + | "primary": { |
|
| 23 | + | "dark": "base0A", |
|
| 24 | + | "light": "base0A" |
|
| 25 | + | }, |
|
| 26 | + | "secondary": { |
|
| 27 | + | "dark": "base0E", |
|
| 28 | + | "light": "base0E" |
|
| 29 | + | }, |
|
| 30 | + | "accent": { |
|
| 31 | + | "dark": "base0A", |
|
| 32 | + | "light": "base0A" |
|
| 33 | + | }, |
|
| 34 | + | "error": { |
|
| 35 | + | "dark": "base08", |
|
| 36 | + | "light": "base08" |
|
| 37 | + | }, |
|
| 38 | + | "warning": { |
|
| 39 | + | "dark": "base0A", |
|
| 40 | + | "light": "base0A" |
|
| 41 | + | }, |
|
| 42 | + | "success": { |
|
| 43 | + | "dark": "base0B", |
|
| 44 | + | "light": "base0B" |
|
| 45 | + | }, |
|
| 46 | + | "info": { |
|
| 47 | + | "dark": "base0D", |
|
| 48 | + | "light": "base0D" |
|
| 49 | + | }, |
|
| 50 | + | "text": { |
|
| 51 | + | "dark": "base05", |
|
| 52 | + | "light": "base02" |
|
| 53 | + | }, |
|
| 54 | + | "textMuted": { |
|
| 55 | + | "dark": "base04", |
|
| 56 | + | "light": "base03" |
|
| 57 | + | }, |
|
| 58 | + | "background": { |
|
| 59 | + | "dark": "base00", |
|
| 60 | + | "light": "base07" |
|
| 61 | + | }, |
|
| 62 | + | "backgroundPanel": { |
|
| 63 | + | "dark": "base00", |
|
| 64 | + | "light": "base06" |
|
| 65 | + | }, |
|
| 66 | + | "backgroundElement": { |
|
| 67 | + | "dark": "base00", |
|
| 68 | + | "light": "base06" |
|
| 69 | + | }, |
|
| 70 | + | "border": { |
|
| 71 | + | "dark": "base02", |
|
| 72 | + | "light": "base04" |
|
| 73 | + | }, |
|
| 74 | + | "borderActive": { |
|
| 75 | + | "dark": "base0A", |
|
| 76 | + | "light": "base0A" |
|
| 77 | + | }, |
|
| 78 | + | "borderSubtle": { |
|
| 79 | + | "dark": "base01", |
|
| 80 | + | "light": "base05" |
|
| 81 | + | }, |
|
| 82 | + | "diffAdded": { |
|
| 83 | + | "dark": "base0B", |
|
| 84 | + | "light": "base0B" |
|
| 85 | + | }, |
|
| 86 | + | "diffRemoved": { |
|
| 87 | + | "dark": "base08", |
|
| 88 | + | "light": "base08" |
|
| 89 | + | }, |
|
| 90 | + | "diffContext": { |
|
| 91 | + | "dark": "base04", |
|
| 92 | + | "light": "base04" |
|
| 93 | + | }, |
|
| 94 | + | "diffHunkHeader": { |
|
| 95 | + | "dark": "base03", |
|
| 96 | + | "light": "base03" |
|
| 97 | + | }, |
|
| 98 | + | "diffHighlightAdded": { |
|
| 99 | + | "dark": "base0B", |
|
| 100 | + | "light": "base0B" |
|
| 101 | + | }, |
|
| 102 | + | "diffHighlightRemoved": { |
|
| 103 | + | "dark": "base08", |
|
| 104 | + | "light": "base08" |
|
| 105 | + | }, |
|
| 106 | + | "diffAddedBg": { |
|
| 107 | + | "dark": "base01", |
|
| 108 | + | "light": "base06" |
|
| 109 | + | }, |
|
| 110 | + | "diffRemovedBg": { |
|
| 111 | + | "dark": "base01", |
|
| 112 | + | "light": "base06" |
|
| 113 | + | }, |
|
| 114 | + | "diffContextBg": { |
|
| 115 | + | "dark": "base00", |
|
| 116 | + | "light": "base07" |
|
| 117 | + | }, |
|
| 118 | + | "diffLineNumber": { |
|
| 119 | + | "dark": "base03", |
|
| 120 | + | "light": "base04" |
|
| 121 | + | }, |
|
| 122 | + | "diffAddedLineNumberBg": { |
|
| 123 | + | "dark": "base01", |
|
| 124 | + | "light": "base06" |
|
| 125 | + | }, |
|
| 126 | + | "diffRemovedLineNumberBg": { |
|
| 127 | + | "dark": "base01", |
|
| 128 | + | "light": "base06" |
|
| 129 | + | }, |
|
| 130 | + | "markdownText": { |
|
| 131 | + | "dark": "base05", |
|
| 132 | + | "light": "base02" |
|
| 133 | + | }, |
|
| 134 | + | "markdownHeading": { |
|
| 135 | + | "dark": "base0A", |
|
| 136 | + | "light": "base0A" |
|
| 137 | + | }, |
|
| 138 | + | "markdownLink": { |
|
| 139 | + | "dark": "base0C", |
|
| 140 | + | "light": "base0C" |
|
| 141 | + | }, |
|
| 142 | + | "markdownLinkText": { |
|
| 143 | + | "dark": "base0D", |
|
| 144 | + | "light": "base0D" |
|
| 145 | + | }, |
|
| 146 | + | "markdownCode": { |
|
| 147 | + | "dark": "base0B", |
|
| 148 | + | "light": "base0B" |
|
| 149 | + | }, |
|
| 150 | + | "markdownBlockQuote": { |
|
| 151 | + | "dark": "base03", |
|
| 152 | + | "light": "base03" |
|
| 153 | + | }, |
|
| 154 | + | "markdownEmph": { |
|
| 155 | + | "dark": "base0E", |
|
| 156 | + | "light": "base0E" |
|
| 157 | + | }, |
|
| 158 | + | "markdownStrong": { |
|
| 159 | + | "dark": "base0A", |
|
| 160 | + | "light": "base0A" |
|
| 161 | + | }, |
|
| 162 | + | "markdownHorizontalRule": { |
|
| 163 | + | "dark": "base03", |
|
| 164 | + | "light": "base03" |
|
| 165 | + | }, |
|
| 166 | + | "markdownListItem": { |
|
| 167 | + | "dark": "base0D", |
|
| 168 | + | "light": "base0D" |
|
| 169 | + | }, |
|
| 170 | + | "markdownListEnumeration": { |
|
| 171 | + | "dark": "base0C", |
|
| 172 | + | "light": "base0C" |
|
| 173 | + | }, |
|
| 174 | + | "markdownImage": { |
|
| 175 | + | "dark": "base0C", |
|
| 176 | + | "light": "base0C" |
|
| 177 | + | }, |
|
| 178 | + | "markdownImageText": { |
|
| 179 | + | "dark": "base0D", |
|
| 180 | + | "light": "base0D" |
|
| 181 | + | }, |
|
| 182 | + | "markdownCodeBlock": { |
|
| 183 | + | "dark": "base05", |
|
| 184 | + | "light": "base02" |
|
| 185 | + | }, |
|
| 186 | + | "syntaxComment": { |
|
| 187 | + | "dark": "base03", |
|
| 188 | + | "light": "base04" |
|
| 189 | + | }, |
|
| 190 | + | "syntaxKeyword": { |
|
| 191 | + | "dark": "base0E", |
|
| 192 | + | "light": "base0E" |
|
| 193 | + | }, |
|
| 194 | + | "syntaxFunction": { |
|
| 195 | + | "dark": "base0D", |
|
| 196 | + | "light": "base0D" |
|
| 197 | + | }, |
|
| 198 | + | "syntaxVariable": { |
|
| 199 | + | "dark": "base08", |
|
| 200 | + | "light": "base08" |
|
| 201 | + | }, |
|
| 202 | + | "syntaxString": { |
|
| 203 | + | "dark": "base0B", |
|
| 204 | + | "light": "base0B" |
|
| 205 | + | }, |
|
| 206 | + | "syntaxNumber": { |
|
| 207 | + | "dark": "base09", |
|
| 208 | + | "light": "base09" |
|
| 209 | + | }, |
|
| 210 | + | "syntaxType": { |
|
| 211 | + | "dark": "base0A", |
|
| 212 | + | "light": "base0A" |
|
| 213 | + | }, |
|
| 214 | + | "syntaxOperator": { |
|
| 215 | + | "dark": "base05", |
|
| 216 | + | "light": "base02" |
|
| 217 | + | }, |
|
| 218 | + | "syntaxPunctuation": { |
|
| 219 | + | "dark": "base05", |
|
| 220 | + | "light": "base02" |
|
| 221 | + | } |
|
| 222 | + | } |
|
| 223 | + | } |
| 1 | + | ---@meta |
|
| 2 | + | ------------------------------------------------------------------------------- |
|
| 3 | + | -- OXWM Configuration File |
|
| 4 | + | ------------------------------------------------------------------------------- |
|
| 5 | + | -- This is the default configuration for OXWM, a dynamic window manager. |
|
| 6 | + | -- Edit this file and reload with Mod+Shift+R (no compilation needed) |
|
| 7 | + | -- |
|
| 8 | + | -- For more information about configuring OXWM, see the documentation. |
|
| 9 | + | -- The Lua Language Server provides autocomplete and type checking. |
|
| 10 | + | ------------------------------------------------------------------------------- |
|
| 11 | + | ||
| 12 | + | ---Load type definitions for LSP |
|
| 13 | + | ---@module 'oxwm' |
|
| 14 | + | ||
| 15 | + | ------------------------------------------------------------------------------- |
|
| 16 | + | -- Variables |
|
| 17 | + | ------------------------------------------------------------------------------- |
|
| 18 | + | -- Define your variables here for easy customization throughout the config. |
|
| 19 | + | -- This makes it simple to change keybindings, colors, and settings in one place. |
|
| 20 | + | ||
| 21 | + | -- Modifier key: "Mod4" is the Super/Windows key, "Mod1" is Alt |
|
| 22 | + | local modkey = "Mod4" |
|
| 23 | + | ||
| 24 | + | -- Terminal emulator command (defaults to alacritty) |
|
| 25 | + | local terminal = "st" |
|
| 26 | + | ||
| 27 | + | local scripts = "/home/stevedylandev/dotfiles/scripts" |
|
| 28 | + | local rofi_scripts = "/home/stevedylandev/dotfiles/rofi/scripts" |
|
| 29 | + | ||
| 30 | + | -- Spawn one of those scripts. They resolve their own siblings relative to |
|
| 31 | + | -- themselves, so an absolute path is all they need — PATH is not involved. |
|
| 32 | + | -- Extra arguments are passed straight through: script("txtcliphist.sh", "sel"). |
|
| 33 | + | local function script(name, ...) |
|
| 34 | + | local cmd = { scripts .. "/" .. name } |
|
| 35 | + | for _, arg in ipairs({ ... }) do |
|
| 36 | + | cmd[#cmd + 1] = arg |
|
| 37 | + | end |
|
| 38 | + | return oxwm.spawn(cmd) |
|
| 39 | + | end |
|
| 40 | + | ||
| 41 | + | -- Same idea for the rofi menus in rofi/scripts. They are launchers, not |
|
| 42 | + | -- daemons: each one opens rofi, does the thing that was picked, and exits. |
|
| 43 | + | local function rofi_script(name, ...) |
|
| 44 | + | local cmd = { rofi_scripts .. "/" .. name } |
|
| 45 | + | for _, arg in ipairs({ ... }) do |
|
| 46 | + | cmd[#cmd + 1] = arg |
|
| 47 | + | end |
|
| 48 | + | return oxwm.spawn(cmd) |
|
| 49 | + | end |
|
| 50 | + | ||
| 51 | + | -- Rofi's own modes need no script at all: drun reads .desktop files, window |
|
| 52 | + | -- lists what is already open, filebrowser walks directories, ssh reads |
|
| 53 | + | -- ~/.ssh/config. Behaviour for all of them lives in rofi/config.rasi. |
|
| 54 | + | local function rofi_mode(mode) |
|
| 55 | + | return oxwm.spawn({ "rofi", "-show", mode }) |
|
| 56 | + | end |
|
| 57 | + | ||
| 58 | + | -- Color palette - customize these to match your theme |
|
| 59 | + | -- Alternatively you can import other files in here, such as |
|
| 60 | + | -- local colors = require("colors.lua") and make colors.lua a file |
|
| 61 | + | -- in the ~/.config/oxwm directory |
|
| 62 | + | -- Darkmatter (matches wezterm/ghostty theme) |
|
| 63 | + | local colors = { |
|
| 64 | + | fg = "#ffffff", |
|
| 65 | + | red = "#e78a53", |
|
| 66 | + | bg = "#121113", |
|
| 67 | + | cyan = "#aaaaaa", |
|
| 68 | + | green = "#fbcb97", |
|
| 69 | + | lavender = "#999999", |
|
| 70 | + | light_blue = "#888888", |
|
| 71 | + | grey = "#333333", |
|
| 72 | + | blue = "#5f8787", |
|
| 73 | + | purple = "#c1c1c1", |
|
| 74 | + | } |
|
| 75 | + | ||
| 76 | + | -- Workspace tags - can be numbers, names, or icons (requires a Nerd Font) |
|
| 77 | + | -- The number of tags is deduced from the size of this table (up to a max of 12). |
|
| 78 | + | -- The default is 9. To use more, add entries here and uncomment the matching |
|
| 79 | + | -- keybinds for tags 10-12 further down in this file. |
|
| 80 | + | local tags = { "1", "2", "3", "4", "5", "6", "7", "8", "9" } |
|
| 81 | + | -- local tags = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" } -- Example of 12 tags |
|
| 82 | + | -- local tags = { "", "", "", "", "", "", "", "", "" } -- Example of nerd font icon tags |
|
| 83 | + | ||
| 84 | + | -- Font for the status bar (use "fc-list" to see available fonts) |
|
| 85 | + | local bar_font = "BerkeleyMono Nerd Font:style=Bold:size=11" |
|
| 86 | + | ||
| 87 | + | -- Define your blocks |
|
| 88 | + | -- Similar to widgets in qtile, or dwmblocks |
|
| 89 | + | local blocks = { |
|
| 90 | + | oxwm.bar.block.ram({ |
|
| 91 | + | format = "Ram: {used}/{total} GB", |
|
| 92 | + | interval = 5, |
|
| 93 | + | color = colors.blue, |
|
| 94 | + | underline = true, |
|
| 95 | + | }), |
|
| 96 | + | oxwm.bar.block.static({ |
|
| 97 | + | text = "│", |
|
| 98 | + | interval = 999999999, |
|
| 99 | + | color = colors.green, |
|
| 100 | + | underline = false, |
|
| 101 | + | }), |
|
| 102 | + | -- SSID, "off" when the link is down, "none" without a wireless card. |
|
| 103 | + | -- wifi-status supplies its own Nerd Font icon, which tracks signal |
|
| 104 | + | -- strength while connected, so the format is just its output. |
|
| 105 | + | -- Click opens the dmenu network menu (connect/disconnect wifi and eth0). |
|
| 106 | + | oxwm.bar.block.shell({ |
|
| 107 | + | format = "{}", |
|
| 108 | + | command = scripts .. "/wifi-status", |
|
| 109 | + | interval = 10, |
|
| 110 | + | color = colors.lavender, |
|
| 111 | + | underline = true, |
|
| 112 | + | click = { command = rofi_scripts .. "/rofi-wifi" }, |
|
| 113 | + | }), |
|
| 114 | + | oxwm.bar.block.static({ |
|
| 115 | + | text = "│", |
|
| 116 | + | interval = 999999999, |
|
| 117 | + | color = colors.green, |
|
| 118 | + | underline = false, |
|
| 119 | + | }), |
|
| 120 | + | -- Volume percentage of the default sink; click toggles mute. |
|
| 121 | + | -- vol-status supplies its own Nerd Font icon for the level (or mute). |
|
| 122 | + | -- The vol-* keybinds also fire a notification, so this can lag a second. |
|
| 123 | + | oxwm.bar.block.shell({ |
|
| 124 | + | format = "{}", |
|
| 125 | + | command = scripts .. "/vol-status", |
|
| 126 | + | interval = 2, |
|
| 127 | + | color = colors.purple, |
|
| 128 | + | underline = true, |
|
| 129 | + | click = { command = scripts .. "/vol-mute" }, |
|
| 130 | + | }), |
|
| 131 | + | oxwm.bar.block.static({ |
|
| 132 | + | text = "│", |
|
| 133 | + | interval = 999999999, |
|
| 134 | + | color = colors.green, |
|
| 135 | + | underline = false, |
|
| 136 | + | }), |
|
| 137 | + | oxwm.bar.block.shell({ |
|
| 138 | + | format = "{}", |
|
| 139 | + | command = scripts .. "/weather.sh -h", |
|
| 140 | + | interval = 999999999, |
|
| 141 | + | color = colors.red, |
|
| 142 | + | underline = true, |
|
| 143 | + | }), |
|
| 144 | + | oxwm.bar.block.static({ |
|
| 145 | + | text = "│", |
|
| 146 | + | interval = 999999999, |
|
| 147 | + | color = colors.green, |
|
| 148 | + | underline = false, |
|
| 149 | + | }), |
|
| 150 | + | oxwm.bar.block.datetime({ |
|
| 151 | + | format = "{}", |
|
| 152 | + | date_format = "%a, %b %d - %-I:%M %P", |
|
| 153 | + | interval = 1, |
|
| 154 | + | color = colors.cyan, |
|
| 155 | + | underline = true, |
|
| 156 | + | }), |
|
| 157 | + | -- Uncomment to add battery status (useful for laptops) |
|
| 158 | + | oxwm.bar.block.battery({ |
|
| 159 | + | format = "Bat: {}%", |
|
| 160 | + | charging = "⚡ Bat: {}%", |
|
| 161 | + | discharging = "- Bat: {}%", |
|
| 162 | + | full = "✓ Bat: {}%", |
|
| 163 | + | interval = 30, |
|
| 164 | + | color = colors.green, |
|
| 165 | + | underline = true, |
|
| 166 | + | -- click: run a command when the block is clicked |
|
| 167 | + | -- click = "alacritty -e btop", |
|
| 168 | + | -- click = { command = "bluetui", floating = true }, |
|
| 169 | + | }), |
|
| 170 | + | }; |
|
| 171 | + | ||
| 172 | + | ------------------------------------------------------------------------------- |
|
| 173 | + | -- Basic Settings |
|
| 174 | + | ------------------------------------------------------------------------------- |
|
| 175 | + | oxwm.set_terminal(terminal) |
|
| 176 | + | oxwm.set_modkey(modkey) -- This is for Mod + mouse binds, such as drag/resize |
|
| 177 | + | oxwm.set_tags(tags) |
|
| 178 | + | ||
| 179 | + | -- Set default layout (tiling by default) |
|
| 180 | + | oxwm.set_layout("dwindle") |
|
| 181 | + | ||
| 182 | + | ------------------------------------------------------------------------------- |
|
| 183 | + | -- Layouts |
|
| 184 | + | ------------------------------------------------------------------------------- |
|
| 185 | + | -- Set custom symbols for layouts (displayed in the status bar) |
|
| 186 | + | -- Available layouts: "tiling", "normie" (floating), "grid", "monocle", "tabbed", "dwindle" |
|
| 187 | + | oxwm.set_layout_symbol("normie", "[F]") |
|
| 188 | + | oxwm.set_layout_symbol("tiling", "[T]") |
|
| 189 | + | oxwm.set_layout_symbol("tabbed", "[=]") |
|
| 190 | + | oxwm.set_layout_symbol("dwindle", "[\\]") |
|
| 191 | + | ||
| 192 | + | -- Example: bind dwindle (fibonacci) layout |
|
| 193 | + | oxwm.key.bind({ modkey }, "R", oxwm.layout.set("dwindle")) |
|
| 194 | + | ||
| 195 | + | -- Set default layout of specific tag (tag_index, layout_name) |
|
| 196 | + | -- Unset value uses oxwm.set_layout value |
|
| 197 | + | -- oxwm.set_tag_layout(1, "grid") |
|
| 198 | + | ||
| 199 | + | ------------------------------------------------------------------------------- |
|
| 200 | + | -- Appearance |
|
| 201 | + | ------------------------------------------------------------------------------- |
|
| 202 | + | -- Border configuration |
|
| 203 | + | ||
| 204 | + | -- Width in pixels |
|
| 205 | + | oxwm.border.set_width(2) |
|
| 206 | + | -- Color of focused window border |
|
| 207 | + | oxwm.border.set_focused_color(colors.blue) |
|
| 208 | + | -- Color of unfocused window borders |
|
| 209 | + | oxwm.border.set_unfocused_color(colors.bg) |
|
| 210 | + | ||
| 211 | + | -- Where floating windows spawn: "top-left", "top-center", "top-right", |
|
| 212 | + | -- "center-left", "center", "center-right", "bottom-left", "bottom-center", "bottom-right" |
|
| 213 | + | oxwm.set_floating_position("center") |
|
| 214 | + | ||
| 215 | + | -- Smart Enabled = No border if 1 window |
|
| 216 | + | oxwm.gaps.set_smart(false) |
|
| 217 | + | -- Inner gaps (horizontal, vertical) in pixels |
|
| 218 | + | oxwm.gaps.set_inner(12, 12) |
|
| 219 | + | -- Outer gaps (horizontal, vertical) in pixels |
|
| 220 | + | oxwm.gaps.set_outer(12, 12) |
|
| 221 | + | ||
| 222 | + | ------------------------------------------------------------------------------- |
|
| 223 | + | -- Window Rules |
|
| 224 | + | ------------------------------------------------------------------------------- |
|
| 225 | + | -- Rules allow you to automatically configure windows based on their properties |
|
| 226 | + | -- You can match windows by class, instance, title, or role |
|
| 227 | + | -- Available properties: floating, tag, fullscreen, etc. |
|
| 228 | + | -- |
|
| 229 | + | -- Common use cases: |
|
| 230 | + | -- - Force floating for certain applications (dialogs, utilities) |
|
| 231 | + | -- - Send specific applications to specific workspaces |
|
| 232 | + | -- - Configure window behavior based on title or class |
|
| 233 | + | ||
| 234 | + | -- Examples (uncomment to use): |
|
| 235 | + | oxwm.rule.add({ instance = "chromium", floating = true, tag = 2 }) |
|
| 236 | + | oxwm.rule.add({ instance = "helium.AppImage", floating = true, tag = 2 }) |
|
| 237 | + | oxwm.rule.add({ instance = "gimp", floating = true}) |
|
| 238 | + | -- oxwm.rule.add({ class = "Alacritty", tag = 9, focus = true }) |
|
| 239 | + | -- oxwm.rule.add({ class = "firefox", title = "Library", floating = true }) |
|
| 240 | + | -- oxwm.rule.add({ class = "firefox", tag = 2 }) |
|
| 241 | + | -- oxwm.rule.add({ instance = "mpv", floating = true }) |
|
| 242 | + | ||
| 243 | + | -- To find window properties, use xprop and click on the window |
|
| 244 | + | -- WM_CLASS(STRING) shows both instance and class (instance, class) |
|
| 245 | + | ||
| 246 | + | ------------------------------------------------------------------------------- |
|
| 247 | + | -- Status Bar Configuration |
|
| 248 | + | ------------------------------------------------------------------------------- |
|
| 249 | + | -- Font configuration |
|
| 250 | + | oxwm.bar.set_font(bar_font) |
|
| 251 | + | ||
| 252 | + | -- Position configuration (top/bottom, top is default) |
|
| 253 | + | -- oxwm.bar.set_position("bottom") |
|
| 254 | + | ||
| 255 | + | -- Set your blocks here (defined above) |
|
| 256 | + | oxwm.bar.set_blocks(blocks) |
|
| 257 | + | ||
| 258 | + | -- Bar color schemes (for workspace tag display) |
|
| 259 | + | -- Parameters: foreground, background, border |
|
| 260 | + | ||
| 261 | + | -- Unoccupied tags |
|
| 262 | + | oxwm.bar.set_scheme_normal(colors.fg, colors.bg, colors.grey) |
|
| 263 | + | -- Occupied tags |
|
| 264 | + | oxwm.bar.set_scheme_occupied(colors.cyan, colors.bg, colors.cyan) |
|
| 265 | + | -- Currently selected tag |
|
| 266 | + | oxwm.bar.set_scheme_selected(colors.cyan, colors.bg, colors.purple) |
|
| 267 | + | -- Urgent tags (windows requesting attention) |
|
| 268 | + | oxwm.bar.set_scheme_urgent(colors.red, colors.bg, colors.red) |
|
| 269 | + | ||
| 270 | + | -- Hide tags that have no windows and are not selected |
|
| 271 | + | -- oxwm.bar.set_hide_vacant_tags(true) |
|
| 272 | + | ||
| 273 | + | ------------------------------------------------------------------------------- |
|
| 274 | + | -- Keybindings |
|
| 275 | + | ------------------------------------------------------------------------------- |
|
| 276 | + | -- Keybindings are defined using oxwm.key.bind(modifiers, key, action) |
|
| 277 | + | -- Modifiers: {"Mod4"}, {"Mod1"}, {"Shift"}, {"Control"}, or combinations like {"Mod4", "Shift"} |
|
| 278 | + | -- Keys: Use uppercase for letters (e.g., "Return", "H", "J", "K", "L") |
|
| 279 | + | -- Actions: Functions that return actions (e.g., oxwm.spawn(), oxwm.client.kill()) |
|
| 280 | + | -- |
|
| 281 | + | -- A list of available keysyms can be found in the X11 keysym definitions. |
|
| 282 | + | -- Common keys: Return, Space, Tab, Escape, Backspace, Delete, Left, Right, Up, Down |
|
| 283 | + | ||
| 284 | + | -- Basic window management |
|
| 285 | + | ||
| 286 | + | oxwm.key.bind({ modkey }, "Return", oxwm.spawn_terminal()) |
|
| 287 | + | -- Application launcher (.desktop entries, with icons and search) |
|
| 288 | + | oxwm.key.bind({ modkey }, "D", rofi_mode("drun")) |
|
| 289 | + | -- Bare executables on PATH, for the things that ship no .desktop file |
|
| 290 | + | oxwm.key.bind({ modkey, "Shift" }, "D", rofi_mode("run")) |
|
| 291 | + | -- Jump to a window that is already open, wherever it is tagged |
|
| 292 | + | oxwm.key.bind({ modkey }, "Tab", rofi_mode("window")) |
|
| 293 | + | -- Browse the filesystem and open a file with its default application |
|
| 294 | + | oxwm.key.bind({ modkey }, "E", rofi_mode("filebrowser")) |
|
| 295 | + | -- Save screenshot to ~/Downloads |
|
| 296 | + | oxwm.key.bind({ modkey }, "S", oxwm.spawn({ "sh", "-c", "maim -s ~/Downloads/screenshot-$(date +%Y%m%d-%H%M%S).png" })) |
|
| 297 | + | oxwm.key.bind({ modkey }, "O", oxwm.spawn({ "sh", "-c", "helium.AppImage --no-sandbox" })) |
|
| 298 | + | oxwm.key.bind({ modkey }, "W", oxwm.client.kill()) |
|
| 299 | + | ||
| 300 | + | -- Volume control (media keys, with Mod+Shift fallbacks for boards without them) |
|
| 301 | + | oxwm.key.bind({}, "XF86AudioRaiseVolume", script("vol-up")) |
|
| 302 | + | oxwm.key.bind({}, "XF86AudioLowerVolume", script("vol-down")) |
|
| 303 | + | oxwm.key.bind({}, "XF86AudioMute", script("vol-mute")) |
|
| 304 | + | oxwm.key.bind({ modkey, "Shift" }, "Equal", script("vol-up")) |
|
| 305 | + | oxwm.key.bind({ modkey, "Shift" }, "Minus", script("vol-down")) |
|
| 306 | + | oxwm.key.bind({ modkey, "Shift" }, "M", script("vol-mute")) |
|
| 307 | + | -- Audio menu (volume, mute, mic, pick an output) - rofi, no terminal needed |
|
| 308 | + | oxwm.key.bind({ modkey, "Shift" }, "U", rofi_script("rofi-audio")) |
|
| 309 | + | ||
| 310 | + | -- WiFi menu: scan, connect (passphrase prompt is hidden), disconnect |
|
| 311 | + | oxwm.key.bind({ modkey, "Shift" }, "N", rofi_script("rofi-wifi")) |
|
| 312 | + | ||
| 313 | + | -- Clipboard history. rofi-clipd (autostarted at the bottom of this file) |
|
| 314 | + | -- records everything that passes through the CLIPBOARD selection into |
|
| 315 | + | -- ~/.cache/rofi-clipboard; Mod+V picks an earlier entry back out. Shift+Del |
|
| 316 | + | -- inside the menu forgets an entry. |
|
| 317 | + | oxwm.key.bind({ modkey }, "V", rofi_script("rofi-clip")) |
|
| 318 | + | ||
| 319 | + | -- Emoji and kaomoji picker; the pick lands in the clipboard, ready to paste |
|
| 320 | + | oxwm.key.bind({ modkey, "Shift" }, "E", rofi_script("rofi-emoji")) |
|
| 321 | + | -- Calculator: type an expression, Enter evaluates, Enter again copies |
|
| 322 | + | oxwm.key.bind({ modkey, "Shift" }, "C", rofi_script("rofi-calc")) |
|
| 323 | + | -- Search the web: pick an engine, type the query |
|
| 324 | + | oxwm.key.bind({ modkey }, "Slash", rofi_script("rofi-websearch")) |
|
| 325 | + | -- Screenshot menu (Mod+S still takes a plain region shot without asking) |
|
| 326 | + | oxwm.key.bind({ modkey, "Shift" }, "S", rofi_script("rofi-screenshot")) |
|
| 327 | + | -- Lock / suspend / reboot / shutdown / log out, each with a confirmation |
|
| 328 | + | oxwm.key.bind({ modkey, "Shift" }, "X", rofi_script("rofi-power")) |
|
| 329 | + | ||
| 330 | + | -- Keybind overlay - Shows important keybindings on screen |
|
| 331 | + | oxwm.key.bind({ modkey, "Shift" }, "Slash", oxwm.show_keybinds()) |
|
| 332 | + | ||
| 333 | + | -- Window state toggles |
|
| 334 | + | --oxwm.key.bind({ modkey, "Shift" }, "A", oxwm.client.toggle_fullscreen()) |
|
| 335 | + | oxwm.key.bind({ modkey, "Shift" }, "F", oxwm.client.toggle_floating()) |
|
| 336 | + | ||
| 337 | + | -- Layout management |
|
| 338 | + | oxwm.key.bind({ modkey }, "F", oxwm.layout.set("normie")) |
|
| 339 | + | --oxwm.key.bind({ modkey }, "C", oxwm.layout.set("tiling")) |
|
| 340 | + | -- Cycle through layouts |
|
| 341 | + | oxwm.key.bind({ modkey }, "N", oxwm.layout.cycle()) |
|
| 342 | + | ||
| 343 | + | -- Master area controls (tiling layout) |
|
| 344 | + | ||
| 345 | + | -- Decrease/Increase master area width |
|
| 346 | + | oxwm.key.bind({ modkey }, "H", oxwm.set_master_factor(-5)) |
|
| 347 | + | oxwm.key.bind({ modkey }, "L", oxwm.set_master_factor(5)) |
|
| 348 | + | -- Enable tiled resize mode: Mod+RMB drag adjusts mfact instead of floating |
|
| 349 | + | -- oxwm.tiled_resize_mode(true) |
|
| 350 | + | -- Increment/Decrement number of master windows |
|
| 351 | + | --oxwm.key.bind({ modkey }, "I", oxwm.inc_num_master(1)) |
|
| 352 | + | --oxwm.key.bind({ modkey }, "P", oxwm.inc_num_master(-1)) |
|
| 353 | + | ||
| 354 | + | -- Gaps toggle |
|
| 355 | + | oxwm.key.bind({ modkey }, "A", oxwm.toggle_gaps()) |
|
| 356 | + | -- Bar toggle |
|
| 357 | + | oxwm.key.bind({ modkey }, "B", oxwm.toggle_bar()) |
|
| 358 | + | ||
| 359 | + | -- Window manager controls |
|
| 360 | + | oxwm.key.bind({ modkey, "Shift" }, "Q", oxwm.quit()) |
|
| 361 | + | oxwm.key.bind({ modkey, "Shift" }, "R", oxwm.restart()) |
|
| 362 | + | ||
| 363 | + | -- Focus movement [1 for up in the stack, -1 for down] |
|
| 364 | + | oxwm.key.bind({ modkey }, "J", oxwm.client.focus_stack(1)) |
|
| 365 | + | oxwm.key.bind({ modkey }, "K", oxwm.client.focus_stack(-1)) |
|
| 366 | + | ||
| 367 | + | -- Window movement (swap position in stack) |
|
| 368 | + | oxwm.key.bind({ modkey, "Shift" }, "J", oxwm.client.move_stack(1)) |
|
| 369 | + | oxwm.key.bind({ modkey, "Shift" }, "K", oxwm.client.move_stack(-1)) |
|
| 370 | + | ||
| 371 | + | -- Multi-monitor support |
|
| 372 | + | ||
| 373 | + | -- Focus next/previous Monitors |
|
| 374 | + | oxwm.key.bind({ modkey }, "Comma", oxwm.monitor.focus(-1)) |
|
| 375 | + | oxwm.key.bind({ modkey }, "Period", oxwm.monitor.focus(1)) |
|
| 376 | + | -- Move window to next/previous Monitors |
|
| 377 | + | oxwm.key.bind({ modkey, "Shift" }, "Comma", oxwm.monitor.tag(-1)) |
|
| 378 | + | oxwm.key.bind({ modkey, "Shift" }, "Period", oxwm.monitor.tag(1)) |
|
| 379 | + | ||
| 380 | + | -- Warp the cursor to the focused monitor when switching monitors |
|
| 381 | + | -- oxwm.monitor.warp_cursor(true) |
|
| 382 | + | -- Warp the cursor along when sending a window to another monitor |
|
| 383 | + | -- oxwm.monitor.warp_cursor_on_send(true) |
|
| 384 | + | ||
| 385 | + | -- Workspace (tag) navigation |
|
| 386 | + | -- Switch to workspace N (tags are 0-indexed, so tag "1" is index 0) |
|
| 387 | + | oxwm.key.bind({ modkey }, "1", oxwm.tag.view(0)) |
|
| 388 | + | oxwm.key.bind({ modkey }, "2", oxwm.tag.view(1)) |
|
| 389 | + | oxwm.key.bind({ modkey }, "3", oxwm.tag.view(2)) |
|
| 390 | + | oxwm.key.bind({ modkey }, "4", oxwm.tag.view(3)) |
|
| 391 | + | oxwm.key.bind({ modkey }, "5", oxwm.tag.view(4)) |
|
| 392 | + | oxwm.key.bind({ modkey }, "6", oxwm.tag.view(5)) |
|
| 393 | + | oxwm.key.bind({ modkey }, "7", oxwm.tag.view(6)) |
|
| 394 | + | oxwm.key.bind({ modkey }, "8", oxwm.tag.view(7)) |
|
| 395 | + | oxwm.key.bind({ modkey }, "9", oxwm.tag.view(8)) |
|
| 396 | + | -- Tags 10-12 (opt-in): set 12 tags above, then pick keys you like and uncomment. |
|
| 397 | + | -- oxwm.key.bind({ modkey }, "0", oxwm.tag.view(9)) |
|
| 398 | + | -- oxwm.key.bind({ modkey }, "minus", oxwm.tag.view(10)) |
|
| 399 | + | -- oxwm.key.bind({ modkey }, "equal", oxwm.tag.view(11)) |
|
| 400 | + | ||
| 401 | + | -- Move focused window to workspace N |
|
| 402 | + | oxwm.key.bind({ modkey, "Shift" }, "1", oxwm.tag.move_to(0)) |
|
| 403 | + | oxwm.key.bind({ modkey, "Shift" }, "2", oxwm.tag.move_to(1)) |
|
| 404 | + | oxwm.key.bind({ modkey, "Shift" }, "3", oxwm.tag.move_to(2)) |
|
| 405 | + | oxwm.key.bind({ modkey, "Shift" }, "4", oxwm.tag.move_to(3)) |
|
| 406 | + | oxwm.key.bind({ modkey, "Shift" }, "5", oxwm.tag.move_to(4)) |
|
| 407 | + | oxwm.key.bind({ modkey, "Shift" }, "6", oxwm.tag.move_to(5)) |
|
| 408 | + | oxwm.key.bind({ modkey, "Shift" }, "7", oxwm.tag.move_to(6)) |
|
| 409 | + | oxwm.key.bind({ modkey, "Shift" }, "8", oxwm.tag.move_to(7)) |
|
| 410 | + | oxwm.key.bind({ modkey, "Shift" }, "9", oxwm.tag.move_to(8)) |
|
| 411 | + | -- oxwm.key.bind({ modkey, "Shift" }, "0", oxwm.tag.move_to(9)) |
|
| 412 | + | -- oxwm.key.bind({ modkey, "Shift" }, "minus", oxwm.tag.move_to(10)) |
|
| 413 | + | -- oxwm.key.bind({ modkey, "Shift" }, "equal", oxwm.tag.move_to(11)) |
|
| 414 | + | ||
| 415 | + | -- Combo view (view multiple tags at once) {argos_nothing} |
|
| 416 | + | -- Example: Mod+Ctrl+2 while on tag 1 will show BOTH tags 1 and 2 |
|
| 417 | + | oxwm.key.bind({ modkey, "Control" }, "1", oxwm.tag.toggleview(0)) |
|
| 418 | + | oxwm.key.bind({ modkey, "Control" }, "2", oxwm.tag.toggleview(1)) |
|
| 419 | + | oxwm.key.bind({ modkey, "Control" }, "3", oxwm.tag.toggleview(2)) |
|
| 420 | + | oxwm.key.bind({ modkey, "Control" }, "4", oxwm.tag.toggleview(3)) |
|
| 421 | + | oxwm.key.bind({ modkey, "Control" }, "5", oxwm.tag.toggleview(4)) |
|
| 422 | + | oxwm.key.bind({ modkey, "Control" }, "6", oxwm.tag.toggleview(5)) |
|
| 423 | + | oxwm.key.bind({ modkey, "Control" }, "7", oxwm.tag.toggleview(6)) |
|
| 424 | + | oxwm.key.bind({ modkey, "Control" }, "8", oxwm.tag.toggleview(7)) |
|
| 425 | + | oxwm.key.bind({ modkey, "Control" }, "9", oxwm.tag.toggleview(8)) |
|
| 426 | + | -- oxwm.key.bind({ modkey, "Control" }, "0", oxwm.tag.toggleview(9)) |
|
| 427 | + | -- oxwm.key.bind({ modkey, "Control" }, "minus", oxwm.tag.toggleview(10)) |
|
| 428 | + | -- oxwm.key.bind({ modkey, "Control" }, "equal", oxwm.tag.toggleview(11)) |
|
| 429 | + | ||
| 430 | + | -- Multi tag (window on multiple tags) |
|
| 431 | + | -- Example: Mod+Ctrl+Shift+2 puts focused window on BOTH current tag and tag 2 |
|
| 432 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "1", oxwm.tag.toggletag(0)) |
|
| 433 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "2", oxwm.tag.toggletag(1)) |
|
| 434 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "3", oxwm.tag.toggletag(2)) |
|
| 435 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "4", oxwm.tag.toggletag(3)) |
|
| 436 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "5", oxwm.tag.toggletag(4)) |
|
| 437 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "6", oxwm.tag.toggletag(5)) |
|
| 438 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "7", oxwm.tag.toggletag(6)) |
|
| 439 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "8", oxwm.tag.toggletag(7)) |
|
| 440 | + | oxwm.key.bind({ modkey, "Control", "Shift" }, "9", oxwm.tag.toggletag(8)) |
|
| 441 | + | -- oxwm.key.bind({ modkey, "Control", "Shift" }, "0", oxwm.tag.toggletag(9)) |
|
| 442 | + | -- oxwm.key.bind({ modkey, "Control", "Shift" }, "minus", oxwm.tag.toggletag(10)) |
|
| 443 | + | -- oxwm.key.bind({ modkey, "Control", "Shift" }, "equal", oxwm.tag.toggletag(11)) |
|
| 444 | + | ||
| 445 | + | ------------------------------------------------------------------------------- |
|
| 446 | + | -- Advanced: Keychords |
|
| 447 | + | ------------------------------------------------------------------------------- |
|
| 448 | + | -- Keychords allow you to bind multiple-key sequences (like Emacs or Vim) |
|
| 449 | + | -- Format: {{modifiers}, key1}, {{modifiers}, key2}, ... |
|
| 450 | + | -- Example: Press Mod4+Space, then release and press T to spawn a terminal |
|
| 451 | + | oxwm.key.chord({ |
|
| 452 | + | { { modkey }, "Space" }, |
|
| 453 | + | { {}, "T" } |
|
| 454 | + | }, oxwm.spawn_terminal()) |
|
| 455 | + | ||
| 456 | + | ------------------------------------------------------------------------------- |
|
| 457 | + | -- Autostart |
|
| 458 | + | ------------------------------------------------------------------------------- |
|
| 459 | + | -- Commands to run once when OXWM starts |
|
| 460 | + | -- Uncomment and modify these examples, or add your own |
|
| 461 | + | ||
| 462 | + | -- Clipboard history daemon. Without it Mod+V has nothing to show: an X |
|
| 463 | + | -- selection lives in the process that owns it, so a copied string dies with |
|
| 464 | + | -- the window it was copied from unless something keeps its own copy. |
|
| 465 | + | oxwm.autostart(rofi_scripts .. "/rofi-clipd") |
|
| 466 | + | ||
| 467 | + | -- oxwm.autostart("picom") |
|
| 468 | + | -- oxwm.autostart("feh --bg-scale ~/wallpaper.jpg") |
|
| 469 | + | -- oxwm.autostart("dunst") |
|
| 470 | + | -- oxwm.autostart("nm-applet") |
| 1 | + | /* rofi settings. The look lives in the theme file; this is behaviour only. */ |
|
| 2 | + | configuration { |
|
| 3 | + | /* Modes reachable with `rofi -show <name>`. drun is the launcher (it |
|
| 4 | + | reads .desktop files, so entries get icons and their real names), run |
|
| 5 | + | is bare executables on PATH, window switches to something already |
|
| 6 | + | open, and combi searches drun + run + window at once. */ |
|
| 7 | + | modes: "drun,run,window,combi,filebrowser,ssh,keys"; |
|
| 8 | + | combi-modes: "drun,run,window"; |
|
| 9 | + | ||
| 10 | + | /* Fuzzy matching with sorting: "fx" finds "firefox", and the closest |
|
| 11 | + | match still comes first. Set matching to "normal" for plain substring |
|
| 12 | + | search if fuzzy ever feels too loose. */ |
|
| 13 | + | matching: "fuzzy"; |
|
| 14 | + | sort: true; |
|
| 15 | + | ||
| 16 | + | show-icons: true; |
|
| 17 | + | icon-theme: "Adwaita"; |
|
| 18 | + | ||
| 19 | + | /* ssh mode and "run in terminal" open this. wezterm is the XFCE |
|
| 20 | + | TerminalEmulator helper here, and its `start` subcommand takes -e as |
|
| 21 | + | an alias, which is the form rofi uses. */ |
|
| 22 | + | terminal: "wezterm"; |
|
| 23 | + | ||
| 24 | + | drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]"; |
|
| 25 | + | drun-match-fields: "name,generic,exec,categories,keywords"; |
|
| 26 | + | /* Right-click actions from the .desktop file (new window, private |
|
| 27 | + | window, and so on) become their own entries. */ |
|
| 28 | + | drun-show-actions: true; |
|
| 29 | + | ||
| 30 | + | window-format: "{w} {c} {t}"; |
|
| 31 | + | ||
| 32 | + | display-drun: "apps"; |
|
| 33 | + | display-run: "run"; |
|
| 34 | + | display-window: "windows"; |
|
| 35 | + | display-combi: "all"; |
|
| 36 | + | display-filebrowser: "files"; |
|
| 37 | + | display-ssh: "ssh"; |
|
| 38 | + | display-keys: "keys"; |
|
| 39 | + | display-clipboard: "clipboard"; |
|
| 40 | + | display-calc: "calc"; |
|
| 41 | + | } |
|
| 42 | + | ||
| 43 | + | @theme "nord" |
| 1 | + | ¯\_(ツ)_/¯ shrug whatever dunno |
|
| 2 | + | (╯°□°)╯︵ ┻━┻ table flip rage angry |
|
| 3 | + | ┬─┬ ノ( ゜-゜ノ) table unflip calm put back |
|
| 4 | + | (ノ◕ヮ◕)ノ*:・゚✧ sparkle magic excited |
|
| 5 | + | ಠ_ಠ disapproval look stare |
|
| 6 | + | (づ。◕‿‿◕。)づ hug |
|
| 7 | + | (◕‿◕) smile happy |
|
| 8 | + | (ಥ﹏ಥ) crying sad |
|
| 9 | + | (•_•) ( •_•)>⌐■-■ (⌐■_■) deal with it sunglasses |
|
| 10 | + | ᕕ( ᐛ )ᕗ walking happy run |
|
| 11 | + | (っ˘ω˘ς ) sleepy tired |
|
| 12 | + | (¬‿¬) smug sly |
|
| 13 | + | ♥ heart love |
|
| 14 | + | → arrow right |
|
| 15 | + | … ellipsis dots |
|
| 16 | + | — em dash |
|
| 17 | + | ✓ check tick done yes |
|
| 18 | + | ✗ cross fail no |
|
| 19 | + | λ lambda |
|
| 20 | + | ° degree |
|
| 21 | + | 🌀 cyclone |
|
| 22 | + | 🌁 foggy |
|
| 23 | + | 🌂 closed umbrella |
|
| 24 | + | 🌃 night with stars |
|
| 25 | + | 🌄 sunrise over mountains |
|
| 26 | + | 🌅 sunrise |
|
| 27 | + | 🌆 cityscape at dusk |
|
| 28 | + | 🌇 sunset over buildings |
|
| 29 | + | 🌈 rainbow |
|
| 30 | + | 🌉 bridge at night |
|
| 31 | + | 🌊 water wave |
|
| 32 | + | 🌋 volcano |
|
| 33 | + | 🌌 milky way |
|
| 34 | + | 🌍 earth globe europe-africa |
|
| 35 | + | 🌎 earth globe americas |
|
| 36 | + | 🌏 earth globe asia-australia |
|
| 37 | + | 🌐 globe with meridians |
|
| 38 | + | 🌑 new moon symbol |
|
| 39 | + | 🌒 waxing crescent moon symbol |
|
| 40 | + | 🌓 first quarter moon symbol |
|
| 41 | + | 🌔 waxing gibbous moon symbol |
|
| 42 | + | 🌕 full moon symbol |
|
| 43 | + | 🌖 waning gibbous moon symbol |
|
| 44 | + | 🌗 last quarter moon symbol |
|
| 45 | + | 🌘 waning crescent moon symbol |
|
| 46 | + | 🌙 crescent moon |
|
| 47 | + | 🌚 new moon with face |
|
| 48 | + | 🌛 first quarter moon with face |
|
| 49 | + | 🌜 last quarter moon with face |
|
| 50 | + | 🌝 full moon with face |
|
| 51 | + | 🌞 sun with face |
|
| 52 | + | 🌟 glowing star |
|
| 53 | + | 🌠 shooting star |
|
| 54 | + | 🌡 thermometer |
|
| 55 | + | 🌢 black droplet |
|
| 56 | + | 🌣 white sun |
|
| 57 | + | 🌤 white sun with small cloud |
|
| 58 | + | 🌥 white sun behind cloud |
|
| 59 | + | 🌦 white sun behind cloud with rain |
|
| 60 | + | 🌧 cloud with rain |
|
| 61 | + | 🌨 cloud with snow |
|
| 62 | + | 🌩 cloud with lightning |
|
| 63 | + | 🌪 cloud with tornado |
|
| 64 | + | 🌫 fog |
|
| 65 | + | 🌬 wind blowing face |
|
| 66 | + | 🌭 hot dog |
|
| 67 | + | 🌮 taco |
|
| 68 | + | 🌯 burrito |
|
| 69 | + | 🌰 chestnut |
|
| 70 | + | 🌱 seedling |
|
| 71 | + | 🌲 evergreen tree |
|
| 72 | + | 🌳 deciduous tree |
|
| 73 | + | 🌴 palm tree |
|
| 74 | + | 🌵 cactus |
|
| 75 | + | 🌶 hot pepper |
|
| 76 | + | 🌷 tulip |
|
| 77 | + | 🌸 cherry blossom |
|
| 78 | + | 🌹 rose |
|
| 79 | + | 🌺 hibiscus |
|
| 80 | + | 🌻 sunflower |
|
| 81 | + | 🌼 blossom |
|
| 82 | + | 🌽 ear of maize |
|
| 83 | + | 🌾 ear of rice |
|
| 84 | + | 🌿 herb |
|
| 85 | + | 🍀 four leaf clover |
|
| 86 | + | 🍁 maple leaf |
|
| 87 | + | 🍂 fallen leaf |
|
| 88 | + | 🍃 leaf fluttering in wind |
|
| 89 | + | 🍄 mushroom |
|
| 90 | + | 🍅 tomato |
|
| 91 | + | 🍆 aubergine |
|
| 92 | + | 🍇 grapes |
|
| 93 | + | 🍈 melon |
|
| 94 | + | 🍉 watermelon |
|
| 95 | + | 🍊 tangerine |
|
| 96 | + | 🍋 lemon |
|
| 97 | + | 🍌 banana |
|
| 98 | + | 🍍 pineapple |
|
| 99 | + | 🍎 red apple |
|
| 100 | + | 🍏 green apple |
|
| 101 | + | 🍐 pear |
|
| 102 | + | 🍑 peach |
|
| 103 | + | 🍒 cherries |
|
| 104 | + | 🍓 strawberry |
|
| 105 | + | 🍔 hamburger |
|
| 106 | + | 🍕 slice of pizza |
|
| 107 | + | 🍖 meat on bone |
|
| 108 | + | 🍗 poultry leg |
|
| 109 | + | 🍘 rice cracker |
|
| 110 | + | 🍙 rice ball |
|
| 111 | + | 🍚 cooked rice |
|
| 112 | + | 🍛 curry and rice |
|
| 113 | + | 🍜 steaming bowl |
|
| 114 | + | 🍝 spaghetti |
|
| 115 | + | 🍞 bread |
|
| 116 | + | 🍟 french fries |
|
| 117 | + | 🍠 roasted sweet potato |
|
| 118 | + | 🍡 dango |
|
| 119 | + | 🍢 oden |
|
| 120 | + | 🍣 sushi |
|
| 121 | + | 🍤 fried shrimp |
|
| 122 | + | 🍥 fish cake with swirl design |
|
| 123 | + | 🍦 soft ice cream |
|
| 124 | + | 🍧 shaved ice |
|
| 125 | + | 🍨 ice cream |
|
| 126 | + | 🍩 doughnut |
|
| 127 | + | 🍪 cookie |
|
| 128 | + | 🍫 chocolate bar |
|
| 129 | + | 🍬 candy |
|
| 130 | + | 🍭 lollipop |
|
| 131 | + | 🍮 custard |
|
| 132 | + | 🍯 honey pot |
|
| 133 | + | 🍰 shortcake |
|
| 134 | + | 🍱 bento box |
|
| 135 | + | 🍲 pot of food |
|
| 136 | + | 🍳 cooking |
|
| 137 | + | 🍴 fork and knife |
|
| 138 | + | 🍵 teacup without handle |
|
| 139 | + | 🍶 sake bottle and cup |
|
| 140 | + | 🍷 wine glass |
|
| 141 | + | 🍸 cocktail glass |
|
| 142 | + | 🍹 tropical drink |
|
| 143 | + | 🍺 beer mug |
|
| 144 | + | 🍻 clinking beer mugs |
|
| 145 | + | 🍼 baby bottle |
|
| 146 | + | 🍽 fork and knife with plate |
|
| 147 | + | 🍾 bottle with popping cork |
|
| 148 | + | 🍿 popcorn |
|
| 149 | + | 🎀 ribbon |
|
| 150 | + | 🎁 wrapped present |
|
| 151 | + | 🎂 birthday cake |
|
| 152 | + | 🎃 jack-o-lantern |
|
| 153 | + | 🎄 christmas tree |
|
| 154 | + | 🎅 father christmas |
|
| 155 | + | 🎆 fireworks |
|
| 156 | + | 🎇 firework sparkler |
|
| 157 | + | 🎈 balloon |
|
| 158 | + | 🎉 party popper |
|
| 159 | + | 🎊 confetti ball |
|
| 160 | + | 🎋 tanabata tree |
|
| 161 | + | 🎌 crossed flags |
|
| 162 | + | 🎍 pine decoration |
|
| 163 | + | 🎎 japanese dolls |
|
| 164 | + | 🎏 carp streamer |
|
| 165 | + | 🎐 wind chime |
|
| 166 | + | 🎑 moon viewing ceremony |
|
| 167 | + | 🎒 school satchel |
|
| 168 | + | 🎓 graduation cap |
|
| 169 | + | 🎔 heart with tip on the left |
|
| 170 | + | 🎕 bouquet of flowers |
|
| 171 | + | 🎖 military medal |
|
| 172 | + | 🎗 reminder ribbon |
|
| 173 | + | 🎘 musical keyboard with jacks |
|
| 174 | + | 🎙 studio microphone |
|
| 175 | + | 🎚 level slider |
|
| 176 | + | 🎛 control knobs |
|
| 177 | + | 🎜 beamed ascending musical notes |
|
| 178 | + | 🎝 beamed descending musical notes |
|
| 179 | + | 🎞 film frames |
|
| 180 | + | 🎟 admission tickets |
|
| 181 | + | 🎠 carousel horse |
|
| 182 | + | 🎡 ferris wheel |
|
| 183 | + | 🎢 roller coaster |
|
| 184 | + | 🎣 fishing pole and fish |
|
| 185 | + | 🎤 microphone |
|
| 186 | + | 🎥 movie camera |
|
| 187 | + | 🎦 cinema |
|
| 188 | + | 🎧 headphone |
|
| 189 | + | 🎨 artist palette |
|
| 190 | + | 🎩 top hat |
|
| 191 | + | 🎪 circus tent |
|
| 192 | + | 🎫 ticket |
|
| 193 | + | 🎬 clapper board |
|
| 194 | + | 🎭 performing arts |
|
| 195 | + | 🎮 video game |
|
| 196 | + | 🎯 direct hit |
|
| 197 | + | 🎰 slot machine |
|
| 198 | + | 🎱 billiards |
|
| 199 | + | 🎲 game die |
|
| 200 | + | 🎳 bowling |
|
| 201 | + | 🎴 flower playing cards |
|
| 202 | + | 🎵 musical note |
|
| 203 | + | 🎶 multiple musical notes |
|
| 204 | + | 🎷 saxophone |
|
| 205 | + | 🎸 guitar |
|
| 206 | + | 🎹 musical keyboard |
|
| 207 | + | 🎺 trumpet |
|
| 208 | + | 🎻 violin |
|
| 209 | + | 🎼 musical score |
|
| 210 | + | 🎽 running shirt with sash |
|
| 211 | + | 🎾 tennis racquet and ball |
|
| 212 | + | 🎿 ski and ski boot |
|
| 213 | + | 🏀 basketball and hoop |
|
| 214 | + | 🏁 chequered flag |
|
| 215 | + | 🏂 snowboarder |
|
| 216 | + | 🏃 runner |
|
| 217 | + | 🏄 surfer |
|
| 218 | + | 🏅 sports medal |
|
| 219 | + | 🏆 trophy |
|
| 220 | + | 🏇 horse racing |
|
| 221 | + | 🏈 american football |
|
| 222 | + | 🏉 rugby football |
|
| 223 | + | 🏊 swimmer |
|
| 224 | + | 🏋 weight lifter |
|
| 225 | + | 🏌 golfer |
|
| 226 | + | 🏍 racing motorcycle |
|
| 227 | + | 🏎 racing car |
|
| 228 | + | 🏏 cricket bat and ball |
|
| 229 | + | 🏐 volleyball |
|
| 230 | + | 🏑 field hockey stick and ball |
|
| 231 | + | 🏒 ice hockey stick and puck |
|
| 232 | + | 🏓 table tennis paddle and ball |
|
| 233 | + | 🏔 snow capped mountain |
|
| 234 | + | 🏕 camping |
|
| 235 | + | 🏖 beach with umbrella |
|
| 236 | + | 🏗 building construction |
|
| 237 | + | 🏘 house buildings |
|
| 238 | + | 🏙 cityscape |
|
| 239 | + | 🏚 derelict house building |
|
| 240 | + | 🏛 classical building |
|
| 241 | + | 🏜 desert |
|
| 242 | + | 🏝 desert island |
|
| 243 | + | 🏞 national park |
|
| 244 | + | 🏟 stadium |
|
| 245 | + | 🏠 house building |
|
| 246 | + | 🏡 house with garden |
|
| 247 | + | 🏢 office building |
|
| 248 | + | 🏣 japanese post office |
|
| 249 | + | 🏤 european post office |
|
| 250 | + | 🏥 hospital |
|
| 251 | + | 🏦 bank |
|
| 252 | + | 🏧 automated teller machine |
|
| 253 | + | 🏨 hotel |
|
| 254 | + | 🏩 love hotel |
|
| 255 | + | 🏪 convenience store |
|
| 256 | + | 🏫 school |
|
| 257 | + | 🏬 department store |
|
| 258 | + | 🏭 factory |
|
| 259 | + | 🏮 izakaya lantern |
|
| 260 | + | 🏯 japanese castle |
|
| 261 | + | 🏰 european castle |
|
| 262 | + | 🏱 white pennant |
|
| 263 | + | 🏲 black pennant |
|
| 264 | + | 🏳 waving white flag |
|
| 265 | + | 🏴 waving black flag |
|
| 266 | + | 🏵 rosette |
|
| 267 | + | 🏶 black rosette |
|
| 268 | + | 🏷 label |
|
| 269 | + | 🏸 badminton racquet and shuttlecock |
|
| 270 | + | 🏹 bow and arrow |
|
| 271 | + | 🏺 amphora |
|
| 272 | + | 🏻 emoji modifier fitzpatrick type-1-2 |
|
| 273 | + | 🏼 emoji modifier fitzpatrick type-3 |
|
| 274 | + | 🏽 emoji modifier fitzpatrick type-4 |
|
| 275 | + | 🏾 emoji modifier fitzpatrick type-5 |
|
| 276 | + | 🏿 emoji modifier fitzpatrick type-6 |
|
| 277 | + | 🐀 rat |
|
| 278 | + | 🐁 mouse |
|
| 279 | + | 🐂 ox |
|
| 280 | + | 🐃 water buffalo |
|
| 281 | + | 🐄 cow |
|
| 282 | + | 🐅 tiger |
|
| 283 | + | 🐆 leopard |
|
| 284 | + | 🐇 rabbit |
|
| 285 | + | 🐈 cat |
|
| 286 | + | 🐉 dragon |
|
| 287 | + | 🐊 crocodile |
|
| 288 | + | 🐋 whale |
|
| 289 | + | 🐌 snail |
|
| 290 | + | 🐍 snake |
|
| 291 | + | 🐎 horse |
|
| 292 | + | 🐏 ram |
|
| 293 | + | 🐐 goat |
|
| 294 | + | 🐑 sheep |
|
| 295 | + | 🐒 monkey |
|
| 296 | + | 🐓 rooster |
|
| 297 | + | 🐔 chicken |
|
| 298 | + | 🐕 dog |
|
| 299 | + | 🐖 pig |
|
| 300 | + | 🐗 boar |
|
| 301 | + | 🐘 elephant |
|
| 302 | + | 🐙 octopus |
|
| 303 | + | 🐚 spiral shell |
|
| 304 | + | 🐛 bug |
|
| 305 | + | 🐜 ant |
|
| 306 | + | 🐝 honeybee |
|
| 307 | + | 🐞 lady beetle |
|
| 308 | + | 🐟 fish |
|
| 309 | + | 🐠 tropical fish |
|
| 310 | + | 🐡 blowfish |
|
| 311 | + | 🐢 turtle |
|
| 312 | + | 🐣 hatching chick |
|
| 313 | + | 🐤 baby chick |
|
| 314 | + | 🐥 front-facing baby chick |
|
| 315 | + | 🐦 bird |
|
| 316 | + | 🐧 penguin |
|
| 317 | + | 🐨 koala |
|
| 318 | + | 🐩 poodle |
|
| 319 | + | 🐪 dromedary camel |
|
| 320 | + | 🐫 bactrian camel |
|
| 321 | + | 🐬 dolphin |
|
| 322 | + | 🐭 mouse face |
|
| 323 | + | 🐮 cow face |
|
| 324 | + | 🐯 tiger face |
|
| 325 | + | 🐰 rabbit face |
|
| 326 | + | 🐱 cat face |
|
| 327 | + | 🐲 dragon face |
|
| 328 | + | 🐳 spouting whale |
|
| 329 | + | 🐴 horse face |
|
| 330 | + | 🐵 monkey face |
|
| 331 | + | 🐶 dog face |
|
| 332 | + | 🐷 pig face |
|
| 333 | + | 🐸 frog face |
|
| 334 | + | 🐹 hamster face |
|
| 335 | + | 🐺 wolf face |
|
| 336 | + | 🐻 bear face |
|
| 337 | + | 🐼 panda face |
|
| 338 | + | 🐽 pig nose |
|
| 339 | + | 🐾 paw prints |
|
| 340 | + | 🐿 chipmunk |
|
| 341 | + | 👀 eyes |
|
| 342 | + | 👁 eye |
|
| 343 | + | 👂 ear |
|
| 344 | + | 👃 nose |
|
| 345 | + | 👄 mouth |
|
| 346 | + | 👅 tongue |
|
| 347 | + | 👆 white up pointing backhand index |
|
| 348 | + | 👇 white down pointing backhand index |
|
| 349 | + | 👈 white left pointing backhand index |
|
| 350 | + | 👉 white right pointing backhand index |
|
| 351 | + | 👊 fisted hand sign |
|
| 352 | + | 👋 waving hand sign |
|
| 353 | + | 👌 ok hand sign |
|
| 354 | + | 👍 thumbs up sign |
|
| 355 | + | 👎 thumbs down sign |
|
| 356 | + | 👏 clapping hands sign |
|
| 357 | + | 👐 open hands sign |
|
| 358 | + | 👑 crown |
|
| 359 | + | 👒 womans hat |
|
| 360 | + | 👓 eyeglasses |
|
| 361 | + | 👔 necktie |
|
| 362 | + | 👕 t-shirt |
|
| 363 | + | 👖 jeans |
|
| 364 | + | 👗 dress |
|
| 365 | + | 👘 kimono |
|
| 366 | + | 👙 bikini |
|
| 367 | + | 👚 womans clothes |
|
| 368 | + | 👛 purse |
|
| 369 | + | 👜 handbag |
|
| 370 | + | 👝 pouch |
|
| 371 | + | 👞 mans shoe |
|
| 372 | + | 👟 athletic shoe |
|
| 373 | + | 👠 high-heeled shoe |
|
| 374 | + | 👡 womans sandal |
|
| 375 | + | 👢 womans boots |
|
| 376 | + | 👣 footprints |
|
| 377 | + | 👤 bust in silhouette |
|
| 378 | + | 👥 busts in silhouette |
|
| 379 | + | 👦 boy |
|
| 380 | + | 👧 girl |
|
| 381 | + | 👨 man |
|
| 382 | + | 👩 woman |
|
| 383 | + | 👪 family |
|
| 384 | + | 👫 man and woman holding hands |
|
| 385 | + | 👬 two men holding hands |
|
| 386 | + | 👭 two women holding hands |
|
| 387 | + | 👮 police officer |
|
| 388 | + | 👯 woman with bunny ears |
|
| 389 | + | 👰 bride with veil |
|
| 390 | + | 👱 person with blond hair |
|
| 391 | + | 👲 man with gua pi mao |
|
| 392 | + | 👳 man with turban |
|
| 393 | + | 👴 older man |
|
| 394 | + | 👵 older woman |
|
| 395 | + | 👶 baby |
|
| 396 | + | 👷 construction worker |
|
| 397 | + | 👸 princess |
|
| 398 | + | 👹 japanese ogre |
|
| 399 | + | 👺 japanese goblin |
|
| 400 | + | 👻 ghost |
|
| 401 | + | 👼 baby angel |
|
| 402 | + | 👽 extraterrestrial alien |
|
| 403 | + | 👾 alien monster |
|
| 404 | + | 👿 imp |
|
| 405 | + | 💀 skull |
|
| 406 | + | 💁 information desk person |
|
| 407 | + | 💂 guardsman |
|
| 408 | + | 💃 dancer |
|
| 409 | + | 💄 lipstick |
|
| 410 | + | 💅 nail polish |
|
| 411 | + | 💆 face massage |
|
| 412 | + | 💇 haircut |
|
| 413 | + | 💈 barber pole |
|
| 414 | + | 💉 syringe |
|
| 415 | + | 💊 pill |
|
| 416 | + | 💋 kiss mark |
|
| 417 | + | 💌 love letter |
|
| 418 | + | 💍 ring |
|
| 419 | + | 💎 gem stone |
|
| 420 | + | 💏 kiss |
|
| 421 | + | 💐 bouquet |
|
| 422 | + | 💑 couple with heart |
|
| 423 | + | 💒 wedding |
|
| 424 | + | 💓 beating heart |
|
| 425 | + | 💔 broken heart |
|
| 426 | + | 💕 two hearts |
|
| 427 | + | 💖 sparkling heart |
|
| 428 | + | 💗 growing heart |
|
| 429 | + | 💘 heart with arrow |
|
| 430 | + | 💙 blue heart |
|
| 431 | + | 💚 green heart |
|
| 432 | + | 💛 yellow heart |
|
| 433 | + | 💜 purple heart |
|
| 434 | + | 💝 heart with ribbon |
|
| 435 | + | 💞 revolving hearts |
|
| 436 | + | 💟 heart decoration |
|
| 437 | + | 💠 diamond shape with a dot inside |
|
| 438 | + | 💡 electric light bulb |
|
| 439 | + | 💢 anger symbol |
|
| 440 | + | 💣 bomb |
|
| 441 | + | 💤 sleeping symbol |
|
| 442 | + | 💥 collision symbol |
|
| 443 | + | 💦 splashing sweat symbol |
|
| 444 | + | 💧 droplet |
|
| 445 | + | 💨 dash symbol |
|
| 446 | + | 💩 pile of poo |
|
| 447 | + | 💪 flexed biceps |
|
| 448 | + | 💫 dizzy symbol |
|
| 449 | + | 💬 speech balloon |
|
| 450 | + | 💭 thought balloon |
|
| 451 | + | 💮 white flower |
|
| 452 | + | 💯 hundred points symbol |
|
| 453 | + | 💰 money bag |
|
| 454 | + | 💱 currency exchange |
|
| 455 | + | 💲 heavy dollar sign |
|
| 456 | + | 💳 credit card |
|
| 457 | + | 💴 banknote with yen sign |
|
| 458 | + | 💵 banknote with dollar sign |
|
| 459 | + | 💶 banknote with euro sign |
|
| 460 | + | 💷 banknote with pound sign |
|
| 461 | + | 💸 money with wings |
|
| 462 | + | 💹 chart with upwards trend and yen sign |
|
| 463 | + | 💺 seat |
|
| 464 | + | 💻 personal computer |
|
| 465 | + | 💼 briefcase |
|
| 466 | + | 💽 minidisc |
|
| 467 | + | 💾 floppy disk |
|
| 468 | + | 💿 optical disc |
|
| 469 | + | 📀 dvd |
|
| 470 | + | 📁 file folder |
|
| 471 | + | 📂 open file folder |
|
| 472 | + | 📃 page with curl |
|
| 473 | + | 📄 page facing up |
|
| 474 | + | 📅 calendar |
|
| 475 | + | 📆 tear-off calendar |
|
| 476 | + | 📇 card index |
|
| 477 | + | 📈 chart with upwards trend |
|
| 478 | + | 📉 chart with downwards trend |
|
| 479 | + | 📊 bar chart |
|
| 480 | + | 📋 clipboard |
|
| 481 | + | 📌 pushpin |
|
| 482 | + | 📍 round pushpin |
|
| 483 | + | 📎 paperclip |
|
| 484 | + | 📏 straight ruler |
|
| 485 | + | 📐 triangular ruler |
|
| 486 | + | 📑 bookmark tabs |
|
| 487 | + | 📒 ledger |
|
| 488 | + | 📓 notebook |
|
| 489 | + | 📔 notebook with decorative cover |
|
| 490 | + | 📕 closed book |
|
| 491 | + | 📖 open book |
|
| 492 | + | 📗 green book |
|
| 493 | + | 📘 blue book |
|
| 494 | + | 📙 orange book |
|
| 495 | + | 📚 books |
|
| 496 | + | 📛 name badge |
|
| 497 | + | 📜 scroll |
|
| 498 | + | 📝 memo |
|
| 499 | + | 📞 telephone receiver |
|
| 500 | + | 📟 pager |
|
| 501 | + | 📠 fax machine |
|
| 502 | + | 📡 satellite antenna |
|
| 503 | + | 📢 public address loudspeaker |
|
| 504 | + | 📣 cheering megaphone |
|
| 505 | + | 📤 outbox tray |
|
| 506 | + | 📥 inbox tray |
|
| 507 | + | 📦 package |
|
| 508 | + | 📧 e-mail symbol |
|
| 509 | + | 📨 incoming envelope |
|
| 510 | + | 📩 envelope with downwards arrow above |
|
| 511 | + | 📪 closed mailbox with lowered flag |
|
| 512 | + | 📫 closed mailbox with raised flag |
|
| 513 | + | 📬 open mailbox with raised flag |
|
| 514 | + | 📭 open mailbox with lowered flag |
|
| 515 | + | 📮 postbox |
|
| 516 | + | 📯 postal horn |
|
| 517 | + | 📰 newspaper |
|
| 518 | + | 📱 mobile phone |
|
| 519 | + | 📲 mobile phone with rightwards arrow at left |
|
| 520 | + | 📳 vibration mode |
|
| 521 | + | 📴 mobile phone off |
|
| 522 | + | 📵 no mobile phones |
|
| 523 | + | 📶 antenna with bars |
|
| 524 | + | 📷 camera |
|
| 525 | + | 📸 camera with flash |
|
| 526 | + | 📹 video camera |
|
| 527 | + | 📺 television |
|
| 528 | + | 📻 radio |
|
| 529 | + | 📼 videocassette |
|
| 530 | + | 📽 film projector |
|
| 531 | + | 📾 portable stereo |
|
| 532 | + | 📿 prayer beads |
|
| 533 | + | 🔀 twisted rightwards arrows |
|
| 534 | + | 🔁 clockwise rightwards and leftwards open circle arrows |
|
| 535 | + | 🔂 clockwise rightwards and leftwards open circle arrows with circled one overlay |
|
| 536 | + | 🔃 clockwise downwards and upwards open circle arrows |
|
| 537 | + | 🔄 anticlockwise downwards and upwards open circle arrows |
|
| 538 | + | 🔅 low brightness symbol |
|
| 539 | + | 🔆 high brightness symbol |
|
| 540 | + | 🔇 speaker with cancellation stroke |
|
| 541 | + | 🔈 speaker |
|
| 542 | + | 🔉 speaker with one sound wave |
|
| 543 | + | 🔊 speaker with three sound waves |
|
| 544 | + | 🔋 battery |
|
| 545 | + | 🔌 electric plug |
|
| 546 | + | 🔍 left-pointing magnifying glass |
|
| 547 | + | 🔎 right-pointing magnifying glass |
|
| 548 | + | 🔏 lock with ink pen |
|
| 549 | + | 🔐 closed lock with key |
|
| 550 | + | 🔑 key |
|
| 551 | + | 🔒 lock |
|
| 552 | + | 🔓 open lock |
|
| 553 | + | 🔔 bell |
|
| 554 | + | 🔕 bell with cancellation stroke |
|
| 555 | + | 🔖 bookmark |
|
| 556 | + | 🔗 link symbol |
|
| 557 | + | 🔘 radio button |
|
| 558 | + | 🔙 back with leftwards arrow above |
|
| 559 | + | 🔚 end with leftwards arrow above |
|
| 560 | + | 🔛 on with exclamation mark with left right arrow above |
|
| 561 | + | 🔜 soon with rightwards arrow above |
|
| 562 | + | 🔝 top with upwards arrow above |
|
| 563 | + | 🔞 no one under eighteen symbol |
|
| 564 | + | 🔟 keycap ten |
|
| 565 | + | 🔠 input symbol for latin capital letters |
|
| 566 | + | 🔡 input symbol for latin small letters |
|
| 567 | + | 🔢 input symbol for numbers |
|
| 568 | + | 🔣 input symbol for symbols |
|
| 569 | + | 🔤 input symbol for latin letters |
|
| 570 | + | 🔥 fire |
|
| 571 | + | 🔦 electric torch |
|
| 572 | + | 🔧 wrench |
|
| 573 | + | 🔨 hammer |
|
| 574 | + | 🔩 nut and bolt |
|
| 575 | + | 🔪 hocho |
|
| 576 | + | 🔫 pistol |
|
| 577 | + | 🔬 microscope |
|
| 578 | + | 🔭 telescope |
|
| 579 | + | 🔮 crystal ball |
|
| 580 | + | 🔯 six pointed star with middle dot |
|
| 581 | + | 🔰 japanese symbol for beginner |
|
| 582 | + | 🔱 trident emblem |
|
| 583 | + | 🔲 black square button |
|
| 584 | + | 🔳 white square button |
|
| 585 | + | 🔴 large red circle |
|
| 586 | + | 🔵 large blue circle |
|
| 587 | + | 🔶 large orange diamond |
|
| 588 | + | 🔷 large blue diamond |
|
| 589 | + | 🔸 small orange diamond |
|
| 590 | + | 🔹 small blue diamond |
|
| 591 | + | 🔺 up-pointing red triangle |
|
| 592 | + | 🔻 down-pointing red triangle |
|
| 593 | + | 🔼 up-pointing small red triangle |
|
| 594 | + | 🔽 down-pointing small red triangle |
|
| 595 | + | 🔾 lower right shadowed white circle |
|
| 596 | + | 🔿 upper right shadowed white circle |
|
| 597 | + | 🕀 circled cross pommee |
|
| 598 | + | 🕁 cross pommee with half-circle below |
|
| 599 | + | 🕂 cross pommee |
|
| 600 | + | 🕃 notched left semicircle with three dots |
|
| 601 | + | 🕄 notched right semicircle with three dots |
|
| 602 | + | 🕅 symbol for marks chapter |
|
| 603 | + | 🕆 white latin cross |
|
| 604 | + | 🕇 heavy latin cross |
|
| 605 | + | 🕈 celtic cross |
|
| 606 | + | 🕉 om symbol |
|
| 607 | + | 🕊 dove of peace |
|
| 608 | + | 🕋 kaaba |
|
| 609 | + | 🕌 mosque |
|
| 610 | + | 🕍 synagogue |
|
| 611 | + | 🕎 menorah with nine branches |
|
| 612 | + | 🕏 bowl of hygieia |
|
| 613 | + | 🕐 clock face one oclock |
|
| 614 | + | 🕑 clock face two oclock |
|
| 615 | + | 🕒 clock face three oclock |
|
| 616 | + | 🕓 clock face four oclock |
|
| 617 | + | 🕔 clock face five oclock |
|
| 618 | + | 🕕 clock face six oclock |
|
| 619 | + | 🕖 clock face seven oclock |
|
| 620 | + | 🕗 clock face eight oclock |
|
| 621 | + | 🕘 clock face nine oclock |
|
| 622 | + | 🕙 clock face ten oclock |
|
| 623 | + | 🕚 clock face eleven oclock |
|
| 624 | + | 🕛 clock face twelve oclock |
|
| 625 | + | 🕜 clock face one-thirty |
|
| 626 | + | 🕝 clock face two-thirty |
|
| 627 | + | 🕞 clock face three-thirty |
|
| 628 | + | 🕟 clock face four-thirty |
|
| 629 | + | 🕠 clock face five-thirty |
|
| 630 | + | 🕡 clock face six-thirty |
|
| 631 | + | 🕢 clock face seven-thirty |
|
| 632 | + | 🕣 clock face eight-thirty |
|
| 633 | + | 🕤 clock face nine-thirty |
|
| 634 | + | 🕥 clock face ten-thirty |
|
| 635 | + | 🕦 clock face eleven-thirty |
|
| 636 | + | 🕧 clock face twelve-thirty |
|
| 637 | + | 🕨 right speaker |
|
| 638 | + | 🕩 right speaker with one sound wave |
|
| 639 | + | 🕪 right speaker with three sound waves |
|
| 640 | + | 🕫 bullhorn |
|
| 641 | + | 🕬 bullhorn with sound waves |
|
| 642 | + | 🕭 ringing bell |
|
| 643 | + | 🕮 book |
|
| 644 | + | 🕯 candle |
|
| 645 | + | 🕰 mantelpiece clock |
|
| 646 | + | 🕱 black skull and crossbones |
|
| 647 | + | 🕲 no piracy |
|
| 648 | + | 🕳 hole |
|
| 649 | + | 🕴 man in business suit levitating |
|
| 650 | + | 🕵 sleuth or spy |
|
| 651 | + | 🕶 dark sunglasses |
|
| 652 | + | 🕷 spider |
|
| 653 | + | 🕸 spider web |
|
| 654 | + | 🕹 joystick |
|
| 655 | + | 🕺 man dancing |
|
| 656 | + | 🕻 left hand telephone receiver |
|
| 657 | + | 🕼 telephone receiver with page |
|
| 658 | + | 🕽 right hand telephone receiver |
|
| 659 | + | 🕾 white touchtone telephone |
|
| 660 | + | 🕿 black touchtone telephone |
|
| 661 | + | 🖀 telephone on top of modem |
|
| 662 | + | 🖁 clamshell mobile phone |
|
| 663 | + | 🖂 back of envelope |
|
| 664 | + | 🖃 stamped envelope |
|
| 665 | + | 🖄 envelope with lightning |
|
| 666 | + | 🖅 flying envelope |
|
| 667 | + | 🖆 pen over stamped envelope |
|
| 668 | + | 🖇 linked paperclips |
|
| 669 | + | 🖈 black pushpin |
|
| 670 | + | 🖉 lower left pencil |
|
| 671 | + | 🖊 lower left ballpoint pen |
|
| 672 | + | 🖋 lower left fountain pen |
|
| 673 | + | 🖌 lower left paintbrush |
|
| 674 | + | 🖍 lower left crayon |
|
| 675 | + | 🖎 left writing hand |
|
| 676 | + | 🖏 turned ok hand sign |
|
| 677 | + | 🖐 raised hand with fingers splayed |
|
| 678 | + | 🖑 reversed raised hand with fingers splayed |
|
| 679 | + | 🖒 reversed thumbs up sign |
|
| 680 | + | 🖓 reversed thumbs down sign |
|
| 681 | + | 🖔 reversed victory hand |
|
| 682 | + | 🖕 reversed hand with middle finger extended |
|
| 683 | + | 🖖 raised hand with part between middle and ring fingers |
|
| 684 | + | 🖗 white down pointing left hand index |
|
| 685 | + | 🖘 sideways white left pointing index |
|
| 686 | + | 🖙 sideways white right pointing index |
|
| 687 | + | 🖚 sideways black left pointing index |
|
| 688 | + | 🖛 sideways black right pointing index |
|
| 689 | + | 🖜 black left pointing backhand index |
|
| 690 | + | 🖝 black right pointing backhand index |
|
| 691 | + | 🖞 sideways white up pointing index |
|
| 692 | + | 🖟 sideways white down pointing index |
|
| 693 | + | 🖠 sideways black up pointing index |
|
| 694 | + | 🖡 sideways black down pointing index |
|
| 695 | + | 🖢 black up pointing backhand index |
|
| 696 | + | 🖣 black down pointing backhand index |
|
| 697 | + | 🖤 black heart |
|
| 698 | + | 🖥 desktop computer |
|
| 699 | + | 🖦 keyboard and mouse |
|
| 700 | + | 🖧 three networked computers |
|
| 701 | + | 🖨 printer |
|
| 702 | + | 🖩 pocket calculator |
|
| 703 | + | 🖪 black hard shell floppy disk |
|
| 704 | + | 🖫 white hard shell floppy disk |
|
| 705 | + | 🖬 soft shell floppy disk |
|
| 706 | + | 🖭 tape cartridge |
|
| 707 | + | 🖮 wired keyboard |
|
| 708 | + | 🖯 one button mouse |
|
| 709 | + | 🖰 two button mouse |
|
| 710 | + | 🖱 three button mouse |
|
| 711 | + | 🖲 trackball |
|
| 712 | + | 🖳 old personal computer |
|
| 713 | + | 🖴 hard disk |
|
| 714 | + | 🖵 screen |
|
| 715 | + | 🖶 printer icon |
|
| 716 | + | 🖷 fax icon |
|
| 717 | + | 🖸 optical disc icon |
|
| 718 | + | 🖹 document with text |
|
| 719 | + | 🖺 document with text and picture |
|
| 720 | + | 🖻 document with picture |
|
| 721 | + | 🖼 frame with picture |
|
| 722 | + | 🖽 frame with tiles |
|
| 723 | + | 🖾 frame with an x |
|
| 724 | + | 🖿 black folder |
|
| 725 | + | 🗀 folder |
|
| 726 | + | 🗁 open folder |
|
| 727 | + | 🗂 card index dividers |
|
| 728 | + | 🗃 card file box |
|
| 729 | + | 🗄 file cabinet |
|
| 730 | + | 🗅 empty note |
|
| 731 | + | 🗆 empty note page |
|
| 732 | + | 🗇 empty note pad |
|
| 733 | + | 🗈 note |
|
| 734 | + | 🗉 note page |
|
| 735 | + | 🗊 note pad |
|
| 736 | + | 🗋 empty document |
|
| 737 | + | 🗌 empty page |
|
| 738 | + | 🗍 empty pages |
|
| 739 | + | 🗎 document |
|
| 740 | + | 🗏 page |
|
| 741 | + | 🗐 pages |
|
| 742 | + | 🗑 wastebasket |
|
| 743 | + | 🗒 spiral note pad |
|
| 744 | + | 🗓 spiral calendar pad |
|
| 745 | + | 🗔 desktop window |
|
| 746 | + | 🗕 minimize |
|
| 747 | + | 🗖 maximize |
|
| 748 | + | 🗗 overlap |
|
| 749 | + | 🗘 clockwise right and left semicircle arrows |
|
| 750 | + | 🗙 cancellation x |
|
| 751 | + | 🗚 increase font size symbol |
|
| 752 | + | 🗛 decrease font size symbol |
|
| 753 | + | 🗜 compression |
|
| 754 | + | 🗝 old key |
|
| 755 | + | 🗞 rolled-up newspaper |
|
| 756 | + | 🗟 page with circled text |
|
| 757 | + | 🗠 stock chart |
|
| 758 | + | 🗡 dagger knife |
|
| 759 | + | 🗢 lips |
|
| 760 | + | 🗣 speaking head in silhouette |
|
| 761 | + | 🗤 three rays above |
|
| 762 | + | 🗥 three rays below |
|
| 763 | + | 🗦 three rays left |
|
| 764 | + | 🗧 three rays right |
|
| 765 | + | 🗨 left speech bubble |
|
| 766 | + | 🗩 right speech bubble |
|
| 767 | + | 🗪 two speech bubbles |
|
| 768 | + | 🗫 three speech bubbles |
|
| 769 | + | 🗬 left thought bubble |
|
| 770 | + | 🗭 right thought bubble |
|
| 771 | + | 🗮 left anger bubble |
|
| 772 | + | 🗯 right anger bubble |
|
| 773 | + | 🗰 mood bubble |
|
| 774 | + | 🗱 lightning mood bubble |
|
| 775 | + | 🗲 lightning mood |
|
| 776 | + | 🗳 ballot box with ballot |
|
| 777 | + | 🗴 ballot script x |
|
| 778 | + | 🗵 ballot box with script x |
|
| 779 | + | 🗶 ballot bold script x |
|
| 780 | + | 🗷 ballot box with bold script x |
|
| 781 | + | 🗸 light check mark |
|
| 782 | + | 🗹 ballot box with bold check |
|
| 783 | + | 🗺 world map |
|
| 784 | + | 🗻 mount fuji |
|
| 785 | + | 🗼 tokyo tower |
|
| 786 | + | 🗽 statue of liberty |
|
| 787 | + | 🗾 silhouette of japan |
|
| 788 | + | 🗿 moyai |
|
| 789 | + | 😀 grinning face |
|
| 790 | + | 😁 grinning face with smiling eyes |
|
| 791 | + | 😂 face with tears of joy |
|
| 792 | + | 😃 smiling face with open mouth |
|
| 793 | + | 😄 smiling face with open mouth and smiling eyes |
|
| 794 | + | 😅 smiling face with open mouth and cold sweat |
|
| 795 | + | 😆 smiling face with open mouth and tightly-closed eyes |
|
| 796 | + | 😇 smiling face with halo |
|
| 797 | + | 😈 smiling face with horns |
|
| 798 | + | 😉 winking face |
|
| 799 | + | 😊 smiling face with smiling eyes |
|
| 800 | + | 😋 face savouring delicious food |
|
| 801 | + | 😌 relieved face |
|
| 802 | + | 😍 smiling face with heart-shaped eyes |
|
| 803 | + | 😎 smiling face with sunglasses |
|
| 804 | + | 😏 smirking face |
|
| 805 | + | 😐 neutral face |
|
| 806 | + | 😑 expressionless face |
|
| 807 | + | 😒 unamused face |
|
| 808 | + | 😓 face with cold sweat |
|
| 809 | + | 😔 pensive face |
|
| 810 | + | 😕 confused face |
|
| 811 | + | 😖 confounded face |
|
| 812 | + | 😗 kissing face |
|
| 813 | + | 😘 face throwing a kiss |
|
| 814 | + | 😙 kissing face with smiling eyes |
|
| 815 | + | 😚 kissing face with closed eyes |
|
| 816 | + | 😛 face with stuck-out tongue |
|
| 817 | + | 😜 face with stuck-out tongue and winking eye |
|
| 818 | + | 😝 face with stuck-out tongue and tightly-closed eyes |
|
| 819 | + | 😞 disappointed face |
|
| 820 | + | 😟 worried face |
|
| 821 | + | 😠 angry face |
|
| 822 | + | 😡 pouting face |
|
| 823 | + | 😢 crying face |
|
| 824 | + | 😣 persevering face |
|
| 825 | + | 😤 face with look of triumph |
|
| 826 | + | 😥 disappointed but relieved face |
|
| 827 | + | 😦 frowning face with open mouth |
|
| 828 | + | 😧 anguished face |
|
| 829 | + | 😨 fearful face |
|
| 830 | + | 😩 weary face |
|
| 831 | + | 😪 sleepy face |
|
| 832 | + | 😫 tired face |
|
| 833 | + | 😬 grimacing face |
|
| 834 | + | 😭 loudly crying face |
|
| 835 | + | 😮 face with open mouth |
|
| 836 | + | 😯 hushed face |
|
| 837 | + | 😰 face with open mouth and cold sweat |
|
| 838 | + | 😱 face screaming in fear |
|
| 839 | + | 😲 astonished face |
|
| 840 | + | 😳 flushed face |
|
| 841 | + | 😴 sleeping face |
|
| 842 | + | 😵 dizzy face |
|
| 843 | + | 😶 face without mouth |
|
| 844 | + | 😷 face with medical mask |
|
| 845 | + | 😸 grinning cat face with smiling eyes |
|
| 846 | + | 😹 cat face with tears of joy |
|
| 847 | + | 😺 smiling cat face with open mouth |
|
| 848 | + | 😻 smiling cat face with heart-shaped eyes |
|
| 849 | + | 😼 cat face with wry smile |
|
| 850 | + | 😽 kissing cat face with closed eyes |
|
| 851 | + | 😾 pouting cat face |
|
| 852 | + | 😿 crying cat face |
|
| 853 | + | 🙀 weary cat face |
|
| 854 | + | 🙁 slightly frowning face |
|
| 855 | + | 🙂 slightly smiling face |
|
| 856 | + | 🙃 upside-down face |
|
| 857 | + | 🙄 face with rolling eyes |
|
| 858 | + | 🙅 face with no good gesture |
|
| 859 | + | 🙆 face with ok gesture |
|
| 860 | + | 🙇 person bowing deeply |
|
| 861 | + | 🙈 see-no-evil monkey |
|
| 862 | + | 🙉 hear-no-evil monkey |
|
| 863 | + | 🙊 speak-no-evil monkey |
|
| 864 | + | 🙋 happy person raising one hand |
|
| 865 | + | 🙌 person raising both hands in celebration |
|
| 866 | + | 🙍 person frowning |
|
| 867 | + | 🙎 person with pouting face |
|
| 868 | + | 🙏 person with folded hands |
|
| 869 | + | 🚀 rocket |
|
| 870 | + | 🚁 helicopter |
|
| 871 | + | 🚂 steam locomotive |
|
| 872 | + | 🚃 railway car |
|
| 873 | + | 🚄 high-speed train |
|
| 874 | + | 🚅 high-speed train with bullet nose |
|
| 875 | + | 🚆 train |
|
| 876 | + | 🚇 metro |
|
| 877 | + | 🚈 light rail |
|
| 878 | + | 🚉 station |
|
| 879 | + | 🚊 tram |
|
| 880 | + | 🚋 tram car |
|
| 881 | + | 🚌 bus |
|
| 882 | + | 🚍 oncoming bus |
|
| 883 | + | 🚎 trolleybus |
|
| 884 | + | 🚏 bus stop |
|
| 885 | + | 🚐 minibus |
|
| 886 | + | 🚑 ambulance |
|
| 887 | + | 🚒 fire engine |
|
| 888 | + | 🚓 police car |
|
| 889 | + | 🚔 oncoming police car |
|
| 890 | + | 🚕 taxi |
|
| 891 | + | 🚖 oncoming taxi |
|
| 892 | + | 🚗 automobile |
|
| 893 | + | 🚘 oncoming automobile |
|
| 894 | + | 🚙 recreational vehicle |
|
| 895 | + | 🚚 delivery truck |
|
| 896 | + | 🚛 articulated lorry |
|
| 897 | + | 🚜 tractor |
|
| 898 | + | 🚝 monorail |
|
| 899 | + | 🚞 mountain railway |
|
| 900 | + | 🚟 suspension railway |
|
| 901 | + | 🚠 mountain cableway |
|
| 902 | + | 🚡 aerial tramway |
|
| 903 | + | 🚢 ship |
|
| 904 | + | 🚣 rowboat |
|
| 905 | + | 🚤 speedboat |
|
| 906 | + | 🚥 horizontal traffic light |
|
| 907 | + | 🚦 vertical traffic light |
|
| 908 | + | 🚧 construction sign |
|
| 909 | + | 🚨 police cars revolving light |
|
| 910 | + | 🚩 triangular flag on post |
|
| 911 | + | 🚪 door |
|
| 912 | + | 🚫 no entry sign |
|
| 913 | + | 🚬 smoking symbol |
|
| 914 | + | 🚭 no smoking symbol |
|
| 915 | + | 🚮 put litter in its place symbol |
|
| 916 | + | 🚯 do not litter symbol |
|
| 917 | + | 🚰 potable water symbol |
|
| 918 | + | 🚱 non-potable water symbol |
|
| 919 | + | 🚲 bicycle |
|
| 920 | + | 🚳 no bicycles |
|
| 921 | + | 🚴 bicyclist |
|
| 922 | + | 🚵 mountain bicyclist |
|
| 923 | + | 🚶 pedestrian |
|
| 924 | + | 🚷 no pedestrians |
|
| 925 | + | 🚸 children crossing |
|
| 926 | + | 🚹 mens symbol |
|
| 927 | + | 🚺 womens symbol |
|
| 928 | + | 🚻 restroom |
|
| 929 | + | 🚼 baby symbol |
|
| 930 | + | 🚽 toilet |
|
| 931 | + | 🚾 water closet |
|
| 932 | + | 🚿 shower |
|
| 933 | + | 🛀 bath |
|
| 934 | + | 🛁 bathtub |
|
| 935 | + | 🛂 passport control |
|
| 936 | + | 🛃 customs |
|
| 937 | + | 🛄 baggage claim |
|
| 938 | + | 🛅 left luggage |
|
| 939 | + | 🛆 triangle with rounded corners |
|
| 940 | + | 🛇 prohibited sign |
|
| 941 | + | 🛈 circled information source |
|
| 942 | + | 🛉 boys symbol |
|
| 943 | + | 🛊 girls symbol |
|
| 944 | + | 🛋 couch and lamp |
|
| 945 | + | 🛌 sleeping accommodation |
|
| 946 | + | 🛍 shopping bags |
|
| 947 | + | 🛎 bellhop bell |
|
| 948 | + | 🛏 bed |
|
| 949 | + | 🛐 place of worship |
|
| 950 | + | 🛑 octagonal sign |
|
| 951 | + | 🛒 shopping trolley |
|
| 952 | + | 🛓 stupa |
|
| 953 | + | 🛔 pagoda |
|
| 954 | + | 🛕 hindu temple |
|
| 955 | + | 🛖 hut |
|
| 956 | + | 🛗 elevator |
|
| 957 | + | 🛜 wireless |
|
| 958 | + | 🛝 playground slide |
|
| 959 | + | 🛞 wheel |
|
| 960 | + | 🛟 ring buoy |
|
| 961 | + | 🛠 hammer and wrench |
|
| 962 | + | 🛡 shield |
|
| 963 | + | 🛢 oil drum |
|
| 964 | + | 🛣 motorway |
|
| 965 | + | 🛤 railway track |
|
| 966 | + | 🛥 motor boat |
|
| 967 | + | 🛦 up-pointing military airplane |
|
| 968 | + | 🛧 up-pointing airplane |
|
| 969 | + | 🛨 up-pointing small airplane |
|
| 970 | + | 🛩 small airplane |
|
| 971 | + | 🛪 northeast-pointing airplane |
|
| 972 | + | 🛫 airplane departure |
|
| 973 | + | 🛬 airplane arriving |
|
| 974 | + | 🛰 satellite |
|
| 975 | + | 🛱 oncoming fire engine |
|
| 976 | + | 🛲 diesel locomotive |
|
| 977 | + | 🛳 passenger ship |
|
| 978 | + | 🛴 scooter |
|
| 979 | + | 🛵 motor scooter |
|
| 980 | + | 🛶 canoe |
|
| 981 | + | 🛷 sled |
|
| 982 | + | 🛸 flying saucer |
|
| 983 | + | 🛹 skateboard |
|
| 984 | + | 🛺 auto rickshaw |
|
| 985 | + | 🛻 pickup truck |
|
| 986 | + | 🛼 roller skate |
|
| 987 | + | 🤀 circled cross formee with four dots |
|
| 988 | + | 🤁 circled cross formee with two dots |
|
| 989 | + | 🤂 circled cross formee |
|
| 990 | + | 🤃 left half circle with four dots |
|
| 991 | + | 🤄 left half circle with three dots |
|
| 992 | + | 🤅 left half circle with two dots |
|
| 993 | + | 🤆 left half circle with dot |
|
| 994 | + | 🤇 left half circle |
|
| 995 | + | 🤈 downward facing hook |
|
| 996 | + | 🤉 downward facing notched hook |
|
| 997 | + | 🤊 downward facing hook with dot |
|
| 998 | + | 🤋 downward facing notched hook with dot |
|
| 999 | + | 🤌 pinched fingers |
|
| 1000 | + | 🤍 white heart |
|
| 1001 | + | 🤎 brown heart |
|
| 1002 | + | 🤏 pinching hand |
|
| 1003 | + | 🤐 zipper-mouth face |
|
| 1004 | + | 🤑 money-mouth face |
|
| 1005 | + | 🤒 face with thermometer |
|
| 1006 | + | 🤓 nerd face |
|
| 1007 | + | 🤔 thinking face |
|
| 1008 | + | 🤕 face with head-bandage |
|
| 1009 | + | 🤖 robot face |
|
| 1010 | + | 🤗 hugging face |
|
| 1011 | + | 🤘 sign of the horns |
|
| 1012 | + | 🤙 call me hand |
|
| 1013 | + | 🤚 raised back of hand |
|
| 1014 | + | 🤛 left-facing fist |
|
| 1015 | + | 🤜 right-facing fist |
|
| 1016 | + | 🤝 handshake |
|
| 1017 | + | 🤞 hand with index and middle fingers crossed |
|
| 1018 | + | 🤟 i love you hand sign |
|
| 1019 | + | 🤠 face with cowboy hat |
|
| 1020 | + | 🤡 clown face |
|
| 1021 | + | 🤢 nauseated face |
|
| 1022 | + | 🤣 rolling on the floor laughing |
|
| 1023 | + | 🤤 drooling face |
|
| 1024 | + | 🤥 lying face |
|
| 1025 | + | 🤦 face palm |
|
| 1026 | + | 🤧 sneezing face |
|
| 1027 | + | 🤨 face with one eyebrow raised |
|
| 1028 | + | 🤩 grinning face with star eyes |
|
| 1029 | + | 🤪 grinning face with one large and one small eye |
|
| 1030 | + | 🤫 face with finger covering closed lips |
|
| 1031 | + | 🤬 serious face with symbols covering mouth |
|
| 1032 | + | 🤭 smiling face with smiling eyes and hand covering mouth |
|
| 1033 | + | 🤮 face with open mouth vomiting |
|
| 1034 | + | 🤯 shocked face with exploding head |
|
| 1035 | + | 🤰 pregnant woman |
|
| 1036 | + | 🤱 breast-feeding |
|
| 1037 | + | 🤲 palms up together |
|
| 1038 | + | 🤳 selfie |
|
| 1039 | + | 🤴 prince |
|
| 1040 | + | 🤵 man in tuxedo |
|
| 1041 | + | 🤶 mother christmas |
|
| 1042 | + | 🤷 shrug |
|
| 1043 | + | 🤸 person doing cartwheel |
|
| 1044 | + | 🤹 juggling |
|
| 1045 | + | 🤺 fencer |
|
| 1046 | + | 🤻 modern pentathlon |
|
| 1047 | + | 🤼 wrestlers |
|
| 1048 | + | 🤽 water polo |
|
| 1049 | + | 🤾 handball |
|
| 1050 | + | 🤿 diving mask |
|
| 1051 | + | 🥀 wilted flower |
|
| 1052 | + | 🥁 drum with drumsticks |
|
| 1053 | + | 🥂 clinking glasses |
|
| 1054 | + | 🥃 tumbler glass |
|
| 1055 | + | 🥄 spoon |
|
| 1056 | + | 🥅 goal net |
|
| 1057 | + | 🥆 rifle |
|
| 1058 | + | 🥇 first place medal |
|
| 1059 | + | 🥈 second place medal |
|
| 1060 | + | 🥉 third place medal |
|
| 1061 | + | 🥊 boxing glove |
|
| 1062 | + | 🥋 martial arts uniform |
|
| 1063 | + | 🥌 curling stone |
|
| 1064 | + | 🥍 lacrosse stick and ball |
|
| 1065 | + | 🥎 softball |
|
| 1066 | + | 🥏 flying disc |
|
| 1067 | + | 🥐 croissant |
|
| 1068 | + | 🥑 avocado |
|
| 1069 | + | 🥒 cucumber |
|
| 1070 | + | 🥓 bacon |
|
| 1071 | + | 🥔 potato |
|
| 1072 | + | 🥕 carrot |
|
| 1073 | + | 🥖 baguette bread |
|
| 1074 | + | 🥗 green salad |
|
| 1075 | + | 🥘 shallow pan of food |
|
| 1076 | + | 🥙 stuffed flatbread |
|
| 1077 | + | 🥚 egg |
|
| 1078 | + | 🥛 glass of milk |
|
| 1079 | + | 🥜 peanuts |
|
| 1080 | + | 🥝 kiwifruit |
|
| 1081 | + | 🥞 pancakes |
|
| 1082 | + | 🥟 dumpling |
|
| 1083 | + | 🥠 fortune cookie |
|
| 1084 | + | 🥡 takeout box |
|
| 1085 | + | 🥢 chopsticks |
|
| 1086 | + | 🥣 bowl with spoon |
|
| 1087 | + | 🥤 cup with straw |
|
| 1088 | + | 🥥 coconut |
|
| 1089 | + | 🥦 broccoli |
|
| 1090 | + | 🥧 pie |
|
| 1091 | + | 🥨 pretzel |
|
| 1092 | + | 🥩 cut of meat |
|
| 1093 | + | 🥪 sandwich |
|
| 1094 | + | 🥫 canned food |
|
| 1095 | + | 🥬 leafy green |
|
| 1096 | + | 🥭 mango |
|
| 1097 | + | 🥮 moon cake |
|
| 1098 | + | 🥯 bagel |
|
| 1099 | + | 🥰 smiling face with smiling eyes and three hearts |
|
| 1100 | + | 🥱 yawning face |
|
| 1101 | + | 🥲 smiling face with tear |
|
| 1102 | + | 🥳 face with party horn and party hat |
|
| 1103 | + | 🥴 face with uneven eyes and wavy mouth |
|
| 1104 | + | 🥵 overheated face |
|
| 1105 | + | 🥶 freezing face |
|
| 1106 | + | 🥷 ninja |
|
| 1107 | + | 🥸 disguised face |
|
| 1108 | + | 🥹 face holding back tears |
|
| 1109 | + | 🥺 face with pleading eyes |
|
| 1110 | + | 🥻 sari |
|
| 1111 | + | 🥼 lab coat |
|
| 1112 | + | 🥽 goggles |
|
| 1113 | + | 🥾 hiking boot |
|
| 1114 | + | 🥿 flat shoe |
|
| 1115 | + | 🦀 crab |
|
| 1116 | + | 🦁 lion face |
|
| 1117 | + | 🦂 scorpion |
|
| 1118 | + | 🦃 turkey |
|
| 1119 | + | 🦄 unicorn face |
|
| 1120 | + | 🦅 eagle |
|
| 1121 | + | 🦆 duck |
|
| 1122 | + | 🦇 bat |
|
| 1123 | + | 🦈 shark |
|
| 1124 | + | 🦉 owl |
|
| 1125 | + | 🦊 fox face |
|
| 1126 | + | 🦋 butterfly |
|
| 1127 | + | 🦌 deer |
|
| 1128 | + | 🦍 gorilla |
|
| 1129 | + | 🦎 lizard |
|
| 1130 | + | 🦏 rhinoceros |
|
| 1131 | + | 🦐 shrimp |
|
| 1132 | + | 🦑 squid |
|
| 1133 | + | 🦒 giraffe face |
|
| 1134 | + | 🦓 zebra face |
|
| 1135 | + | 🦔 hedgehog |
|
| 1136 | + | 🦕 sauropod |
|
| 1137 | + | 🦖 t-rex |
|
| 1138 | + | 🦗 cricket |
|
| 1139 | + | 🦘 kangaroo |
|
| 1140 | + | 🦙 llama |
|
| 1141 | + | 🦚 peacock |
|
| 1142 | + | 🦛 hippopotamus |
|
| 1143 | + | 🦜 parrot |
|
| 1144 | + | 🦝 raccoon |
|
| 1145 | + | 🦞 lobster |
|
| 1146 | + | 🦟 mosquito |
|
| 1147 | + | 🦠 microbe |
|
| 1148 | + | 🦡 badger |
|
| 1149 | + | 🦢 swan |
|
| 1150 | + | 🦣 mammoth |
|
| 1151 | + | 🦤 dodo |
|
| 1152 | + | 🦥 sloth |
|
| 1153 | + | 🦦 otter |
|
| 1154 | + | 🦧 orangutan |
|
| 1155 | + | 🦨 skunk |
|
| 1156 | + | 🦩 flamingo |
|
| 1157 | + | 🦪 oyster |
|
| 1158 | + | 🦫 beaver |
|
| 1159 | + | 🦬 bison |
|
| 1160 | + | 🦭 seal |
|
| 1161 | + | 🦮 guide dog |
|
| 1162 | + | 🦯 probing cane |
|
| 1163 | + | 🦰 emoji component red hair |
|
| 1164 | + | 🦱 emoji component curly hair |
|
| 1165 | + | 🦲 emoji component bald |
|
| 1166 | + | 🦳 emoji component white hair |
|
| 1167 | + | 🦴 bone |
|
| 1168 | + | 🦵 leg |
|
| 1169 | + | 🦶 foot |
|
| 1170 | + | 🦷 tooth |
|
| 1171 | + | 🦸 superhero |
|
| 1172 | + | 🦹 supervillain |
|
| 1173 | + | 🦺 safety vest |
|
| 1174 | + | 🦻 ear with hearing aid |
|
| 1175 | + | 🦼 motorized wheelchair |
|
| 1176 | + | 🦽 manual wheelchair |
|
| 1177 | + | 🦾 mechanical arm |
|
| 1178 | + | 🦿 mechanical leg |
|
| 1179 | + | 🧀 cheese wedge |
|
| 1180 | + | 🧁 cupcake |
|
| 1181 | + | 🧂 salt shaker |
|
| 1182 | + | 🧃 beverage box |
|
| 1183 | + | 🧄 garlic |
|
| 1184 | + | 🧅 onion |
|
| 1185 | + | 🧆 falafel |
|
| 1186 | + | 🧇 waffle |
|
| 1187 | + | 🧈 butter |
|
| 1188 | + | 🧉 mate drink |
|
| 1189 | + | 🧊 ice cube |
|
| 1190 | + | 🧋 bubble tea |
|
| 1191 | + | 🧌 troll |
|
| 1192 | + | 🧍 standing person |
|
| 1193 | + | 🧎 kneeling person |
|
| 1194 | + | 🧏 deaf person |
|
| 1195 | + | 🧐 face with monocle |
|
| 1196 | + | 🧑 adult |
|
| 1197 | + | 🧒 child |
|
| 1198 | + | 🧓 older adult |
|
| 1199 | + | 🧔 bearded person |
|
| 1200 | + | 🧕 person with headscarf |
|
| 1201 | + | 🧖 person in steamy room |
|
| 1202 | + | 🧗 person climbing |
|
| 1203 | + | 🧘 person in lotus position |
|
| 1204 | + | 🧙 mage |
|
| 1205 | + | 🧚 fairy |
|
| 1206 | + | 🧛 vampire |
|
| 1207 | + | 🧜 merperson |
|
| 1208 | + | 🧝 elf |
|
| 1209 | + | 🧞 genie |
|
| 1210 | + | 🧟 zombie |
|
| 1211 | + | 🧠 brain |
|
| 1212 | + | 🧡 orange heart |
|
| 1213 | + | 🧢 billed cap |
|
| 1214 | + | 🧣 scarf |
|
| 1215 | + | 🧤 gloves |
|
| 1216 | + | 🧥 coat |
|
| 1217 | + | 🧦 socks |
|
| 1218 | + | 🧧 red gift envelope |
|
| 1219 | + | 🧨 firecracker |
|
| 1220 | + | 🧩 jigsaw puzzle piece |
|
| 1221 | + | 🧪 test tube |
|
| 1222 | + | 🧫 petri dish |
|
| 1223 | + | 🧬 dna double helix |
|
| 1224 | + | 🧭 compass |
|
| 1225 | + | 🧮 abacus |
|
| 1226 | + | 🧯 fire extinguisher |
|
| 1227 | + | 🧰 toolbox |
|
| 1228 | + | 🧱 brick |
|
| 1229 | + | 🧲 magnet |
|
| 1230 | + | 🧳 luggage |
|
| 1231 | + | 🧴 lotion bottle |
|
| 1232 | + | 🧵 spool of thread |
|
| 1233 | + | 🧶 ball of yarn |
|
| 1234 | + | 🧷 safety pin |
|
| 1235 | + | 🧸 teddy bear |
|
| 1236 | + | 🧹 broom |
|
| 1237 | + | 🧺 basket |
|
| 1238 | + | 🧻 roll of paper |
|
| 1239 | + | 🧼 bar of soap |
|
| 1240 | + | 🧽 sponge |
|
| 1241 | + | 🧾 receipt |
|
| 1242 | + | 🧿 nazar amulet |
|
| 1243 | + | 🩰 ballet shoes |
|
| 1244 | + | 🩱 one-piece swimsuit |
|
| 1245 | + | 🩲 briefs |
|
| 1246 | + | 🩳 shorts |
|
| 1247 | + | 🩴 thong sandal |
|
| 1248 | + | 🩵 light blue heart |
|
| 1249 | + | 🩶 grey heart |
|
| 1250 | + | 🩷 pink heart |
|
| 1251 | + | 🩸 drop of blood |
|
| 1252 | + | 🩹 adhesive bandage |
|
| 1253 | + | 🩺 stethoscope |
|
| 1254 | + | 🩻 x-ray |
|
| 1255 | + | 🩼 crutch |
|
| 1256 | + | 🪀 yo-yo |
|
| 1257 | + | 🪁 kite |
|
| 1258 | + | 🪂 parachute |
|
| 1259 | + | 🪃 boomerang |
|
| 1260 | + | 🪄 magic wand |
|
| 1261 | + | 🪅 pinata |
|
| 1262 | + | 🪆 nesting dolls |
|
| 1263 | + | 🪇 maracas |
|
| 1264 | + | 🪈 flute |
|
| 1265 | + | harp |
|
| 1266 | + | shovel |
|
| 1267 | + | 🪐 ringed planet |
|
| 1268 | + | 🪑 chair |
|
| 1269 | + | 🪒 razor |
|
| 1270 | + | 🪓 axe |
|
| 1271 | + | 🪔 diya lamp |
|
| 1272 | + | 🪕 banjo |
|
| 1273 | + | 🪖 military helmet |
|
| 1274 | + | 🪗 accordion |
|
| 1275 | + | 🪘 long drum |
|
| 1276 | + | 🪙 coin |
|
| 1277 | + | 🪚 carpentry saw |
|
| 1278 | + | 🪛 screwdriver |
|
| 1279 | + | 🪜 ladder |
|
| 1280 | + | 🪝 hook |
|
| 1281 | + | 🪞 mirror |
|
| 1282 | + | 🪟 window |
|
| 1283 | + | 🪠 plunger |
|
| 1284 | + | 🪡 sewing needle |
|
| 1285 | + | 🪢 knot |
|
| 1286 | + | 🪣 bucket |
|
| 1287 | + | 🪤 mouse trap |
|
| 1288 | + | 🪥 toothbrush |
|
| 1289 | + | 🪦 headstone |
|
| 1290 | + | 🪧 placard |
|
| 1291 | + | 🪨 rock |
|
| 1292 | + | 🪩 mirror ball |
|
| 1293 | + | 🪪 identification card |
|
| 1294 | + | 🪫 low battery |
|
| 1295 | + | 🪬 hamsa |
|
| 1296 | + | 🪭 folding hand fan |
|
| 1297 | + | 🪮 hair pick |
|
| 1298 | + | 🪯 khanda |
|
| 1299 | + | 🪰 fly |
|
| 1300 | + | 🪱 worm |
|
| 1301 | + | 🪲 beetle |
|
| 1302 | + | 🪳 cockroach |
|
| 1303 | + | 🪴 potted plant |
|
| 1304 | + | 🪵 wood |
|
| 1305 | + | 🪶 feather |
|
| 1306 | + | 🪷 lotus |
|
| 1307 | + | 🪸 coral |
|
| 1308 | + | 🪹 empty nest |
|
| 1309 | + | 🪺 nest with eggs |
|
| 1310 | + | 🪻 hyacinth |
|
| 1311 | + | 🪼 jellyfish |
|
| 1312 | + | 🪽 wing |
|
| 1313 | + | leafless tree |
|
| 1314 | + | 🪿 goose |
|
| 1315 | + | 🫀 anatomical heart |
|
| 1316 | + | 🫁 lungs |
|
| 1317 | + | 🫂 people hugging |
|
| 1318 | + | 🫃 pregnant man |
|
| 1319 | + | 🫄 pregnant person |
|
| 1320 | + | 🫅 person with crown |
|
| 1321 | + | fingerprint |
|
| 1322 | + | 🫎 moose |
|
| 1323 | + | 🫏 donkey |
|
| 1324 | + | 🫐 blueberries |
|
| 1325 | + | 🫑 bell pepper |
|
| 1326 | + | 🫒 olive |
|
| 1327 | + | 🫓 flatbread |
|
| 1328 | + | 🫔 tamale |
|
| 1329 | + | 🫕 fondue |
|
| 1330 | + | 🫖 teapot |
|
| 1331 | + | 🫗 pouring liquid |
|
| 1332 | + | 🫘 beans |
|
| 1333 | + | 🫙 jar |
|
| 1334 | + | 🫚 ginger root |
|
| 1335 | + | 🫛 pea pod |
|
| 1336 | + | root vegetable |
|
| 1337 | + | splatter |
|
| 1338 | + | 🫠 melting face |
|
| 1339 | + | 🫡 saluting face |
|
| 1340 | + | 🫢 face with open eyes and hand over mouth |
|
| 1341 | + | 🫣 face with peeking eye |
|
| 1342 | + | 🫤 face with diagonal mouth |
|
| 1343 | + | 🫥 dotted line face |
|
| 1344 | + | 🫦 biting lip |
|
| 1345 | + | 🫧 bubbles |
|
| 1346 | + | 🫨 shaking face |
|
| 1347 | + | face with bags under eyes |
|
| 1348 | + | 🫰 hand with index finger and thumb crossed |
|
| 1349 | + | 🫱 rightwards hand |
|
| 1350 | + | 🫲 leftwards hand |
|
| 1351 | + | 🫳 palm down hand |
|
| 1352 | + | 🫴 palm up hand |
|
| 1353 | + | 🫵 index pointing at the viewer |
|
| 1354 | + | 🫶 heart hands |
|
| 1355 | + | 🫷 leftwards pushing hand |
|
| 1356 | + | 🫸 rightwards pushing hand |
|
| 1357 | + | 🇦 regional indicator symbol letter a |
|
| 1358 | + | 🇧 regional indicator symbol letter b |
|
| 1359 | + | 🇨 regional indicator symbol letter c |
|
| 1360 | + | 🇩 regional indicator symbol letter d |
|
| 1361 | + | 🇪 regional indicator symbol letter e |
|
| 1362 | + | 🇫 regional indicator symbol letter f |
|
| 1363 | + | 🇬 regional indicator symbol letter g |
|
| 1364 | + | 🇭 regional indicator symbol letter h |
|
| 1365 | + | 🇮 regional indicator symbol letter i |
|
| 1366 | + | 🇯 regional indicator symbol letter j |
|
| 1367 | + | 🇰 regional indicator symbol letter k |
|
| 1368 | + | 🇱 regional indicator symbol letter l |
|
| 1369 | + | 🇲 regional indicator symbol letter m |
|
| 1370 | + | 🇳 regional indicator symbol letter n |
|
| 1371 | + | 🇴 regional indicator symbol letter o |
|
| 1372 | + | 🇵 regional indicator symbol letter p |
|
| 1373 | + | 🇶 regional indicator symbol letter q |
|
| 1374 | + | 🇷 regional indicator symbol letter r |
|
| 1375 | + | 🇸 regional indicator symbol letter s |
|
| 1376 | + | 🇹 regional indicator symbol letter t |
|
| 1377 | + | 🇺 regional indicator symbol letter u |
|
| 1378 | + | 🇻 regional indicator symbol letter v |
|
| 1379 | + | 🇼 regional indicator symbol letter w |
|
| 1380 | + | 🇽 regional indicator symbol letter x |
|
| 1381 | + | 🇾 regional indicator symbol letter y |
|
| 1382 | + | 🇿 regional indicator symbol letter z |
|
| 1383 | + | ☀ black sun with rays |
|
| 1384 | + | ☁ cloud |
|
| 1385 | + | ☂ umbrella |
|
| 1386 | + | ☃ snowman |
|
| 1387 | + | ☄ comet |
|
| 1388 | + | ★ black star |
|
| 1389 | + | ☆ white star |
|
| 1390 | + | ☇ lightning |
|
| 1391 | + | ☈ thunderstorm |
|
| 1392 | + | ☉ sun |
|
| 1393 | + | ☊ ascending node |
|
| 1394 | + | ☋ descending node |
|
| 1395 | + | ☌ conjunction |
|
| 1396 | + | ☍ opposition |
|
| 1397 | + | ☎ black telephone |
|
| 1398 | + | ☏ white telephone |
|
| 1399 | + | ☐ ballot box |
|
| 1400 | + | ☑ ballot box with check |
|
| 1401 | + | ☒ ballot box with x |
|
| 1402 | + | ☓ saltire |
|
| 1403 | + | ☔ umbrella with rain drops |
|
| 1404 | + | ☕ hot beverage |
|
| 1405 | + | ☖ white shogi piece |
|
| 1406 | + | ☗ black shogi piece |
|
| 1407 | + | ☘ shamrock |
|
| 1408 | + | ☙ reversed rotated floral heart bullet |
|
| 1409 | + | ☚ black left pointing index |
|
| 1410 | + | ☛ black right pointing index |
|
| 1411 | + | ☜ white left pointing index |
|
| 1412 | + | ☝ white up pointing index |
|
| 1413 | + | ☞ white right pointing index |
|
| 1414 | + | ☟ white down pointing index |
|
| 1415 | + | ☠ skull and crossbones |
|
| 1416 | + | ☡ caution sign |
|
| 1417 | + | ☢ radioactive sign |
|
| 1418 | + | ☣ biohazard sign |
|
| 1419 | + | ☤ caduceus |
|
| 1420 | + | ☥ ankh |
|
| 1421 | + | ☦ orthodox cross |
|
| 1422 | + | ☧ chi rho |
|
| 1423 | + | ☨ cross of lorraine |
|
| 1424 | + | ☩ cross of jerusalem |
|
| 1425 | + | ☪ star and crescent |
|
| 1426 | + | ☫ farsi symbol |
|
| 1427 | + | ☬ adi shakti |
|
| 1428 | + | ☭ hammer and sickle |
|
| 1429 | + | ☮ peace symbol |
|
| 1430 | + | ☯ yin yang |
|
| 1431 | + | ☰ trigram for heaven |
|
| 1432 | + | ☱ trigram for lake |
|
| 1433 | + | ☲ trigram for fire |
|
| 1434 | + | ☳ trigram for thunder |
|
| 1435 | + | ☴ trigram for wind |
|
| 1436 | + | ☵ trigram for water |
|
| 1437 | + | ☶ trigram for mountain |
|
| 1438 | + | ☷ trigram for earth |
|
| 1439 | + | ☸ wheel of dharma |
|
| 1440 | + | ☹ white frowning face |
|
| 1441 | + | ☺ white smiling face |
|
| 1442 | + | ☻ black smiling face |
|
| 1443 | + | ☼ white sun with rays |
|
| 1444 | + | ☽ first quarter moon |
|
| 1445 | + | ☾ last quarter moon |
|
| 1446 | + | ☿ mercury |
|
| 1447 | + | ♀ female sign |
|
| 1448 | + | ♁ earth |
|
| 1449 | + | ♂ male sign |
|
| 1450 | + | ♃ jupiter |
|
| 1451 | + | ♄ saturn |
|
| 1452 | + | ♅ uranus |
|
| 1453 | + | ♆ neptune |
|
| 1454 | + | ♇ pluto |
|
| 1455 | + | ♈ aries |
|
| 1456 | + | ♉ taurus |
|
| 1457 | + | ♊ gemini |
|
| 1458 | + | ♋ cancer |
|
| 1459 | + | ♌ leo |
|
| 1460 | + | ♍ virgo |
|
| 1461 | + | ♎ libra |
|
| 1462 | + | ♏ scorpius |
|
| 1463 | + | ♐ sagittarius |
|
| 1464 | + | ♑ capricorn |
|
| 1465 | + | ♒ aquarius |
|
| 1466 | + | ♓ pisces |
|
| 1467 | + | ♔ white chess king |
|
| 1468 | + | ♕ white chess queen |
|
| 1469 | + | ♖ white chess rook |
|
| 1470 | + | ♗ white chess bishop |
|
| 1471 | + | ♘ white chess knight |
|
| 1472 | + | ♙ white chess pawn |
|
| 1473 | + | ♚ black chess king |
|
| 1474 | + | ♛ black chess queen |
|
| 1475 | + | ♜ black chess rook |
|
| 1476 | + | ♝ black chess bishop |
|
| 1477 | + | ♞ black chess knight |
|
| 1478 | + | ♟ black chess pawn |
|
| 1479 | + | ♠ black spade suit |
|
| 1480 | + | ♡ white heart suit |
|
| 1481 | + | ♢ white diamond suit |
|
| 1482 | + | ♣ black club suit |
|
| 1483 | + | ♤ white spade suit |
|
| 1484 | + | ♥ black heart suit |
|
| 1485 | + | ♦ black diamond suit |
|
| 1486 | + | ♧ white club suit |
|
| 1487 | + | ♨ hot springs |
|
| 1488 | + | ♩ quarter note |
|
| 1489 | + | ♪ eighth note |
|
| 1490 | + | ♫ beamed eighth notes |
|
| 1491 | + | ♬ beamed sixteenth notes |
|
| 1492 | + | ♭ music flat sign |
|
| 1493 | + | ♮ music natural sign |
|
| 1494 | + | ♯ music sharp sign |
|
| 1495 | + | ♰ west syriac cross |
|
| 1496 | + | ♱ east syriac cross |
|
| 1497 | + | ♲ universal recycling symbol |
|
| 1498 | + | ♳ recycling symbol for type-1 plastics |
|
| 1499 | + | ♴ recycling symbol for type-2 plastics |
|
| 1500 | + | ♵ recycling symbol for type-3 plastics |
|
| 1501 | + | ♶ recycling symbol for type-4 plastics |
|
| 1502 | + | ♷ recycling symbol for type-5 plastics |
|
| 1503 | + | ♸ recycling symbol for type-6 plastics |
|
| 1504 | + | ♹ recycling symbol for type-7 plastics |
|
| 1505 | + | ♺ recycling symbol for generic materials |
|
| 1506 | + | ♻ black universal recycling symbol |
|
| 1507 | + | ♼ recycled paper symbol |
|
| 1508 | + | ♽ partially-recycled paper symbol |
|
| 1509 | + | ♾ permanent paper sign |
|
| 1510 | + | ♿ wheelchair symbol |
|
| 1511 | + | ⚀ die face-1 |
|
| 1512 | + | ⚁ die face-2 |
|
| 1513 | + | ⚂ die face-3 |
|
| 1514 | + | ⚃ die face-4 |
|
| 1515 | + | ⚄ die face-5 |
|
| 1516 | + | ⚅ die face-6 |
|
| 1517 | + | ⚆ white circle with dot right |
|
| 1518 | + | ⚇ white circle with two dots |
|
| 1519 | + | ⚈ black circle with white dot right |
|
| 1520 | + | ⚉ black circle with two white dots |
|
| 1521 | + | ⚊ monogram for yang |
|
| 1522 | + | ⚋ monogram for yin |
|
| 1523 | + | ⚌ digram for greater yang |
|
| 1524 | + | ⚍ digram for lesser yin |
|
| 1525 | + | ⚎ digram for lesser yang |
|
| 1526 | + | ⚏ digram for greater yin |
|
| 1527 | + | ⚐ white flag |
|
| 1528 | + | ⚑ black flag |
|
| 1529 | + | ⚒ hammer and pick |
|
| 1530 | + | ⚓ anchor |
|
| 1531 | + | ⚔ crossed swords |
|
| 1532 | + | ⚕ staff of aesculapius |
|
| 1533 | + | ⚖ scales |
|
| 1534 | + | ⚗ alembic |
|
| 1535 | + | ⚘ flower |
|
| 1536 | + | ⚙ gear |
|
| 1537 | + | ⚚ staff of hermes |
|
| 1538 | + | ⚛ atom symbol |
|
| 1539 | + | ⚜ fleur-de-lis |
|
| 1540 | + | ⚝ outlined white star |
|
| 1541 | + | ⚞ three lines converging right |
|
| 1542 | + | ⚟ three lines converging left |
|
| 1543 | + | ⚠ warning sign |
|
| 1544 | + | ⚡ high voltage sign |
|
| 1545 | + | ⚢ doubled female sign |
|
| 1546 | + | ⚣ doubled male sign |
|
| 1547 | + | ⚤ interlocked female and male sign |
|
| 1548 | + | ⚥ male and female sign |
|
| 1549 | + | ⚦ male with stroke sign |
|
| 1550 | + | ⚧ male with stroke and male and female sign |
|
| 1551 | + | ⚨ vertical male with stroke sign |
|
| 1552 | + | ⚩ horizontal male with stroke sign |
|
| 1553 | + | ⚪ medium white circle |
|
| 1554 | + | ⚫ medium black circle |
|
| 1555 | + | ⚬ medium small white circle |
|
| 1556 | + | ⚭ marriage symbol |
|
| 1557 | + | ⚮ divorce symbol |
|
| 1558 | + | ⚯ unmarried partnership symbol |
|
| 1559 | + | ⚰ coffin |
|
| 1560 | + | ⚱ funeral urn |
|
| 1561 | + | ⚲ neuter |
|
| 1562 | + | ⚳ ceres |
|
| 1563 | + | ⚴ pallas |
|
| 1564 | + | ⚵ juno |
|
| 1565 | + | ⚶ vesta |
|
| 1566 | + | ⚷ chiron |
|
| 1567 | + | ⚸ black moon lilith |
|
| 1568 | + | ⚹ sextile |
|
| 1569 | + | ⚺ semisextile |
|
| 1570 | + | ⚻ quincunx |
|
| 1571 | + | ⚼ sesquiquadrate |
|
| 1572 | + | ⚽ soccer ball |
|
| 1573 | + | ⚾ baseball |
|
| 1574 | + | ⚿ squared key |
|
| 1575 | + | ⛀ white draughts man |
|
| 1576 | + | ⛁ white draughts king |
|
| 1577 | + | ⛂ black draughts man |
|
| 1578 | + | ⛃ black draughts king |
|
| 1579 | + | ⛄ snowman without snow |
|
| 1580 | + | ⛅ sun behind cloud |
|
| 1581 | + | ⛆ rain |
|
| 1582 | + | ⛇ black snowman |
|
| 1583 | + | ⛈ thunder cloud and rain |
|
| 1584 | + | ⛉ turned white shogi piece |
|
| 1585 | + | ⛊ turned black shogi piece |
|
| 1586 | + | ⛋ white diamond in square |
|
| 1587 | + | ⛌ crossing lanes |
|
| 1588 | + | ⛍ disabled car |
|
| 1589 | + | ⛎ ophiuchus |
|
| 1590 | + | ⛏ pick |
|
| 1591 | + | ⛐ car sliding |
|
| 1592 | + | ⛑ helmet with white cross |
|
| 1593 | + | ⛒ circled crossing lanes |
|
| 1594 | + | ⛓ chains |
|
| 1595 | + | ⛔ no entry |
|
| 1596 | + | ⛕ alternate one-way left way traffic |
|
| 1597 | + | ⛖ black two-way left way traffic |
|
| 1598 | + | ⛗ white two-way left way traffic |
|
| 1599 | + | ⛘ black left lane merge |
|
| 1600 | + | ⛙ white left lane merge |
|
| 1601 | + | ⛚ drive slow sign |
|
| 1602 | + | ⛛ heavy white down-pointing triangle |
|
| 1603 | + | ⛜ left closed entry |
|
| 1604 | + | ⛝ squared saltire |
|
| 1605 | + | ⛞ falling diagonal in white circle in black square |
|
| 1606 | + | ⛟ black truck |
|
| 1607 | + | ⛠ restricted left entry-1 |
|
| 1608 | + | ⛡ restricted left entry-2 |
|
| 1609 | + | ⛢ astronomical symbol for uranus |
|
| 1610 | + | ⛣ heavy circle with stroke and two dots above |
|
| 1611 | + | ⛤ pentagram |
|
| 1612 | + | ⛥ right-handed interlaced pentagram |
|
| 1613 | + | ⛦ left-handed interlaced pentagram |
|
| 1614 | + | ⛧ inverted pentagram |
|
| 1615 | + | ⛨ black cross on shield |
|
| 1616 | + | ⛩ shinto shrine |
|
| 1617 | + | ⛪ church |
|
| 1618 | + | ⛫ castle |
|
| 1619 | + | ⛬ historic site |
|
| 1620 | + | ⛭ gear without hub |
|
| 1621 | + | ⛮ gear with handles |
|
| 1622 | + | ⛯ map symbol for lighthouse |
|
| 1623 | + | ⛰ mountain |
|
| 1624 | + | ⛱ umbrella on ground |
|
| 1625 | + | ⛲ fountain |
|
| 1626 | + | ⛳ flag in hole |
|
| 1627 | + | ⛴ ferry |
|
| 1628 | + | ⛵ sailboat |
|
| 1629 | + | ⛶ square four corners |
|
| 1630 | + | ⛷ skier |
|
| 1631 | + | ⛸ ice skate |
|
| 1632 | + | ⛹ person with ball |
|
| 1633 | + | ⛺ tent |
|
| 1634 | + | ⛻ japanese bank symbol |
|
| 1635 | + | ⛼ headstone graveyard symbol |
|
| 1636 | + | ⛽ fuel pump |
|
| 1637 | + | ⛾ cup on black square |
|
| 1638 | + | ⛿ white flag with horizontal middle black stripe |
|
| 1639 | + | ✀ black safety scissors |
|
| 1640 | + | ✁ upper blade scissors |
|
| 1641 | + | ✂ black scissors |
|
| 1642 | + | ✃ lower blade scissors |
|
| 1643 | + | ✄ white scissors |
|
| 1644 | + | ✅ white heavy check mark |
|
| 1645 | + | ✆ telephone location sign |
|
| 1646 | + | ✇ tape drive |
|
| 1647 | + | ✈ airplane |
|
| 1648 | + | ✉ envelope |
|
| 1649 | + | ✊ raised fist |
|
| 1650 | + | ✋ raised hand |
|
| 1651 | + | ✌ victory hand |
|
| 1652 | + | ✍ writing hand |
|
| 1653 | + | ✎ lower right pencil |
|
| 1654 | + | ✏ pencil |
|
| 1655 | + | ✐ upper right pencil |
|
| 1656 | + | ✑ white nib |
|
| 1657 | + | ✒ black nib |
|
| 1658 | + | ✓ check mark |
|
| 1659 | + | ✔ heavy check mark |
|
| 1660 | + | ✕ multiplication x |
|
| 1661 | + | ✖ heavy multiplication x |
|
| 1662 | + | ✗ ballot x |
|
| 1663 | + | ✘ heavy ballot x |
|
| 1664 | + | ✙ outlined greek cross |
|
| 1665 | + | ✚ heavy greek cross |
|
| 1666 | + | ✛ open centre cross |
|
| 1667 | + | ✜ heavy open centre cross |
|
| 1668 | + | ✝ latin cross |
|
| 1669 | + | ✞ shadowed white latin cross |
|
| 1670 | + | ✟ outlined latin cross |
|
| 1671 | + | ✠ maltese cross |
|
| 1672 | + | ✡ star of david |
|
| 1673 | + | ✢ four teardrop-spoked asterisk |
|
| 1674 | + | ✣ four balloon-spoked asterisk |
|
| 1675 | + | ✤ heavy four balloon-spoked asterisk |
|
| 1676 | + | ✥ four club-spoked asterisk |
|
| 1677 | + | ✦ black four pointed star |
|
| 1678 | + | ✧ white four pointed star |
|
| 1679 | + | ✨ sparkles |
|
| 1680 | + | ✩ stress outlined white star |
|
| 1681 | + | ✪ circled white star |
|
| 1682 | + | ✫ open centre black star |
|
| 1683 | + | ✬ black centre white star |
|
| 1684 | + | ✭ outlined black star |
|
| 1685 | + | ✮ heavy outlined black star |
|
| 1686 | + | ✯ pinwheel star |
|
| 1687 | + | ✰ shadowed white star |
|
| 1688 | + | ✱ heavy asterisk |
|
| 1689 | + | ✲ open centre asterisk |
|
| 1690 | + | ✳ eight spoked asterisk |
|
| 1691 | + | ✴ eight pointed black star |
|
| 1692 | + | ✵ eight pointed pinwheel star |
|
| 1693 | + | ✶ six pointed black star |
|
| 1694 | + | ✷ eight pointed rectilinear black star |
|
| 1695 | + | ✸ heavy eight pointed rectilinear black star |
|
| 1696 | + | ✹ twelve pointed black star |
|
| 1697 | + | ✺ sixteen pointed asterisk |
|
| 1698 | + | ✻ teardrop-spoked asterisk |
|
| 1699 | + | ✼ open centre teardrop-spoked asterisk |
|
| 1700 | + | ✽ heavy teardrop-spoked asterisk |
|
| 1701 | + | ✾ six petalled black and white florette |
|
| 1702 | + | ✿ black florette |
|
| 1703 | + | ❀ white florette |
|
| 1704 | + | ❁ eight petalled outlined black florette |
|
| 1705 | + | ❂ circled open centre eight pointed star |
|
| 1706 | + | ❃ heavy teardrop-spoked pinwheel asterisk |
|
| 1707 | + | ❄ snowflake |
|
| 1708 | + | ❅ tight trifoliate snowflake |
|
| 1709 | + | ❆ heavy chevron snowflake |
|
| 1710 | + | ❇ sparkle |
|
| 1711 | + | ❈ heavy sparkle |
|
| 1712 | + | ❉ balloon-spoked asterisk |
|
| 1713 | + | ❊ eight teardrop-spoked propeller asterisk |
|
| 1714 | + | ❋ heavy eight teardrop-spoked propeller asterisk |
|
| 1715 | + | ❌ cross mark |
|
| 1716 | + | ❍ shadowed white circle |
|
| 1717 | + | ❎ negative squared cross mark |
|
| 1718 | + | ❏ lower right drop-shadowed white square |
|
| 1719 | + | ❐ upper right drop-shadowed white square |
|
| 1720 | + | ❑ lower right shadowed white square |
|
| 1721 | + | ❒ upper right shadowed white square |
|
| 1722 | + | ❓ black question mark ornament |
|
| 1723 | + | ❔ white question mark ornament |
|
| 1724 | + | ❕ white exclamation mark ornament |
|
| 1725 | + | ❖ black diamond minus white x |
|
| 1726 | + | ❗ heavy exclamation mark symbol |
|
| 1727 | + | ❘ light vertical bar |
|
| 1728 | + | ❙ medium vertical bar |
|
| 1729 | + | ❚ heavy vertical bar |
|
| 1730 | + | ❛ heavy single turned comma quotation mark ornament |
|
| 1731 | + | ❜ heavy single comma quotation mark ornament |
|
| 1732 | + | ❝ heavy double turned comma quotation mark ornament |
|
| 1733 | + | ❞ heavy double comma quotation mark ornament |
|
| 1734 | + | ❟ heavy low single comma quotation mark ornament |
|
| 1735 | + | ❠ heavy low double comma quotation mark ornament |
|
| 1736 | + | ❡ curved stem paragraph sign ornament |
|
| 1737 | + | ❢ heavy exclamation mark ornament |
|
| 1738 | + | ❣ heavy heart exclamation mark ornament |
|
| 1739 | + | ❤ heavy black heart |
|
| 1740 | + | ❥ rotated heavy black heart bullet |
|
| 1741 | + | ❦ floral heart |
|
| 1742 | + | ❧ rotated floral heart bullet |
|
| 1743 | + | ❨ medium left parenthesis ornament |
|
| 1744 | + | ❩ medium right parenthesis ornament |
|
| 1745 | + | ❪ medium flattened left parenthesis ornament |
|
| 1746 | + | ❫ medium flattened right parenthesis ornament |
|
| 1747 | + | ❬ medium left-pointing angle bracket ornament |
|
| 1748 | + | ❭ medium right-pointing angle bracket ornament |
|
| 1749 | + | ❮ heavy left-pointing angle quotation mark ornament |
|
| 1750 | + | ❯ heavy right-pointing angle quotation mark ornament |
|
| 1751 | + | ❰ heavy left-pointing angle bracket ornament |
|
| 1752 | + | ❱ heavy right-pointing angle bracket ornament |
|
| 1753 | + | ❲ light left tortoise shell bracket ornament |
|
| 1754 | + | ❳ light right tortoise shell bracket ornament |
|
| 1755 | + | ❴ medium left curly bracket ornament |
|
| 1756 | + | ❵ medium right curly bracket ornament |
|
| 1757 | + | ❶ dingbat negative circled digit one |
|
| 1758 | + | ❷ dingbat negative circled digit two |
|
| 1759 | + | ❸ dingbat negative circled digit three |
|
| 1760 | + | ❹ dingbat negative circled digit four |
|
| 1761 | + | ❺ dingbat negative circled digit five |
|
| 1762 | + | ❻ dingbat negative circled digit six |
|
| 1763 | + | ❼ dingbat negative circled digit seven |
|
| 1764 | + | ❽ dingbat negative circled digit eight |
|
| 1765 | + | ❾ dingbat negative circled digit nine |
|
| 1766 | + | ❿ dingbat negative circled number ten |
|
| 1767 | + | ➀ dingbat circled sans-serif digit one |
|
| 1768 | + | ➁ dingbat circled sans-serif digit two |
|
| 1769 | + | ➂ dingbat circled sans-serif digit three |
|
| 1770 | + | ➃ dingbat circled sans-serif digit four |
|
| 1771 | + | ➄ dingbat circled sans-serif digit five |
|
| 1772 | + | ➅ dingbat circled sans-serif digit six |
|
| 1773 | + | ➆ dingbat circled sans-serif digit seven |
|
| 1774 | + | ➇ dingbat circled sans-serif digit eight |
|
| 1775 | + | ➈ dingbat circled sans-serif digit nine |
|
| 1776 | + | ➉ dingbat circled sans-serif number ten |
|
| 1777 | + | ➊ dingbat negative circled sans-serif digit one |
|
| 1778 | + | ➋ dingbat negative circled sans-serif digit two |
|
| 1779 | + | ➌ dingbat negative circled sans-serif digit three |
|
| 1780 | + | ➍ dingbat negative circled sans-serif digit four |
|
| 1781 | + | ➎ dingbat negative circled sans-serif digit five |
|
| 1782 | + | ➏ dingbat negative circled sans-serif digit six |
|
| 1783 | + | ➐ dingbat negative circled sans-serif digit seven |
|
| 1784 | + | ➑ dingbat negative circled sans-serif digit eight |
|
| 1785 | + | ➒ dingbat negative circled sans-serif digit nine |
|
| 1786 | + | ➓ dingbat negative circled sans-serif number ten |
|
| 1787 | + | ➔ heavy wide-headed rightwards arrow |
|
| 1788 | + | ➕ heavy plus sign |
|
| 1789 | + | ➖ heavy minus sign |
|
| 1790 | + | ➗ heavy division sign |
|
| 1791 | + | ➘ heavy south east arrow |
|
| 1792 | + | ➙ heavy rightwards arrow |
|
| 1793 | + | ➚ heavy north east arrow |
|
| 1794 | + | ➛ drafting point rightwards arrow |
|
| 1795 | + | ➜ heavy round-tipped rightwards arrow |
|
| 1796 | + | ➝ triangle-headed rightwards arrow |
|
| 1797 | + | ➞ heavy triangle-headed rightwards arrow |
|
| 1798 | + | ➟ dashed triangle-headed rightwards arrow |
|
| 1799 | + | ➠ heavy dashed triangle-headed rightwards arrow |
|
| 1800 | + | ➡ black rightwards arrow |
|
| 1801 | + | ➢ three-d top-lighted rightwards arrowhead |
|
| 1802 | + | ➣ three-d bottom-lighted rightwards arrowhead |
|
| 1803 | + | ➤ black rightwards arrowhead |
|
| 1804 | + | ➥ heavy black curved downwards and rightwards arrow |
|
| 1805 | + | ➦ heavy black curved upwards and rightwards arrow |
|
| 1806 | + | ➧ squat black rightwards arrow |
|
| 1807 | + | ➨ heavy concave-pointed black rightwards arrow |
|
| 1808 | + | ➩ right-shaded white rightwards arrow |
|
| 1809 | + | ➪ left-shaded white rightwards arrow |
|
| 1810 | + | ➫ back-tilted shadowed white rightwards arrow |
|
| 1811 | + | ➬ front-tilted shadowed white rightwards arrow |
|
| 1812 | + | ➭ heavy lower right-shadowed white rightwards arrow |
|
| 1813 | + | ➮ heavy upper right-shadowed white rightwards arrow |
|
| 1814 | + | ➯ notched lower right-shadowed white rightwards arrow |
|
| 1815 | + | ➰ curly loop |
|
| 1816 | + | ➱ notched upper right-shadowed white rightwards arrow |
|
| 1817 | + | ➲ circled heavy white rightwards arrow |
|
| 1818 | + | ➳ white-feathered rightwards arrow |
|
| 1819 | + | ➴ black-feathered south east arrow |
|
| 1820 | + | ➵ black-feathered rightwards arrow |
|
| 1821 | + | ➶ black-feathered north east arrow |
|
| 1822 | + | ➷ heavy black-feathered south east arrow |
|
| 1823 | + | ➸ heavy black-feathered rightwards arrow |
|
| 1824 | + | ➹ heavy black-feathered north east arrow |
|
| 1825 | + | ➺ teardrop-barbed rightwards arrow |
|
| 1826 | + | ➻ heavy teardrop-shanked rightwards arrow |
|
| 1827 | + | ➼ wedge-tailed rightwards arrow |
|
| 1828 | + | ➽ heavy wedge-tailed rightwards arrow |
|
| 1829 | + | ➾ open-outlined rightwards arrow |
|
| 1830 | + | ➿ double curly loop |
|
| 1831 | + | ← leftwards arrow |
|
| 1832 | + | ↑ upwards arrow |
|
| 1833 | + | → rightwards arrow |
|
| 1834 | + | ↓ downwards arrow |
|
| 1835 | + | ↔ left right arrow |
|
| 1836 | + | ↕ up down arrow |
|
| 1837 | + | ↖ north west arrow |
|
| 1838 | + | ↗ north east arrow |
|
| 1839 | + | ↘ south east arrow |
|
| 1840 | + | ↙ south west arrow |
|
| 1841 | + | ↚ leftwards arrow with stroke |
|
| 1842 | + | ↛ rightwards arrow with stroke |
|
| 1843 | + | ↜ leftwards wave arrow |
|
| 1844 | + | ↝ rightwards wave arrow |
|
| 1845 | + | ↞ leftwards two headed arrow |
|
| 1846 | + | ↟ upwards two headed arrow |
|
| 1847 | + | ↠ rightwards two headed arrow |
|
| 1848 | + | ↡ downwards two headed arrow |
|
| 1849 | + | ↢ leftwards arrow with tail |
|
| 1850 | + | ↣ rightwards arrow with tail |
|
| 1851 | + | ↤ leftwards arrow from bar |
|
| 1852 | + | ↥ upwards arrow from bar |
|
| 1853 | + | ↦ rightwards arrow from bar |
|
| 1854 | + | ↧ downwards arrow from bar |
|
| 1855 | + | ↨ up down arrow with base |
|
| 1856 | + | ↩ leftwards arrow with hook |
|
| 1857 | + | ↪ rightwards arrow with hook |
|
| 1858 | + | ↫ leftwards arrow with loop |
|
| 1859 | + | ↬ rightwards arrow with loop |
|
| 1860 | + | ↭ left right wave arrow |
|
| 1861 | + | ↮ left right arrow with stroke |
|
| 1862 | + | ↯ downwards zigzag arrow |
|
| 1863 | + | ↰ upwards arrow with tip leftwards |
|
| 1864 | + | ↱ upwards arrow with tip rightwards |
|
| 1865 | + | ↲ downwards arrow with tip leftwards |
|
| 1866 | + | ↳ downwards arrow with tip rightwards |
|
| 1867 | + | ↴ rightwards arrow with corner downwards |
|
| 1868 | + | ↵ downwards arrow with corner leftwards |
|
| 1869 | + | ↶ anticlockwise top semicircle arrow |
|
| 1870 | + | ↷ clockwise top semicircle arrow |
|
| 1871 | + | ↸ north west arrow to long bar |
|
| 1872 | + | ↹ leftwards arrow to bar over rightwards arrow to bar |
|
| 1873 | + | ↺ anticlockwise open circle arrow |
|
| 1874 | + | ↻ clockwise open circle arrow |
|
| 1875 | + | ↼ leftwards harpoon with barb upwards |
|
| 1876 | + | ↽ leftwards harpoon with barb downwards |
|
| 1877 | + | ↾ upwards harpoon with barb rightwards |
|
| 1878 | + | ↿ upwards harpoon with barb leftwards |
|
| 1879 | + | ⇀ rightwards harpoon with barb upwards |
|
| 1880 | + | ⇁ rightwards harpoon with barb downwards |
|
| 1881 | + | ⇂ downwards harpoon with barb rightwards |
|
| 1882 | + | ⇃ downwards harpoon with barb leftwards |
|
| 1883 | + | ⇄ rightwards arrow over leftwards arrow |
|
| 1884 | + | ⇅ upwards arrow leftwards of downwards arrow |
|
| 1885 | + | ⇆ leftwards arrow over rightwards arrow |
|
| 1886 | + | ⇇ leftwards paired arrows |
|
| 1887 | + | ⇈ upwards paired arrows |
|
| 1888 | + | ⇉ rightwards paired arrows |
|
| 1889 | + | ⇊ downwards paired arrows |
|
| 1890 | + | ⇋ leftwards harpoon over rightwards harpoon |
|
| 1891 | + | ⇌ rightwards harpoon over leftwards harpoon |
|
| 1892 | + | ⇍ leftwards double arrow with stroke |
|
| 1893 | + | ⇎ left right double arrow with stroke |
|
| 1894 | + | ⇏ rightwards double arrow with stroke |
|
| 1895 | + | ⇐ leftwards double arrow |
|
| 1896 | + | ⇑ upwards double arrow |
|
| 1897 | + | ⇒ rightwards double arrow |
|
| 1898 | + | ⇓ downwards double arrow |
|
| 1899 | + | ⇔ left right double arrow |
|
| 1900 | + | ⇕ up down double arrow |
|
| 1901 | + | ⇖ north west double arrow |
|
| 1902 | + | ⇗ north east double arrow |
|
| 1903 | + | ⇘ south east double arrow |
|
| 1904 | + | ⇙ south west double arrow |
|
| 1905 | + | ⇚ leftwards triple arrow |
|
| 1906 | + | ⇛ rightwards triple arrow |
|
| 1907 | + | ⇜ leftwards squiggle arrow |
|
| 1908 | + | ⇝ rightwards squiggle arrow |
|
| 1909 | + | ⇞ upwards arrow with double stroke |
|
| 1910 | + | ⇟ downwards arrow with double stroke |
|
| 1911 | + | ⇠ leftwards dashed arrow |
|
| 1912 | + | ⇡ upwards dashed arrow |
|
| 1913 | + | ⇢ rightwards dashed arrow |
|
| 1914 | + | ⇣ downwards dashed arrow |
|
| 1915 | + | ⇤ leftwards arrow to bar |
|
| 1916 | + | ⇥ rightwards arrow to bar |
|
| 1917 | + | ⇦ leftwards white arrow |
|
| 1918 | + | ⇧ upwards white arrow |
|
| 1919 | + | ⇨ rightwards white arrow |
|
| 1920 | + | ⇩ downwards white arrow |
|
| 1921 | + | ⇪ upwards white arrow from bar |
|
| 1922 | + | ⇫ upwards white arrow on pedestal |
|
| 1923 | + | ⇬ upwards white arrow on pedestal with horizontal bar |
|
| 1924 | + | ⇭ upwards white arrow on pedestal with vertical bar |
|
| 1925 | + | ⇮ upwards white double arrow |
|
| 1926 | + | ⇯ upwards white double arrow on pedestal |
|
| 1927 | + | ⇰ rightwards white arrow from wall |
|
| 1928 | + | ⇱ north west arrow to corner |
|
| 1929 | + | ⇲ south east arrow to corner |
|
| 1930 | + | ⇳ up down white arrow |
|
| 1931 | + | ⇴ right arrow with small circle |
|
| 1932 | + | ⇵ downwards arrow leftwards of upwards arrow |
|
| 1933 | + | ⇶ three rightwards arrows |
|
| 1934 | + | ⇷ leftwards arrow with vertical stroke |
|
| 1935 | + | ⇸ rightwards arrow with vertical stroke |
|
| 1936 | + | ⇹ left right arrow with vertical stroke |
|
| 1937 | + | ⇺ leftwards arrow with double vertical stroke |
|
| 1938 | + | ⇻ rightwards arrow with double vertical stroke |
|
| 1939 | + | ⇼ left right arrow with double vertical stroke |
|
| 1940 | + | ⇽ leftwards open-headed arrow |
|
| 1941 | + | ⇾ rightwards open-headed arrow |
|
| 1942 | + | ⇿ left right open-headed arrow |
|
| 1943 | + | ⬀ north east white arrow |
|
| 1944 | + | ⬁ north west white arrow |
|
| 1945 | + | ⬂ south east white arrow |
|
| 1946 | + | ⬃ south west white arrow |
|
| 1947 | + | ⬄ left right white arrow |
|
| 1948 | + | ⬅ leftwards black arrow |
|
| 1949 | + | ⬆ upwards black arrow |
|
| 1950 | + | ⬇ downwards black arrow |
|
| 1951 | + | ⬈ north east black arrow |
|
| 1952 | + | ⬉ north west black arrow |
|
| 1953 | + | ⬊ south east black arrow |
|
| 1954 | + | ⬋ south west black arrow |
|
| 1955 | + | ⬌ left right black arrow |
|
| 1956 | + | ⬍ up down black arrow |
|
| 1957 | + | ⬎ rightwards arrow with tip downwards |
|
| 1958 | + | ⬏ rightwards arrow with tip upwards |
|
| 1959 | + | ⬐ leftwards arrow with tip downwards |
|
| 1960 | + | ⬑ leftwards arrow with tip upwards |
|
| 1961 | + | ⬒ square with top half black |
|
| 1962 | + | ⬓ square with bottom half black |
|
| 1963 | + | ⬔ square with upper right diagonal half black |
|
| 1964 | + | ⬕ square with lower left diagonal half black |
|
| 1965 | + | ⬖ diamond with left half black |
|
| 1966 | + | ⬗ diamond with right half black |
|
| 1967 | + | ⬘ diamond with top half black |
|
| 1968 | + | ⬙ diamond with bottom half black |
|
| 1969 | + | ⬚ dotted square |
|
| 1970 | + | ⬛ black large square |
|
| 1971 | + | ⬜ white large square |
|
| 1972 | + | ⬝ black very small square |
|
| 1973 | + | ⬞ white very small square |
|
| 1974 | + | ⬟ black pentagon |
|
| 1975 | + | ⬠ white pentagon |
|
| 1976 | + | ⬡ white hexagon |
|
| 1977 | + | ⬢ black hexagon |
|
| 1978 | + | ⬣ horizontal black hexagon |
|
| 1979 | + | ⬤ black large circle |
|
| 1980 | + | ⬥ black medium diamond |
|
| 1981 | + | ⬦ white medium diamond |
|
| 1982 | + | ⬧ black medium lozenge |
|
| 1983 | + | ⬨ white medium lozenge |
|
| 1984 | + | ⬩ black small diamond |
|
| 1985 | + | ⬪ black small lozenge |
|
| 1986 | + | ⬫ white small lozenge |
|
| 1987 | + | ⬬ black horizontal ellipse |
|
| 1988 | + | ⬭ white horizontal ellipse |
|
| 1989 | + | ⬮ black vertical ellipse |
|
| 1990 | + | ⬯ white vertical ellipse |
|
| 1991 | + | ⬰ left arrow with small circle |
|
| 1992 | + | ⬱ three leftwards arrows |
|
| 1993 | + | ⬲ left arrow with circled plus |
|
| 1994 | + | ⬳ long leftwards squiggle arrow |
|
| 1995 | + | ⬴ leftwards two-headed arrow with vertical stroke |
|
| 1996 | + | ⬵ leftwards two-headed arrow with double vertical stroke |
|
| 1997 | + | ⬶ leftwards two-headed arrow from bar |
|
| 1998 | + | ⬷ leftwards two-headed triple dash arrow |
|
| 1999 | + | ⬸ leftwards arrow with dotted stem |
|
| 2000 | + | ⬹ leftwards arrow with tail with vertical stroke |
|
| 2001 | + | ⬺ leftwards arrow with tail with double vertical stroke |
|
| 2002 | + | ⬻ leftwards two-headed arrow with tail |
|
| 2003 | + | ⬼ leftwards two-headed arrow with tail with vertical stroke |
|
| 2004 | + | ⬽ leftwards two-headed arrow with tail with double vertical stroke |
|
| 2005 | + | ⬾ leftwards arrow through x |
|
| 2006 | + | ⬿ wave arrow pointing directly left |
|
| 2007 | + | ⭀ equals sign above leftwards arrow |
|
| 2008 | + | ⭁ reverse tilde operator above leftwards arrow |
|
| 2009 | + | ⭂ leftwards arrow above reverse almost equal to |
|
| 2010 | + | ⭃ rightwards arrow through greater-than |
|
| 2011 | + | ⭄ rightwards arrow through superset |
|
| 2012 | + | ⭅ leftwards quadruple arrow |
|
| 2013 | + | ⭆ rightwards quadruple arrow |
|
| 2014 | + | ⭇ reverse tilde operator above rightwards arrow |
|
| 2015 | + | ⭈ rightwards arrow above reverse almost equal to |
|
| 2016 | + | ⭉ tilde operator above leftwards arrow |
|
| 2017 | + | ⭊ leftwards arrow above almost equal to |
|
| 2018 | + | ⭋ leftwards arrow above reverse tilde operator |
|
| 2019 | + | ⭌ rightwards arrow above reverse tilde operator |
|
| 2020 | + | ⭍ downwards triangle-headed zigzag arrow |
|
| 2021 | + | ⭎ short slanted north arrow |
|
| 2022 | + | ⭏ short backslanted south arrow |
|
| 2023 | + | ⭐ white medium star |
|
| 2024 | + | ⭑ black small star |
|
| 2025 | + | ⭒ white small star |
|
| 2026 | + | ⭓ black right-pointing pentagon |
|
| 2027 | + | ⭔ white right-pointing pentagon |
|
| 2028 | + | ⭕ heavy large circle |
|
| 2029 | + | ⭖ heavy oval with oval inside |
|
| 2030 | + | ⭗ heavy circle with circle inside |
|
| 2031 | + | ⭘ heavy circle |
|
| 2032 | + | ⭙ heavy circled saltire |
|
| 2033 | + | ⭚ slanted north arrow with hooked head |
|
| 2034 | + | ⭛ backslanted south arrow with hooked tail |
|
| 2035 | + | ⭜ slanted north arrow with horizontal tail |
|
| 2036 | + | ⭝ backslanted south arrow with horizontal tail |
|
| 2037 | + | ⭞ bent arrow pointing downwards then north east |
|
| 2038 | + | ⭟ short bent arrow pointing downwards then north east |
|
| 2039 | + | ⭠ leftwards triangle-headed arrow |
|
| 2040 | + | ⭡ upwards triangle-headed arrow |
|
| 2041 | + | ⭢ rightwards triangle-headed arrow |
|
| 2042 | + | ⭣ downwards triangle-headed arrow |
|
| 2043 | + | ⭤ left right triangle-headed arrow |
|
| 2044 | + | ⭥ up down triangle-headed arrow |
|
| 2045 | + | ⭦ north west triangle-headed arrow |
|
| 2046 | + | ⭧ north east triangle-headed arrow |
|
| 2047 | + | ⭨ south east triangle-headed arrow |
|
| 2048 | + | ⭩ south west triangle-headed arrow |
|
| 2049 | + | ⭪ leftwards triangle-headed dashed arrow |
|
| 2050 | + | ⭫ upwards triangle-headed dashed arrow |
|
| 2051 | + | ⭬ rightwards triangle-headed dashed arrow |
|
| 2052 | + | ⭭ downwards triangle-headed dashed arrow |
|
| 2053 | + | ⭮ clockwise triangle-headed open circle arrow |
|
| 2054 | + | ⭯ anticlockwise triangle-headed open circle arrow |
|
| 2055 | + | ⭰ leftwards triangle-headed arrow to bar |
|
| 2056 | + | ⭱ upwards triangle-headed arrow to bar |
|
| 2057 | + | ⭲ rightwards triangle-headed arrow to bar |
|
| 2058 | + | ⭳ downwards triangle-headed arrow to bar |
|
| 2059 | + | ⭶ north west triangle-headed arrow to bar |
|
| 2060 | + | ⭷ north east triangle-headed arrow to bar |
|
| 2061 | + | ⭸ south east triangle-headed arrow to bar |
|
| 2062 | + | ⭹ south west triangle-headed arrow to bar |
|
| 2063 | + | ⭺ leftwards triangle-headed arrow with double horizontal stroke |
|
| 2064 | + | ⭻ upwards triangle-headed arrow with double horizontal stroke |
|
| 2065 | + | ⭼ rightwards triangle-headed arrow with double horizontal stroke |
|
| 2066 | + | ⭽ downwards triangle-headed arrow with double horizontal stroke |
|
| 2067 | + | ⭾ horizontal tab key |
|
| 2068 | + | ⭿ vertical tab key |
|
| 2069 | + | ⮀ leftwards triangle-headed arrow over rightwards triangle-headed arrow |
|
| 2070 | + | ⮁ upwards triangle-headed arrow leftwards of downwards triangle-headed arrow |
|
| 2071 | + | ⮂ rightwards triangle-headed arrow over leftwards triangle-headed arrow |
|
| 2072 | + | ⮃ downwards triangle-headed arrow leftwards of upwards triangle-headed arrow |
|
| 2073 | + | ⮄ leftwards triangle-headed paired arrows |
|
| 2074 | + | ⮅ upwards triangle-headed paired arrows |
|
| 2075 | + | ⮆ rightwards triangle-headed paired arrows |
|
| 2076 | + | ⮇ downwards triangle-headed paired arrows |
|
| 2077 | + | ⮈ leftwards black circled white arrow |
|
| 2078 | + | ⮉ upwards black circled white arrow |
|
| 2079 | + | ⮊ rightwards black circled white arrow |
|
| 2080 | + | ⮋ downwards black circled white arrow |
|
| 2081 | + | ⮌ anticlockwise triangle-headed right u-shaped arrow |
|
| 2082 | + | ⮍ anticlockwise triangle-headed bottom u-shaped arrow |
|
| 2083 | + | ⮎ anticlockwise triangle-headed left u-shaped arrow |
|
| 2084 | + | ⮏ anticlockwise triangle-headed top u-shaped arrow |
|
| 2085 | + | ⮐ return left |
|
| 2086 | + | ⮑ return right |
|
| 2087 | + | ⮒ newline left |
|
| 2088 | + | ⮓ newline right |
|
| 2089 | + | ⮔ four corner arrows circling anticlockwise |
|
| 2090 | + | ⮕ rightwards black arrow |
|
| 2091 | + | ⮗ symbol for type a electronics |
|
| 2092 | + | ⮘ three-d top-lighted leftwards equilateral arrowhead |
|
| 2093 | + | ⮙ three-d right-lighted upwards equilateral arrowhead |
|
| 2094 | + | ⮚ three-d top-lighted rightwards equilateral arrowhead |
|
| 2095 | + | ⮛ three-d left-lighted downwards equilateral arrowhead |
|
| 2096 | + | ⮜ black leftwards equilateral arrowhead |
|
| 2097 | + | ⮝ black upwards equilateral arrowhead |
|
| 2098 | + | ⮞ black rightwards equilateral arrowhead |
|
| 2099 | + | ⮟ black downwards equilateral arrowhead |
|
| 2100 | + | ⮠ downwards triangle-headed arrow with long tip leftwards |
|
| 2101 | + | ⮡ downwards triangle-headed arrow with long tip rightwards |
|
| 2102 | + | ⮢ upwards triangle-headed arrow with long tip leftwards |
|
| 2103 | + | ⮣ upwards triangle-headed arrow with long tip rightwards |
|
| 2104 | + | ⮤ leftwards triangle-headed arrow with long tip upwards |
|
| 2105 | + | ⮥ rightwards triangle-headed arrow with long tip upwards |
|
| 2106 | + | ⮦ leftwards triangle-headed arrow with long tip downwards |
|
| 2107 | + | ⮧ rightwards triangle-headed arrow with long tip downwards |
|
| 2108 | + | ⮨ black curved downwards and leftwards arrow |
|
| 2109 | + | ⮩ black curved downwards and rightwards arrow |
|
| 2110 | + | ⮪ black curved upwards and leftwards arrow |
|
| 2111 | + | ⮫ black curved upwards and rightwards arrow |
|
| 2112 | + | ⮬ black curved leftwards and upwards arrow |
|
| 2113 | + | ⮭ black curved rightwards and upwards arrow |
|
| 2114 | + | ⮮ black curved leftwards and downwards arrow |
|
| 2115 | + | ⮯ black curved rightwards and downwards arrow |
|
| 2116 | + | ⮰ ribbon arrow down left |
|
| 2117 | + | ⮱ ribbon arrow down right |
|
| 2118 | + | ⮲ ribbon arrow up left |
|
| 2119 | + | ⮳ ribbon arrow up right |
|
| 2120 | + | ⮴ ribbon arrow left up |
|
| 2121 | + | ⮵ ribbon arrow right up |
|
| 2122 | + | ⮶ ribbon arrow left down |
|
| 2123 | + | ⮷ ribbon arrow right down |
|
| 2124 | + | ⮸ upwards white arrow from bar with horizontal bar |
|
| 2125 | + | ⮹ up arrowhead in a rectangle box |
|
| 2126 | + | ⮺ overlapping white squares |
|
| 2127 | + | ⮻ overlapping white and black squares |
|
| 2128 | + | ⮼ overlapping black squares |
|
| 2129 | + | ⮽ ballot box with light x |
|
| 2130 | + | ⮾ circled x |
|
| 2131 | + | ⮿ circled bold x |
|
| 2132 | + | ⯀ black square centred |
|
| 2133 | + | ⯁ black diamond centred |
|
| 2134 | + | ⯂ turned black pentagon |
|
| 2135 | + | ⯃ horizontal black octagon |
|
| 2136 | + | ⯄ black octagon |
|
| 2137 | + | ⯅ black medium up-pointing triangle centred |
|
| 2138 | + | ⯆ black medium down-pointing triangle centred |
|
| 2139 | + | ⯇ black medium left-pointing triangle centred |
|
| 2140 | + | ⯈ black medium right-pointing triangle centred |
|
| 2141 | + | ⯉ neptune form two |
|
| 2142 | + | ⯊ top half black circle |
|
| 2143 | + | ⯋ bottom half black circle |
|
| 2144 | + | ⯌ light four pointed black cusp |
|
| 2145 | + | ⯍ rotated light four pointed black cusp |
|
| 2146 | + | ⯎ white four pointed cusp |
|
| 2147 | + | ⯏ rotated white four pointed cusp |
|
| 2148 | + | ⯐ square position indicator |
|
| 2149 | + | ⯑ uncertainty sign |
|
| 2150 | + | ⯒ group mark |
|
| 2151 | + | ⯓ pluto form two |
|
| 2152 | + | ⯔ pluto form three |
|
| 2153 | + | ⯕ pluto form four |
|
| 2154 | + | ⯖ pluto form five |
|
| 2155 | + | ⯗ transpluto |
|
| 2156 | + | ⯘ proserpina |
|
| 2157 | + | ⯙ astraea |
|
| 2158 | + | ⯚ hygiea |
|
| 2159 | + | ⯛ pholus |
|
| 2160 | + | ⯜ nessus |
|
| 2161 | + | ⯝ white moon selena |
|
| 2162 | + | ⯞ black diamond on cross |
|
| 2163 | + | ⯟ true light moon arta |
|
| 2164 | + | ⯠ cupido |
|
| 2165 | + | ⯡ hades |
|
| 2166 | + | ⯢ zeus |
|
| 2167 | + | ⯣ kronos |
|
| 2168 | + | ⯤ apollon |
|
| 2169 | + | ⯥ admetos |
|
| 2170 | + | ⯦ vulcanus |
|
| 2171 | + | ⯧ poseidon |
|
| 2172 | + | ⯨ left half black star |
|
| 2173 | + | ⯩ right half black star |
|
| 2174 | + | ⯪ star with left half black |
|
| 2175 | + | ⯫ star with right half black |
|
| 2176 | + | ⯬ leftwards two-headed arrow with triangle arrowheads |
|
| 2177 | + | ⯭ upwards two-headed arrow with triangle arrowheads |
|
| 2178 | + | ⯮ rightwards two-headed arrow with triangle arrowheads |
|
| 2179 | + | ⯯ downwards two-headed arrow with triangle arrowheads |
|
| 2180 | + | ⯰ eris form one |
|
| 2181 | + | ⯱ eris form two |
|
| 2182 | + | ⯲ sedna |
|
| 2183 | + | ⯳ russian astrological symbol vigintile |
|
| 2184 | + | ⯴ russian astrological symbol novile |
|
| 2185 | + | ⯵ russian astrological symbol quintile |
|
| 2186 | + | ⯶ russian astrological symbol binovile |
|
| 2187 | + | ⯷ russian astrological symbol sentagon |
|
| 2188 | + | ⯸ russian astrological symbol tredecile |
|
| 2189 | + | ⯹ equals sign with infinity below |
|
| 2190 | + | ⯺ united symbol |
|
| 2191 | + | ⯻ separated symbol |
|
| 2192 | + | ⯼ doubled symbol |
|
| 2193 | + | ⯽ passed symbol |
|
| 2194 | + | ⯾ reversed right angle |
|
| 2195 | + | ⯿ hellschreiber pause symbol |
|
| 2196 | + | 🞀 black left-pointing isosceles right triangle |
|
| 2197 | + | 🞁 black up-pointing isosceles right triangle |
|
| 2198 | + | 🞂 black right-pointing isosceles right triangle |
|
| 2199 | + | 🞃 black down-pointing isosceles right triangle |
|
| 2200 | + | 🞄 black slightly small circle |
|
| 2201 | + | 🞅 medium bold white circle |
|
| 2202 | + | 🞆 bold white circle |
|
| 2203 | + | 🞇 heavy white circle |
|
| 2204 | + | 🞈 very heavy white circle |
|
| 2205 | + | 🞉 extremely heavy white circle |
|
| 2206 | + | 🞊 white circle containing black small circle |
|
| 2207 | + | 🞋 round target |
|
| 2208 | + | 🞌 black tiny square |
|
| 2209 | + | 🞍 black slightly small square |
|
| 2210 | + | 🞎 light white square |
|
| 2211 | + | 🞏 medium white square |
|
| 2212 | + | 🞐 bold white square |
|
| 2213 | + | 🞑 heavy white square |
|
| 2214 | + | 🞒 very heavy white square |
|
| 2215 | + | 🞓 extremely heavy white square |
|
| 2216 | + | 🞔 white square containing black very small square |
|
| 2217 | + | 🞕 white square containing black medium square |
|
| 2218 | + | 🞖 square target |
|
| 2219 | + | 🞗 black tiny diamond |
|
| 2220 | + | 🞘 black very small diamond |
|
| 2221 | + | 🞙 black medium small diamond |
|
| 2222 | + | 🞚 white diamond containing black very small diamond |
|
| 2223 | + | 🞛 white diamond containing black medium diamond |
|
| 2224 | + | 🞜 diamond target |
|
| 2225 | + | 🞝 black tiny lozenge |
|
| 2226 | + | 🞞 black very small lozenge |
|
| 2227 | + | 🞟 black medium small lozenge |
|
| 2228 | + | 🞠 white lozenge containing black small lozenge |
|
| 2229 | + | 🞡 thin greek cross |
|
| 2230 | + | 🞢 light greek cross |
|
| 2231 | + | 🞣 medium greek cross |
|
| 2232 | + | 🞤 bold greek cross |
|
| 2233 | + | 🞥 very bold greek cross |
|
| 2234 | + | 🞦 very heavy greek cross |
|
| 2235 | + | 🞧 extremely heavy greek cross |
|
| 2236 | + | 🞨 thin saltire |
|
| 2237 | + | 🞩 light saltire |
|
| 2238 | + | 🞪 medium saltire |
|
| 2239 | + | 🞫 bold saltire |
|
| 2240 | + | 🞬 heavy saltire |
|
| 2241 | + | 🞭 very heavy saltire |
|
| 2242 | + | 🞮 extremely heavy saltire |
|
| 2243 | + | 🞯 light five spoked asterisk |
|
| 2244 | + | 🞰 medium five spoked asterisk |
|
| 2245 | + | 🞱 bold five spoked asterisk |
|
| 2246 | + | 🞲 heavy five spoked asterisk |
|
| 2247 | + | 🞳 very heavy five spoked asterisk |
|
| 2248 | + | 🞴 extremely heavy five spoked asterisk |
|
| 2249 | + | 🞵 light six spoked asterisk |
|
| 2250 | + | 🞶 medium six spoked asterisk |
|
| 2251 | + | 🞷 bold six spoked asterisk |
|
| 2252 | + | 🞸 heavy six spoked asterisk |
|
| 2253 | + | 🞹 very heavy six spoked asterisk |
|
| 2254 | + | 🞺 extremely heavy six spoked asterisk |
|
| 2255 | + | 🞻 light eight spoked asterisk |
|
| 2256 | + | 🞼 medium eight spoked asterisk |
|
| 2257 | + | 🞽 bold eight spoked asterisk |
|
| 2258 | + | 🞾 heavy eight spoked asterisk |
|
| 2259 | + | 🞿 very heavy eight spoked asterisk |
|
| 2260 | + | 🟀 light three pointed black star |
|
| 2261 | + | 🟁 medium three pointed black star |
|
| 2262 | + | 🟂 three pointed black star |
|
| 2263 | + | 🟃 medium three pointed pinwheel star |
|
| 2264 | + | 🟄 light four pointed black star |
|
| 2265 | + | 🟅 medium four pointed black star |
|
| 2266 | + | 🟆 four pointed black star |
|
| 2267 | + | 🟇 medium four pointed pinwheel star |
|
| 2268 | + | 🟈 reverse light four pointed pinwheel star |
|
| 2269 | + | 🟉 light five pointed black star |
|
| 2270 | + | 🟊 heavy five pointed black star |
|
| 2271 | + | 🟋 medium six pointed black star |
|
| 2272 | + | 🟌 heavy six pointed black star |
|
| 2273 | + | 🟍 six pointed pinwheel star |
|
| 2274 | + | 🟎 medium eight pointed black star |
|
| 2275 | + | 🟏 heavy eight pointed black star |
|
| 2276 | + | 🟐 very heavy eight pointed black star |
|
| 2277 | + | 🟑 heavy eight pointed pinwheel star |
|
| 2278 | + | 🟒 light twelve pointed black star |
|
| 2279 | + | 🟓 heavy twelve pointed black star |
|
| 2280 | + | 🟔 heavy twelve pointed pinwheel star |
|
| 2281 | + | 🟕 circled triangle |
|
| 2282 | + | 🟖 negative circled triangle |
|
| 2283 | + | 🟗 circled square |
|
| 2284 | + | 🟘 negative circled square |
|
| 2285 | + | 🟙 nine pointed white star |
|
| 2286 | + | 🟠 large orange circle |
|
| 2287 | + | 🟡 large yellow circle |
|
| 2288 | + | 🟢 large green circle |
|
| 2289 | + | 🟣 large purple circle |
|
| 2290 | + | 🟤 large brown circle |
|
| 2291 | + | 🟥 large red square |
|
| 2292 | + | 🟦 large blue square |
|
| 2293 | + | 🟧 large orange square |
|
| 2294 | + | 🟨 large yellow square |
|
| 2295 | + | 🟩 large green square |
|
| 2296 | + | 🟪 large purple square |
|
| 2297 | + | 🟫 large brown square |
|
| 2298 | + | 🟰 heavy equals sign |
| 1 | + | /* ROFI VERTICAL THEME USING THE NORD COLOR PALETTE */ |
|
| 2 | + | /* Author: Newman Sanchez (https://github.com/newmanls) */ |
|
| 3 | + | ||
| 4 | + | * { |
|
| 5 | + | font: "BerkeleyMono Nerd Font 13"; |
|
| 6 | + | ||
| 7 | + | nord0: #2e3440; |
|
| 8 | + | nord1: #3b4252; |
|
| 9 | + | nord2: #434c5e; |
|
| 10 | + | nord3: #4c566a; |
|
| 11 | + | ||
| 12 | + | nord4: #d8dee9; |
|
| 13 | + | nord5: #e5e9f0; |
|
| 14 | + | nord6: #eceff4; |
|
| 15 | + | ||
| 16 | + | nord7: #8fbcbb; |
|
| 17 | + | nord8: #88c0d0; |
|
| 18 | + | nord9: #81a1c1; |
|
| 19 | + | nord10: #5e81ac; |
|
| 20 | + | nord11: #bf616a; |
|
| 21 | + | ||
| 22 | + | nord12: #d08770; |
|
| 23 | + | nord13: #ebcb8b; |
|
| 24 | + | nord14: #a3be8c; |
|
| 25 | + | nord15: #b48ead; |
|
| 26 | + | ||
| 27 | + | background-color: transparent; |
|
| 28 | + | text-color: @nord4; |
|
| 29 | + | accent-color: @nord8; |
|
| 30 | + | ||
| 31 | + | margin: 0px; |
|
| 32 | + | padding: 0px; |
|
| 33 | + | spacing: 0px; |
|
| 34 | + | } |
|
| 35 | + | ||
| 36 | + | window { |
|
| 37 | + | background-color: @nord0; |
|
| 38 | + | border-color: @accent-color; |
|
| 39 | + | ||
| 40 | + | location: center; |
|
| 41 | + | width: 480px; |
|
| 42 | + | border: 1px; |
|
| 43 | + | } |
|
| 44 | + | ||
| 45 | + | inputbar { |
|
| 46 | + | padding: 8px 12px; |
|
| 47 | + | spacing: 12px; |
|
| 48 | + | children: [ prompt, entry ]; |
|
| 49 | + | } |
|
| 50 | + | ||
| 51 | + | prompt, entry, element-text, element-icon { |
|
| 52 | + | vertical-align: 0.5; |
|
| 53 | + | } |
|
| 54 | + | ||
| 55 | + | prompt { |
|
| 56 | + | text-color: @accent-color; |
|
| 57 | + | } |
|
| 58 | + | ||
| 59 | + | listview { |
|
| 60 | + | lines: 8; |
|
| 61 | + | columns: 1; |
|
| 62 | + | ||
| 63 | + | fixed-height: false; |
|
| 64 | + | } |
|
| 65 | + | ||
| 66 | + | element { |
|
| 67 | + | padding: 8px; |
|
| 68 | + | spacing: 8px; |
|
| 69 | + | } |
|
| 70 | + | ||
| 71 | + | element normal urgent { |
|
| 72 | + | text-color: @nord13; |
|
| 73 | + | } |
|
| 74 | + | ||
| 75 | + | element normal active { |
|
| 76 | + | text-color: @accent-color; |
|
| 77 | + | } |
|
| 78 | + | ||
| 79 | + | element alternate active { |
|
| 80 | + | text-color: @accent-color; |
|
| 81 | + | } |
|
| 82 | + | ||
| 83 | + | element selected { |
|
| 84 | + | text-color: @nord0; |
|
| 85 | + | } |
|
| 86 | + | ||
| 87 | + | element selected normal { |
|
| 88 | + | background-color: @accent-color; |
|
| 89 | + | } |
|
| 90 | + | ||
| 91 | + | element selected urgent { |
|
| 92 | + | background-color: @nord13; |
|
| 93 | + | } |
|
| 94 | + | ||
| 95 | + | element selected active { |
|
| 96 | + | background-color: @nord8; |
|
| 97 | + | } |
|
| 98 | + | ||
| 99 | + | element-icon { |
|
| 100 | + | size: 0.75em; |
|
| 101 | + | } |
|
| 102 | + | ||
| 103 | + | element-text { |
|
| 104 | + | text-color: inherit; |
|
| 105 | + | } |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, wireplumber (wpctl) |
|
| 3 | + | # Audio menu: volume, mute, and which sink the sound comes out of. This is |
|
| 4 | + | # the rofi replacement for the gum-based audio-menu/audio-output pair, so it |
|
| 5 | + | # no longer needs a terminal window to run in. |
|
| 6 | + | set -u |
|
| 7 | + | ||
| 8 | + | STEP=${ROFI_AUDIO_STEP:-5} |
|
| 9 | + | NOTIFY_ID=7303 |
|
| 10 | + | ||
| 11 | + | notify() { |
|
| 12 | + | if command -v dunstify >/dev/null 2>&1; then |
|
| 13 | + | dunstify -r "$NOTIFY_ID" "Audio" "$1" |
|
| 14 | + | else |
|
| 15 | + | notify-send "Audio" "$1" |
|
| 16 | + | fi |
|
| 17 | + | } |
|
| 18 | + | ||
| 19 | + | # wpctl has no machine-readable listing, so carve the Sinks block out of |
|
| 20 | + | # `status`. Output: "<*|space>\t<id>\t<name>". |
|
| 21 | + | sinks() { |
|
| 22 | + | wpctl status 2>/dev/null | awk ' |
|
| 23 | + | /^Audio/ { audio = 1; next } |
|
| 24 | + | /^[A-Z]/ { audio = 0 } |
|
| 25 | + | audio && /Sinks:/ && !/endpoints:/ { insec = 1; next } |
|
| 26 | + | audio && /Devices:|Sources:|Streams:|endpoints:|Filters:/ { insec = 0; next } |
|
| 27 | + | insec { |
|
| 28 | + | line = $0 |
|
| 29 | + | prefix = line; sub(/[0-9].*$/, "", prefix) |
|
| 30 | + | def = (prefix ~ /\*/) ? "*" : " " |
|
| 31 | + | sub(/^[^0-9]*/, "", line) |
|
| 32 | + | if (line !~ /^[0-9]+\./) next |
|
| 33 | + | id = line; sub(/\..*$/, "", id) |
|
| 34 | + | name = line; sub(/^[0-9]+\.[[:space:]]*/, "", name) |
|
| 35 | + | sub(/[[:space:]]*\[vol:.*$/, "", name) |
|
| 36 | + | sub(/[[:space:]]+$/, "", name) |
|
| 37 | + | print def "\t" id "\t" name |
|
| 38 | + | } |
|
| 39 | + | ' |
|
| 40 | + | } |
|
| 41 | + | ||
| 42 | + | # @DEFAULT_AUDIO_SINK@ always resolves to whatever is current, so the volume |
|
| 43 | + | # actions never need to know which sink that is. |
|
| 44 | + | volume() { wpctl get-volume @DEFAULT_AUDIO_SINK@ 2>/dev/null; } |
|
| 45 | + | ||
| 46 | + | vol_percent() { volume | awk '{ printf "%d", $2 * 100 }'; } |
|
| 47 | + | ||
| 48 | + | # The icon tracks the level the same way the status bar blocks do, so a |
|
| 49 | + | # notification reads the same whether it came from here or from a media key. |
|
| 50 | + | vol_icon() { |
|
| 51 | + | case "$(volume)" in |
|
| 52 | + | *MUTED*) printf '' ;; |
|
| 53 | + | *) v=$(vol_percent) |
|
| 54 | + | if [ "$v" -eq 0 ]; then printf '' |
|
| 55 | + | elif [ "$v" -lt 34 ]; then printf '' |
|
| 56 | + | elif [ "$v" -lt 67 ]; then printf '' |
|
| 57 | + | else printf '' |
|
| 58 | + | fi ;; |
|
| 59 | + | esac |
|
| 60 | + | } |
|
| 61 | + | ||
| 62 | + | report() { notify "$(vol_icon) $(vol_percent)%"; } |
|
| 63 | + | ||
| 64 | + | SINKS=$(sinks) |
|
| 65 | + | [ -n "$SINKS" ] || { notify "No sinks found — is pipewire running?"; exit 1; } |
|
| 66 | + | ||
| 67 | + | CURRENT=$(printf '%s\n' "$SINKS" | awk -F'\t' '$1 == "*" { print $3; exit }') |
|
| 68 | + | MIC=$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@ 2>/dev/null | grep -q MUTED && echo "muted" || echo "live") |
|
| 69 | + | ||
| 70 | + | ACTIONS=$(printf ' volume up (+%s%%)\n volume down (-%s%%)\n toggle mute\n toggle mic (currently %s)\n automatic output\n' "$STEP" "$STEP" "$MIC") |
|
| 71 | + | ||
| 72 | + | # Sinks are listed by name with their wpctl id hidden behind two spaces, the |
|
| 73 | + | # same split the actions use, so one case statement handles both. |
|
| 74 | + | SINKLIST=$(printf '%s\n' "$SINKS" | awk -F'\t' '{ |
|
| 75 | + | icon = ($1 == "*") ? "" : "" |
|
| 76 | + | printf "%s %s\t%s\n", icon, $3, $2 |
|
| 77 | + | }') |
|
| 78 | + | ||
| 79 | + | CHOICE=$(printf '%s\n%s\n' "$ACTIONS" "$(printf '%s\n' "$SINKLIST" | cut -f1)" | |
|
| 80 | + | rofi -dmenu -i -no-custom -l 10 -p "audio" \ |
|
| 81 | + | -mesg "$(vol_icon) $(vol_percent)% — ${CURRENT:-no default sink}") || exit 0 |
|
| 82 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 83 | + | ||
| 84 | + | case "$CHOICE" in |
|
| 85 | + | *"volume up"*) |
|
| 86 | + | # The cap keeps a stray keystroke from pushing the sink into the |
|
| 87 | + | # clipping range above 100%. |
|
| 88 | + | wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ "$STEP%+" |
|
| 89 | + | report ;; |
|
| 90 | + | *"volume down"*) |
|
| 91 | + | wpctl set-volume @DEFAULT_AUDIO_SINK@ "$STEP%-" |
|
| 92 | + | report ;; |
|
| 93 | + | *"toggle mute"*) |
|
| 94 | + | wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle |
|
| 95 | + | report ;; |
|
| 96 | + | *"toggle mic"*) |
|
| 97 | + | wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle |
|
| 98 | + | wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | grep -q MUTED && |
|
| 99 | + | notify " microphone muted" || notify " microphone live" ;; |
|
| 100 | + | *"automatic output"*) |
|
| 101 | + | wpctl clear-default |
|
| 102 | + | notify " output: automatic (wireplumber picks)" ;; |
|
| 103 | + | *) |
|
| 104 | + | ID=$(printf '%s\n' "$SINKLIST" | awk -F'\t' -v c="$CHOICE" '$1 == c { print $2; exit }') |
|
| 105 | + | [ -n "$ID" ] || exit 0 |
|
| 106 | + | wpctl set-default "$ID" |
|
| 107 | + | notify " output: ${CHOICE##* }" ;; |
|
| 108 | + | esac |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, bc, xclip |
|
| 3 | + | # Calculator. The rofi-calc plugin wants libqalculate; this needs nothing but |
|
| 4 | + | # bc, at the cost of results arriving on Enter rather than as you type: |
|
| 5 | + | # type an expression, Enter evaluate it (the result becomes a row) |
|
| 6 | + | # Enter on a result row copy it to the clipboard |
|
| 7 | + | # Past results stay listed until cleared, so earlier answers can be copied or |
|
| 8 | + | # pasted back into a new expression. |
|
| 9 | + | set -u |
|
| 10 | + | ||
| 11 | + | HIST="${XDG_CACHE_HOME:-$HOME/.cache}/rofi-calc-history" |
|
| 12 | + | HIST_MAX=${ROFI_CALC_HISTORY_MAX:-50} |
|
| 13 | + | SCALE=${ROFI_CALC_SCALE:-10} |
|
| 14 | + | ||
| 15 | + | if [ -z "${ROFI_RETV:-}" ]; then |
|
| 16 | + | exec rofi -show calc -modes "calc:$0" |
|
| 17 | + | fi |
|
| 18 | + | ||
| 19 | + | US=$(printf '\037') |
|
| 20 | + | touch "$HIST" |
|
| 21 | + | ||
| 22 | + | list() { |
|
| 23 | + | printf '\0prompt%scalc\n' "$US" |
|
| 24 | + | printf '\0message%sType an expression and press Enter. + - * / ^%%, sqrt(), s()/c()/a() trig, l()/e() log.\n' "$US" |
|
| 25 | + | printf '\0keep-selection%strue\n' "$US" |
|
| 26 | + | while IFS=' ' read -r expr result; do |
|
| 27 | + | [ -n "$result" ] || continue |
|
| 28 | + | printf '%s = %s\0info%s%s\n' "$expr" "$result" "$US" "$result" |
|
| 29 | + | done < "$HIST" |
|
| 30 | + | [ -s "$HIST" ] && printf 'clear history\0info%s@clear\n' "$US" |
|
| 31 | + | return 0 |
|
| 32 | + | } |
|
| 33 | + | ||
| 34 | + | evaluate() { |
|
| 35 | + | # -l pulls in the math library (sqrt, s, c, a, l, e) and sets scale=20, |
|
| 36 | + | # so scale has to be set after it to control the printed precision. |
|
| 37 | + | result=$(printf 'scale=%s\n%s\n' "$SCALE" "$1" | bc -l 2>/dev/null | tail -n1) |
|
| 38 | + | [ -n "$result" ] || return 1 |
|
| 39 | + | ||
| 40 | + | # bc pads to the full scale (2/1 = .5000000000) and leads with a bare dot; |
|
| 41 | + | # trim both so results look like results. |
|
| 42 | + | result=$(printf '%s' "$result" | sed -e 's/\([.][0-9]*[1-9]\)0*$/\1/' -e 's/[.]0*$//' -e 's/^\([-]\{0,1\}\)[.]/\10./') |
|
| 43 | + | printf '%s' "$result" |
|
| 44 | + | } |
|
| 45 | + | ||
| 46 | + | case "$ROFI_RETV" in |
|
| 47 | + | 0) list ;; |
|
| 48 | + | 1) |
|
| 49 | + | info=${ROFI_INFO:-} |
|
| 50 | + | if [ "$info" = "@clear" ]; then |
|
| 51 | + | : > "$HIST" |
|
| 52 | + | list |
|
| 53 | + | elif [ -n "$info" ]; then |
|
| 54 | + | # Redirect: xclip backgrounds itself still holding the pipe rofi |
|
| 55 | + | # reads this script on, and rofi hangs with the keyboard grabbed |
|
| 56 | + | # until it sees EOF there. |
|
| 57 | + | printf '%s' "$info" | xclip -selection clipboard -i >/dev/null 2>&1 |
|
| 58 | + | fi |
|
| 59 | + | ;; |
|
| 60 | + | 2) |
|
| 61 | + | expr=${1:-} |
|
| 62 | + | [ -n "$expr" ] || { list; exit 0; } |
|
| 63 | + | if result=$(evaluate "$expr") && [ -n "$result" ]; then |
|
| 64 | + | tmp="$HIST.$$" |
|
| 65 | + | printf '%s\t%s\n' "$expr" "$result" > "$tmp" |
|
| 66 | + | grep -v "^$(printf '%s' "$expr" | sed 's/[][\.*^$/]/\\&/g') " "$HIST" >> "$tmp" 2>/dev/null |
|
| 67 | + | head -n "$HIST_MAX" "$tmp" > "$HIST" |
|
| 68 | + | rm -f "$tmp" |
|
| 69 | + | else |
|
| 70 | + | printf '\0message%s<span foreground="#bf616a">Not a valid expression</span>\n' "$US" |
|
| 71 | + | fi |
|
| 72 | + | list |
|
| 73 | + | ;; |
|
| 74 | + | 3) |
|
| 75 | + | expr=$(printf '%s' "${1:-}" | sed 's/ = .*$//') |
|
| 76 | + | if [ -n "$expr" ]; then |
|
| 77 | + | grep -v "^$(printf '%s' "$expr" | sed 's/[][\.*^$/]/\\&/g') " "$HIST" > "$HIST.$$" 2>/dev/null |
|
| 78 | + | mv "$HIST.$$" "$HIST" |
|
| 79 | + | fi |
|
| 80 | + | list |
|
| 81 | + | ;; |
|
| 82 | + | esac |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, xclip, rofi-clipd running; xdotool for the paste step |
|
| 3 | + | # Clipboard history picker. Runs as a rofi script mode so each row can carry |
|
| 4 | + | # its entry's hash out of band — the visible text is a one-line preview, but |
|
| 5 | + | # what gets copied is the full original, newlines and all. |
|
| 6 | + | # Enter paste the entry into the window rofi was opened over |
|
| 7 | + | # Shift+Delete forget that entry |
|
| 8 | + | # The entry goes to the clipboard either way, so a manual Ctrl+V still works |
|
| 9 | + | # when the synthetic keystroke does not suit the app underneath. |
|
| 10 | + | # Called with no arguments it launches the rofi that then calls it back, so |
|
| 11 | + | # the keybinding stays a single path. |
|
| 12 | + | set -u |
|
| 13 | + | ||
| 14 | + | DIR="${XDG_CACHE_HOME:-$HOME/.cache}/rofi-clipboard" |
|
| 15 | + | STORE="$DIR/store" |
|
| 16 | + | INDEX="$DIR/index" |
|
| 17 | + | ||
| 18 | + | if [ -z "${ROFI_RETV:-}" ]; then |
|
| 19 | + | exec rofi -show clipboard -modes "clipboard:$0" |
|
| 20 | + | fi |
|
| 21 | + | ||
| 22 | + | # Row options ride behind a NUL, with 0x1f between key and value. NUL cannot |
|
| 23 | + | # survive a shell variable, so it has to come from the format string itself. |
|
| 24 | + | US=$(printf '\037') |
|
| 25 | + | ||
| 26 | + | list() { |
|
| 27 | + | if [ ! -s "$INDEX" ]; then |
|
| 28 | + | printf '\0message%sClipboard history is empty — is rofi-clipd running?\n' "$US" |
|
| 29 | + | return |
|
| 30 | + | fi |
|
| 31 | + | printf '\0prompt%sclipboard\n' "$US" |
|
| 32 | + | # keep-selection stops the cursor jumping back to the top after a delete. |
|
| 33 | + | printf '\0keep-selection%strue\n' "$US" |
|
| 34 | + | while IFS=' ' read -r hash preview; do |
|
| 35 | + | printf '%s\0info%s%s\n' "$preview" "$US" "$hash" |
|
| 36 | + | done < "$INDEX" |
|
| 37 | + | } |
|
| 38 | + | ||
| 39 | + | # Type the paste keystroke into whatever the window manager focuses once rofi |
|
| 40 | + | # is gone. It cannot be sent from here directly: rofi holds a keyboard grab |
|
| 41 | + | # for as long as it is up, and XTEST events go to the grab holder, so this |
|
| 42 | + | # runs detached and waits the grab out. Its stdout goes to /dev/null so it |
|
| 43 | + | # cannot hold that pipe open either — see the note on xclip below. |
|
| 44 | + | paste_into_focus() { |
|
| 45 | + | if ! command -v xdotool >/dev/null 2>&1; then |
|
| 46 | + | notify-send "Clipboard" "Copied — install xdotool to paste automatically." \ |
|
| 47 | + | >/dev/null 2>&1 |
|
| 48 | + | return 0 |
|
| 49 | + | fi |
|
| 50 | + | ( |
|
| 51 | + | # Up to three seconds of waiting for focus to land somewhere that is |
|
| 52 | + | # not rofi; if it never does, paste nowhere rather than into rofi. |
|
| 53 | + | target="" |
|
| 54 | + | i=0 |
|
| 55 | + | while [ "$i" -lt 60 ]; do |
|
| 56 | + | class=$(xdotool getactivewindow getwindowclassname 2>/dev/null) || class="" |
|
| 57 | + | case $class in |
|
| 58 | + | ""|[Rr]ofi) ;; |
|
| 59 | + | *) target=$class; break ;; |
|
| 60 | + | esac |
|
| 61 | + | sleep 0.05 |
|
| 62 | + | i=$((i + 1)) |
|
| 63 | + | done |
|
| 64 | + | [ -n "$target" ] || exit 0 |
|
| 65 | + | ||
| 66 | + | # Terminals keep Ctrl+V for the readline binding and put paste behind |
|
| 67 | + | # Shift; everything else takes the plain one. |
|
| 68 | + | case $target in |
|
| 69 | + | org.wezfurlong.wezterm|Alacritty|com.mitchellh.ghostty|kitty|foot|Foot) |
|
| 70 | + | key=ctrl+shift+v ;; |
|
| 71 | + | *) key=ctrl+v ;; |
|
| 72 | + | esac |
|
| 73 | + | ||
| 74 | + | # Let the newly focused window settle before typing at it. |
|
| 75 | + | sleep 0.05 |
|
| 76 | + | xdotool key --clearmodifiers "$key" |
|
| 77 | + | ) >/dev/null 2>&1 & |
|
| 78 | + | } |
|
| 79 | + | ||
| 80 | + | case "$ROFI_RETV" in |
|
| 81 | + | 0) list ;; |
|
| 82 | + | 1) |
|
| 83 | + | hash=${ROFI_INFO:-} |
|
| 84 | + | [ -n "$hash" ] && [ -f "$STORE/$hash" ] || exit 0 |
|
| 85 | + | # xclip forks and holds the selection until something else claims it, |
|
| 86 | + | # so it has to outlive this script — which it does on its own. Its |
|
| 87 | + | # stdout has to go, though: it inherits the pipe rofi reads this script |
|
| 88 | + | # on, and rofi waits for EOF there before closing and dropping its |
|
| 89 | + | # keyboard grab. That EOF never comes while xclip holds the pipe open, |
|
| 90 | + | # and a hung rofi still holding the grab looks like a frozen desktop. |
|
| 91 | + | xclip -selection clipboard -i "$STORE/$hash" >/dev/null 2>&1 |
|
| 92 | + | paste_into_focus |
|
| 93 | + | ;; |
|
| 94 | + | 2) |
|
| 95 | + | # Typed text with no match: copy what was typed, it is the one thing |
|
| 96 | + | # the user could have meant. |
|
| 97 | + | if [ -n "${1:-}" ]; then |
|
| 98 | + | printf '%s' "$1" | xclip -selection clipboard -i >/dev/null 2>&1 |
|
| 99 | + | paste_into_focus |
|
| 100 | + | fi |
|
| 101 | + | ;; |
|
| 102 | + | 3) |
|
| 103 | + | hash=${ROFI_INFO:-} |
|
| 104 | + | if [ -n "$hash" ]; then |
|
| 105 | + | grep -v "^$hash " "$INDEX" > "$INDEX.$$" 2>/dev/null |
|
| 106 | + | mv "$INDEX.$$" "$INDEX" |
|
| 107 | + | rm -f "$STORE/$hash" |
|
| 108 | + | fi |
|
| 109 | + | list |
|
| 110 | + | ;; |
|
| 111 | + | esac |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: xclip |
|
| 3 | + | # Clipboard history daemon. cliphist is Wayland-only, so this is the X11 |
|
| 4 | + | # stand-in: it polls the CLIPBOARD selection and keeps a copy of everything |
|
| 5 | + | # that passes through it. Copying is what makes it useful — an X selection |
|
| 6 | + | # lives in the process that owns it, so closing the app that copied a string |
|
| 7 | + | # takes the string with it. rofi-clip reads what this writes. |
|
| 8 | + | # |
|
| 9 | + | # Usage: rofi-clipd run in the foreground (autostart target) |
|
| 10 | + | # rofi-clipd --once record the clipboard right now and exit |
|
| 11 | + | # rofi-clipd --clear forget the whole history |
|
| 12 | + | set -u |
|
| 13 | + | ||
| 14 | + | DIR="${XDG_CACHE_HOME:-$HOME/.cache}/rofi-clipboard" |
|
| 15 | + | STORE="$DIR/store" |
|
| 16 | + | INDEX="$DIR/index" |
|
| 17 | + | PIDFILE="$DIR/pid" |
|
| 18 | + | ||
| 19 | + | # How many entries to keep, and how often to look. A second is under the |
|
| 20 | + | # threshold where a copy-then-immediately-quit would be missed in practice. |
|
| 21 | + | LIMIT=${ROFI_CLIP_LIMIT:-200} |
|
| 22 | + | INTERVAL=${ROFI_CLIP_INTERVAL:-1} |
|
| 23 | + | ||
| 24 | + | mkdir -p "$STORE" |
|
| 25 | + | ||
| 26 | + | # md5sum is the entry's identity: same text, same file, so re-copying an old |
|
| 27 | + | # entry moves it to the top instead of duplicating it. |
|
| 28 | + | hash_of() { printf '%s' "$1" | md5sum | cut -d' ' -f1; } |
|
| 29 | + | ||
| 30 | + | # One index line per entry, newest first: "<hash>\t<single-line preview>". |
|
| 31 | + | # rofi rows cannot span lines, so newlines become a visible glyph and the |
|
| 32 | + | # text is cut to something that fits a menu width. |
|
| 33 | + | preview_of() { |
|
| 34 | + | printf '%s' "$1" | awk ' |
|
| 35 | + | BEGIN { ORS = "" } |
|
| 36 | + | NR > 1 { print " ⏎ " } |
|
| 37 | + | { gsub(/\t/, " "); print } |
|
| 38 | + | ' | cut -c1-160 |
|
| 39 | + | } |
|
| 40 | + | ||
| 41 | + | record() { |
|
| 42 | + | entry=$1 |
|
| 43 | + | ||
| 44 | + | # Whitespace-only copies are almost always an accident of a drag select. |
|
| 45 | + | case $entry in |
|
| 46 | + | *[![:space:]]*) ;; |
|
| 47 | + | *) return 0 ;; |
|
| 48 | + | esac |
|
| 49 | + | ||
| 50 | + | hash=$(hash_of "$entry") |
|
| 51 | + | printf '%s' "$entry" > "$STORE/$hash" |
|
| 52 | + | ||
| 53 | + | tmp="$INDEX.$$" |
|
| 54 | + | printf '%s\t%s\n' "$hash" "$(preview_of "$entry")" > "$tmp" |
|
| 55 | + | if [ -f "$INDEX" ]; then |
|
| 56 | + | grep -v "^$hash " "$INDEX" >> "$tmp" |
|
| 57 | + | fi |
|
| 58 | + | head -n "$LIMIT" "$tmp" > "$INDEX" |
|
| 59 | + | rm -f "$tmp" |
|
| 60 | + | ||
| 61 | + | # Everything past the limit fell off the index above; drop its payload |
|
| 62 | + | # too, or the store grows without bound. |
|
| 63 | + | for f in "$STORE"/*; do |
|
| 64 | + | [ -e "$f" ] || continue |
|
| 65 | + | grep -q "^${f##*/} " "$INDEX" || rm -f "$f" |
|
| 66 | + | done |
|
| 67 | + | } |
|
| 68 | + | ||
| 69 | + | # UTF8_STRING keeps this to text: asking for whatever target an image or a |
|
| 70 | + | # file-manager copy offers would store a blob nothing can paste back. |
|
| 71 | + | current() { xclip -o -selection clipboard -t UTF8_STRING 2>/dev/null; } |
|
| 72 | + | ||
| 73 | + | case "${1:-}" in |
|
| 74 | + | --once) |
|
| 75 | + | clip=$(current) || exit 0 |
|
| 76 | + | [ -n "$clip" ] && record "$clip" |
|
| 77 | + | exit 0 |
|
| 78 | + | ;; |
|
| 79 | + | --clear) |
|
| 80 | + | rm -rf "$STORE" "$INDEX" |
|
| 81 | + | mkdir -p "$STORE" |
|
| 82 | + | exit 0 |
|
| 83 | + | ;; |
|
| 84 | + | "") ;; |
|
| 85 | + | *) echo "usage: rofi-clipd [--once|--clear]" >&2; exit 2 ;; |
|
| 86 | + | esac |
|
| 87 | + | ||
| 88 | + | # A second daemon would double every entry, so check for a live one first. |
|
| 89 | + | if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then |
|
| 90 | + | echo "rofi-clipd: already running (pid $(cat "$PIDFILE"))" >&2 |
|
| 91 | + | exit 1 |
|
| 92 | + | fi |
|
| 93 | + | echo $$ > "$PIDFILE" |
|
| 94 | + | trap 'rm -f "$PIDFILE"' EXIT INT TERM |
|
| 95 | + | ||
| 96 | + | last="" |
|
| 97 | + | while :; do |
|
| 98 | + | clip=$(current) || clip="" |
|
| 99 | + | if [ -n "$clip" ] && [ "$clip" != "$last" ]; then |
|
| 100 | + | last=$clip |
|
| 101 | + | record "$clip" |
|
| 102 | + | fi |
|
| 103 | + | sleep "$INTERVAL" |
|
| 104 | + | done |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, xclip, a color emoji font (Noto Color Emoji) |
|
| 3 | + | # Emoji and kaomoji picker: search by name, Enter copies the character to the |
|
| 4 | + | # clipboard. There is no paste-into-the-window step because that needs xdotool |
|
| 5 | + | # to fake a keystroke, which is not installed — copy and paste normally. |
|
| 6 | + | # Picks are remembered and float to the top, so the handful anyone actually |
|
| 7 | + | # uses stop needing to be searched for. |
|
| 8 | + | set -u |
|
| 9 | + | ||
| 10 | + | DATA=${ROFI_EMOJI_DATA:-$(dirname "$0")/../emoji.txt} |
|
| 11 | + | RECENT="${XDG_CACHE_HOME:-$HOME/.cache}/rofi-emoji-recent" |
|
| 12 | + | RECENT_MAX=${ROFI_EMOJI_RECENT_MAX:-30} |
|
| 13 | + | ||
| 14 | + | [ -f "$DATA" ] || { echo "rofi-emoji: no emoji data at $DATA" >&2; exit 1; } |
|
| 15 | + | touch "$RECENT" |
|
| 16 | + | ||
| 17 | + | # Two spaces between the character and its name: a kaomoji can contain single |
|
| 18 | + | # spaces, so a single space would be ambiguous when splitting the choice back |
|
| 19 | + | # apart. Names stay in the row because that is what the search filters on. |
|
| 20 | + | rows() { |
|
| 21 | + | cat "$RECENT" "$DATA" | awk -F'\t' '!seen[$1]++ { printf "%s %s\n", $1, $2 }' |
|
| 22 | + | } |
|
| 23 | + | ||
| 24 | + | CHOICE=$(rows | rofi -dmenu -i -no-custom -p "emoji" -matching normal) || exit 0 |
|
| 25 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 26 | + | ||
| 27 | + | CHAR=${CHOICE%% *} |
|
| 28 | + | NAME=${CHOICE#* } |
|
| 29 | + | ||
| 30 | + | printf '%s' "$CHAR" | xclip -selection clipboard -i |
|
| 31 | + | ||
| 32 | + | # Rewrite the recents file with this pick first and its older copy dropped. |
|
| 33 | + | tmp="$RECENT.$$" |
|
| 34 | + | printf '%s\t%s\n' "$CHAR" "$NAME" > "$tmp" |
|
| 35 | + | grep -Fxv "$(printf '%s\t%s' "$CHAR" "$NAME")" "$RECENT" >> "$tmp" 2>/dev/null |
|
| 36 | + | head -n "$RECENT_MAX" "$tmp" > "$RECENT" |
|
| 37 | + | rm -f "$tmp" |
|
| 38 | + | ||
| 39 | + | command -v dunstify >/dev/null 2>&1 && |
|
| 40 | + | dunstify -r 7302 "Copied $CHAR" "$NAME" || |
|
| 41 | + | notify-send "Copied $CHAR" "$NAME" |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, and either xfce4-session or elogind (loginctl) |
|
| 3 | + | # Power menu, shared between the XFCE session and oxwm. Under XFCE the |
|
| 4 | + | # session manager owns these actions: it asks open applications to close and |
|
| 5 | + | # saves the session before handing the request on, which is what Ctrl+Alt+Del |
|
| 6 | + | # does. Under oxwm there is no session manager, so elogind is asked directly |
|
| 7 | + | # and doas is the backstop for a session it does not own. Every action asks |
|
| 8 | + | # for confirmation first, defaulting to no — this menu sits a keystroke away |
|
| 9 | + | # from the launcher. |
|
| 10 | + | set -u |
|
| 11 | + | ||
| 12 | + | # xfce4-session-logout's per-action flags skip its own dialog on their own; |
|
| 13 | + | # --fast is deliberately not passed, because that means "do not save the |
|
| 14 | + | # session" rather than "do not ask". |
|
| 15 | + | session="" |
|
| 16 | + | if [ "${XDG_CURRENT_DESKTOP:-}" = "XFCE" ] && command -v xfce4-session-logout >/dev/null 2>&1; then |
|
| 17 | + | session=xfce4-session-logout |
|
| 18 | + | fi |
|
| 19 | + | ||
| 20 | + | # Only the lockers that are actually installed get offered. None of these |
|
| 21 | + | # ship with the system: `doas apk add slock` (or i3lock) to get a lock entry. |
|
| 22 | + | # xflock4 is not a locker itself — it asks xfce4-session to lock, which needs |
|
| 23 | + | # one of these installed all the same — but going through it means the |
|
| 24 | + | # session's own lock settings apply. |
|
| 25 | + | locker="" |
|
| 26 | + | for candidate in slock i3lock xsecurelock physlock xscreensaver light-locker; do |
|
| 27 | + | if command -v "$candidate" >/dev/null 2>&1; then |
|
| 28 | + | locker=$candidate |
|
| 29 | + | break |
|
| 30 | + | fi |
|
| 31 | + | done |
|
| 32 | + | if [ -n "$locker" ] && [ -n "$session" ] && command -v xflock4 >/dev/null 2>&1; then |
|
| 33 | + | locker=xflock4 |
|
| 34 | + | fi |
|
| 35 | + | ||
| 36 | + | menu() { rofi -dmenu -i -no-custom "$@"; } |
|
| 37 | + | ||
| 38 | + | confirm() { |
|
| 39 | + | answer=$(printf 'no\nyes\n' | menu -p "$1?" -mesg "This will $2." -l 2) || exit 0 |
|
| 40 | + | [ "$answer" = "yes" ] |
|
| 41 | + | } |
|
| 42 | + | ||
| 43 | + | # The session manager when there is one, then loginctl, then doas. |
|
| 44 | + | # $1 xfce4-session-logout flag $2 loginctl verb $3 doas fallback |
|
| 45 | + | power() { |
|
| 46 | + | if [ -n "$session" ]; then |
|
| 47 | + | "$session" "$1" |
|
| 48 | + | else |
|
| 49 | + | loginctl "$2" 2>/dev/null || doas "$3" |
|
| 50 | + | fi |
|
| 51 | + | } |
|
| 52 | + | ||
| 53 | + | entries=" suspend |
|
| 54 | + | reboot |
|
| 55 | + | shutdown |
|
| 56 | + | log out" |
|
| 57 | + | [ -n "$locker" ] && entries=" lock |
|
| 58 | + | $entries" |
|
| 59 | + | ||
| 60 | + | CHOICE=$(printf '%s\n' "$entries" | menu -p "power" -l 5) || exit 0 |
|
| 61 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 62 | + | ||
| 63 | + | case ${CHOICE##* } in |
|
| 64 | + | lock) exec "$locker" ;; |
|
| 65 | + | suspend) confirm "Suspend" "put the machine to sleep" && power --suspend suspend zzz ;; |
|
| 66 | + | reboot) confirm "Reboot" "close every open window and restart" && power --reboot reboot reboot ;; |
|
| 67 | + | shutdown) confirm "Shut down" "close every open window and power off" && power --halt poweroff poweroff ;; |
|
| 68 | + | "log out") |
|
| 69 | + | confirm "Log out" "end the session and close every window" || exit 0 |
|
| 70 | + | if [ -n "$session" ]; then |
|
| 71 | + | "$session" --logout |
|
| 72 | + | else |
|
| 73 | + | # Ending the session takes the whole X server with it, which is |
|
| 74 | + | # what logging out means here; killing oxwm alone would leave X |
|
| 75 | + | # running. |
|
| 76 | + | loginctl terminate-session "${XDG_SESSION_ID:-}" 2>/dev/null || |
|
| 77 | + | pkill -u "$USER" -x oxwm |
|
| 78 | + | fi |
|
| 79 | + | ;; |
|
| 80 | + | esac |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, maim, xclip, libnotify |
|
| 3 | + | # Screenshot menu. Every shot lands in the clipboard as image/png and, unless |
|
| 4 | + | # it was a clipboard-only pick, on disk as well — the clipboard copy is what |
|
| 5 | + | # gets pasted into a chat, the file is what survives the next copy. |
|
| 6 | + | # Mod+S still takes a plain region shot without going through this menu. |
|
| 7 | + | set -u |
|
| 8 | + | ||
| 9 | + | DIR=${ROFI_SCREENSHOT_DIR:-$HOME/Pictures/screenshots} |
|
| 10 | + | NOTIFY_ID=7304 |
|
| 11 | + | ||
| 12 | + | mkdir -p "$DIR" |
|
| 13 | + | ||
| 14 | + | notify() { |
|
| 15 | + | if command -v dunstify >/dev/null 2>&1; then |
|
| 16 | + | dunstify -r "$NOTIFY_ID" ${2:+-i "$2"} "Screenshot" "$1" |
|
| 17 | + | else |
|
| 18 | + | notify-send "Screenshot" "$1" |
|
| 19 | + | fi |
|
| 20 | + | } |
|
| 21 | + | ||
| 22 | + | # -u hides the cursor from the capture; without it the pointer shows up in |
|
| 23 | + | # the middle of whatever was being selected. |
|
| 24 | + | shoot() { |
|
| 25 | + | file="$DIR/$(date +%Y%m%d-%H%M%S).png" |
|
| 26 | + | ||
| 27 | + | # maim writes nothing and exits non-zero when a selection is cancelled |
|
| 28 | + | # with Escape, so a cancelled shot must not leave an empty file behind. |
|
| 29 | + | if ! maim -u "$@" "$file" 2>/dev/null || [ ! -s "$file" ]; then |
|
| 30 | + | rm -f "$file" |
|
| 31 | + | exit 0 |
|
| 32 | + | fi |
|
| 33 | + | ||
| 34 | + | xclip -selection clipboard -t image/png -i "$file" |
|
| 35 | + | ||
| 36 | + | if [ "$KEEP" -eq 0 ]; then |
|
| 37 | + | rm -f "$file" |
|
| 38 | + | notify "Copied to clipboard" |
|
| 39 | + | else |
|
| 40 | + | notify "Copied — saved to ${file#"$HOME"/}" "$file" |
|
| 41 | + | fi |
|
| 42 | + | } |
|
| 43 | + | ||
| 44 | + | CHOICE=$(printf '%s\n' \ |
|
| 45 | + | " region → clipboard + file" \ |
|
| 46 | + | " region → clipboard only" \ |
|
| 47 | + | " window → clipboard + file" \ |
|
| 48 | + | " full screen → clipboard + file" \ |
|
| 49 | + | " full screen after 5s" \ |
|
| 50 | + | " open screenshots folder" | |
|
| 51 | + | rofi -dmenu -i -no-custom -l 6 -p "screenshot" -mesg "Saving to ${DIR#"$HOME"/}") || exit 0 |
|
| 52 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 53 | + | ||
| 54 | + | KEEP=1 |
|
| 55 | + | case "$CHOICE" in |
|
| 56 | + | *"region → clipboard only") KEEP=0; shoot -s ;; |
|
| 57 | + | *"region"*) shoot -s ;; |
|
| 58 | + | # A huge -t makes maim wait for a click instead of a drag, which selects |
|
| 59 | + | # the clicked window whole — the substitute for `maim -i $(xdotool |
|
| 60 | + | # getactivewindow)`, since xdotool is not installed. |
|
| 61 | + | *"window"*) shoot -st 9999999 ;; |
|
| 62 | + | *"after 5s") notify "Shooting in 5s..."; sleep 5; shoot ;; |
|
| 63 | + | *"full screen"*) shoot ;; |
|
| 64 | + | *"folder") exec xdg-open "$DIR" ;; |
|
| 65 | + | esac |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, a browser |
|
| 3 | + | # Web search: pick an engine, type a query, land in the browser. Typing a |
|
| 4 | + | # query straight into the engine list also works — anything that is not one |
|
| 5 | + | # of the listed engines is treated as a query for the first one. |
|
| 6 | + | # Add engines by adding lines to ENGINES: "<icon> <name>\t<url with %s>". |
|
| 7 | + | set -u |
|
| 8 | + | ||
| 9 | + | BROWSER_CMD=${BROWSER:-} |
|
| 10 | + | if [ -z "$BROWSER_CMD" ]; then |
|
| 11 | + | for candidate in helium.AppImage chromium firefox qutebrowser xdg-open; do |
|
| 12 | + | if command -v "$candidate" >/dev/null 2>&1; then |
|
| 13 | + | BROWSER_CMD=$candidate |
|
| 14 | + | break |
|
| 15 | + | fi |
|
| 16 | + | done |
|
| 17 | + | fi |
|
| 18 | + | [ -n "$BROWSER_CMD" ] || { notify-send "Web search" "No browser found"; exit 1; } |
|
| 19 | + | ||
| 20 | + | # The AppImage refuses to start under this user without it, the same way the |
|
| 21 | + | # Mod+O keybinding launches it. |
|
| 22 | + | BROWSER_ARGS="" |
|
| 23 | + | case "$BROWSER_CMD" in |
|
| 24 | + | *helium*) BROWSER_ARGS="--no-sandbox" ;; |
|
| 25 | + | esac |
|
| 26 | + | ||
| 27 | + | ENGINES=$(printf '%s\n' \ |
|
| 28 | + | " duckduckgo https://duckduckgo.com/?q=%s" \ |
|
| 29 | + | " github https://github.com/search?q=%s" \ |
|
| 30 | + | " npm https://www.npmjs.com/search?q=%s" \ |
|
| 31 | + | " crates.io https://crates.io/search?q=%s" \ |
|
| 32 | + | " mdn https://developer.mozilla.org/en-US/search?q=%s" \ |
|
| 33 | + | " alpine packages https://pkgs.alpinelinux.org/packages?name=%s" \ |
|
| 34 | + | " wikipedia https://en.wikipedia.org/w/index.php?search=%s" \ |
|
| 35 | + | " youtube https://www.youtube.com/results?search_query=%s" \ |
|
| 36 | + | " stack overflow https://stackoverflow.com/search?q=%s") |
|
| 37 | + | ||
| 38 | + | # Percent-encode by byte, so a query with an accent or an emoji survives the |
|
| 39 | + | # trip. od gives the bytes; awk decides which ones may travel as themselves. |
|
| 40 | + | urlencode() { |
|
| 41 | + | printf '%s' "$1" | od -An -tx1 -v | tr -s ' ' '\n' | awk ' |
|
| 42 | + | function h2d(h, i, c, d) { |
|
| 43 | + | d = 0 |
|
| 44 | + | for (i = 1; i <= length(h); i++) { |
|
| 45 | + | c = index("0123456789abcdef", substr(tolower(h), i, 1)) - 1 |
|
| 46 | + | d = d * 16 + c |
|
| 47 | + | } |
|
| 48 | + | return d |
|
| 49 | + | } |
|
| 50 | + | NF { |
|
| 51 | + | d = h2d($1) |
|
| 52 | + | ch = sprintf("%c", d) |
|
| 53 | + | if (ch ~ /^[A-Za-z0-9._~-]$/) printf "%s", ch |
|
| 54 | + | else printf "%%%s", toupper($1) |
|
| 55 | + | } |
|
| 56 | + | ' |
|
| 57 | + | } |
|
| 58 | + | ||
| 59 | + | CHOICE=$(printf '%s\n' "$ENGINES" | cut -f1 | rofi -dmenu -i -l 9 -p "search") || exit 0 |
|
| 60 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 61 | + | ||
| 62 | + | # rofi hands back whatever was typed when nothing matched: that is a query |
|
| 63 | + | # for the default engine, not an engine name. |
|
| 64 | + | URL=$(printf '%s\n' "$ENGINES" | awk -F'\t' -v c="$CHOICE" '$1 == c { print $2; exit }') |
|
| 65 | + | if [ -n "$URL" ]; then |
|
| 66 | + | QUERY=$(rofi -dmenu -p "${CHOICE##* }" -l 0 </dev/null) || exit 0 |
|
| 67 | + | else |
|
| 68 | + | QUERY=$CHOICE |
|
| 69 | + | URL=$(printf '%s\n' "$ENGINES" | awk -F'\t' 'NR == 1 { print $2; exit }') |
|
| 70 | + | fi |
|
| 71 | + | [ -n "$QUERY" ] || exit 0 |
|
| 72 | + | ||
| 73 | + | # A pasted or typed URL is a destination, not something to search for. |
|
| 74 | + | case "$QUERY" in |
|
| 75 | + | http://*|https://*) TARGET=$QUERY ;; |
|
| 76 | + | *) TARGET=$(printf "$URL" "$(urlencode "$QUERY")") ;; |
|
| 77 | + | esac |
|
| 78 | + | ||
| 79 | + | exec "$BROWSER_CMD" ${BROWSER_ARGS:+$BROWSER_ARGS} "$TARGET" |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: rofi, libnotify, iw, wpa_supplicant, udhcpc, openrc, doas |
|
| 3 | + | # WiFi menu: scan, connect, disconnect. This is the rofi rewrite of the old |
|
| 4 | + | # dm-wifi-connect, with two changes worth knowing about — the passphrase goes |
|
| 5 | + | # through `rofi -password` instead of the black-on-black dmenu trick, and a |
|
| 6 | + | # new network is merged into wpa_supplicant.conf beside the ones already |
|
| 7 | + | # there rather than replacing them, so the machine can still roam back to a |
|
| 8 | + | # network it has seen before. |
|
| 9 | + | # |
|
| 10 | + | # Prompting runs as the calling user so rofi keeps the X session and |
|
| 11 | + | # notifications keep the user's bus; only scanning, the config write and the |
|
| 12 | + | # bring-up are handed to doas. |
|
| 13 | + | set -u |
|
| 14 | + | ||
| 15 | + | CONF=/etc/wpa_supplicant/wpa_supplicant.conf |
|
| 16 | + | NOTIFY_ID=7301 |
|
| 17 | + | ||
| 18 | + | menu() { rofi -dmenu -i "$@"; } |
|
| 19 | + | ||
| 20 | + | notify() { |
|
| 21 | + | # dunstify can replace an earlier notification in place, so the progress |
|
| 22 | + | # line becomes the result line instead of stacking up. |
|
| 23 | + | if command -v dunstify >/dev/null 2>&1; then |
|
| 24 | + | dunstify -r "$NOTIFY_ID" ${2:+-u "$2"} "WiFi" "$1" |
|
| 25 | + | else |
|
| 26 | + | notify-send ${2:+-u "$2"} "WiFi" "$1" |
|
| 27 | + | fi |
|
| 28 | + | } |
|
| 29 | + | ||
| 30 | + | fail() { notify "$1" critical; exit 1; } |
|
| 31 | + | ||
| 32 | + | # doas asks for a passphrase on a tty, and launched from a keybinding there |
|
| 33 | + | # is none — fail with something readable instead of hanging invisibly. |
|
| 34 | + | doas -n true 2>/dev/null || fail "doas needs a password; add a nopass rule for this user." |
|
| 35 | + | ||
| 36 | + | # Ask the kernel which interfaces are wireless rather than assuming wlan0. |
|
| 37 | + | IFACES=$(iw dev | awk '$1 == "Interface" { print $2 }') |
|
| 38 | + | case $(printf '%s' "$IFACES" | grep -c .) in |
|
| 39 | + | 0) fail "No wireless interfaces found." ;; |
|
| 40 | + | 1) IFACE=$IFACES ;; |
|
| 41 | + | *) IFACE=$(printf '%s\n' "$IFACES" | menu -l 5 -p "interface") ;; |
|
| 42 | + | esac |
|
| 43 | + | [ -n "$IFACE" ] || exit 1 |
|
| 44 | + | ||
| 45 | + | link_ssid() { iw dev "$IFACE" link 2>/dev/null | sed -n 's/^[[:space:]]*SSID: //p'; } |
|
| 46 | + | ipv4() { ip -4 addr show "$IFACE" 2>/dev/null | awk '/inet /{ print $2; exit }'; } |
|
| 47 | + | ||
| 48 | + | saved_ssids() { doas -n grep -o 'ssid="[^"]*"' "$CONF" 2>/dev/null | sed 's/^ssid="//; s/"$//'; } |
|
| 49 | + | ||
| 50 | + | disconnect() { |
|
| 51 | + | notify " Disabling $IFACE..." |
|
| 52 | + | doas sh -c ' |
|
| 53 | + | # wpa_supplicant runs under supervise-daemon, which respawns the |
|
| 54 | + | # daemon a couple of seconds after any kill. Stopping the service is |
|
| 55 | + | # what takes the supervisor down with it; pkill only kills the child. |
|
| 56 | + | rc-service -s -q wpa_supplicant stop |
|
| 57 | + | ifdown "$1" 2>/dev/null |
|
| 58 | + | ||
| 59 | + | PIDFILE=/var/run/udhcpc.$1.pid |
|
| 60 | + | if [ -f "$PIDFILE" ]; then |
|
| 61 | + | kill "$(cat "$PIDFILE")" 2>/dev/null |
|
| 62 | + | rm -f "$PIDFILE" |
|
| 63 | + | fi |
|
| 64 | + | ||
| 65 | + | ip addr flush dev "$1" 2>/dev/null |
|
| 66 | + | ip link set "$1" down |
|
| 67 | + | ' _ "$IFACE" |
|
| 68 | + | notify " $IFACE disabled" |
|
| 69 | + | exit 0 |
|
| 70 | + | } |
|
| 71 | + | ||
| 72 | + | bring_up() { |
|
| 73 | + | ssid=$1 |
|
| 74 | + | notify " Connecting to $ssid..." |
|
| 75 | + | doas sh -c ' |
|
| 76 | + | # wpa_supplicant will not reread its config on its own, so restart it |
|
| 77 | + | # rather than signalling it. This also covers the case where the link |
|
| 78 | + | # was disabled outright. ifup is no help: wlan0 has no stanza in |
|
| 79 | + | # /etc/network/interfaces. |
|
| 80 | + | rc-service wpa_supplicant restart >/dev/null 2>&1 |
|
| 81 | + | ||
| 82 | + | # Give the supplicant time to associate before asking for a lease — a |
|
| 83 | + | # DHCP request sent before association just burns its whole timeout. |
|
| 84 | + | i=0 |
|
| 85 | + | while [ "$i" -lt 20 ]; do |
|
| 86 | + | iw dev "$1" link 2>/dev/null | grep -q "^Connected to" && break |
|
| 87 | + | sleep 1 |
|
| 88 | + | i=$((i + 1)) |
|
| 89 | + | done |
|
| 90 | + | ||
| 91 | + | # Replace any DHCP client left over from a previous connect; without |
|
| 92 | + | # this they stack up, one per run, all renewing the same lease. |
|
| 93 | + | PIDFILE=/var/run/udhcpc.$1.pid |
|
| 94 | + | if [ -f "$PIDFILE" ]; then |
|
| 95 | + | kill "$(cat "$PIDFILE")" 2>/dev/null |
|
| 96 | + | rm -f "$PIDFILE" |
|
| 97 | + | fi |
|
| 98 | + | ip addr flush dev "$1" 2>/dev/null |
|
| 99 | + | ||
| 100 | + | # Same invocation ifupdown-ng uses for a dhcp stanza. udhcpc |
|
| 101 | + | # daemonises once it has the lease, so this returns with the address |
|
| 102 | + | # already set. |
|
| 103 | + | udhcpc -b -R -p "$PIDFILE" -i "$1" -x "hostname:$(hostname)" >/dev/null 2>&1 |
|
| 104 | + | ' _ "$IFACE" |
|
| 105 | + | ||
| 106 | + | if [ -n "$(ipv4)" ]; then |
|
| 107 | + | notify " $ssid on $IFACE — $(ipv4)" |
|
| 108 | + | else |
|
| 109 | + | fail " Failed to connect to $ssid" |
|
| 110 | + | fi |
|
| 111 | + | exit 0 |
|
| 112 | + | } |
|
| 113 | + | ||
| 114 | + | connect() { |
|
| 115 | + | ssid=$1 |
|
| 116 | + | ||
| 117 | + | # A network already in the config has a working passphrase on file; only |
|
| 118 | + | # ask again if there is nothing saved for it. |
|
| 119 | + | if saved_ssids | grep -Fxq "$ssid"; then |
|
| 120 | + | bring_up "$ssid" |
|
| 121 | + | fi |
|
| 122 | + | ||
| 123 | + | pass=$(rofi -dmenu -password -p "password for $ssid" -mesg "Leave empty for an open network" -l 0 </dev/null) || exit 0 |
|
| 124 | + | ||
| 125 | + | # Build the new stanza before touching anything: a rejected passphrase |
|
| 126 | + | # must not disturb the config that is currently working. The PSK never |
|
| 127 | + | # lands on disk unprivileged — it goes to the root shell over a pipe. |
|
| 128 | + | if [ -z "$pass" ]; then |
|
| 129 | + | NEW=$(printf 'network={\n\tssid="%s"\n\tkey_mgmt=NONE\n}\n' "$ssid") |
|
| 130 | + | else |
|
| 131 | + | NEW=$(wpa_passphrase "$ssid" "$pass" 2>/dev/null | grep -v '^[[:space:]]*#psk=') || |
|
| 132 | + | fail "Rejected by wpa_passphrase — password must be 8-63 characters." |
|
| 133 | + | fi |
|
| 134 | + | [ -n "$NEW" ] || fail "Could not generate a config for $ssid." |
|
| 135 | + | ||
| 136 | + | # Merge: keep the global settings and every other network block, drop |
|
| 137 | + | # any earlier block for this SSID, then append the new one. awk does the |
|
| 138 | + | # dropping because a network={...} block spans lines; its program travels |
|
| 139 | + | # as an argument so it needs no escaping inside the root shell. |
|
| 140 | + | DROP_BLOCK=' |
|
| 141 | + | /^[[:space:]]*network[[:space:]]*=[[:space:]]*\{/ { |
|
| 142 | + | block = $0 ORS; inblock = 1; matched = 0; next |
|
| 143 | + | } |
|
| 144 | + | inblock { |
|
| 145 | + | block = block $0 ORS |
|
| 146 | + | if (index($0, "ssid=\"" ssid "\"")) matched = 1 |
|
| 147 | + | if ($0 ~ /^[[:space:]]*\}/) { |
|
| 148 | + | if (!matched) printf "%s", block |
|
| 149 | + | inblock = 0 |
|
| 150 | + | } |
|
| 151 | + | next |
|
| 152 | + | } |
|
| 153 | + | { print } |
|
| 154 | + | ' |
|
| 155 | + | ||
| 156 | + | printf '%s\n' "$NEW" | doas sh -c ' |
|
| 157 | + | CONF=$1; SSID=$2; PROG=$3 |
|
| 158 | + | NEW=$(cat) |
|
| 159 | + | [ -f "$CONF" ] && cp "$CONF" "$CONF.bak" |
|
| 160 | + | { |
|
| 161 | + | [ -f "$CONF.bak" ] && awk -v ssid="$SSID" "$PROG" "$CONF.bak" |
|
| 162 | + | printf "%s\n" "$NEW" |
|
| 163 | + | } > "$CONF" |
|
| 164 | + | chmod 600 "$CONF" |
|
| 165 | + | ' _ "$CONF" "$ssid" "$DROP_BLOCK" || fail "Could not write $CONF." |
|
| 166 | + | ||
| 167 | + | bring_up "$ssid" |
|
| 168 | + | } |
|
| 169 | + | ||
| 170 | + | # --- menu ------------------------------------------------------------------- |
|
| 171 | + | ||
| 172 | + | CURRENT=$(link_ssid) |
|
| 173 | + | IP=$(ipv4) |
|
| 174 | + | if [ -n "$CURRENT" ]; then |
|
| 175 | + | STATUS=" connected to $CURRENT${IP:+ — $IP}" |
|
| 176 | + | else |
|
| 177 | + | STATUS=" not connected on $IFACE" |
|
| 178 | + | fi |
|
| 179 | + | ||
| 180 | + | doas ip link set "$IFACE" up 2>/dev/null |
|
| 181 | + | notify " Scanning for networks on $IFACE..." |
|
| 182 | + | ||
| 183 | + | # `scan dump` reuses cached results if the card is busy (already associated), |
|
| 184 | + | # which is when a live scan tends to fail. |
|
| 185 | + | SCAN=$(doas iw dev "$IFACE" scan 2>/dev/null || doas iw dev "$IFACE" scan dump 2>/dev/null) |
|
| 186 | + | ||
| 187 | + | # Only real SSID lines: bare "SSID: " is a hidden network, and "SSID List" |
|
| 188 | + | # under extended capabilities is not a network at all. |
|
| 189 | + | SSIDS=$(printf '%s\n' "$SCAN" | sed -n 's/^[[:space:]]*SSID: \(..*\)$/\1/p' | sort -u) |
|
| 190 | + | ||
| 191 | + | SAVED=$(saved_ssids) |
|
| 192 | + | LIST=$(printf '%s\n' "$SSIDS" | awk -v cur="$CURRENT" -v saved="$SAVED" ' |
|
| 193 | + | BEGIN { n = split(saved, s, "\n"); for (i = 1; i <= n; i++) known[s[i]] = 1 } |
|
| 194 | + | NF { |
|
| 195 | + | # marks a network this machine already has credentials for, the |
|
| 196 | + | # one it is on right now. |
|
| 197 | + | icon = ($0 == cur) ? "" : (known[$0] ? "" : "") |
|
| 198 | + | printf "%s %s\n", icon, $0 |
|
| 199 | + | }') |
|
| 200 | + | ||
| 201 | + | ACTIONS=" rescan |
|
| 202 | + | hidden network" |
|
| 203 | + | [ -n "$CURRENT" ] && ACTIONS="$ACTIONS |
|
| 204 | + | disconnect" |
|
| 205 | + | ||
| 206 | + | CHOICE=$(printf '%s\n%s\n' "$LIST" "$ACTIONS" | grep -v '^$' | menu -l 12 -p "wifi" -mesg "$STATUS") || exit 0 |
|
| 207 | + | [ -n "$CHOICE" ] || exit 0 |
|
| 208 | + | ||
| 209 | + | case ${CHOICE##* } in |
|
| 210 | + | rescan) exec "$0" ;; |
|
| 211 | + | disconnect) disconnect ;; |
|
| 212 | + | "hidden network") ssid=$(menu -p "ssid" -l 0 </dev/null); [ -n "$ssid" ] && connect "$ssid" ;; |
|
| 213 | + | *) connect "${CHOICE##* }" ;; |
|
| 214 | + | esac |
Binary file — no preview.
| 1 | + | # format = """ |
|
| 2 | + | # [](#434C5E)\ |
|
| 3 | + | # $username\ |
|
| 4 | + | # [](bg:#4C566A fg:#434C5E)\ |
|
| 5 | + | # $directory\ |
|
| 6 | + | # [](fg:#4C566A bg:#5E81AC)\ |
|
| 7 | + | # $git_branch\ |
|
| 8 | + | # $git_status\ |
|
| 9 | + | # [](fg:#5E81AC bg:#2E3440)\ |
|
| 10 | + | # $character |
|
| 11 | + | # """ |
|
| 12 | + | # format = """ |
|
| 13 | + | # $username\ |
|
| 14 | + | # [](white)\ |
|
| 15 | + | # $directory\ |
|
| 16 | + | # [](white)\ |
|
| 17 | + | # $character\ |
|
| 18 | + | # $git_branch\ |
|
| 19 | + | # $git_status\ |
|
| 20 | + | # """ |
|
| 21 | + | ||
| 22 | + | format = """ |
|
| 23 | + | $character\ |
|
| 24 | + | $directory\ |
|
| 25 | + | $git_branch\ |
|
| 26 | + | $git_status\ |
|
| 27 | + | """ |
|
| 28 | + | ||
| 29 | + | ||
| 30 | + | # Disable the blank line at the start of the prompt |
|
| 31 | + | add_newline = true |
|
| 32 | + | ||
| 33 | + | # You can also replace your username with a neat symbol like to save some space |
|
| 34 | + | [username] |
|
| 35 | + | show_always = true |
|
| 36 | + | style_user = "white bold" |
|
| 37 | + | style_root = "white bold" |
|
| 38 | + | format = '[$user ]($style)' |
|
| 39 | + | ||
| 40 | + | [character] |
|
| 41 | + | success_symbol = " [](bold white)" |
|
| 42 | + | error_symbol = " [](bold red)" |
|
| 43 | + | vimcmd_symbol = " [](bold yellow)" |
|
| 44 | + | # vimcmd_replace_one_symbol = "◌" |
|
| 45 | + | # vimcmd_replace_symbol = "□" |
|
| 46 | + | # vimcmd_visual_symbol = "▼" |
|
| 47 | + | ||
| 48 | + | ||
| 49 | + | [directory] |
|
| 50 | + | format = "[ $path/ ]($style)" |
|
| 51 | + | style = "white" |
|
| 52 | + | truncation_length = 1 |
|
| 53 | + | truncation_symbol = "" |
|
| 54 | + | ||
| 55 | + | [git_branch] |
|
| 56 | + | symbol = "" |
|
| 57 | + | format = '[$symbol $branch]($style)' |
|
| 58 | + | ||
| 59 | + | [git_status] |
|
| 60 | + | format = ' [$all_status$ahead_behind]($style) ' |
| 1 | + | set -g default-terminal "xterm-256color" |
|
| 2 | + | set-option -ga terminal-overrides ",xterm-256color:Tc" |
|
| 3 | + | set -ga terminal-overrides ",xterm-256color:Tc" |
|
| 4 | + | set -g extended-keys on |
|
| 5 | + | set -g extended-keys-format csi-u |
|
| 6 | + | ||
| 7 | + | # action key |
|
| 8 | + | unbind C-b |
|
| 9 | + | set -g prefix C-q |
|
| 10 | + | set-option -g repeat-time 0 |
|
| 11 | + | ||
| 12 | + | set -g @tpm-clean 'u' |
|
| 13 | + | bind-key x kill-pane # skip "kill-pane 1? (y/n)" prompt |
|
| 14 | + | set -g detach-on-destroy off # don't exit from tmux when closing a session |
|
| 15 | + | ||
| 16 | + | # Plugins |
|
| 17 | + | set -g @tpm_plugins ' |
|
| 18 | + | tmux-plugins/tpm |
|
| 19 | + | tmux-plugins/tmux-sensible |
|
| 20 | + | christoomey/vim-tmux-navigator |
|
| 21 | + | ' |
|
| 22 | + | # set -g @plugin 'joshmedeski/t-smart-tmux-session-manager' |
|
| 23 | + | # set -g @t-fzf-prompt ' ' |
|
| 24 | + | ||
| 25 | + | # bind-key "T" display-popup -E "sesh connect \"( |
|
| 26 | + | # sesh list -i | gum filter --limit 1 --placeholder "Choose a session" --height 50 --prompt="> " --indicator.foreground="2" --match.foreground="2" |
|
| 27 | + | # )\"" |
|
| 28 | + | ||
| 29 | + | bind-key "T" run-shell "sesh connect \"$( |
|
| 30 | + | sesh list --icons --hide-duplicates | fzf-tmux --no-sort --reverse \ |
|
| 31 | + | -p 100%,100% --ansi --padding 0,1 --prompt=' ' \ |
|
| 32 | + | --border=none --input-border=rounded --preview-border=rounded \ |
|
| 33 | + | --header '^a all ^t tmux ^g configs ^x zoxide ^f find ^d kill' \ |
|
| 34 | + | --bind 'tab:down,btab:up' \ |
|
| 35 | + | --bind 'ctrl-a:reload(sesh list --icons --hide-duplicates)' \ |
|
| 36 | + | --bind 'ctrl-t:reload(sesh list -t --icons)' \ |
|
| 37 | + | --bind 'ctrl-g:reload(sesh list -c --icons)' \ |
|
| 38 | + | --bind 'ctrl-x:reload(sesh list -z --icons)' \ |
|
| 39 | + | --bind 'ctrl-f:reload(fd -H -d 2 -t d -E .Trash . ~)' \ |
|
| 40 | + | --bind 'ctrl-d:execute(tmux kill-session -t {2..})+reload(sesh list --icons --hide-duplicates)' \ |
|
| 41 | + | --preview 'sesh preview {}' --preview-window 'right:55%' \ |
|
| 42 | + | )\"" |
|
| 43 | + | ||
| 44 | + | bind-key b set-option status |
|
| 45 | + | ||
| 46 | + | set-window-option -g mode-keys vi |
|
| 47 | + | ||
| 48 | + | # turn on mouse |
|
| 49 | + | set -g mouse on |
|
| 50 | + | ||
| 51 | + | #bind t send-key C-t |
|
| 52 | + | # Reload settings |
|
| 53 | + | bind r source-file ~/.tmux.conf \; display "Reloaded!" |
|
| 54 | + | # Open current directory |
|
| 55 | + | bind o run-shell "open #{pane_current_path}" |
|
| 56 | + | bind -r e kill-pane -a |
|
| 57 | + | ||
| 58 | + | # vim-like pane switching |
|
| 59 | + | bind -r k select-pane -U |
|
| 60 | + | bind -r j select-pane -D |
|
| 61 | + | bind -r h select-pane -L |
|
| 62 | + | bind -r l select-pane -R |
|
| 63 | + | ||
| 64 | + | # Moving window |
|
| 65 | + | bind-key -n C-S-Left swap-window -t -1 \; previous-window |
|
| 66 | + | bind-key -n C-S-Right swap-window -t +1 \; next-window |
|
| 67 | + | ||
| 68 | + | # Resizing pane |
|
| 69 | + | bind -r K resize-pane -U 5 |
|
| 70 | + | bind -r J resize-pane -D 5 |
|
| 71 | + | bind -r H resize-pane -L 5 |
|
| 72 | + | bind -r L resize-pane -R 5 |
|
| 73 | + | ||
| 74 | + | # Start windows and panes at 1, not 0 |
|
| 75 | + | set -g base-index 1 |
|
| 76 | + | set -g pane-base-index 1 |
|
| 77 | + | set-window-option -g pane-base-index 1 |
|
| 78 | + | set-option -g renumber-windows on |
|
| 79 | + | ||
| 80 | + | # Opens split panes in current path |
|
| 81 | + | bind '"' split-window -v -c "#{pan_current_path}" |
|
| 82 | + | bind % split-window -h -c "#{pane_current_path}" |
|
| 83 | + | ||
| 84 | + | ||
| 85 | + | #set-option utf8-default on |
|
| 86 | + | #set-option -g mouse-select-pane |
|
| 87 | + | set-window-option -g mode-keys vi |
|
| 88 | + | #set-window-option -g utf8 on |
|
| 89 | + | # look'n feel |
|
| 90 | + | set-option -g status-position "top" |
|
| 91 | + | set-option -g status-style bg=colour0,fg=default |
|
| 92 | + | set-option -g status-justify centre |
|
| 93 | + | set-option -g status-left '#[bg=default,fg=default,bold]#{?client_prefix,, }#[bg=default,fg=colour3,bold]#{?client_prefix, ,}' |
|
| 94 | + | set-option -g status-right '#S' |
|
| 95 | + | set-option -g window-status-format '#[bg=colour0,fg=colour2] #W ' |
|
| 96 | + | set-option -g window-status-current-format '#[bg=colour0,fg=colour3] #W#{?window_zoomed_flag, , }' |
|
| 97 | + | ||
| 98 | + | ||
| 99 | + | run '~/.tmux/plugins/tpm/tpm' |
Binary file — no preview.
| 1 | + | /Users/stevedylandev/.config/via/mode_sonet_config_010423.json |
| 1 | + | /Users/stevedylandev/.config/via/mode_sonet_config_010723.json |
| 1 | + | local wezterm = require 'wezterm' |
|
| 2 | + | ||
| 3 | + | local config = {} |
|
| 4 | + | ||
| 5 | + | if wezterm.config_builder then |
|
| 6 | + | config = wezterm.config_builder() |
|
| 7 | + | end |
|
| 8 | + | ||
| 9 | + | config.warn_about_missing_glyphs = false |
|
| 10 | + | ||
| 11 | + | -- config.color_scheme = 'Compline' |
|
| 12 | + | -- config.color_schemes = { |
|
| 13 | + | -- ["Compline"] = { |
|
| 14 | + | -- foreground = "#f0efeb", |
|
| 15 | + | -- background = "#1a1d21", |
|
| 16 | + | -- cursor_fg = "#1a1d21", |
|
| 17 | + | -- cursor_bg = "#d4ccb4", |
|
| 18 | + | -- cursor_border = "#d4ccb4", |
|
| 19 | + | -- selection_fg = "#f0efeb", |
|
| 20 | + | -- selection_bg = "#3d424a", |
|
| 21 | + | -- ansi = { |
|
| 22 | + | -- "#22262b", "#cdacac", "#b8c4b8", "#d4ccb4", |
|
| 23 | + | -- "#b4bcc4", "#ccc4b4", "#b4c0c8", "#8b919a" |
|
| 24 | + | -- }, |
|
| 25 | + | -- brights = { |
|
| 26 | + | -- "#515761", "#cdacac", "#b8c4b8", "#d4ccb4", |
|
| 27 | + | -- "#b4bcc4", "#ccc4b4", "#b4c0c8", "#e0dcd4" |
|
| 28 | + | -- } |
|
| 29 | + | -- } |
|
| 30 | + | -- } |
|
| 31 | + | ||
| 32 | + | config.color_scheme = 'nord' |
|
| 33 | + | ||
| 34 | + | -- config.color_scheme = "Poimandres" |
|
| 35 | + | --config.color_scheme = 'Darkmatter' |
|
| 36 | + | config.color_schemes = { |
|
| 37 | + | ["Darkmatter"] = { |
|
| 38 | + | foreground = "#ffffff", |
|
| 39 | + | background = "#121113", |
|
| 40 | + | cursor_fg = "#121113", |
|
| 41 | + | cursor_bg = "#ffffff", |
|
| 42 | + | cursor_border = "#ffffff", |
|
| 43 | + | selection_fg = "#000000", |
|
| 44 | + | selection_bg = "#222222", |
|
| 45 | + | ansi = { |
|
| 46 | + | "#121113", "#5f8787", "#fbcb97", "#e78a53", |
|
| 47 | + | "#888888", "#999999", "#aaaaaa", "#c1c1c1" |
|
| 48 | + | }, |
|
| 49 | + | brights = { |
|
| 50 | + | "#333333", "#5f8787", "#fbcb97", "#e78a53", |
|
| 51 | + | "#888888", "#999999", "#aaaaaa", "#c1c1c1" |
|
| 52 | + | } |
|
| 53 | + | } |
|
| 54 | + | } |
|
| 55 | + | ||
| 56 | + | config.font = wezterm.font('BerkeleyMono Nerd Font') |
|
| 57 | + | config.font_size = 13 |
|
| 58 | + | ||
| 59 | + | config.front_end = "WebGpu" |
|
| 60 | + | ||
| 61 | + | config.enable_tab_bar = false |
|
| 62 | + | config.window_decorations = "RESIZE" |
|
| 63 | + | config.window_padding = { |
|
| 64 | + | left = 10, |
|
| 65 | + | right = 10, |
|
| 66 | + | top = 4, |
|
| 67 | + | bottom = 4 |
|
| 68 | + | } |
|
| 69 | + | ||
| 70 | + | config.initial_cols = 85 |
|
| 71 | + | config.initial_rows = 30 |
|
| 72 | + | ||
| 73 | + | -- config.default_prog = { '/opt/homebrew/bin/nu' } |
|
| 74 | + | -- |
|
| 75 | + | config.keys = { |
|
| 76 | + | { |
|
| 77 | + | key = 'k', |
|
| 78 | + | mods = 'SUPER|CTRL', |
|
| 79 | + | action = wezterm.action.Multiple { |
|
| 80 | + | wezterm.action.SendKey { key = 'q', mods = 'CTRL' }, -- send prefix (C-q) |
|
| 81 | + | wezterm.action.SendKey { key = 'T' }, -- send T |
|
| 82 | + | }, |
|
| 83 | + | }, |
|
| 84 | + | } |
|
| 85 | + | ||
| 86 | + | return config |
| 1 | + | [colors] |
|
| 2 | + | ansi = [ |
|
| 3 | + | '#171922', |
|
| 4 | + | '#D0679D', |
|
| 5 | + | '#5DE4C7', |
|
| 6 | + | '#FFFAC2', |
|
| 7 | + | '#89DDFF', |
|
| 8 | + | '#FCC5E9', |
|
| 9 | + | '#89DDFF', |
|
| 10 | + | '#FFFFFF', |
|
| 11 | + | ] |
|
| 12 | + | brights = [ |
|
| 13 | + | '#506477', |
|
| 14 | + | '#D0679D', |
|
| 15 | + | '#5DE4C7', |
|
| 16 | + | '#FFFAC2', |
|
| 17 | + | '#ADD7FF', |
|
| 18 | + | '#FCC5E9', |
|
| 19 | + | '#ADD7FF', |
|
| 20 | + | '#FFFFFF', |
|
| 21 | + | ] |
|
| 22 | + | background = '#1B1E28' |
|
| 23 | + | foreground = '#E4F0FB' |
|
| 24 | + | compose_cursor = '#FCC5E9' |
|
| 25 | + | cursor_bg = '#A6ACCD' |
|
| 26 | + | cursor_border = '#A6ACCD' |
|
| 27 | + | cursor_fg = '#1B1E28' |
|
| 28 | + | scrollbar_thumb = '#303340' |
|
| 29 | + | selection_bg = '#506477' |
|
| 30 | + | selection_fg = '#E4F0FB' |
|
| 31 | + | split = '#171922' |
|
| 32 | + | visual_bell = '#506477' |
|
| 33 | + | ||
| 34 | + | [colors.indexed] |
|
| 35 | + | 16 = '#5DE4C7' |
|
| 36 | + | 17 = '#D0679D' |
|
| 37 | + | ||
| 38 | + | [colors.tab_bar] |
|
| 39 | + | background = '#171922' |
|
| 40 | + | ||
| 41 | + | [colors.tab_bar.active_tab] |
|
| 42 | + | bg_color = '#1B1E28' |
|
| 43 | + | fg_color = '#E4F0FB' |
|
| 44 | + | intensity = 'Normal' |
|
| 45 | + | italic = false |
|
| 46 | + | strikethrough = false |
|
| 47 | + | underline = 'None' |
|
| 48 | + | ||
| 49 | + | [colors.tab_bar.inactive_tab] |
|
| 50 | + | bg_color = '#171922' |
|
| 51 | + | fg_color = '#506477' |
|
| 52 | + | intensity = 'Normal' |
|
| 53 | + | italic = false |
|
| 54 | + | strikethrough = false |
|
| 55 | + | underline = 'None' |
|
| 56 | + | ||
| 57 | + | [colors.tab_bar.inactive_tab_hover] |
|
| 58 | + | bg_color = '#171922' |
|
| 59 | + | fg_color = '#767C9D' |
|
| 60 | + | intensity = 'Normal' |
|
| 61 | + | italic = false |
|
| 62 | + | strikethrough = false |
|
| 63 | + | underline = 'None' |
|
| 64 | + | ||
| 65 | + | [colors.tab_bar.new_tab] |
|
| 66 | + | bg_color = '#171922' |
|
| 67 | + | fg_color = '#506477' |
|
| 68 | + | intensity = 'Normal' |
|
| 69 | + | italic = false |
|
| 70 | + | strikethrough = false |
|
| 71 | + | underline = 'None' |
|
| 72 | + | ||
| 73 | + | [colors.tab_bar.new_tab_hover] |
|
| 74 | + | bg_color = '#171922' |
|
| 75 | + | fg_color = '#767C9D' |
|
| 76 | + | intensity = 'Normal' |
|
| 77 | + | italic = true |
|
| 78 | + | strikethrough = false |
|
| 79 | + | underline = 'None' |
| 1 | + | [Desktop Entry] |
|
| 2 | + | Type=Application |
|
| 3 | + | Version=1.0 |
|
| 4 | + | Name=Clipboard history (rofi) |
|
| 5 | + | Comment=Records what passes through the clipboard so Super+V can bring it back |
|
| 6 | + | Exec=/home/stevedylandev/dotfiles/rofi/scripts/rofi-clipd |
|
| 7 | + | Icon=edit-paste |
|
| 8 | + | Terminal=false |
|
| 9 | + | StartupNotify=false |
|
| 10 | + | X-GNOME-Autostart-enabled=true |
| 1 | + | #!/bin/sh |
|
| 2 | + | # Requires: xfconf-query (xfce4-settings) |
|
| 3 | + | # Points the XFCE keyboard shortcuts at the rofi menus in ../rofi/scripts, |
|
| 4 | + | # and can put back whatever those keys did before. |
|
| 5 | + | # |
|
| 6 | + | # This is a script rather than a checked-in xfconf XML file because xfconf |
|
| 7 | + | # rewrites its own config atomically, by rename — which would replace a |
|
| 8 | + | # symlink from this repo with a regular file the first time anything changed |
|
| 9 | + | # a shortcut through the settings GUI. |
|
| 10 | + | # |
|
| 11 | + | # Usage: rofi-keybinds.sh apply (idempotent, safe to re-run) |
|
| 12 | + | # rofi-keybinds.sh --remove restore what these keys did before |
|
| 13 | + | # rofi-keybinds.sh --list show which keys currently run rofi |
|
| 14 | + | # |
|
| 15 | + | # xfsettingsd watches xfconf, so changes take effect immediately — no logout. |
|
| 16 | + | set -u |
|
| 17 | + | ||
| 18 | + | CHANNEL=xfce4-keyboard-shortcuts |
|
| 19 | + | BACKUP="${XDG_DATA_HOME:-$HOME/.local/share}/rofi-keybinds.backup" |
|
| 20 | + | ||
| 21 | + | # Where the menu scripts live. The repo layout is the default; point |
|
| 22 | + | # ROFI_SCRIPTS somewhere else to bind an installed copy instead. |
|
| 23 | + | S=${ROFI_SCRIPTS:-$(CDPATH= cd -- "$(dirname -- "$0")/../rofi/scripts" 2>/dev/null && pwd)} |
|
| 24 | + | [ -n "${S:-}" ] && [ -d "$S" ] || S="$HOME/.config/rofi/scripts" |
|
| 25 | + | [ -d "$S" ] || { echo "rofi-keybinds: no rofi scripts directory found" >&2; exit 1; } |
|
| 26 | + | ||
| 27 | + | command -v xfconf-query >/dev/null 2>&1 || |
|
| 28 | + | { echo "rofi-keybinds: xfconf-query not found — is this an XFCE session?" >&2; exit 1; } |
|
| 29 | + | ||
| 30 | + | # key<TAB>command. Super+Tab, Super+f/h/l and Super+1-4 are missing from this |
|
| 31 | + | # list on purpose: xfwm4 grabs those for window and workspace handling, so a |
|
| 32 | + | # command bound to them would never fire. |
|
| 33 | + | binds() { |
|
| 34 | + | cat <<BINDS |
|
| 35 | + | /commands/custom/<Super>d rofi -show drun |
|
| 36 | + | /commands/custom/<Super>space rofi -show drun |
|
| 37 | + | /commands/custom/<Alt>F2 rofi -show run |
|
| 38 | + | /commands/custom/<Super>r rofi -show run |
|
| 39 | + | /commands/custom/<Super>w rofi -show window |
|
| 40 | + | /commands/custom/<Shift><Super>f rofi -show filebrowser |
|
| 41 | + | /commands/custom/<Super>v $S/rofi-clip |
|
| 42 | + | /commands/custom/<Shift><Super>e $S/rofi-emoji |
|
| 43 | + | /commands/custom/<Shift><Super>c $S/rofi-calc |
|
| 44 | + | /commands/custom/<Shift><Super>x $S/rofi-power |
|
| 45 | + | /commands/custom/<Shift><Super>n $S/rofi-wifi |
|
| 46 | + | /commands/custom/<Shift><Super>u $S/rofi-audio |
|
| 47 | + | /commands/custom/<Super>s $S/rofi-screenshot |
|
| 48 | + | /commands/custom/Print $S/rofi-screenshot |
|
| 49 | + | /commands/custom/<Super>slash $S/rofi-websearch |
|
| 50 | + | BINDS |
|
| 51 | + | } |
|
| 52 | + | ||
| 53 | + | # Shortcuts for xfce4-screenshooter, which is not installed — these keys do |
|
| 54 | + | # nothing at all today, so they are dropped rather than repointed. |
|
| 55 | + | DEAD="/commands/custom/<Shift>Print |
|
| 56 | + | /commands/custom/<Alt>Print" |
|
| 57 | + | ||
| 58 | + | get() { xfconf-query -c "$CHANNEL" -p "$1" 2>/dev/null; } |
|
| 59 | + | exists() { xfconf-query -c "$CHANNEL" -p "$1" >/dev/null 2>&1; } |
|
| 60 | + | ||
| 61 | + | # One line per property, the first time it is touched: "prop<TAB>type<TAB>old |
|
| 62 | + | # value", with an empty value meaning the property did not exist. Re-running |
|
| 63 | + | # apply must not overwrite an entry, or the original would be lost behind a |
|
| 64 | + | # rofi command. |
|
| 65 | + | record() { |
|
| 66 | + | mkdir -p "$(dirname "$BACKUP")" |
|
| 67 | + | [ -f "$BACKUP" ] && |
|
| 68 | + | awk -F'\t' -v p="$1" '$1 == p { found = 1 } END { exit !found }' "$BACKUP" && |
|
| 69 | + | return 0 |
|
| 70 | + | printf '%s\t%s\t%s\n' "$1" "$2" "$3" >> "$BACKUP" |
|
| 71 | + | } |
|
| 72 | + | ||
| 73 | + | put() { |
|
| 74 | + | if exists "$1"; then |
|
| 75 | + | xfconf-query -c "$CHANNEL" -p "$1" -s "$3" |
|
| 76 | + | else |
|
| 77 | + | xfconf-query -c "$CHANNEL" -p "$1" -n -t "$2" -s "$3" |
|
| 78 | + | fi |
|
| 79 | + | } |
|
| 80 | + | ||
| 81 | + | apply() { |
|
| 82 | + | binds | while IFS=' ' read -r prop cmd; do |
|
| 83 | + | [ -n "$prop" ] || continue |
|
| 84 | + | old=$(get "$prop") |
|
| 85 | + | [ "$old" = "$cmd" ] && continue |
|
| 86 | + | ||
| 87 | + | record "$prop" string "$old" |
|
| 88 | + | put "$prop" string "$cmd" >/dev/null |
|
| 89 | + | ||
| 90 | + | # The appfinder keys carry startup-notify. rofi never sends the |
|
| 91 | + | # matching "I am up" message, so the busy cursor would spin for its |
|
| 92 | + | # full timeout on every launch. |
|
| 93 | + | sn="$prop/startup-notify" |
|
| 94 | + | if exists "$sn"; then |
|
| 95 | + | record "$sn" bool "$(get "$sn")" |
|
| 96 | + | xfconf-query -c "$CHANNEL" -p "$sn" -s false |
|
| 97 | + | fi |
|
| 98 | + | ||
| 99 | + | printf ' %-40s → %s\n' "${prop#/commands/custom/}" "$cmd" |
|
| 100 | + | done |
|
| 101 | + | ||
| 102 | + | printf '%s\n' "$DEAD" | while read -r prop; do |
|
| 103 | + | [ -n "$prop" ] && exists "$prop" || continue |
|
| 104 | + | record "$prop" string "$(get "$prop")" |
|
| 105 | + | xfconf-query -c "$CHANNEL" -p "$prop" -r |
|
| 106 | + | printf ' %-40s → removed (xfce4-screenshooter is not installed)\n' "${prop#/commands/custom/}" |
|
| 107 | + | done |
|
| 108 | + | } |
|
| 109 | + | ||
| 110 | + | remove() { |
|
| 111 | + | [ -f "$BACKUP" ] || { echo "rofi-keybinds: nothing to restore"; exit 0; } |
|
| 112 | + | while IFS=' ' read -r prop type value; do |
|
| 113 | + | [ -n "$prop" ] || continue |
|
| 114 | + | if [ -z "$value" ]; then |
|
| 115 | + | xfconf-query -c "$CHANNEL" -p "$prop" -r 2>/dev/null |
|
| 116 | + | printf ' %-40s → unbound\n' "${prop#/commands/custom/}" |
|
| 117 | + | else |
|
| 118 | + | put "$prop" "$type" "$value" >/dev/null |
|
| 119 | + | printf ' %-40s → %s\n' "${prop#/commands/custom/}" "$value" |
|
| 120 | + | fi |
|
| 121 | + | done < "$BACKUP" |
|
| 122 | + | rm -f "$BACKUP" |
|
| 123 | + | } |
|
| 124 | + | ||
| 125 | + | case "${1:-}" in |
|
| 126 | + | "") echo "Binding rofi menus in $S:"; apply ;; |
|
| 127 | + | --remove) echo "Restoring shortcuts from $BACKUP:"; remove ;; |
|
| 128 | + | --list) xfconf-query -c "$CHANNEL" -p /commands/custom -lv | grep -i rofi ;; |
|
| 129 | + | *) echo "usage: rofi-keybinds.sh [--remove|--list]" >&2; exit 2 ;; |
|
| 130 | + | esac |
| 1 | + | [mgr] |
|
| 2 | + | cwd = { fg = "yellow" } |
|
| 3 | + | ||
| 4 | + | find_keyword = { fg = "yellow", italic = true } |
|
| 5 | + | find_position = { fg = "magenta", bg = "reset", italic = true } |
|
| 6 | + | ||
| 7 | + | marker_copied = { fg = "green", bg = "green" } |
|
| 8 | + | marker_cut = { fg = "red", bg = "red" } |
|
| 9 | + | marker_marked = { fg = "cyan", bg = "cyan" } |
|
| 10 | + | marker_selected = { fg = "yellow", bg = "yellow" } |
|
| 11 | + | ||
| 12 | + | count_copied = { fg = "black", bg = "green" } |
|
| 13 | + | count_cut = { fg = "black", bg = "red" } |
|
| 14 | + | count_selected = { fg = "black", bg = "yellow" } |
|
| 15 | + | ||
| 16 | + | border_symbol = "│" |
|
| 17 | + | border_style = { fg = "white" } |
|
| 18 | + | ||
| 19 | + | syntect_theme = "" |
|
| 20 | + | ||
| 21 | + | [tabs] |
|
| 22 | + | active = { fg = "black", bg = "white" } |
|
| 23 | + | inactive = { fg = "white", bg = "black" } |
|
| 24 | + | ||
| 25 | + | [mode] |
|
| 26 | + | normal_main = { fg = "black", bg = "yellow", bold = true } |
|
| 27 | + | normal_alt = { fg = "yellow", bg = "black" } |
|
| 28 | + | ||
| 29 | + | select_main = { fg = "black", bg = "green", bold = true } |
|
| 30 | + | select_alt = { fg = "green", bg = "black" } |
|
| 31 | + | ||
| 32 | + | unset_main = { fg = "black", bg = "magenta", bold = true } |
|
| 33 | + | unset_alt = { fg = "magenta", bg = "black" } |
|
| 34 | + | ||
| 35 | + | [status] |
|
| 36 | + | sep_left = { open = "", close = "" } |
|
| 37 | + | sep_right = { open = "", close = "" } |
|
| 38 | + | ||
| 39 | + | progress_label = { bold = true } |
|
| 40 | + | progress_normal = { fg = "blue", bg = "black" } |
|
| 41 | + | progress_error = { fg = "red", bg = "black" } |
|
| 42 | + | ||
| 43 | + | perm_type = { fg = "cyan" } |
|
| 44 | + | perm_read = { fg = "yellow" } |
|
| 45 | + | perm_write = { fg = "red" } |
|
| 46 | + | perm_exec = { fg = "green" } |
|
| 47 | + | perm_sep = { fg = "white" } |
|
| 48 | + | ||
| 49 | + | [pick] |
|
| 50 | + | border = { fg = "yellow" } |
|
| 51 | + | active = { fg = "magenta" } |
|
| 52 | + | inactive = {} |
|
| 53 | + | ||
| 54 | + | [input] |
|
| 55 | + | border = { fg = "yellow" } |
|
| 56 | + | title = {} |
|
| 57 | + | value = {} |
|
| 58 | + | selected = { reversed = true } |
|
| 59 | + | ||
| 60 | + | [cmp] |
|
| 61 | + | border = { fg = "yellow" } |
|
| 62 | + | active = { bg = "black" } |
|
| 63 | + | inactive = {} |
|
| 64 | + | ||
| 65 | + | icon_file = "" |
|
| 66 | + | icon_folder = "" |
|
| 67 | + | icon_command = "" |
|
| 68 | + | ||
| 69 | + | [tasks] |
|
| 70 | + | border = { fg = "yellow" } |
|
| 71 | + | title = {} |
|
| 72 | + | hovered = { underline = true } |
|
| 73 | + | ||
| 74 | + | [which] |
|
| 75 | + | mask = { bg = "black" } |
|
| 76 | + | cand = { fg = "cyan" } |
|
| 77 | + | rest = { fg = "white" } |
|
| 78 | + | desc = { fg = "magenta" } |
|
| 79 | + | separator = " " |
|
| 80 | + | separator_style = { fg = "black" } |
|
| 81 | + | ||
| 82 | + | [help] |
|
| 83 | + | on = { fg = "cyan" } |
|
| 84 | + | run = { fg = "magenta" } |
|
| 85 | + | hovered = { reversed = true, bold = true } |
|
| 86 | + | footer = { fg = "white", bg = "black" } |
|
| 87 | + | ||
| 88 | + | [notify] |
|
| 89 | + | title_info = { fg = "green" } |
|
| 90 | + | title_warn = { fg = "yellow" } |
|
| 91 | + | title_error = { fg = "red" } |
|
| 92 | + | ||
| 93 | + | icon_info = "" |
|
| 94 | + | icon_warn = "" |
|
| 95 | + | icon_error = "" |
|
| 96 | + | ||
| 97 | + | [icon] |
|
| 98 | + | prepend_dirs = [ |
|
| 99 | + | { name = "Desktop", text = "", fg = "blue" }, |
|
| 100 | + | { name = "Downloads", text = "", fg = "blue" }, |
|
| 101 | + | { name = "Developer", text = "", fg = "blue" }, |
|
| 102 | + | { name = "Pictures", text = "", fg = "blue" }, |
|
| 103 | + | { name = "Documents", text = "", fg = "blue" }, |
|
| 104 | + | { name = "Movies", text = "", fg = "blue" }, |
|
| 105 | + | { name = "Library", text = "", fg = "blue" }, |
|
| 106 | + | { name = "Music", text = "", fg = "blue" }, |
|
| 107 | + | { name = "Public", text = "", fg = "blue" }, |
|
| 108 | + | ] |
|
| 109 | + | prepend_conds = [ |
|
| 110 | + | { if = "dir", text = "", fg = "blue" }, |
|
| 111 | + | { if = "hidden & dir", text = "", fg = "blue" }, |
|
| 112 | + | { if = "link", text = "", fg = "cyan" }, |
|
| 113 | + | { if = "orphan", text = "", fg = "red" }, |
|
| 114 | + | { if = "exec", text = "", fg = "green" }, |
|
| 115 | + | { if = "hidden", text = "", fg = "yellow" }, |
|
| 116 | + | ] |
|
| 117 | + | ||
| 118 | + | prepend_exts = [ |
|
| 119 | + | { name = "png", text = "", fg = "red" }, |
|
| 120 | + | { name = "jpg", text = "", fg = "red" }, |
|
| 121 | + | { name = "jpeg", text = "", fg = "red" }, |
|
| 122 | + | { name = "webp", text = "", fg = "red" }, |
|
| 123 | + | { name = "gif", text = "", fg = "red" }, |
|
| 124 | + | { name = "csv", text = "", fg = "red" }, |
|
| 125 | + | ] |
|
| 126 | + | ||
| 127 | + | [filetype] |
|
| 128 | + | rules = [ |
|
| 129 | + | { mime = "image/*", fg = "cyan" }, |
|
| 130 | + | { mime = "{audio,video}/*", fg = "yellow" }, |
|
| 131 | + | { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "magenta" }, |
|
| 132 | + | { mime = "application/{pdf,doc*,rtf}", fg = "green" }, |
|
| 133 | + | { url = "*/", fg = "blue" }, |
|
| 134 | + | { url = "*", fg = "white" }, |
|
| 135 | + | ] |
| 1 | + | [mgr] |
|
| 2 | + | ratio = [1,3,4] |
|
| 3 | + | sort_by = "mtime" |
|
| 4 | + | sort_reverse = true |
| 1 | + | # ~/.zshrc — mirrors the nushell config |
|
| 2 | + | # |
|
| 3 | + | # Linked via: fling link -s zsh -l ~ |
|
| 4 | + | ||
| 5 | + | # Interactive-only guard |
|
| 6 | + | case $- in |
|
| 7 | + | *i*) ;; |
|
| 8 | + | *) return ;; |
|
| 9 | + | esac |
|
| 10 | + | ||
| 11 | + | # ============================================================================= |
|
| 12 | + | # History |
|
| 13 | + | # ============================================================================= |
|
| 14 | + | HISTFILE="$HOME/.zsh_history" |
|
| 15 | + | HISTSIZE=10000 |
|
| 16 | + | SAVEHIST=10000 |
|
| 17 | + | setopt EXTENDED_HISTORY |
|
| 18 | + | setopt HIST_IGNORE_ALL_DUPS # ~ HISTCONTROL=ignoredups |
|
| 19 | + | setopt HIST_IGNORE_SPACE # ~ HISTCONTROL=ignorespace |
|
| 20 | + | setopt HIST_REDUCE_BLANKS |
|
| 21 | + | setopt APPEND_HISTORY # ~ shopt -s histappend |
|
| 22 | + | setopt INC_APPEND_HISTORY |
|
| 23 | + | setopt share_history |
|
| 24 | + | setopt hist_verify |
|
| 25 | + | ||
| 26 | + | ||
| 27 | + | # vi mode (matches nushell edit_mode: vi) |
|
| 28 | + | set -o vi |
|
| 29 | + | ||
| 30 | + | # Edit command in $EDITOR |
|
| 31 | + | autoload -Uz edit-command-line |
|
| 32 | + | zle -N edit-command-line |
|
| 33 | + | bindkey '^O' edit-command-line |
|
| 34 | + | ||
| 35 | + | # ============================================================================= |
|
| 36 | + | # Environment |
|
| 37 | + | # ============================================================================= |
|
| 38 | + | export EDITOR="nvim" |
|
| 39 | + | export CLICOLOR=1 |
|
| 40 | + | ||
| 41 | + | # Go |
|
| 42 | + | export GOPATH="$HOME/.local/share/go" |
|
| 43 | + | export GOMODCACHE="$HOME/.local/share/go-mod-cache" |
|
| 44 | + | ||
| 45 | + | # bat |
|
| 46 | + | export BAT_THEME="ansi" |
|
| 47 | + | export BAT_THEME_DARK="ansi" |
|
| 48 | + | ||
| 49 | + | # gpg |
|
| 50 | + | export GPG_TTY="$(tty)" |
|
| 51 | + | ||
| 52 | + | # misc |
|
| 53 | + | export BULLETS_FEEDS="feeds.stevedylan.dev/feed.xml" |
|
| 54 | + | ||
| 55 | + | # pnpm |
|
| 56 | + | export PNPM_HOME="$HOME/Library/pnpm" |
|
| 57 | + | ||
| 58 | + | # fzf |
|
| 59 | + | export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude ".git"' |
|
| 60 | + | export FZF_DEFAULT_OPTS=' |
|
| 61 | + | --color=fg:8:bold,fg+:15,bg:-1,bg+:-1 |
|
| 62 | + | --color=hl:10:bold,hl+:10:bold |
|
| 63 | + | --color=info:8,spinner:9,header:4 |
|
| 64 | + | --color=prompt:2,pointer:9,marker:1 |
|
| 65 | + | --color=border:7,label:15:bold,query:15 |
|
| 66 | + | --border="rounded" |
|
| 67 | + | --border-label="" |
|
| 68 | + | --preview-window="border-rounded" |
|
| 69 | + | --prompt="> " |
|
| 70 | + | --marker=" " |
|
| 71 | + | --pointer="◆" |
|
| 72 | + | --separator="" |
|
| 73 | + | --scrollbar="" |
|
| 74 | + | --gutter=" " |
|
| 75 | + | --info=inline-right' |
|
| 76 | + | ||
| 77 | + | # ============================================================================= |
|
| 78 | + | # PATH |
|
| 79 | + | # ============================================================================= |
|
| 80 | + | # path_add <dir>: prepend if not already present and dir exists |
|
| 81 | + | path_add() { |
|
| 82 | + | case ":$PATH:" in |
|
| 83 | + | *":$1:"*) ;; |
|
| 84 | + | *) [ -d "$1" ] && PATH="$1:$PATH" ;; |
|
| 85 | + | esac |
|
| 86 | + | } |
|
| 87 | + | ||
| 88 | + | path_add "/opt/homebrew/bin" |
|
| 89 | + | path_add "/usr/local/go/bin" |
|
| 90 | + | path_add "$HOME/.cargo/bin" |
|
| 91 | + | path_add "$HOME/.local/share/go/bin" |
|
| 92 | + | path_add "$HOME/.local/bin" |
|
| 93 | + | path_add "/usr/local/bin" |
|
| 94 | + | path_add "$HOME/.bun/bin" |
|
| 95 | + | path_add "/Applications/Docker.app/Contents/Resources/bin" |
|
| 96 | + | path_add "$HOME/.tmux/plugins/t-smart-tmux-session-manager/bin" |
|
| 97 | + | path_add "$HOME/.deno/bin" |
|
| 98 | + | path_add "$HOME/.foundry/bin" |
|
| 99 | + | path_add "$HOME/.local/share" |
|
| 100 | + | path_add "$HOME/.local/share/solana/install/active_release/bin" |
|
| 101 | + | path_add "$HOME/.aztec/bin" |
|
| 102 | + | path_add "$HOME/.nargo/bin" |
|
| 103 | + | path_add "$HOME/.helios/bin" |
|
| 104 | + | path_add "$HOME/.radicle/bin" |
|
| 105 | + | path_add "$PNPM_HOME" |
|
| 106 | + | ||
| 107 | + | export PATH |
|
| 108 | + | ||
| 109 | + | # fnm (node version manager) |
|
| 110 | + | if command -v fnm >/dev/null 2>&1; then |
|
| 111 | + | eval "$(fnm env --shell zsh)" |
|
| 112 | + | path_add "$FNM_MULTISHELL_PATH/bin" |
|
| 113 | + | export PATH |
|
| 114 | + | # auto-switch node version on cd when .node-version / .nvmrc present |
|
| 115 | + | __fnm_autouse() { |
|
| 116 | + | if [ -f .node-version ] || [ -f .nvmrc ]; then |
|
| 117 | + | fnm use --silent-if-unchanged 2>/dev/null |
|
| 118 | + | fi |
|
| 119 | + | } |
|
| 120 | + | autoload -Uz add-zsh-hook |
|
| 121 | + | add-zsh-hook precmd __fnm_autouse |
|
| 122 | + | fi |
|
| 123 | + | ||
| 124 | + | # cargo |
|
| 125 | + | [ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env" |
|
| 126 | + | ||
| 127 | + | # ============================================================================= |
|
| 128 | + | # Aliases |
|
| 129 | + | # ============================================================================= |
|
| 130 | + | alias ls='eza --icons=always' |
|
| 131 | + | alias ll='eza -l --icons=always' |
|
| 132 | + | alias la='eza -a --icons=always' |
|
| 133 | + | alias lg='lazygit' |
|
| 134 | + | alias nf='neofetch' |
|
| 135 | + | alias fl='fastfetch -c ~/.config/fastfetch/presets/examples/8.jsonc' |
|
| 136 | + | alias ff='fastfetch -c ~/.config/fastfetch/presets/examples/20.jsonc' |
|
| 137 | + | alias nvimrc='nvim ~/.config/nvim' |
|
| 138 | + | alias shitter='ssh itter' |
|
| 139 | + | # alias tailscale='/Applications/Tailscale.app/Contents/MacOS/Tailscale' |
|
| 140 | + | alias ai='aichat' |
|
| 141 | + | alias system='macchina' |
|
| 142 | + | alias bonsai='cbonsai -li -t 0.4' |
|
| 143 | + | alias lst='lstr --icons --color=always --size' |
|
| 144 | + | alias keys='keysmasher' |
|
| 145 | + | alias timestamp='node -e "process.stdout.write(new Date().toISOString())"' |
|
| 146 | + | alias cleardns='sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder' |
|
| 147 | + | ||
| 148 | + | # ------------------------------------------- |
|
| 149 | + | # Suffix Aliases - Open Files by Extension |
|
| 150 | + | # ------------------------------------------- |
|
| 151 | + | # Just type the filename to open it with the associated program |
|
| 152 | + | alias -s json=jless |
|
| 153 | + | alias -s md=bat |
|
| 154 | + | alias -s go='$EDITOR' |
|
| 155 | + | alias -s rs='$EDITOR' |
|
| 156 | + | alias -s txt=bat |
|
| 157 | + | alias -s log=bat |
|
| 158 | + | alias -s py='$EDITOR' |
|
| 159 | + | alias -s js='$EDITOR' |
|
| 160 | + | alias -s ts='$EDITOR' |
|
| 161 | + | alias -s html=open # macOS: open in default browser |
|
| 162 | + | ||
| 163 | + | # ============================================================================= |
|
| 164 | + | # Functions |
|
| 165 | + | # ============================================================================= |
|
| 166 | + | # Open a sesh session via gum filter |
|
| 167 | + | t() { |
|
| 168 | + | local selected |
|
| 169 | + | selected=$(sesh list -i | gum filter --limit 1 --placeholder "Choose a session" --height 50 --prompt="> " --indicator.foreground="2" --match.foreground="2") |
|
| 170 | + | if [ -z "$selected" ]; then |
|
| 171 | + | echo "No session selected" |
|
| 172 | + | else |
|
| 173 | + | sesh connect "$selected" |
|
| 174 | + | fi |
|
| 175 | + | } |
|
| 176 | + | ||
| 177 | + | # Fuzzy-find a file and open in nvim |
|
| 178 | + | nvimf() { |
|
| 179 | + | local file |
|
| 180 | + | file=$(fd --type f --hidden --exclude .git | fzf --preview "bat --color=always {}") |
|
| 181 | + | if [ -z "$file" ]; then |
|
| 182 | + | echo "No file selected" |
|
| 183 | + | else |
|
| 184 | + | nvim "$file" |
|
| 185 | + | fi |
|
| 186 | + | } |
|
| 187 | + | ||
| 188 | + | # Install a tree-sitter parser into the nvim luarocks tree |
|
| 189 | + | tsi() { |
|
| 190 | + | local parser="$1" |
|
| 191 | + | local tree="$HOME/.local/share/nvim/site" |
|
| 192 | + | luarocks --lua-version=5.1 "--tree=$tree" install "tree-sitter-$parser" |
|
| 193 | + | } |
|
| 194 | + | ||
| 195 | + | # nvim startup time -> grep summary line |
|
| 196 | + | ns() { |
|
| 197 | + | rm -f ~/.nvim-startup.txt |
|
| 198 | + | nvim --headless --startuptime ~/.nvim-startup.txt +qa |
|
| 199 | + | grep "NVIM STARTED" ~/.nvim-startup.txt |
|
| 200 | + | } |
|
| 201 | + | ||
| 202 | + | # nvim startup time -> full bat dump |
|
| 203 | + | nh() { |
|
| 204 | + | rm -f ~/.nvim-startup.txt |
|
| 205 | + | nvim --headless --startuptime ~/.nvim-startup.txt +qa |
|
| 206 | + | bat ~/.nvim-startup.txt |
|
| 207 | + | } |
|
| 208 | + | ||
| 209 | + | # Copy file contents to clipboard |
|
| 210 | + | cpf() { |
|
| 211 | + | cat "$1" | pbcopy |
|
| 212 | + | echo "✔︎ Copied to clipboard!" |
|
| 213 | + | } |
|
| 214 | + | ||
| 215 | + | # Set orbiter key to personal |
|
| 216 | + | orbiter-personal() { |
|
| 217 | + | gum spin --spinner dot --spinner.foreground="2" --title "Updating..." -- orbiter auth --key "$(op read 'op://Personal/orbiter-api-key/credential')" |
|
| 218 | + | local check |
|
| 219 | + | check=$(gum style --foreground="2" "✓ ") |
|
| 220 | + | gum join "$check" "Orbiter key set to personal!" |
|
| 221 | + | } |
|
| 222 | + | ||
| 223 | + | # Set orbiter key to orbiter account |
|
| 224 | + | orbiter-account() { |
|
| 225 | + | gum spin --spinner dot --spinner.foreground="2" --title "Updating..." -- orbiter auth --key "$(op read 'op://Personal/orbiter-account-api-key/credential')" |
|
| 226 | + | local check |
|
| 227 | + | check=$(gum style --foreground="2" "✓ ") |
|
| 228 | + | gum join "$check" "Orbiter key set to Orbiter account!" |
|
| 229 | + | } |
|
| 230 | + | ||
| 231 | + | # UTC timestamp for blog frontmatter |
|
| 232 | + | blogdate() { |
|
| 233 | + | date -u +"%Y-%m-%dT%H:%M:%SZ" |
|
| 234 | + | } |
|
| 235 | + | ||
| 236 | + | # ============================================================================= |
|
| 237 | + | # Completion |
|
| 238 | + | # ============================================================================= |
|
| 239 | + | autoload -Uz compinit |
|
| 240 | + | compinit |
|
| 241 | + | ||
| 242 | + | # ============================================================================= |
|
| 243 | + | # Tooling init |
|
| 244 | + | # ============================================================================= |
|
| 245 | + | command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init zsh)" |
|
| 246 | + | command -v starship >/dev/null 2>&1 && eval "$(starship init zsh)" |
|
| 247 | + | command -v fzf >/dev/null 2>&1 && eval "$(fzf --zsh)" |
|
| 248 | + | ||
| 249 | + | # zsh-autosuggestions and syntax highlighting |
|
| 250 | + | source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh |
|
| 251 | + | source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
|
| 252 | + | export PATH="$HOME/.local/bin:$PATH" |