diff --git a/.config/bat/config b/.config/bat/config
new file mode 100644
index 00000000..dd4ffeb9
--- /dev/null
+++ b/.config/bat/config
@@ -0,0 +1,25 @@
+# This is `bat`s configuration file. Each line either contains a comment or
+# a command-line option that you want to pass to `bat` by default. You can
+# run `bat --help` to get a list of all possible configuration options.
+
+# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
+# for a list of all available themes
+--theme="Catppuccin-frappe"
+
+# Enable this to use italic text on the terminal. This is not supported on all
+# terminal emulators (like tmux, by default):
+#--italic-text=always
+
+# Uncomment the following line to disable automatic paging:
+#--paging=never
+
+# Uncomment the following line if you are using less version >= 551 and want to
+# enable mouse scrolling support in `bat` when running inside tmux. This might
+# disable text selection, unless you press shift.
+#--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
+
+# Syntax mappings: map a certain filename pattern to a language.
+# Example 1: use the C++ syntax for Arduino .ino files
+# Example 2: Use ".gitignore"-style highlighting for ".ignore" files
+#--map-syntax "*.ino:C++"
+#--map-syntax ".ignore:Git Ignore"
diff --git a/.config/bat/themes/Catppuccin-frappe.tmTheme b/.config/bat/themes/Catppuccin-frappe.tmTheme
new file mode 100644
index 00000000..f4eb2228
--- /dev/null
+++ b/.config/bat/themes/Catppuccin-frappe.tmTheme
@@ -0,0 +1,959 @@
+
+
+
+
+ name
+ Catppuccin
+ settings
+
+
+ settings
+
+ foreground
+ #c6d0f5
+ background
+ #303446
+ caret
+ #b5bfe2
+ invisibles
+ #a5adce
+ gutterForeground
+ #949cbb
+ gutterForegroundHighlight
+ #a6d189
+ lineHighlight
+ #626880
+ selection
+ #737994
+ selectionBorder
+ #303446
+ activeGuide
+ #ef9f76
+ findHighlightForeground
+ #292c3c
+ findHighlight
+ #e5c890
+ bracketsForeground
+ #949cbb
+ bracketContentsForeground
+ #949cbb
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #737994
+ fontStyle
+ italic
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #a6d189
+ fontStyle
+
+
+
+
+ name
+ String regex
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+
+
+
+
+ name
+ Boolean
+ scope
+ constant.language.boolean
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+ bold italic
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #babbf1
+ fontStyle
+ italic
+
+
+
+ name
+ Built-in function
+ scope
+ support.function.builtin
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+ italic
+
+
+
+ name
+ User-defined constant
+ scope
+ variable.other.constant
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+ italic
+
+
+
+ name
+ Conditional/loop
+ scope
+ keyword.control.loop, keyword.control.conditional, keyword.control.c++
+ settings
+
+ foreground
+ #ca9ee6
+ fontStyle
+ bold
+
+
+
+ name
+ Return
+ scope
+ keyword.control.return, keyword.control.flow.return
+ settings
+
+ foreground
+ #f4b8e4
+ fontStyle
+ bold
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+ italic
+
+
+
+ name
+ Operator
+ scope
+ keyword.operator, punctuation.accessor
+ settings
+
+ foreground
+ #99d1db
+ fontStyle
+ bold
+
+
+
+ name
+ Punctuation separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ Punctuation terminator
+ scope
+ punctuation.terminator
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ Punctuation bracket
+ scope
+ punctuation.section
+ settings
+
+ foreground
+ #949cbb
+ fontStyle
+
+
+
+
+ name
+ Include
+ scope
+ keyword.control.import.include
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+ italic
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ foreground
+ #e5c890
+ fontStyle
+ italic
+
+
+
+ name
+ Storage modifier
+ scope
+ storage.modifier
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Storage type namespace
+ scope
+ entity.name.namespace, meta.path
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+ italic
+
+
+
+ name
+ Storage type class
+ scope
+ storage.type.class
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+ italic
+
+
+
+ name
+ Label
+ scope
+ entity.name.label
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+
+
+
+
+ name
+ Keyword class
+ scope
+ keyword.declaration.class
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+ italic
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, meta.toc-list.full-identifier
+ settings
+
+ foreground
+ #99d1db
+ fontStyle
+
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ foreground
+ #99d1db
+ fontStyle
+ italic
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, variable.function
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+ italic
+
+
+
+ name
+ Function macro
+ scope
+ entity.name.function.preprocessor
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Macro directive - ifdef
+ scope
+ keyword.control.import
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Constructor
+ scope
+ entity.name.function.constructor, entity.name.function.destructor
+ settings
+
+ foreground
+ #babbf1
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter.function
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+ italic
+
+
+
+ name
+ Function declaration
+ scope
+ keyword.declaration.function
+ settings
+
+ foreground
+ #ea999c
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #99d1db
+ fontStyle
+
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+ italic
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Variable function
+ scope
+ variable.function
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+ italic
+
+
+
+ name
+ Variable parameter
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+ italic
+
+
+
+ name
+ Variable other
+ scope
+ variable.other
+ settings
+
+ foreground
+ #c6d0f5
+ fontStyle
+ italic
+
+
+
+ name
+ Variable field
+ scope
+ variable.other.member
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+
+
+
+
+ name
+ Variable language
+ scope
+ variable.language
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #ef9f76
+ fontStyle
+
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #ca9ee6
+ fontStyle
+ italic
+
+
+
+ name
+ Tag delimiter
+ scope
+ punctuation.definition.tag
+ settings
+
+ foreground
+ #ea999c
+ fontStyle
+
+
+
+
+ name
+ Markdown URL
+ scope
+ markup.underline.link.markdown
+ settings
+
+ foreground
+ #f2d5cf
+ fontStyle
+ italic underline
+
+
+
+ name
+ Markdown reference
+ scope
+ meta.link.inline.description
+ settings
+
+ foreground
+ #babbf1
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown literal
+ scope
+ comment.block.markdown, meta.code-fence, markup.raw.code-fence, markup.raw.inline
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown title
+ scope
+ punctuation.definition.heading, entity.name.section
+ settings
+
+ foreground
+ #8caaee
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown emphasis
+ scope
+ markup.italic
+ settings
+
+ foreground
+ #ea999c
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown strong
+ scope
+ markup.bold
+ settings
+
+ foreground
+ #ea999c
+ fontStyle
+ bold
+
+
+
+ name
+ Escape
+ scope
+ constant.character.escape
+ settings
+
+ foreground
+ #f4b8e4
+ fontStyle
+
+
+
+
+ name
+ Bash built-in function
+ scope
+ source.shell.bash meta.function.shell meta.compound.shell meta.function-call.identifier.shell
+ settings
+
+ foreground
+ #f4b8e4
+ fontStyle
+
+
+
+
+ name
+ Bash parameter
+ scope
+ variable.language.shell
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+ italic
+
+
+
+ name
+ Lua field
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.value.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #babbf1
+ fontStyle
+ italic
+
+
+
+ name
+ Lua constructor
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #eebebe
+ fontStyle
+
+
+
+
+ name
+ Java constant
+ scope
+ entity.name.constant.java
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ CSS property
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #eebebe
+ fontStyle
+ italic
+
+
+
+ name
+ CSS constant
+ scope
+ support.constant.property-value.css
+ settings
+
+ foreground
+ #c6d0f5
+ fontStyle
+
+
+
+
+ name
+ CSS suffix
+ scope
+ constant.numeric.suffix.css, keyword.other.unit.css
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+ italic
+
+
+
+ name
+ CSS variable property
+ scope
+ variable.other.custom-property.name.css, support.type.custom-property.name.css, punctuation.definition.custom-property.css
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ SCSS tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #babbf1
+ fontStyle
+
+
+
+
+ name
+ SASS variable
+ scope
+ variable.other.sass
+ settings
+
+ foreground
+ #81c8be
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ foreground
+ #c6d0f5
+ background
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ foreground
+ #c6d0f5
+ background
+ #ca9ee6
+ fontStyle
+
+
+
+
+ name
+ Diff header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #737994
+ fontStyle
+
+
+
+
+ name
+ Diff deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ name
+ Diff inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #a6d189
+ fontStyle
+
+
+
+
+ name
+ Diff changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #e5c890
+ fontStyle
+
+
+
+
+ name
+ Message error
+ scope
+ message.error
+ settings
+
+ foreground
+ #e78284
+ fontStyle
+
+
+
+
+ uuid
+ 4d0379b5-ef82-467b-b8b8-365889420646
+ colorSpaceName
+ sRGB
+ semanticClass
+ theme.dark.Catppuccin
+ author
+ BrunDerSchwarzmagier
+
+
diff --git a/.config/bat/themes/Catppuccin-latte.tmTheme b/.config/bat/themes/Catppuccin-latte.tmTheme
new file mode 100644
index 00000000..6f23c160
--- /dev/null
+++ b/.config/bat/themes/Catppuccin-latte.tmTheme
@@ -0,0 +1,959 @@
+
+
+
+
+ name
+ Catppuccin
+ settings
+
+
+ settings
+
+ foreground
+ #4c4f69
+ background
+ #eff1f5
+ caret
+ #5c5f77
+ invisibles
+ #6c6f85
+ gutterForeground
+ #7c7f93
+ gutterForegroundHighlight
+ #40a02b
+ lineHighlight
+ #acb0be
+ selection
+ #9ca0b0
+ selectionBorder
+ #eff1f5
+ activeGuide
+ #fe640b
+ findHighlightForeground
+ #e6e9ef
+ findHighlight
+ #df8e1d
+ bracketsForeground
+ #7c7f93
+ bracketContentsForeground
+ #7c7f93
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #9ca0b0
+ fontStyle
+ italic
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #40a02b
+ fontStyle
+
+
+
+
+ name
+ String regex
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+
+
+
+
+ name
+ Boolean
+ scope
+ constant.language.boolean
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+ bold italic
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #7287fd
+ fontStyle
+ italic
+
+
+
+ name
+ Built-in function
+ scope
+ support.function.builtin
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+ italic
+
+
+
+ name
+ User-defined constant
+ scope
+ variable.other.constant
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+ italic
+
+
+
+ name
+ Conditional/loop
+ scope
+ keyword.control.loop, keyword.control.conditional, keyword.control.c++
+ settings
+
+ foreground
+ #8839ef
+ fontStyle
+ bold
+
+
+
+ name
+ Return
+ scope
+ keyword.control.return, keyword.control.flow.return
+ settings
+
+ foreground
+ #ea76cb
+ fontStyle
+ bold
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+ italic
+
+
+
+ name
+ Operator
+ scope
+ keyword.operator, punctuation.accessor
+ settings
+
+ foreground
+ #04a5e5
+ fontStyle
+ bold
+
+
+
+ name
+ Punctuation separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ Punctuation terminator
+ scope
+ punctuation.terminator
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ Punctuation bracket
+ scope
+ punctuation.section
+ settings
+
+ foreground
+ #7c7f93
+ fontStyle
+
+
+
+
+ name
+ Include
+ scope
+ keyword.control.import.include
+ settings
+
+ foreground
+ #179299
+ fontStyle
+ italic
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ foreground
+ #df8e1d
+ fontStyle
+ italic
+
+
+
+ name
+ Storage modifier
+ scope
+ storage.modifier
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Storage type namespace
+ scope
+ entity.name.namespace, meta.path
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+ italic
+
+
+
+ name
+ Storage type class
+ scope
+ storage.type.class
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+ italic
+
+
+
+ name
+ Label
+ scope
+ entity.name.label
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+
+
+
+
+ name
+ Keyword class
+ scope
+ keyword.declaration.class
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+ italic
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, meta.toc-list.full-identifier
+ settings
+
+ foreground
+ #04a5e5
+ fontStyle
+
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ foreground
+ #04a5e5
+ fontStyle
+ italic
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, variable.function
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+ italic
+
+
+
+ name
+ Function macro
+ scope
+ entity.name.function.preprocessor
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Macro directive - ifdef
+ scope
+ keyword.control.import
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Constructor
+ scope
+ entity.name.function.constructor, entity.name.function.destructor
+ settings
+
+ foreground
+ #7287fd
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter.function
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+ italic
+
+
+
+ name
+ Function declaration
+ scope
+ keyword.declaration.function
+ settings
+
+ foreground
+ #e64553
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #04a5e5
+ fontStyle
+
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+ italic
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Variable function
+ scope
+ variable.function
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+ italic
+
+
+
+ name
+ Variable parameter
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+ italic
+
+
+
+ name
+ Variable other
+ scope
+ variable.other
+ settings
+
+ foreground
+ #4c4f69
+ fontStyle
+ italic
+
+
+
+ name
+ Variable field
+ scope
+ variable.other.member
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+
+
+
+
+ name
+ Variable language
+ scope
+ variable.language
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #fe640b
+ fontStyle
+
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #8839ef
+ fontStyle
+ italic
+
+
+
+ name
+ Tag delimiter
+ scope
+ punctuation.definition.tag
+ settings
+
+ foreground
+ #e64553
+ fontStyle
+
+
+
+
+ name
+ Markdown URL
+ scope
+ markup.underline.link.markdown
+ settings
+
+ foreground
+ #dc8a78
+ fontStyle
+ italic underline
+
+
+
+ name
+ Markdown reference
+ scope
+ meta.link.inline.description
+ settings
+
+ foreground
+ #7287fd
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown literal
+ scope
+ comment.block.markdown, meta.code-fence, markup.raw.code-fence, markup.raw.inline
+ settings
+
+ foreground
+ #179299
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown title
+ scope
+ punctuation.definition.heading, entity.name.section
+ settings
+
+ foreground
+ #1e66f5
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown emphasis
+ scope
+ markup.italic
+ settings
+
+ foreground
+ #e64553
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown strong
+ scope
+ markup.bold
+ settings
+
+ foreground
+ #e64553
+ fontStyle
+ bold
+
+
+
+ name
+ Escape
+ scope
+ constant.character.escape
+ settings
+
+ foreground
+ #ea76cb
+ fontStyle
+
+
+
+
+ name
+ Bash built-in function
+ scope
+ source.shell.bash meta.function.shell meta.compound.shell meta.function-call.identifier.shell
+ settings
+
+ foreground
+ #ea76cb
+ fontStyle
+
+
+
+
+ name
+ Bash parameter
+ scope
+ variable.language.shell
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+ italic
+
+
+
+ name
+ Lua field
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.value.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #7287fd
+ fontStyle
+ italic
+
+
+
+ name
+ Lua constructor
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #dd7878
+ fontStyle
+
+
+
+
+ name
+ Java constant
+ scope
+ entity.name.constant.java
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ CSS property
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #dd7878
+ fontStyle
+ italic
+
+
+
+ name
+ CSS constant
+ scope
+ support.constant.property-value.css
+ settings
+
+ foreground
+ #4c4f69
+ fontStyle
+
+
+
+
+ name
+ CSS suffix
+ scope
+ constant.numeric.suffix.css, keyword.other.unit.css
+ settings
+
+ foreground
+ #179299
+ fontStyle
+ italic
+
+
+
+ name
+ CSS variable property
+ scope
+ variable.other.custom-property.name.css, support.type.custom-property.name.css, punctuation.definition.custom-property.css
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ SCSS tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #7287fd
+ fontStyle
+
+
+
+
+ name
+ SASS variable
+ scope
+ variable.other.sass
+ settings
+
+ foreground
+ #179299
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ foreground
+ #4c4f69
+ background
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ foreground
+ #4c4f69
+ background
+ #8839ef
+ fontStyle
+
+
+
+
+ name
+ Diff header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #9ca0b0
+ fontStyle
+
+
+
+
+ name
+ Diff deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ name
+ Diff inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #40a02b
+ fontStyle
+
+
+
+
+ name
+ Diff changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #df8e1d
+ fontStyle
+
+
+
+
+ name
+ Message error
+ scope
+ message.error
+ settings
+
+ foreground
+ #d20f39
+ fontStyle
+
+
+
+
+ uuid
+ 4d0379b5-ef82-467b-b8b8-365889420646
+ colorSpaceName
+ sRGB
+ semanticClass
+ theme.dark.Catppuccin
+ author
+ BrunDerSchwarzmagier
+
+
diff --git a/.config/bat/themes/Catppuccin-macchiato.tmTheme b/.config/bat/themes/Catppuccin-macchiato.tmTheme
new file mode 100644
index 00000000..0beedb6d
--- /dev/null
+++ b/.config/bat/themes/Catppuccin-macchiato.tmTheme
@@ -0,0 +1,959 @@
+
+
+
+
+ name
+ Catppuccin
+ settings
+
+
+ settings
+
+ foreground
+ #cad3f5
+ background
+ #24273a
+ caret
+ #b8c0e0
+ invisibles
+ #a5adcb
+ gutterForeground
+ #939ab7
+ gutterForegroundHighlight
+ #a6da95
+ lineHighlight
+ #5b6078
+ selection
+ #6e738d
+ selectionBorder
+ #24273a
+ activeGuide
+ #f5a97f
+ findHighlightForeground
+ #1e2030
+ findHighlight
+ #eed49f
+ bracketsForeground
+ #939ab7
+ bracketContentsForeground
+ #939ab7
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #6e738d
+ fontStyle
+ italic
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #a6da95
+ fontStyle
+
+
+
+
+ name
+ String regex
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+
+
+
+
+ name
+ Boolean
+ scope
+ constant.language.boolean
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+ bold italic
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #b7bdf8
+ fontStyle
+ italic
+
+
+
+ name
+ Built-in function
+ scope
+ support.function.builtin
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+ italic
+
+
+
+ name
+ User-defined constant
+ scope
+ variable.other.constant
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+ italic
+
+
+
+ name
+ Conditional/loop
+ scope
+ keyword.control.loop, keyword.control.conditional, keyword.control.c++
+ settings
+
+ foreground
+ #c6a0f6
+ fontStyle
+ bold
+
+
+
+ name
+ Return
+ scope
+ keyword.control.return, keyword.control.flow.return
+ settings
+
+ foreground
+ #f5bde6
+ fontStyle
+ bold
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+ italic
+
+
+
+ name
+ Operator
+ scope
+ keyword.operator, punctuation.accessor
+ settings
+
+ foreground
+ #91d7e3
+ fontStyle
+ bold
+
+
+
+ name
+ Punctuation separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ Punctuation terminator
+ scope
+ punctuation.terminator
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ Punctuation bracket
+ scope
+ punctuation.section
+ settings
+
+ foreground
+ #939ab7
+ fontStyle
+
+
+
+
+ name
+ Include
+ scope
+ keyword.control.import.include
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+ italic
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ foreground
+ #eed49f
+ fontStyle
+ italic
+
+
+
+ name
+ Storage modifier
+ scope
+ storage.modifier
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Storage type namespace
+ scope
+ entity.name.namespace, meta.path
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+ italic
+
+
+
+ name
+ Storage type class
+ scope
+ storage.type.class
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+ italic
+
+
+
+ name
+ Label
+ scope
+ entity.name.label
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+
+
+
+
+ name
+ Keyword class
+ scope
+ keyword.declaration.class
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+ italic
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, meta.toc-list.full-identifier
+ settings
+
+ foreground
+ #91d7e3
+ fontStyle
+
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ foreground
+ #91d7e3
+ fontStyle
+ italic
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, variable.function
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+ italic
+
+
+
+ name
+ Function macro
+ scope
+ entity.name.function.preprocessor
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Macro directive - ifdef
+ scope
+ keyword.control.import
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Constructor
+ scope
+ entity.name.function.constructor, entity.name.function.destructor
+ settings
+
+ foreground
+ #b7bdf8
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter.function
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+ italic
+
+
+
+ name
+ Function declaration
+ scope
+ keyword.declaration.function
+ settings
+
+ foreground
+ #ee99a0
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #91d7e3
+ fontStyle
+
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+ italic
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Variable function
+ scope
+ variable.function
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+ italic
+
+
+
+ name
+ Variable parameter
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+ italic
+
+
+
+ name
+ Variable other
+ scope
+ variable.other
+ settings
+
+ foreground
+ #cad3f5
+ fontStyle
+ italic
+
+
+
+ name
+ Variable field
+ scope
+ variable.other.member
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+
+
+
+
+ name
+ Variable language
+ scope
+ variable.language
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #f5a97f
+ fontStyle
+
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #c6a0f6
+ fontStyle
+ italic
+
+
+
+ name
+ Tag delimiter
+ scope
+ punctuation.definition.tag
+ settings
+
+ foreground
+ #ee99a0
+ fontStyle
+
+
+
+
+ name
+ Markdown URL
+ scope
+ markup.underline.link.markdown
+ settings
+
+ foreground
+ #f4dbd6
+ fontStyle
+ italic underline
+
+
+
+ name
+ Markdown reference
+ scope
+ meta.link.inline.description
+ settings
+
+ foreground
+ #b7bdf8
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown literal
+ scope
+ comment.block.markdown, meta.code-fence, markup.raw.code-fence, markup.raw.inline
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown title
+ scope
+ punctuation.definition.heading, entity.name.section
+ settings
+
+ foreground
+ #8aadf4
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown emphasis
+ scope
+ markup.italic
+ settings
+
+ foreground
+ #ee99a0
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown strong
+ scope
+ markup.bold
+ settings
+
+ foreground
+ #ee99a0
+ fontStyle
+ bold
+
+
+
+ name
+ Escape
+ scope
+ constant.character.escape
+ settings
+
+ foreground
+ #f5bde6
+ fontStyle
+
+
+
+
+ name
+ Bash built-in function
+ scope
+ source.shell.bash meta.function.shell meta.compound.shell meta.function-call.identifier.shell
+ settings
+
+ foreground
+ #f5bde6
+ fontStyle
+
+
+
+
+ name
+ Bash parameter
+ scope
+ variable.language.shell
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+ italic
+
+
+
+ name
+ Lua field
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.value.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #b7bdf8
+ fontStyle
+ italic
+
+
+
+ name
+ Lua constructor
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #f0c6c6
+ fontStyle
+
+
+
+
+ name
+ Java constant
+ scope
+ entity.name.constant.java
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ CSS property
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #f0c6c6
+ fontStyle
+ italic
+
+
+
+ name
+ CSS constant
+ scope
+ support.constant.property-value.css
+ settings
+
+ foreground
+ #cad3f5
+ fontStyle
+
+
+
+
+ name
+ CSS suffix
+ scope
+ constant.numeric.suffix.css, keyword.other.unit.css
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+ italic
+
+
+
+ name
+ CSS variable property
+ scope
+ variable.other.custom-property.name.css, support.type.custom-property.name.css, punctuation.definition.custom-property.css
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ SCSS tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #b7bdf8
+ fontStyle
+
+
+
+
+ name
+ SASS variable
+ scope
+ variable.other.sass
+ settings
+
+ foreground
+ #8bd5ca
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ foreground
+ #cad3f5
+ background
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ foreground
+ #cad3f5
+ background
+ #c6a0f6
+ fontStyle
+
+
+
+
+ name
+ Diff header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #6e738d
+ fontStyle
+
+
+
+
+ name
+ Diff deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ name
+ Diff inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #a6da95
+ fontStyle
+
+
+
+
+ name
+ Diff changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #eed49f
+ fontStyle
+
+
+
+
+ name
+ Message error
+ scope
+ message.error
+ settings
+
+ foreground
+ #ed8796
+ fontStyle
+
+
+
+
+ uuid
+ 4d0379b5-ef82-467b-b8b8-365889420646
+ colorSpaceName
+ sRGB
+ semanticClass
+ theme.dark.Catppuccin
+ author
+ BrunDerSchwarzmagier
+
+
diff --git a/.config/bat/themes/Catppuccin-mocha.tmTheme b/.config/bat/themes/Catppuccin-mocha.tmTheme
new file mode 100644
index 00000000..3b9b72c7
--- /dev/null
+++ b/.config/bat/themes/Catppuccin-mocha.tmTheme
@@ -0,0 +1,959 @@
+
+
+
+
+ name
+ Catppuccin
+ settings
+
+
+ settings
+
+ foreground
+ #cdd6f4
+ background
+ #1e1e2e
+ caret
+ #bac2de
+ invisibles
+ #a6adc8
+ gutterForeground
+ #9399b2
+ gutterForegroundHighlight
+ #a6e3a1
+ lineHighlight
+ #585b70
+ selection
+ #6c7086
+ selectionBorder
+ #1e1e2e
+ activeGuide
+ #fab387
+ findHighlightForeground
+ #181825
+ findHighlight
+ #f9e2af
+ bracketsForeground
+ #9399b2
+ bracketContentsForeground
+ #9399b2
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #6c7086
+ fontStyle
+ italic
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #a6e3a1
+ fontStyle
+
+
+
+
+ name
+ String regex
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+
+
+
+
+ name
+ Boolean
+ scope
+ constant.language.boolean
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+ bold italic
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #b4befe
+ fontStyle
+ italic
+
+
+
+ name
+ Built-in function
+ scope
+ support.function.builtin
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+ italic
+
+
+
+ name
+ User-defined constant
+ scope
+ variable.other.constant
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+ italic
+
+
+
+ name
+ Conditional/loop
+ scope
+ keyword.control.loop, keyword.control.conditional, keyword.control.c++
+ settings
+
+ foreground
+ #cba6f7
+ fontStyle
+ bold
+
+
+
+ name
+ Return
+ scope
+ keyword.control.return, keyword.control.flow.return
+ settings
+
+ foreground
+ #f5c2e7
+ fontStyle
+ bold
+
+
+
+ name
+ Exception
+ scope
+ support.type.exception
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+ italic
+
+
+
+ name
+ Operator
+ scope
+ keyword.operator, punctuation.accessor
+ settings
+
+ foreground
+ #89dceb
+ fontStyle
+ bold
+
+
+
+ name
+ Punctuation separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ Punctuation terminator
+ scope
+ punctuation.terminator
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ Punctuation bracket
+ scope
+ punctuation.section
+ settings
+
+ foreground
+ #9399b2
+ fontStyle
+
+
+
+
+ name
+ Include
+ scope
+ keyword.control.import.include
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+ italic
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Storage type
+ scope
+ storage.type
+ settings
+
+ foreground
+ #f9e2af
+ fontStyle
+ italic
+
+
+
+ name
+ Storage modifier
+ scope
+ storage.modifier
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Storage type namespace
+ scope
+ entity.name.namespace, meta.path
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+ italic
+
+
+
+ name
+ Storage type class
+ scope
+ storage.type.class
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+ italic
+
+
+
+ name
+ Label
+ scope
+ entity.name.label
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+
+
+
+
+ name
+ Keyword class
+ scope
+ keyword.declaration.class
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+ italic
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class, meta.toc-list.full-identifier
+ settings
+
+ foreground
+ #89dceb
+ fontStyle
+
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+ foreground
+ #89dceb
+ fontStyle
+ italic
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function, variable.function
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+ italic
+
+
+
+ name
+ Function macro
+ scope
+ entity.name.function.preprocessor
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Macro directive - ifdef
+ scope
+ keyword.control.import
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Constructor
+ scope
+ entity.name.function.constructor, entity.name.function.destructor
+ settings
+
+ foreground
+ #b4befe
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter.function
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+ italic
+
+
+
+ name
+ Function declaration
+ scope
+ keyword.declaration.function
+ settings
+
+ foreground
+ #eba0ac
+ fontStyle
+ italic
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #89dceb
+ fontStyle
+
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+ italic
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Variable function
+ scope
+ variable.function
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+ italic
+
+
+
+ name
+ Variable parameter
+ scope
+ variable.parameter
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+ italic
+
+
+
+ name
+ Variable other
+ scope
+ variable.other
+ settings
+
+ foreground
+ #cdd6f4
+ fontStyle
+ italic
+
+
+
+ name
+ Variable field
+ scope
+ variable.other.member
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+
+
+
+
+ name
+ Variable language
+ scope
+ variable.language
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #fab387
+ fontStyle
+
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #cba6f7
+ fontStyle
+ italic
+
+
+
+ name
+ Tag delimiter
+ scope
+ punctuation.definition.tag
+ settings
+
+ foreground
+ #eba0ac
+ fontStyle
+
+
+
+
+ name
+ Markdown URL
+ scope
+ markup.underline.link.markdown
+ settings
+
+ foreground
+ #f5e0dc
+ fontStyle
+ italic underline
+
+
+
+ name
+ Markdown reference
+ scope
+ meta.link.inline.description
+ settings
+
+ foreground
+ #b4befe
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown literal
+ scope
+ comment.block.markdown, meta.code-fence, markup.raw.code-fence, markup.raw.inline
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown title
+ scope
+ punctuation.definition.heading, entity.name.section
+ settings
+
+ foreground
+ #89b4fa
+ fontStyle
+ bold
+
+
+
+ name
+ Markdown emphasis
+ scope
+ markup.italic
+ settings
+
+ foreground
+ #eba0ac
+ fontStyle
+ italic
+
+
+
+ name
+ Markdown strong
+ scope
+ markup.bold
+ settings
+
+ foreground
+ #eba0ac
+ fontStyle
+ bold
+
+
+
+ name
+ Escape
+ scope
+ constant.character.escape
+ settings
+
+ foreground
+ #f5c2e7
+ fontStyle
+
+
+
+
+ name
+ Bash built-in function
+ scope
+ source.shell.bash meta.function.shell meta.compound.shell meta.function-call.identifier.shell
+ settings
+
+ foreground
+ #f5c2e7
+ fontStyle
+
+
+
+
+ name
+ Bash parameter
+ scope
+ variable.language.shell
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+ italic
+
+
+
+ name
+ Lua field
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.value.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #b4befe
+ fontStyle
+ italic
+
+
+
+ name
+ Lua constructor
+ scope
+ source.lua meta.function.lua meta.block.lua meta.mapping.key.lua string.unquoted.key.lua
+ settings
+
+ foreground
+ #f2cdcd
+ fontStyle
+
+
+
+
+ name
+ Java constant
+ scope
+ entity.name.constant.java
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ CSS property
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #f2cdcd
+ fontStyle
+ italic
+
+
+
+ name
+ CSS constant
+ scope
+ support.constant.property-value.css
+ settings
+
+ foreground
+ #cdd6f4
+ fontStyle
+
+
+
+
+ name
+ CSS suffix
+ scope
+ constant.numeric.suffix.css, keyword.other.unit.css
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+ italic
+
+
+
+ name
+ CSS variable property
+ scope
+ variable.other.custom-property.name.css, support.type.custom-property.name.css, punctuation.definition.custom-property.css
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ SCSS tag
+ scope
+ entity.name.tag.css
+ settings
+
+ foreground
+ #b4befe
+ fontStyle
+
+
+
+
+ name
+ SASS variable
+ scope
+ variable.other.sass
+ settings
+
+ foreground
+ #94e2d5
+ fontStyle
+
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ foreground
+ #cdd6f4
+ background
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Invalid deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ foreground
+ #cdd6f4
+ background
+ #cba6f7
+ fontStyle
+
+
+
+
+ name
+ Diff header
+ scope
+ meta.diff, meta.diff.header
+ settings
+
+ foreground
+ #6c7086
+ fontStyle
+
+
+
+
+ name
+ Diff deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ name
+ Diff inserted
+ scope
+ markup.inserted
+ settings
+
+ foreground
+ #a6e3a1
+ fontStyle
+
+
+
+
+ name
+ Diff changed
+ scope
+ markup.changed
+ settings
+
+ foreground
+ #f9e2af
+ fontStyle
+
+
+
+
+ name
+ Message error
+ scope
+ message.error
+ settings
+
+ foreground
+ #f38ba8
+ fontStyle
+
+
+
+
+ uuid
+ 4d0379b5-ef82-467b-b8b8-365889420646
+ colorSpaceName
+ sRGB
+ semanticClass
+ theme.dark.Catppuccin
+ author
+ BrunDerSchwarzmagier
+
+
diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf
new file mode 100644
index 00000000..fb645634
--- /dev/null
+++ b/.config/btop/btop.conf
@@ -0,0 +1,212 @@
+#? Config file for btop v. 1.2.13
+
+#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
+#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
+color_theme = "catppuccin_macchiato"
+
+#* If the theme set background should be shown, set to False if you want terminal background transparency.
+theme_background = False
+
+#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
+truecolor = True
+
+#* Set to true to force tty mode regardless if a real tty has been detected or not.
+#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
+force_tty = False
+
+#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
+#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
+#* Use whitespace " " as separator between different presets.
+#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
+presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
+
+#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
+#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
+vim_keys = False
+
+#* Rounded corners on boxes, is ignored if TTY mode is ON.
+rounded_corners = True
+
+#* Default symbols to use for graph creation, "braille", "block" or "tty".
+#* "braille" offers the highest resolution but might not be included in all fonts.
+#* "block" has half the resolution of braille but uses more common characters.
+#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
+#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
+graph_symbol = "braille"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_cpu = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_mem = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_net = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_proc = "default"
+
+#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
+shown_boxes = "cpu mem net proc"
+
+#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
+update_ms = 200
+
+#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
+#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
+proc_sorting = "memory"
+
+#* Reverse sorting order, True or False.
+proc_reversed = False
+
+#* Show processes as a tree.
+proc_tree = False
+
+#* Use the cpu graph colors in the process list.
+proc_colors = True
+
+#* Use a darkening gradient in the process list.
+proc_gradient = True
+
+#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
+proc_per_core = False
+
+#* Show process memory as bytes instead of percent.
+proc_mem_bytes = True
+
+#* Show cpu graph for each process.
+proc_cpu_graphs = True
+
+#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
+proc_info_smaps = False
+
+#* Show proc box on left side of screen instead of right.
+proc_left = False
+
+#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
+proc_filter_kernel = False
+
+#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
+#* Select from a list of detected attributes from the options menu.
+cpu_graph_upper = "total"
+
+#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
+#* Select from a list of detected attributes from the options menu.
+cpu_graph_lower = "total"
+
+#* Toggles if the lower CPU graph should be inverted.
+cpu_invert_lower = True
+
+#* Set to True to completely disable the lower CPU graph.
+cpu_single_graph = False
+
+#* Show cpu box at bottom of screen instead of top.
+cpu_bottom = False
+
+#* Shows the system uptime in the CPU box.
+show_uptime = True
+
+#* Show cpu temperature.
+check_temp = True
+
+#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
+cpu_sensor = "Auto"
+
+#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
+show_coretemp = True
+
+#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
+#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
+#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
+#* Example: "4:0 5:1 6:3"
+cpu_core_map = ""
+
+#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
+temp_scale = "celsius"
+
+#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
+base_10_sizes = False
+
+#* Show CPU frequency.
+show_cpu_freq = True
+
+#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
+#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
+clock_format = "%X"
+
+#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
+background_update = True
+
+#* Custom cpu model name, empty string to disable.
+custom_cpu_name = ""
+
+#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
+#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
+disks_filter = ""
+
+#* Show graphs instead of meters for memory values.
+mem_graphs = True
+
+#* Show mem box below net box instead of above.
+mem_below_net = False
+
+#* Count ZFS ARC in cached and available memory.
+zfs_arc_cached = True
+
+#* If swap memory should be shown in memory box.
+show_swap = False
+
+#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
+swap_disk = False
+
+#* If mem box should be split to also show disks info.
+show_disks = True
+
+#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
+only_physical = True
+
+#* Read disks list from /etc/fstab. This also disables only_physical.
+use_fstab = True
+
+#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
+zfs_hide_datasets = False
+
+#* Set to true to show available disk space for privileged users.
+disk_free_priv = False
+
+#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
+show_io_stat = True
+
+#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
+io_mode = False
+
+#* Set to True to show combined read/write io graphs in io mode.
+io_graph_combined = False
+
+#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
+#* Example: "/mnt/media:100 /:20 /boot:1".
+io_graph_speeds = ""
+
+#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
+net_download = 100
+
+net_upload = 100
+
+#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
+net_auto = True
+
+#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
+net_sync = True
+
+#* Starts with the Network Interface specified here.
+net_iface = ""
+
+#* Show battery stats in top right if battery is present.
+show_battery = True
+
+#* Which battery to use if multiple are present. "Auto" for auto detection.
+selected_battery = "Auto"
+
+#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
+#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
+log_level = "WARNING"
\ No newline at end of file
diff --git a/.config/btop/btop.log b/.config/btop/btop.log
new file mode 100644
index 00000000..6a4a0547
--- /dev/null
+++ b/.config/btop/btop.log
@@ -0,0 +1,64 @@
+
+2022/08/29 (18:12:02) | ===> btop++ v.1.2.9
+2022/08/29 (18:12:02) | ERROR: Invalid RGB decimal value: "ba1a84"
+
+2022/08/30 (14:36:00) | ===> btop++ v.1.2.9
+2022/08/30 (14:36:00) | ERROR: Invalid RGB decimal value: "ba1a84"
+
+2022/09/01 (15:40:25) | ===> btop++ v.1.2.9
+2022/09/01 (15:40:25) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/09/01 (15:41:22) | ===> btop++ v.1.2.9
+2022/09/01 (15:41:22) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/09/01 (15:41:25) | ===> btop++ v.1.2.9
+2022/09/01 (15:41:25) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/09/01 (15:41:25) | ===> btop++ v.1.2.9
+2022/09/01 (15:41:25) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/09/01 (15:41:26) | ===> btop++ v.1.2.9
+2022/09/01 (15:41:26) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/09/08 (13:31:49) | ===> btop++ v.1.2.9
+2022/09/08 (13:31:49) | ERROR: Invalid RGB decimal value: "ba1a84"
+2022/09/08 (13:31:50) | ERROR: Invalid RGB decimal value: "ba1a84"
+
+2022/10/21 (09:57:37) | ===> btop++ v.1.2.12
+2022/10/21 (09:57:37) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/10/21 (09:57:39) | ===> btop++ v.1.2.12
+2022/10/21 (09:57:39) | ERROR: No tty detected!
+btop++ needs an interactive shell to run.
+
+2022/10/31 (09:25:17) | ===> btop++ v.1.2.12
+2022/10/31 (09:25:17) | ERROR: Stall in Runner thread, restarting!
+
+2022/12/12 (01:13:00) | ===> btop++ v.1.2.13
+2022/12/12 (01:13:00) | INFO: Logger set to INFO
+
+2022/12/27 (22:55:42) | ===> btop++ v.1.2.13
+2022/12/27 (22:55:42) | ERROR: Stall in Runner thread, restarting!
+
+2023/02/13 (10:42:33) | ===> btop++ v.1.2.13
+2023/02/13 (10:42:33) | ERROR: Stall in Runner thread, restarting!
+
+2023/02/13 (10:42:33) | ===> btop++ v.1.2.13
+2023/02/13 (10:42:33) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:42:39) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:42:46) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:42:46) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:42:51) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:42:52) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (10:43:12) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (11:39:33) | ERROR: Stall in Runner thread, restarting!
+2023/02/13 (11:39:38) | ERROR: Stall in Runner thread, restarting!
+
+2023/02/20 (00:20:11) | ===> btop++ v.1.2.13
+2023/02/20 (00:20:11) | ERROR: Stall in Runner thread, restarting!
diff --git a/.config/btop/themes/catppuccin_macchiato.theme b/.config/btop/themes/catppuccin_macchiato.theme
new file mode 100644
index 00000000..7abd0bf4
--- /dev/null
+++ b/.config/btop/themes/catppuccin_macchiato.theme
@@ -0,0 +1,42 @@
+theme[main_bg]="#24273A"
+theme[main_fg]="#CAD3F5"
+theme[title]="#CAD3F5"
+theme[hi_fg]="#8AADF4"
+theme[selected_bg]="#494D64"
+theme[selected_fg]="#8AADF4"
+theme[inactive_fg]="#8087A2"
+theme[graph_text]="#F4DBD6"
+theme[meter_bg]="#494D64"
+theme[proc_misc]="#F4DBD6"
+theme[cpu_box]="#7DC4E4"
+theme[mem_box]="#A6DA95"
+theme[net_box]="#C6A0F6"
+theme[proc_box]="#F0C6C6"
+theme[div_line]="#6E738D"
+theme[temp_start]="#EED49F"
+theme[temp_mid]="#F5A97F"
+theme[temp_end]="#ED8796"
+theme[cpu_start]="#7DC4E4"
+theme[cpu_mid]="#91D7E3"
+theme[cpu_end]="#8BD5CA"
+theme[free_start]="#8BD5CA"
+theme[free_mid]="#8BD5CA"
+theme[free_end]="#A6DA95"
+theme[cached_start]="#F5BDE6"
+theme[cached_mid]="#F5BDE6"
+theme[cached_end]="#C6A0F6"
+theme[available_start]="#F4DBD6"
+theme[available_mid]="#F0C6C6"
+theme[available_end]="#F0C6C6"
+theme[used_start]="#F5A97F"
+theme[used_mid]="#F5A97F"
+theme[used_end]="#ED8796"
+theme[download_start]="#B7BDF8"
+theme[download_mid]="#B7BDF8"
+theme[download_end]="#C6A0F6"
+theme[upload_start]="#B7BDF8"
+theme[upload_mid]="#B7BDF8"
+theme[upload_end]="#C6A0F6"
+theme[process_start]="#7DC4E4"
+theme[process_mid]="#91D7E3"
+theme[process_end]="#8BD5CA"
diff --git a/.config/cava/config b/.config/cava/config
new file mode 100644
index 00000000..2f9aacb4
--- /dev/null
+++ b/.config/cava/config
@@ -0,0 +1,196 @@
+## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
+
+
+[general]
+
+# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
+; mode = normal
+
+# Accepts only non-negative values.
+framerate = 75
+
+# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
+# new as of 0.6.0 autosens of low values (dynamic range)
+# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
+;autosens = 1
+;overshoot = 20
+
+# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
+# 200 means double height. Accepts only non-negative values.
+;sensitivity = 200
+
+# The number of bars (0-200). 0 sets it to auto (fill up console).
+# Bars' width and space between bars in number of characters.
+;bars = 0
+;bar_width = 6
+;bar_spacing = 1
+# bar_height is only used for output in "noritake" format
+; bar_height = 32
+
+# For SDL width and space between bars is in pixels, defaults are:
+; bar_width = 20
+; bar_spacing = 5
+
+
+# Lower and higher cutoff frequencies for lowest and highest bars
+# the bandwidth of the visualizer.
+# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
+# Cava will automatically increase the higher cutoff if a too low band is specified.
+; lower_cutoff_freq = 50
+; higher_cutoff_freq = 10000
+
+
+# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
+# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
+; sleep_timer = 0
+
+
+[input]
+
+# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
+# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
+#
+# All input methods uses the same config variable 'source'
+# to define where it should get the audio.
+#
+# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
+# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
+#
+# For alsa 'source' will be the capture device.
+# For fifo 'source' will be the path to fifo-file.
+# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
+method = pulse
+source = auto
+
+; method = alsa
+; source = hw:Loopback,1
+
+; method = fifo
+; source = /tmp/mpd.fifo
+; sample_rate = 44100
+; sample_bits = 16
+
+; method = shmem
+; source = /squeezelite-AA:BB:CC:DD:EE:FF
+
+; method = portaudio
+; source = auto
+
+
+[output]
+
+# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake' or 'sdl'.
+# 'noncurses' uses a custom framebuffer technique and prints only changes
+# from frame to frame in the terminal. 'ncurses' is default if supported.
+#
+# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
+# stream of the bar heights that can be used to send to other applications.
+# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
+#
+# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
+# in graphic mode. It only support the 3000 series graphical VFDs for now.
+#
+# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
+; method = ncurses
+
+# Visual channels. Can be 'stereo' or 'mono'.
+# 'stereo' mirrors both channels with low frequencies in center.
+# 'mono' outputs left to right lowest to highest frequencies.
+# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
+# set 'reverse' to 1 to display frequencies the other way around.
+; channels = stereo
+; mono_option = average
+; reverse = 0
+
+# Raw output target. A fifo will be created if target does not exist.
+; raw_target = /dev/stdout
+
+# Raw data format. Can be 'binary' or 'ascii'.
+; data_format = binary
+
+# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
+; bit_format = 16bit
+
+# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
+; ascii_max_range = 1000
+
+# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
+# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
+; bar_delimiter = 59
+; frame_delimiter = 10
+
+# sdl window size and position. -1,-1 is centered.
+; sdl_width = 1000
+; sdl_height = 500
+; sdl_x = -1
+; sdl_y= -1
+
+[color]
+
+# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
+# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
+# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
+# if supported, ncurses mode will be forced on if user defined colors are used.
+# default is to keep current terminal color
+; background = default
+; foreground = default
+
+# SDL only support hex code colors, these are the default:
+; background = '#111111'
+; foreground = '#33cccc'
+
+
+# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
+# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
+# You can define as many as 8 different colors. They range from bottom to top of screen
+
+gradient = 1
+
+gradient_color_1 = '#8bd5ca'
+gradient_color_2 = '#91d7e3'
+gradient_color_3 = '#7dc4e4'
+gradient_color_4 = '#8aadf4'
+gradient_color_5 = '#c6a0f6'
+gradient_color_6 = '#f5bde6'
+gradient_color_7 = '#ee99a0'
+gradient_color_8 = '#ed8796'
+
+[smoothing]
+
+# Percentage value for integral smoothing. Takes values from 0 - 100.
+# Higher values means smoother, but less precise. 0 to disable.
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; integral = 100
+
+# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
+; monstercat = 1
+; waves = 1
+
+# Set gravity percentage for "drop off". Higher values means bars will drop faster.
+# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; gravity = 100
+
+
+# In bar height, bars that would have been lower that this will not be drawn.
+# DEPRECATED as of 0.8.0
+; ignore = 0
+
+# Noise reduction, float 0 - 1. default 0.77
+# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
+# 1 will be very slow and smooth, 0 will be fast but noisy.
+; noise_reduction = 1
+
+
+[eq]
+
+# This one is tricky. You can have as much keys as you want.
+# Remember to uncomment more then one key! More keys = more precision.
+# Look at readme.md on github for further explanations and examples.
+# DEPRECATED as of 0.8.0 can be brought back by popular request, open issue at:
+# https://github.com/karlstav/cava
+; 1 = 1 # bass
+; 2 = 1
+; 3 = 1 # midtone
+; 4 = 1
+; 5 = 1 # treble
diff --git a/.config/cava/shaders/bar_spectrum.frag b/.config/cava/shaders/bar_spectrum.frag
new file mode 100644
index 00000000..b0789132
--- /dev/null
+++ b/.config/cava/shaders/bar_spectrum.frag
@@ -0,0 +1,79 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+uniform int bar_width; // bar width (configurable), not used here
+uniform int bar_spacing; // space bewteen bars (configurable)
+
+uniform vec3 u_resolution; // window resolution
+
+//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
+uniform vec3 bg_color; // background color
+uniform vec3 fg_color; // foreground color
+
+uniform int gradient_count;
+uniform vec3 gradient_colors[8]; // gradient colors
+
+vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
+{
+ //create color based on fraction of this color and next color
+ float yr = (y - y_min) / (y_max - y_min);
+ return col_1 * (1.0 - yr) + col_2 * yr;
+}
+
+void main()
+{
+ // find which bar to use based on where we are on the x axis
+ float x = u_resolution.x * fragCoord.x;
+ int bar = int(bars_count * fragCoord.x);
+
+ //calculate a bar size
+ float bar_size = u_resolution.x / bars_count;
+
+ //the y coordinate and bar values are the same
+ float y = bars[bar];
+
+ // make sure there is a thin line at bottom
+ if (y * u_resolution.y < 1.0)
+ {
+ y = 1.0 / u_resolution.y;
+ }
+
+ //draw the bar up to current height
+ if (y > fragCoord.y)
+ {
+ //make some space between bars basen on settings
+ if (x > (bar + 1) * (bar_size) - bar_spacing)
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+ else
+ {
+ if (gradient_count == 0)
+ {
+ fragColor = vec4(fg_color,1.0);
+ }
+ else
+ {
+ //find which color in the configured gradient we are at
+ int color = int((gradient_count - 1) * fragCoord.y);
+
+ //find where on y this and next color is supposed to be
+ float y_min = color / (gradient_count - 1.0);
+ float y_max = (color + 1.0) / (gradient_count - 1.0);
+
+ //make color
+ fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
+ }
+ }
+ }
+ else
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+}
\ No newline at end of file
diff --git a/.config/cava/shaders/normalized_bars.frag b/.config/cava/shaders/normalized_bars.frag
new file mode 100644
index 00000000..81a27e2d
--- /dev/null
+++ b/.config/cava/shaders/normalized_bars.frag
@@ -0,0 +1,38 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+
+uniform vec3 u_resolution; // window resolution, not used here
+
+//colors, configurable in cava config file
+uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
+uniform vec3 fg_color; // foreground color, not used here
+
+float normalize_C(float x, float x_min, float x_max, float r_min, float r_max )
+{
+ float xr;
+ xr = (r_max-r_min) * (x - x_min) / (x_max - x_min) + r_min;
+ return xr;
+}
+
+void main()
+{
+ // find which bar to use based on where we are on the x axis
+ int bar = int(bars_count * fragCoord.x);
+
+ // create a normal along the y axis based on the bar height
+ float x = normalize_C(fragCoord.y, 1.0, 0.0, 0.0, bars[bar]);
+
+ // set color
+ fragColor.r=fg_color.x*x;
+ fragColor.g=fg_color.y*x;
+ fragColor.b=fg_color.z*x;
+ fragColor.a=1.0;
+
+}
diff --git a/.config/cava/shaders/pass_through.vert b/.config/cava/shaders/pass_through.vert
new file mode 100644
index 00000000..a4f20e52
--- /dev/null
+++ b/.config/cava/shaders/pass_through.vert
@@ -0,0 +1,14 @@
+#version 330
+
+
+// Input vertex data, different for all executions of this shader.
+layout(location = 0) in vec3 vertexPosition_modelspace;
+
+// Output data ; will be interpolated for each fragment.
+out vec2 fragCoord;
+
+void main()
+{
+ gl_Position = vec4(vertexPosition_modelspace,1);
+ fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
+}
diff --git a/.config/hypr/keybinds/binds.conf b/.config/hypr/keybinds/binds.conf
index 58bfabf5..1fab627b 100644
--- a/.config/hypr/keybinds/binds.conf
+++ b/.config/hypr/keybinds/binds.conf
@@ -18,7 +18,7 @@ bind=SUPER,RETURN,exec,kitty
# Launchers
bind=SUPER,space,exec, wofi
-bind=SUPER, 23, exec, ~/.config/rofi/launchers/type-5/launcher.sh
+bind=SUPER, 23, exec, rofi -show drun -theme ~/.config/rofi/style.rasi
# Screenshotting
bind=,Print,exec,~/.config/hypr/scripts/screenshot
diff --git a/.config/keyb/config.yml b/.config/keyb/config.yml
new file mode 100644
index 00000000..9e47e9ac
--- /dev/null
+++ b/.config/keyb/config.yml
@@ -0,0 +1,43 @@
+settings:
+ keyb_path: /home/matt/.config/keyb/default.yml
+ debug: false
+ reverse: false
+ mouse: true
+ search_mode: false
+ sort_keys: true
+ title: ""
+ prompt: "> "
+ prompt_location: top
+ placeholder: ""
+ prefix_sep: ;
+ sep_width: 4
+ margin: 0
+ padding: 1
+ border: hidden
+color:
+ prompt: ""
+ cursor_fg: ""
+ cursor_bg: "#626880"
+ filter_fg: "#ef9f76"
+ filter_bg: ""
+ counter_fg: "#8caaee"
+ counter_bg: ""
+ placeholder_fg: "#8caaee"
+ placeholder_bg: ""
+ border_color: ""
+keys:
+ quit: ctrl+c
+ up: k, up
+ down: j, down
+ half_up: ctrl+u
+ half_down: ctrl+d
+ full_up: ctrl+up
+ full_bottom: ctrl+down
+ first_line: g
+ last_line: G
+ top: ctrl+b
+ middle: M
+ bottom: ctrl+f
+ search: /
+ clear_search: q
+ normal: enter
diff --git a/.config/keyb/default.yml b/.config/keyb/default.yml
new file mode 100644
index 00000000..0e0c4966
--- /dev/null
+++ b/.config/keyb/default.yml
@@ -0,0 +1,323 @@
+- name: WM Apps/Widgets
+ keybinds:
+ - name: Web Browser (Librewolf)
+ key: WIN + .
+ - name: File Manager (Thunar)
+ key: WIN + 0 Numpad
+ - name: Text Editor (VSCodium)
+ key: WIN + BackSpace
+ - name: Mail Client (Thunderbird)
+ key: WIN + 1 Numpad
+ - name: Notes Application (Notion)
+ key: WIN + 2 Numpad
+ - name: Office Suite (LibreOffice)
+ key: WIN + 3 Numpad
+ - name: Video Recorder (OBS)
+ key: WIN + 4 Numpad
+ - name: Sound Control Panel (Pavucontrol)
+ key: WIN + 5 Numpad
+ - name: Chat App (Discord)
+ key: WIN + 7 Numpad
+ - name: Games Store/Launcher (Steam)
+ key: WIN + 8 Numpad
+ - name: Games Store/Launcher (Heroic)
+ key: WIN + 9 Numpad
+ - name: Music App (Spotify)
+ key: WIN + º
+ - name: Application Launcher (Rofi)
+ key: WIN + TAB
+ - name: Client Switcher (Rofi)
+ key: ALT + TAB
+ - name: Power Menu (Awesome Widget)
+ key: WIN + ESC
+ - name: Screenshot Program (Rofi)
+ key: ImpaPant
+
+
+- name: WM Layouts
+ keybinds:
+ - name: Floating
+ key: Control + WIN + 0 Numpad
+ - name: Magnifier
+ key: Control + WIN + 5 Numpad
+ - name: Tiling Right
+ key: Control + WIN + 6 Numpad
+ - name: Tiling Left
+ key: Control + WIN + 4 Numpad
+ - name: Tiling Top
+ key: Control + WIN + 8 Numpad
+ - name: Tiling Bottom
+ key: Control + WIN + 2 Numpad
+
+
+- name: WM Windows/Tags
+ keybinds:
+ - name: Right Tag
+ key: WIN + Right Arrow
+ - name: Left Tag
+ key: WIN + Left Arrow
+ - name: Increase Right Width
+ key: WIN + /
+ - name: Increase Left Width
+ key: WIN + *
+ - name: Increase Number Of Columns
+ key: WIN + +
+ - name: Decrease Number Of Columns
+ key: WIN + -
+ - name: Decrease Number Of Columns
+ key: WIN + -
+ - name: Move Window To X Tag
+ key: WIN + 1/2/3/4
+ - name: Fullscreen Window
+ key: WIN + f
+ - name: Maximize Window
+ key: WIN + m
+ - name: Minimize Window
+ key: WIN + n
+ - name: Toggle Floating Window
+ key: WIN + a
+ - name: Close Window
+ key: Control + q
+
+
+- name: WM Misc.
+ keybinds:
+ - name: Pause/Play
+ key: WIN + F7 | WIN + Left-Big Mouse Button
+ - name: Mute
+ key: WIN + FN
+ - name: Raise Volume
+ key: WIN + F11 | WIN + Left-Up Mouse Button
+ - name: Lower Volume
+ key: WIN + F10 | WIN + Left-Down Mouse Button
+ - name: Start Compositor (Picom)
+ key: WIN + Inicio
+ - name: Kill Compositor (Picom)
+ key: WIN + Fin
+ - name: Restart WM (AwesomeWM)
+ key: Control + WIN + r
+
+
+- name: Web Browser (Librewolf)
+ keybinds:
+ - name: Focus on URL
+ key: F6
+ - name: Restart Page
+ key: F5
+ - name: New Tab
+ key: Control + t
+ - name: New Window
+ key: Control + n
+ - name: Watch History
+ key: Control + h
+ - name: Cycle Through Recent Tabs
+ key: Control + TAB
+ - name: Zoom In
+ key: Control + +
+ - name: Zoom Out
+ key: Control + -
+ - name: Search For An Specific Word
+ key: Control + f
+ - name: Toggle Bookmarks
+ key: Control + Shift + b
+
+
+- name: Text Editor (VSCodium)
+ keybinds:
+ - name: Save
+ key: Control + s
+ - name: Toggle Command Box
+ key: Control + Shift + p
+ - name: Format Document
+ key: Control + WIN + +
+ - name: Open Live Server
+ key: Control + 1
+ - name: New File
+ key: Control + n
+ - name: Go To Definition
+ key: F12
+ - name: Search For
+ key: Control + f
+ - name: Search And Replace
+ key: Control + h
+ - name: Go To Line
+ key: Control + g
+ - name: Zoom In
+ key: Control + +
+ - name: Zoom Out
+ key: Control + -
+ - name: Cycle Through Recent Tabs
+ key: Control + TAB
+ - name: Toggle Zen Mode
+ key: Control + F11
+ - name: Toggle Lateral Bar
+ key: Control + b
+ - name: Toggle Lateral Menu
+ key: Control + ç
+ - name: Toggle Status Menu
+ key: Control + Shift + ç
+ - name: Toggle Bookmark
+ key: Control + Shift + m
+
+
+- name: File Manager (Thunar)
+ keybinds:
+ - name: Focus on URL
+ key: Control + l
+ - name: New Folder
+ key: Control + Shift + n
+ - name: New Tab
+ key: Control + t
+ - name: New Window
+ key: Control + n
+ - name: Properties Of The Folder
+ key: Alt + Enter
+ - name: Rename File
+ key: F2
+ - name: Bookmarks
+ key: Control + b
+ - name: Tree Bar
+ key: Control + e
+ - name: Zoom In
+ key: Control + +
+ - name: Zoom Out
+ key: Control + -
+ - name: Menu Tab
+ key: Control + m
+
+
+- name: PDF Reader (Zathura)
+ keybinds:
+ - name: Toggle Statusbar
+ key: a
+ - name: Page Down
+ key: RePag
+ - name: Page Up
+ key: AvPag
+ - name: Rotate
+ key: r
+ - name: Switch Theme
+ key: Control + r
+ - name: Zoom In
+ key: Control + Mouse Wheel
+ - name: Zoom Out
+ key: Control + Mouse Wheel
+
+
+- name: Office Suite (LibreOffice)
+ keybinds:
+ - name: Bold Text
+ key: Control + b
+ - name: Italic Text
+ key: Control + i
+ - name: Underline Text
+ key: Control + u
+ - name: Zoom In
+ key: Control + +
+ - name: Zoom Out
+ key: Control + -
+ - name: Select All
+ key: Control + e
+ - name: Save
+ key: Control + s
+ - name: Table
+ key: Control + F12
+ - name: Hiperlink
+ key: Control + Alt + k
+ - name: Toggle Side Bar
+ key: Control + x
+ - name: Toggle Status Bar
+ key: Control + w
+ - name: Toggle Menu Bar
+ key: Control + p
+
+
+- name: Notes Application (Notion)
+ keybinds:
+ - name: Save
+ key: Control + s
+ - name: Search Pages
+ key: Control + p
+ - name: New Page
+ key: Control + n
+ - name: New Tab
+ key: Control + t
+ - name: Create Comment
+ key: Control + Shift + m
+ - name: Bold Text
+ key: Control + b
+ - name: Italic Text
+ key: Control + i
+ - name: Underline Text
+ key: Control + u
+ - name: Zoom In
+ key: Control + Mouse Wheel
+ - name: Zoom Out
+ key: Control + Mouse Wheel
+ - name: Create Text
+ key: Control + Shift + 0
+ - name: Create H1
+ key: Control + Shift + 1
+ - name: Create H2
+ key: Control + Shift + 2
+ - name: Create H3
+ key: Control + Shift + 3
+ - name: Create CheckBox
+ key: Control + Shift + 4
+ - name: Create Bulleted List
+ key: Control + Shift + 5
+ - name: Create Numbered List
+ key: Control + Shift + 6
+ - name: Create Toggle List
+ key: Control + Shift + 7
+ - name: Create Code Block
+ key: Control + Shift + 8
+ - name: Create Turn
+ key: Control + Shift + 9
+ - name: Open Plugin Options
+ key: Control + Alt + e
+
+- name: Email Client (Thunderbird)
+ keybinds:
+ - name: Mark As Read
+ key: Shift + c
+ - name: Search Pages
+ key: Control + p
+ - name: New Page
+ key: Control + n
+ - name: New Tab
+ key: Control + t
+ - name: Create Comment
+ key: Control + Shift + m
+ - name: Bold Text
+ key: Control + b
+ - name: Italic Text
+ key: Control + i
+ - name: Underline Text
+ key: Control + u
+ - name: Zoom In
+ key: Control + Mouse Wheel
+ - name: Zoom Out
+ key: Control + Mouse Wheel
+ - name: Create Text
+ key: Control + Shift + 0
+ - name: Create H1
+ key: Control + Shift + 1
+ - name: Create H2
+ key: Control + Shift + 2
+ - name: Create H3
+ key: Control + Shift + 3
+ - name: Create CheckBox
+ key: Control + Shift + 4
+ - name: Create Bulleted List
+ key: Control + Shift + 5
+ - name: Create Numbered List
+ key: Control + Shift + 6
+ - name: Create Toggle List
+ key: Control + Shift + 7
+ - name: Create Code Block
+ key: Control + Shift + 8
+ - name: Create Turn
+ key: Control + Shift + 9
+ - name: Open Plugin Options
+ key: Control + Alt + e
\ No newline at end of file
diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf
new file mode 100644
index 00000000..8770e662
--- /dev/null
+++ b/.config/kitty/kitty.conf
@@ -0,0 +1,2221 @@
+# vim:fileencoding=utf-8:foldmethod=marker
+
+#: Fonts {{{
+
+#: kitty has very powerful font management. You can configure
+#: individual font faces and even specify special fonts for particular
+#: characters.
+
+font_family JetBrains Mono Light
+bold_font auto
+italic_font auto
+bold_italic_font auto
+
+#: You can specify different fonts for the bold/italic/bold-italic
+#: variants. To get a full list of supported fonts use the `kitty
+#: +list-fonts` command. By default they are derived automatically, by
+#: the OSes font system. When bold_font or bold_italic_font is set to
+#: auto on macOS, the priority of bold fonts is semi-bold, bold,
+#: heavy. Setting them manually is useful for font families that have
+#: many weight variants like Book, Medium, Thick, etc. For example::
+
+#: font_family Operator Mono Book
+#: bold_font Operator Mono Medium
+#: italic_font Operator Mono Book Italic
+#: bold_italic_font Operator Mono Medium Italic
+
+font_size 11.0
+
+#: Font size (in pts)
+
+force_ltr no
+
+#: kitty does not support BIDI (bidirectional text), however, for RTL
+#: scripts, words are automatically displayed in RTL. That is to say,
+#: in an RTL script, the words "HELLO WORLD" display in kitty as
+#: "WORLD HELLO", and if you try to select a substring of an RTL-
+#: shaped string, you will get the character that would be there had
+#: the the string been LTR. For example, assuming the Hebrew word
+#: ירושלים, selecting the character that on the screen appears to be ם
+#: actually writes into the selection buffer the character י. kitty's
+#: default behavior is useful in conjunction with a filter to reverse
+#: the word order, however, if you wish to manipulate RTL glyphs, it
+#: can be very challenging to work with, so this option is provided to
+#: turn it off. Furthermore, this option can be used with the command
+#: line program GNU FriBidi
+#: to get BIDI
+#: support, because it will force kitty to always treat the text as
+#: LTR, which FriBidi expects for terminals.
+
+adjust_line_height 0
+adjust_column_width 0
+
+#: Change the size of each character cell kitty renders. You can use
+#: either numbers, which are interpreted as pixels or percentages
+#: (number followed by %), which are interpreted as percentages of the
+#: unmodified values. You can use negative pixels or percentages less
+#: than 100% to reduce sizes (but this might cause rendering
+#: artifacts).
+
+adjust_baseline 0
+
+#: Adjust the vertical alignment of text (the height in the cell at
+#: which text is positioned). You can use either numbers, which are
+#: interpreted as pixels or percentages (number followed by %), which
+#: are interpreted as the percentage of the line height. A positive
+#: value moves the baseline up, and a negative value moves them down.
+#: The underline and strikethrough positions are adjusted accordingly.
+
+# symbol_map
+
+#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
+
+#: Map the specified Unicode codepoints to a particular font. Useful
+#: if you need special rendering for some symbols, such as for
+#: Powerline. Avoids the need for patched fonts. Each Unicode code
+#: point is specified in the form `U+`. You
+#: can specify multiple code points, separated by commas and ranges
+#: separated by hyphens. This option can be specified multiple times.
+#: The syntax is::
+
+#: symbol_map codepoints Font Family Name
+
+# narrow_symbols
+
+#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1
+
+#: Usually, for Private Use Unicode characters and some symbol/dingbat
+#: characters, if the character is followed by one or more spaces,
+#: kitty will use those extra cells to render the character larger, if
+#: the character in the font has a wide aspect ratio. Using this
+#: option you can force kitty to restrict the specified code points to
+#: render in the specified number of cells (defaulting to one cell).
+#: This option can be specified multiple times. The syntax is::
+
+#: narrow_symbols codepoints [optionally the number of cells]
+
+disable_ligatures never
+
+#: Choose how you want to handle multi-character ligatures. The
+#: default is to always render them. You can tell kitty to not render
+#: them when the cursor is over them by using cursor to make editing
+#: easier, or have kitty never render them at all by using always, if
+#: you don't like them. The ligature strategy can be set per-window
+#: either using the kitty remote control facility or by defining
+#: shortcuts for it in kitty.conf, for example::
+
+#: map alt+1 disable_ligatures_in active always
+#: map alt+2 disable_ligatures_in all never
+#: map alt+3 disable_ligatures_in tab cursor
+
+#: Note that this refers to programming ligatures, typically
+#: implemented using the calt OpenType feature. For disabling general
+#: ligatures, use the font_features option.
+
+# font_features
+
+#: E.g. font_features none
+
+#: Choose exactly which OpenType features to enable or disable. This
+#: is useful as some fonts might have features worthwhile in a
+#: terminal. For example, Fira Code includes a discretionary feature,
+#: zero, which in that font changes the appearance of the zero (0), to
+#: make it more easily distinguishable from Ø. Fira Code also includes
+#: other discretionary features known as Stylistic Sets which have the
+#: tags ss01 through ss20.
+
+#: For the exact syntax to use for individual features, see the
+#: HarfBuzz documentation .
+
+#: Note that this code is indexed by PostScript name, and not the font
+#: family. This allows you to define very precise feature settings;
+#: e.g. you can disable a feature in the italic font but not in the
+#: regular font.
+
+#: On Linux, font features are first read from the FontConfig database
+#: and then this option is applied, so they can be configured in a
+#: single, central place.
+
+#: To get the PostScript name for a font, use `kitty +list-fonts
+#: --psnames`:
+
+#: .. code-block:: sh
+
+#: $ kitty +list-fonts --psnames | grep Fira
+#: Fira Code
+#: Fira Code Bold (FiraCode-Bold)
+#: Fira Code Light (FiraCode-Light)
+#: Fira Code Medium (FiraCode-Medium)
+#: Fira Code Regular (FiraCode-Regular)
+#: Fira Code Retina (FiraCode-Retina)
+
+#: The part in brackets is the PostScript name.
+
+#: Enable alternate zero and oldstyle numerals::
+
+#: font_features FiraCode-Retina +zero +onum
+
+#: Enable only alternate zero in the bold font::
+
+#: font_features FiraCode-Bold +zero
+
+#: Disable the normal ligatures, but keep the calt feature which (in
+#: this font) breaks up monotony::
+
+#: font_features TT2020StyleB-Regular -liga +calt
+
+#: In conjunction with force_ltr, you may want to disable Arabic
+#: shaping entirely, and only look at their isolated forms if they
+#: show up in a document. You can do this with e.g.::
+
+#: font_features UnifontMedium +isol -medi -fina -init
+
+box_drawing_scale 0.001, 1, 1.5, 2
+
+#: The sizes of the lines used for the box drawing Unicode characters.
+#: These values are in pts. They will be scaled by the monitor DPI to
+#: arrive at a pixel value. There must be four values corresponding to
+#: thin, normal, thick, and very thick lines.
+
+#: }}}
+
+#: Cursor customization {{{
+
+cursor #F4DBD6
+
+#: Default cursor color. If set to the special value none the cursor
+#: will be rendered with a "reverse video" effect. It's color will be
+#: the color of the text in the cell it is over and the text will be
+#: rendered with the background color of the cell. Note that if the
+#: program running in the terminal sets a cursor color, this takes
+#: precedence. Also, the cursor colors are modified if the cell
+#: background and foreground colors have very low contrast.
+
+cursor_text_color #24273A
+
+#: The color of text under the cursor. If you want it rendered with
+#: the background color of the cell underneath instead, use the
+#: special keyword: background. Note that if cursor is set to none
+#: then this option is ignored.
+
+cursor_shape block
+
+#: The cursor shape can be one of block, beam, underline. Note that
+#: when reloading the config this will be changed only if the cursor
+#: shape has not been set by the program running in the terminal. This
+#: sets the default cursor shape, applications running in the terminal
+#: can override it. In particular, shell integration
+#: in kitty sets
+#: the cursor shape to beam at shell prompts. You can avoid this by
+#: setting shell_integration to no-cursor.
+
+cursor_beam_thickness 1.5
+
+#: The thickness of the beam cursor (in pts).
+
+cursor_underline_thickness 2.0
+
+#: The thickness of the underline cursor (in pts).
+
+cursor_blink_interval -1
+
+#: The interval to blink the cursor (in seconds). Set to zero to
+#: disable blinking. Negative values mean use system default. Note
+#: that the minimum interval will be limited to repaint_delay.
+
+cursor_stop_blinking_after 15.0
+
+#: Stop blinking cursor after the specified number of seconds of
+#: keyboard inactivity. Set to zero to never stop blinking.
+
+#: }}}
+
+#: Scrollback {{{
+
+scrollback_lines 2000
+
+#: Number of lines of history to keep in memory for scrolling back.
+#: Memory is allocated on demand. Negative numbers are (effectively)
+#: infinite scrollback. Note that using very large scrollback is not
+#: recommended as it can slow down performance of the terminal and
+#: also use large amounts of RAM. Instead, consider using
+#: scrollback_pager_history_size. Note that on config reload if this
+#: is changed it will only affect newly created windows, not existing
+#: ones.
+
+scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
+
+#: Program with which to view scrollback in a new window. The
+#: scrollback buffer is passed as STDIN to this program. If you change
+#: it, make sure the program you use can handle ANSI escape sequences
+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
+#: line above will be replaced by an integer representing which line
+#: should be at the top of the screen. Similarly CURSOR_LINE and
+#: CURSOR_COLUMN will be replaced by the current cursor position or
+#: set to 0 if there is no cursor, for example, when showing the last
+#: command output.
+
+scrollback_pager_history_size 0
+
+#: Separate scrollback history size (in MB), used only for browsing
+#: the scrollback buffer with pager. This separate buffer is not
+#: available for interactive scrolling but will be piped to the pager
+#: program when viewing scrollback buffer in a separate window. The
+#: current implementation stores the data in UTF-8, so approximatively
+#: 10000 lines per megabyte at 100 chars per line, for pure ASCII,
+#: unformatted text. A value of zero or less disables this feature.
+#: The maximum allowed size is 4GB. Note that on config reload if this
+#: is changed it will only affect newly created windows, not existing
+#: ones.
+
+scrollback_fill_enlarged_window no
+
+#: Fill new space with lines from the scrollback buffer after
+#: enlarging a window.
+
+wheel_scroll_multiplier 5.0
+
+#: Multiplier for the number of lines scrolled by the mouse wheel.
+#: Note that this is only used for low precision scrolling devices,
+#: not for high precision scrolling devices on platforms such as macOS
+#: and Wayland. Use negative numbers to change scroll direction. See
+#: also wheel_scroll_min_lines.
+
+wheel_scroll_min_lines 1
+
+#: The minimum number of lines scrolled by the mouse wheel. The scroll
+#: multiplier only takes effect after it
+#: reaches this number. Note that this is only used for low precision
+#: scrolling devices like wheel mice that scroll by very small amounts
+#: when using the wheel. With a negative number, the minimum number of
+#: lines will always be added.
+
+touch_scroll_multiplier 1.0
+
+#: Multiplier for the number of lines scrolled by a touchpad. Note
+#: that this is only used for high precision scrolling devices on
+#: platforms such as macOS and Wayland. Use negative numbers to change
+#: scroll direction.
+
+#: }}}
+
+#: Mouse {{{
+
+mouse_hide_wait 3.0
+
+#: Hide mouse cursor after the specified number of seconds of the
+#: mouse not being used. Set to zero to disable mouse cursor hiding.
+#: Set to a negative value to hide the mouse cursor immediately when
+#: typing text. Disabled by default on macOS as getting it to work
+#: robustly with the ever-changing sea of bugs that is Cocoa is too
+#: much effort.
+
+url_color #F4DBD6
+url_style curly
+
+#: The color and style for highlighting URLs on mouse-over. url_style
+#: can be one of: none, straight, double, curly, dotted, dashed.
+
+open_url_with default
+
+#: The program to open clicked URLs. The special value default means
+#: to use the operating system's default URL handler (open on macOS
+#: and xdg-open on Linux).
+
+url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh
+
+#: The set of URL prefixes to look for when detecting a URL under the
+#: mouse cursor.
+
+detect_urls yes
+
+#: Detect URLs under the mouse. Detected URLs are highlighted with an
+#: underline and the mouse cursor becomes a hand over them. Even if
+#: this option is disabled, URLs are still clickable.
+
+# url_excluded_characters
+
+#: Additional characters to be disallowed from URLs, when detecting
+#: URLs under the mouse cursor. By default, all characters that are
+#: legal in URLs are allowed.
+
+copy_on_select no
+
+#: Copy to clipboard or a private buffer on select. With this set to
+#: clipboard, selecting text with the mouse will cause the text to be
+#: copied to clipboard. Useful on platforms such as macOS that do not
+#: have the concept of primary selection. You can instead specify a
+#: name such as a1 to copy to a private kitty buffer. Map a shortcut
+#: with the paste_from_buffer action to paste from this private
+#: buffer. For example::
+
+#: copy_on_select a1
+#: map shift+cmd+v paste_from_buffer a1
+
+#: Note that copying to the clipboard is a security risk, as all
+#: programs, including websites open in your browser can read the
+#: contents of the system clipboard.
+
+paste_actions quote-urls-at-prompt
+
+#: A comma separated list of actions to take when pasting text into
+#: the terminal. The supported paste actions are:
+
+#: quote-urls-at-prompt:
+#: If the text being pasted is a URL and the cursor is at a shell prompt,
+#: automatically quote the URL (needs shell_integration).
+#: confirm:
+#: Confirm the paste if bracketed paste mode is not active or there is more
+#: a large amount of text being pasted.
+#: filter:
+#: Run the filter_paste() function from the file paste-actions.py in
+#: the kitty config directory on the pasted text. The text returned by the
+#: function will be actually pasted.
+
+strip_trailing_spaces never
+
+#: Remove spaces at the end of lines when copying to clipboard. A
+#: value of smart will do it when using normal selections, but not
+#: rectangle selections. A value of always will always do it.
+
+select_by_word_characters @-./_~?&=%+#
+
+#: Characters considered part of a word when double clicking. In
+#: addition to these characters any character that is marked as an
+#: alphanumeric character in the Unicode database will be matched.
+
+# select_by_word_characters_forward
+
+#: Characters considered part of a word when extending the selection
+#: forward on double clicking. In addition to these characters any
+#: character that is marked as an alphanumeric character in the
+#: Unicode database will be matched.
+
+#: If empty (default) select_by_word_characters will be used for both
+#: directions.
+
+click_interval -1.0
+
+#: The interval between successive clicks to detect double/triple
+#: clicks (in seconds). Negative numbers will use the system default
+#: instead, if available, or fallback to 0.5.
+
+focus_follows_mouse no
+
+#: Set the active window to the window under the mouse when moving the
+#: mouse around.
+
+pointer_shape_when_grabbed arrow
+
+#: The shape of the mouse pointer when the program running in the
+#: terminal grabs the mouse. Valid values are: arrow, beam and hand.
+
+default_pointer_shape beam
+
+#: The default shape of the mouse pointer. Valid values are: arrow,
+#: beam and hand.
+
+pointer_shape_when_dragging beam
+
+#: The default shape of the mouse pointer when dragging across text.
+#: Valid values are: arrow, beam and hand.
+
+#: Mouse actions {{{
+
+#: Mouse buttons can be mapped to perform arbitrary actions. The
+#: syntax is:
+
+#: .. code-block:: none
+
+#: mouse_map button-name event-type modes action
+
+#: Where button-name is one of left, middle, right, b1 ... b8 with
+#: added keyboard modifiers. For example: ctrl+shift+left refers to
+#: holding the Ctrl+Shift keys while clicking with the left mouse
+#: button. The value b1 ... b8 can be used to refer to up to eight
+#: buttons on a mouse.
+
+#: event-type is one of press, release, doublepress, triplepress,
+#: click, doubleclick. modes indicates whether the action is performed
+#: when the mouse is grabbed by the program running in the terminal,
+#: or not. The values are grabbed or ungrabbed or a comma separated
+#: combination of them. grabbed refers to when the program running in
+#: the terminal has requested mouse events. Note that the click and
+#: double click events have a delay of click_interval to disambiguate
+#: from double and triple presses.
+
+#: You can run kitty with the kitty --debug-input command line option
+#: to see mouse events. See the builtin actions below to get a sense
+#: of what is possible.
+
+#: If you want to unmap an action, map it to no_op. For example, to
+#: disable opening of URLs with a plain click::
+
+#: mouse_map left click ungrabbed no_op
+
+#: See all the mappable actions including mouse actions here
+#: .
+
+#: .. note::
+#: Once a selection is started, releasing the button that started it will
+#: automatically end it and no release event will be dispatched.
+
+clear_all_mouse_actions no
+
+#: Remove all mouse action definitions up to this point. Useful, for
+#: instance, to remove the default mouse actions.
+
+#: Click the link under the mouse or move the cursor
+
+mouse_map left click ungrabbed mouse_handle_click selection link prompt
+
+#:: First check for a selection and if one exists do nothing. Then
+#:: check for a link under the mouse cursor and if one exists, click
+#:: it. Finally check if the click happened at the current shell
+#:: prompt and if so, move the cursor to the click location. Note
+#:: that this requires shell integration
+#:: to work.
+
+#: Click the link under the mouse or move the cursor even when grabbed
+
+mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt
+
+#:: Same as above, except that the action is performed even when the
+#:: mouse is grabbed by the program running in the terminal.
+
+#: Click the link under the mouse cursor
+
+mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link
+
+#:: Variant with Ctrl+Shift is present because the simple click based
+#:: version has an unavoidable delay of click_interval, to
+#:: disambiguate clicks from double clicks.
+
+#: Discard press event for link click
+
+mouse_map ctrl+shift+left press grabbed discard_event
+
+#:: Prevent this press event from being sent to the program that has
+#:: grabbed the mouse, as the corresponding release event is used to
+#:: open a URL.
+
+#: Paste from the primary selection
+
+mouse_map middle release ungrabbed paste_from_selection
+
+#: Start selecting text
+
+mouse_map left press ungrabbed mouse_selection normal
+
+#: Start selecting text in a rectangle
+
+mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
+
+#: Select a word
+
+mouse_map left doublepress ungrabbed mouse_selection word
+
+#: Select a line
+
+mouse_map left triplepress ungrabbed mouse_selection line
+
+#: Select line from point
+
+mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point
+
+#:: Select from the clicked point to the end of the line.
+
+#: Extend the current selection
+
+mouse_map right press ungrabbed mouse_selection extend
+
+#:: If you want only the end of the selection to be moved instead of
+#:: the nearest boundary, use move-end instead of extend.
+
+#: Paste from the primary selection even when grabbed
+
+mouse_map shift+middle release ungrabbed,grabbed paste_selection
+mouse_map shift+middle press grabbed discard_event
+
+#: Start selecting text even when grabbed
+
+mouse_map shift+left press ungrabbed,grabbed mouse_selection normal
+
+#: Start selecting text in a rectangle even when grabbed
+
+mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle
+
+#: Select a word even when grabbed
+
+mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word
+
+#: Select a line even when grabbed
+
+mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line
+
+#: Select line from point even when grabbed
+
+mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point
+
+#:: Select from the clicked point to the end of the line even when
+#:: grabbed.
+
+#: Extend the current selection even when grabbed
+
+mouse_map shift+right press ungrabbed,grabbed mouse_selection extend
+
+#: Show clicked command output in pager
+
+mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output
+
+#:: Requires shell integration
+#:: to work.
+
+#: }}}
+
+#: }}}
+
+#: Performance tuning {{{
+
+repaint_delay 10
+
+#: Delay between screen updates (in milliseconds). Decreasing it,
+#: increases frames-per-second (FPS) at the cost of more CPU usage.
+#: The default value yields ~100 FPS which is more than sufficient for
+#: most uses. Note that to actually achieve 100 FPS, you have to
+#: either set sync_to_monitor to no or use a monitor with a high
+#: refresh rate. Also, to minimize latency when there is pending input
+#: to be processed, this option is ignored.
+
+input_delay 3
+
+#: Delay before input from the program running in the terminal is
+#: processed (in milliseconds). Note that decreasing it will increase
+#: responsiveness, but also increase CPU usage and might cause flicker
+#: in full screen programs that redraw the entire screen on each loop,
+#: because kitty is so fast that partial screen updates will be drawn.
+
+sync_to_monitor yes
+
+#: Sync screen updates to the refresh rate of the monitor. This
+#: prevents screen tearing
+#: when scrolling.
+#: However, it limits the rendering speed to the refresh rate of your
+#: monitor. With a very high speed mouse/high keyboard repeat rate,
+#: you may notice some slight input latency. If so, set this to no.
+
+#: }}}
+
+#: Terminal bell {{{
+
+enable_audio_bell yes
+
+#: The audio bell. Useful to disable it in environments that require
+#: silence.
+
+visual_bell_duration 0.0
+
+#: The visual bell duration (in seconds). Flash the screen when a bell
+#: occurs for the specified number of seconds. Set to zero to disable.
+
+visual_bell_color none
+
+#: The color used by visual bell. Set to none will fall back to
+#: selection background color. If you feel that the visual bell is too
+#: bright, you can set it to a darker color.
+
+window_alert_on_bell yes
+
+#: Request window attention on bell. Makes the dock icon bounce on
+#: macOS or the taskbar flash on linux.
+
+bell_on_tab "🔔 "
+
+#: Some text or a Unicode symbol to show on the tab if a window in the
+#: tab that does not have focus has a bell. If you want to use leading
+#: or trailing spaces, surround the text with quotes. See
+#: tab_title_template for how this is rendered.
+
+#: For backwards compatibility, values of yes, y and true are
+#: converted to the default bell symbol and no, n, false and none are
+#: converted to the empty string.
+
+command_on_bell none
+
+#: Program to run when a bell occurs. The environment variable
+#: KITTY_CHILD_CMDLINE can be used to get the program running in the
+#: window in which the bell occurred.
+
+bell_path none
+
+#: Path to a sound file to play as the bell sound. If set to none, the
+#: system default bell sound is used. Must be in a format supported by
+#: the operating systems sound API, such as WAV or OGA on Linux
+#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound)
+
+#: }}}
+
+#: Window layout {{{
+
+remember_window_size yes
+initial_window_width 640
+initial_window_height 400
+
+#: If enabled, the window size will be remembered so that new
+#: instances of kitty will have the same size as the previous
+#: instance. If disabled, the window will initially have size
+#: configured by initial_window_width/height, in pixels. You can use a
+#: suffix of "c" on the width/height values to have them interpreted
+#: as number of cells instead of pixels.
+
+enabled_layouts *
+
+#: The enabled window layouts. A comma separated list of layout names.
+#: The special value all means all layouts. The first listed layout
+#: will be used as the startup layout. Default configuration is all
+#: layouts in alphabetical order. For a list of available layouts, see
+#: the layouts .
+
+window_resize_step_cells 2
+window_resize_step_lines 2
+
+#: The step size (in units of cell width/cell height) to use when
+#: resizing kitty windows in a layout with the shortcut
+#: start_resizing_window. The cells value is used for horizontal
+#: resizing, and the lines value is used for vertical resizing.
+
+window_border_width 0.5pt
+
+#: The width of window borders. Can be either in pixels (px) or pts
+#: (pt). Values in pts will be rounded to the nearest number of pixels
+#: based on screen resolution. If not specified, the unit is assumed
+#: to be pts. Note that borders are displayed only when more than one
+#: window is visible. They are meant to separate multiple windows.
+
+draw_minimal_borders yes
+
+#: Draw only the minimum borders needed. This means that only the
+#: borders that separate the inactive window from a neighbor are
+#: drawn. Note that setting a non-zero window_margin_width overrides
+#: this and causes all borders to be drawn.
+
+window_margin_width 0
+
+#: The window margin (in pts) (blank area outside the border). A
+#: single value sets all four sides. Two values set the vertical and
+#: horizontal sides. Three values set top, horizontal and bottom. Four
+#: values set top, right, bottom and left.
+
+single_window_margin_width -1
+
+#: The window margin to use when only a single window is visible (in
+#: pts). Negative values will cause the value of window_margin_width
+#: to be used instead. A single value sets all four sides. Two values
+#: set the vertical and horizontal sides. Three values set top,
+#: horizontal and bottom. Four values set top, right, bottom and left.
+
+window_padding_width 10
+
+#: The window padding (in pts) (blank area between the text and the
+#: window border). A single value sets all four sides. Two values set
+#: the vertical and horizontal sides. Three values set top, horizontal
+#: and bottom. Four values set top, right, bottom and left.
+
+placement_strategy center
+
+#: When the window size is not an exact multiple of the cell size, the
+#: cell area of the terminal window will have some extra padding on
+#: the sides. You can control how that padding is distributed with
+#: this option. Using a value of center means the cell area will be
+#: placed centrally. A value of top-left means the padding will be
+#: only at the bottom and right edges.
+
+active_border_color #B7BDF8
+
+#: The color for the border of the active window. Set this to none to
+#: not draw borders around the active window.
+
+inactive_border_color #6E738D
+
+#: The color for the border of inactive windows.
+
+bell_border_color #EED49F
+
+#: The color for the border of inactive windows in which a bell has
+#: occurred.
+
+inactive_text_alpha 1.0
+
+#: Fade the text in inactive windows by the specified amount (a number
+#: between zero and one, with zero being fully faded).
+
+hide_window_decorations yes
+
+#: Hide the window decorations (title-bar and window borders) with
+#: yes. On macOS, titlebar-only can be used to only hide the titlebar.
+#: Whether this works and exactly what effect it has depends on the
+#: window manager/operating system. Note that the effects of changing
+#: this option when reloading config are undefined.
+
+window_logo_path none
+
+#: Path to a logo image. Must be in PNG format. Relative paths are
+#: interpreted relative to the kitty config directory. The logo is
+#: displayed in a corner of every kitty window. The position is
+#: controlled by window_logo_position. Individual windows can be
+#: configured to have different logos either using the launch action
+#: or the remote control facility.
+
+window_logo_position bottom-right
+
+#: Where to position the window logo in the window. The value can be
+#: one of: top-left, top, top-right, left, center, right, bottom-left,
+#: bottom, bottom-right.
+
+window_logo_alpha 0.5
+
+#: The amount the logo should be faded into the background. With zero
+#: being fully faded and one being fully opaque.
+
+resize_debounce_time 0.1
+
+#: The time to wait before redrawing the screen when a resize event is
+#: received (in seconds). On platforms such as macOS, where the
+#: operating system sends events corresponding to the start and end of
+#: a resize, this number is ignored.
+
+resize_draw_strategy static
+
+#: Choose how kitty draws a window while a resize is in progress. A
+#: value of static means draw the current window contents, mostly
+#: unchanged. A value of scale means draw the current window contents
+#: scaled. A value of blank means draw a blank window. A value of size
+#: means show the window size in cells.
+
+resize_in_steps no
+
+#: Resize the OS window in steps as large as the cells, instead of
+#: with the usual pixel accuracy. Combined with initial_window_width
+#: and initial_window_height in number of cells, this option can be
+#: used to keep the margins as small as possible when resizing the OS
+#: window. Note that this does not currently work on Wayland.
+
+visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+#: The list of characters for visual window selection. For example,
+#: for selecting a window to focus on with focus_visible_window. The
+#: value should be a series of unique numbers or alphabets, case
+#: insensitive, from the set [0-9A-Z]. Specify your preference as a
+#: string of characters.
+
+confirm_os_window_close 0
+
+#: Ask for confirmation when closing an OS window or a tab with at
+#: least this number of kitty windows in it by window manager (e.g.
+#: clicking the window close button or pressing the operating system
+#: shortcut to close windows) or by the close_tab action. A value of
+#: zero disables confirmation. This confirmation also applies to
+#: requests to quit the entire application (all OS windows, via the
+#: quit action). Negative values are converted to positive ones,
+#: however, with shell_integration enabled, using negative values
+#: means windows sitting at a shell prompt are not counted, only
+#: windows where some command is currently running. Note that if you
+#: want confirmation when closing individual windows, you can map the
+#: close_window_with_confirmation action.
+
+#: }}}
+
+#: Tab bar {{{
+
+tab_bar_edge bottom
+
+#: The edge to show the tab bar on, top or bottom.
+
+tab_bar_margin_width 0.0
+
+#: The margin to the left and right of the tab bar (in pts).
+
+tab_bar_margin_height 0.0 0.0
+
+#: The margin above and below the tab bar (in pts). The first number
+#: is the margin between the edge of the OS Window and the tab bar.
+#: The second number is the margin between the tab bar and the
+#: contents of the current tab.
+
+tab_bar_style fade
+
+#: The tab bar style, can be one of:
+
+#: fade
+#: Each tab's edges fade into the background color. (See also tab_fade)
+#: slant
+#: Tabs look like the tabs in a physical file.
+#: separator
+#: Tabs are separated by a configurable separator. (See also
+#: tab_separator)
+#: powerline
+#: Tabs are shown as a continuous line with "fancy" separators.
+#: (See also tab_powerline_style)
+#: custom
+#: A user-supplied Python function called draw_tab is loaded from the file
+#: tab_bar.py in the kitty config directory. For examples of how to
+#: write such a function, see the functions named draw_tab_with_* in
+#: kitty's source code: kitty/tab_bar.py. See also
+#: this discussion https://github.com/kovidgoyal/kitty/discussions/4447
+#: for examples from kitty users.
+#: hidden
+#: The tab bar is hidden. If you use this, you might want to create a mapping
+#: for the select_tab action which presents you with a list of tabs and
+#: allows for easy switching to a tab.
+
+tab_bar_align left
+
+#: The horizontal alignment of the tab bar, can be one of: left,
+#: center, right.
+
+tab_bar_min_tabs 2
+
+#: The minimum number of tabs that must exist before the tab bar is
+#: shown.
+
+tab_switch_strategy previous
+
+#: The algorithm to use when switching to a tab when the current tab
+#: is closed. The default of previous will switch to the last used
+#: tab. A value of left will switch to the tab to the left of the
+#: closed tab. A value of right will switch to the tab to the right of
+#: the closed tab. A value of last will switch to the right-most tab.
+
+tab_fade 0.25 0.5 0.75 1
+
+#: Control how each tab fades into the background when using fade for
+#: the tab_bar_style. Each number is an alpha (between zero and one)
+#: that controls how much the corresponding cell fades into the
+#: background, with zero being no fade and one being full fade. You
+#: can change the number of cells used by adding/removing entries to
+#: this list.
+
+tab_separator " ┇"
+
+#: The separator between tabs in the tab bar when using separator as
+#: the tab_bar_style.
+
+tab_powerline_style angled
+
+#: The powerline separator style between tabs in the tab bar when
+#: using powerline as the tab_bar_style, can be one of: angled,
+#: slanted, round.
+
+tab_activity_symbol none
+
+#: Some text or a Unicode symbol to show on the tab if a window in the
+#: tab that does not have focus has some activity. If you want to use
+#: leading or trailing spaces, surround the text with quotes. See
+#: tab_title_template for how this is rendered.
+
+tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"
+
+#: A template to render the tab title. The default just renders the
+#: title with optional symbols for bell and activity. If you wish to
+#: include the tab-index as well, use something like: {index}:{title}.
+#: Useful if you have shortcuts mapped for goto_tab N. If you prefer
+#: to see the index as a superscript, use {sup.index}. In addition you
+#: can use {layout_name} for the current layout name, {num_windows}
+#: for the number of windows in the tab and {num_window_groups} for
+#: the number of window groups (not counting overlay windows) in the
+#: tab. Note that formatting is done by Python's string formatting
+#: machinery, so you can use, for instance, {layout_name[:2].upper()}
+#: to show only the first two letters of the layout name, upper-cased.
+#: If you want to style the text, you can use styling directives, for
+#: example:
+#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`.
+#: Similarly, for bold and italic:
+#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`.
+#: Note that for backward compatibility, if {bell_symbol} or
+#: {activity_symbol} are not present in the template, they are
+#: prepended to it.
+
+active_tab_title_template none
+
+#: Template to use for active tabs. If not specified falls back to
+#: tab_title_template.
+active_tab_foreground #181926
+active_tab_background #C6A0F6
+inactive_tab_foreground #CAD3F5
+inactive_tab_background #1E2030
+tab_bar_background #181926
+active_tab_font_style bold-italic
+inactive_tab_font_style normal
+
+#: Tab bar colors and styles.
+
+#: Background color for the tab bar. Defaults to using the terminal
+#: background color.
+
+tab_bar_margin_color none
+
+#: Color for the tab bar margin area. Defaults to using the terminal
+#: background color.
+
+#: }}}
+
+#: Color scheme {{{
+
+foreground #CAD3F5
+background #24273A
+
+#: The foreground and background colors.
+
+background_opacity 0.85
+
+#: The opacity of the background. A number between zero and one, where
+#: one is opaque and zero is fully transparent. This will only work if
+#: supported by the OS (for instance, when using a compositor under
+#: X11). Note that it only sets the background color's opacity in
+#: cells that have the same background color as the default terminal
+#: background, so that things like the status bar in vim, powerline
+#: prompts, etc. still look good. But it means that if you use a color
+#: theme with a background color in your editor, it will not be
+#: rendered as transparent. Instead you should change the default
+#: background color in your kitty config and not use a background
+#: color in the editor color scheme. Or use the escape codes to set
+#: the terminals default colors in a shell script to launch your
+#: editor. Be aware that using a value less than 1.0 is a (possibly
+#: significant) performance hit. If you want to dynamically change
+#: transparency of windows, set dynamic_background_opacity to yes
+#: (this is off by default as it has a performance cost). Changing
+#: this option when reloading the config will only work if
+#: dynamic_background_opacity was enabled in the original config.
+
+background_image none
+
+#: Path to a background image. Must be in PNG format.
+
+background_image_layout tiled
+
+#: Whether to tile, scale or clamp the background image. The value can
+#: be one of tiled, mirror-tiled, scaled, clamped.
+
+background_image_linear no
+
+#: When background image is scaled, whether linear interpolation
+#: should be used.
+
+dynamic_background_opacity no
+
+#: Allow changing of the background_opacity dynamically, using either
+#: keyboard shortcuts (increase_background_opacity and
+#: decrease_background_opacity) or the remote control facility.
+#: Changing this option by reloading the config is not supported.
+
+background_tint 0.0
+
+#: How much to tint the background image by the background color. The
+#: tint is applied only under the text area, not margin/borders. This
+#: option makes it easier to read the text. Tinting is done using the
+#: current background color for each window. This option applies only
+#: if background_opacity is set and transparent windows are supported
+#: or background_image is set.
+
+dim_opacity 0.75
+
+#: How much to dim text that has the DIM/FAINT attribute set. One
+#: means no dimming and zero means fully dimmed (i.e. invisible).
+
+selection_foreground #24273A
+selection_background #F4DBD6
+
+#: The foreground and background colors for text selected with the
+#: mouse. Setting both of these to none will cause a "reverse video"
+#: effect for selections, where the selection will be the cell text
+#: color and the text will become the cell background color. Setting
+#: only selection_foreground to none will cause the foreground color
+#: to be used unchanged. Note that these colors can be overridden by
+#: the program running in the terminal.
+
+#: The color table {{{
+
+#: The 256 terminal colors. There are 8 basic colors, each color has a
+#: dull and bright version, for the first 16 colors. You can set the
+#: remaining 240 colors as color16 to color255.
+
+# black
+color0 #494D64
+color8 #5B6078
+
+# red
+color1 #ED8796
+color9 #ED8796
+
+# green
+color2 #A6DA95
+color10 #A6DA95
+
+# yellow
+color3 #EED49F
+color11 #EED49F
+
+# blue
+color4 #8AADF4
+color12 #8AADF4
+
+# magenta
+color5 #F5BDE6
+color13 #F5BDE6
+
+# cyan
+color6 #8BD5CA
+color14 #8BD5CA
+
+# white
+color7 #B8C0E0
+color15 #A5ADCB
+
+mark1_foreground #24273A
+mark1_background #B7BDF8
+mark2_foreground #24273A
+mark2_background #C6A0F6
+mark3_foreground #24273A
+mark3_background #7DC4E4
+
+#: Color for marks of type 3 (violet)
+
+#: }}}
+
+#: }}}
+
+#: Advanced {{{
+
+shell fish
+
+#: The shell program to execute. The default value of . means to use
+#: whatever shell is set as the default shell for the current user.
+#: Note that on macOS if you change this, you might need to add
+#: --login and --interactive to ensure that the shell starts in
+#: interactive mode and reads its startup rc files.
+
+editor vscodium
+
+#: The terminal based text editor (such as vim or nano) to use when
+#: editing the kitty config file or similar tasks.
+
+#: The default value of . means to use the environment variables
+#: VISUAL and EDITOR in that order. If these variables aren't set,
+#: kitty will run your shell ($SHELL -l -i -c env) to see if your
+#: shell startup rc files set VISUAL or EDITOR. If that doesn't work,
+#: kitty will cycle through various known editors (vim, emacs, etc.)
+#: and take the first one that exists on your system.
+
+close_on_child_death no
+
+#: Close the window when the child process (shell) exits. With the
+#: default value no, the terminal will remain open when the child
+#: exits as long as there are still processes outputting to the
+#: terminal (for example disowned or backgrounded processes). When
+#: enabled with yes, the window will close as soon as the child
+#: process exits. Note that setting it to yes means that any
+#: background processes still using the terminal can fail silently
+#: because their stdout/stderr/stdin no longer work.
+
+allow_remote_control no
+
+#: Allow other programs to control kitty. If you turn this on, other
+#: programs can control all aspects of kitty, including sending text
+#: to kitty windows, opening new windows, closing windows, reading the
+#: content of windows, etc. Note that this even works over SSH
+#: connections. You can choose to either allow any program running
+#: within kitty to control it with yes, or only allow programs that
+#: connect to the socket (specified with the listen_on config option
+#: or kitty --listen-on command line option) with the value socket-
+#: only. The latter is useful if you want to prevent programs running
+#: on a remote computer over SSH from controlling kitty. Reloading the
+#: config will not affect this option.
+
+listen_on none
+
+#: Listen to the specified UNIX socket for remote control connections.
+#: Note that this will apply to all kitty instances. It can be
+#: overridden by the kitty --listen-on command line option, which
+#: supports listening on TCP socket. This option accepts only UNIX
+#: sockets, such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux).
+#: Environment variables are expanded and relative paths are resolved
+#: with respect to the temporary directory. If {kitty_pid} is present,
+#: then it is replaced by the PID of the kitty process, otherwise the
+#: PID of the kitty process is appended to the value, with a hyphen.
+#: This option is ignored unless you also set allow_remote_control to
+#: enable remote control. See the help for kitty --listen-on for more
+#: details. Changing this option by reloading the config is not
+#: supported.
+
+# env
+
+#: Specify the environment variables to be set in all child processes.
+#: Using the name with an equal sign (e.g. env VAR=) will set it to
+#: the empty string. Specifying only the name (e.g. env VAR) will
+#: remove the variable from the child process' environment. Note that
+#: environment variables are expanded recursively, for example::
+
+#: env VAR1=a
+#: env VAR2=${HOME}/${VAR1}/b
+
+#: The value of VAR2 will be /a/b.
+
+# watcher
+
+#: Path to python file which will be loaded for watchers
+#: . Can be
+#: specified more than once to load multiple watchers. The watchers
+#: will be added to every kitty window. Relative paths are resolved
+#: relative to the kitty config directory. Note that reloading the
+#: config will only affect windows created after the reload.
+
+# exe_search_path
+
+#: Control where kitty finds the programs to run. The default search
+#: order is: First search the system wide PATH, then ~/.local/bin and
+#: ~/bin. If still not found, the PATH defined in the login shell
+#: after sourcing all its startup files is tried. Finally, if present,
+#: the PATH specified by the env option is tried.
+
+#: This option allows you to prepend, append, or remove paths from
+#: this search order. It can be specified multiple times for multiple
+#: paths. A simple path will be prepended to the search order. A path
+#: that starts with the + sign will be append to the search order,
+#: after ~/bin above. A path that starts with the - sign will be
+#: removed from the entire search order. For example::
+
+#: exe_search_path /some/prepended/path
+#: exe_search_path +/some/appended/path
+#: exe_search_path -/some/excluded/path
+
+update_check_interval 24
+
+#: The interval to periodically check if an update to kitty is
+#: available (in hours). If an update is found, a system notification
+#: is displayed informing you of the available update. The default is
+#: to check every 24 hours, set to zero to disable. Update checking is
+#: only done by the official binary builds. Distro packages or source
+#: builds do not do update checking. Changing this option by reloading
+#: the config is not supported.
+
+startup_session none
+
+#: Path to a session file to use for all kitty instances. Can be
+#: overridden by using the kitty --session command line option for
+#: individual instances. See sessions
+#: in the
+#: kitty documentation for details. Note that relative paths are
+#: interpreted with respect to the kitty config directory. Environment
+#: variables in the path are expanded. Changing this option by
+#: reloading the config is not supported.
+
+clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask
+
+#: Allow programs running in kitty to read and write from the
+#: clipboard. You can control exactly which actions are allowed. The
+#: possible actions are: write-clipboard, read-clipboard, write-
+#: primary, read-primary, read-clipboard-ask, read-primary-ask. The
+#: default is to allow writing to the clipboard and primary selection
+#: and to ask for permission when a program tries to read from the
+#: clipboard. Note that disabling the read confirmation is a security
+#: risk as it means that any program, even the ones running on a
+#: remote server via SSH can read your clipboard. See also
+#: clipboard_max_size.
+
+clipboard_max_size 64
+
+#: The maximum size (in MB) of data from programs running in kitty
+#: that will be stored for writing to the system clipboard. A value of
+#: zero means no size limit is applied. See also clipboard_control.
+
+# file_transfer_confirmation_bypass
+
+#: The password that can be supplied to the file transfer kitten
+#: to skip the
+#: transfer confirmation prompt. This should only be used when
+#: initiating transfers from trusted computers, over trusted networks
+#: or encrypted transports, as it allows any programs running on the
+#: remote machine to read/write to the local filesystem, without
+#: permission.
+
+allow_hyperlinks yes
+
+#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8
+#: escape sequences are ignored. Otherwise they become clickable
+#: links, that you can click with the mouse or by using the hints
+#: kitten . The
+#: special value of ask means that kitty will ask before opening the
+#: link when clicked.
+
+shell_integration enabled
+
+#: Enable shell integration on supported shells. This enables features
+#: such as jumping to previous prompts, browsing the output of the
+#: previous command in a pager, etc. on supported shells. Set to
+#: disabled to turn off shell integration, completely. It is also
+#: possible to disable individual features, set to a space separated
+#: list of these values: no-rc, no-cursor, no-title, no-cwd, no-
+#: prompt-mark, no-complete. See Shell integration
+#: for details.
+
+allow_cloning ask
+
+#: Control whether programs running in the terminal can request new
+#: windows to be created. The canonical example is clone-in-kitty
+#: .
+#: By default, kitty will ask for permission for each clone request.
+#: Allowing cloning unconditionally gives programs running in the
+#: terminal (including over SSH) permission to execute arbitrary code,
+#: as the user who is running the terminal, on the computer that the
+#: terminal is running on.
+
+clone_source_strategies venv,conda,env_var,path
+
+#: Control what shell code is sourced when running clone-in-kitty in
+#: the newly cloned window. The supported strategies are:
+
+#: venv
+#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the
+#: Python stdlib venv module and allows cloning venvs automatically.
+#: conda
+#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual
+#: environments created by conda.
+#: env_var
+#: Execute the contents of the environment variable
+#: KITTY_CLONE_SOURCE_CODE with eval.
+#: path
+#: Source the file pointed to by the environment variable
+#: KITTY_CLONE_SOURCE_PATH.
+
+#: This option must be a comma separated list of the above values.
+#: This only source the first valid one in the above order.
+
+term xterm-kitty
+
+#: The value of the TERM environment variable to set. Changing this
+#: can break many terminal programs, only change it if you know what
+#: you are doing, not because you read some advice on "Stack Overflow"
+#: to change it. The TERM variable is used by various programs to get
+#: information about the capabilities and behavior of the terminal. If
+#: you change it, depending on what programs you run, and how
+#: different the terminal you are changing it to is, various things
+#: from key-presses, to colors, to various advanced features may not
+#: work. Changing this option by reloading the config will only affect
+#: newly created windows.
+
+#: }}}
+
+#: OS specific tweaks {{{
+
+wayland_titlebar_color system
+
+#: The color of the kitty window's titlebar on Wayland systems with
+#: client side window decorations such as GNOME. A value of system
+#: means to use the default system color, a value of background means
+#: to use the background color of the currently active window and
+#: finally you can use an arbitrary color, such as #12af59 or red.
+
+macos_titlebar_color system
+
+#: The color of the kitty window's titlebar on macOS. A value of
+#: system means to use the default system color, light or dark can
+#: also be used to set it explicitly. A value of background means to
+#: use the background color of the currently active window and finally
+#: you can use an arbitrary color, such as #12af59 or red. WARNING:
+#: This option works by using a hack when arbitrary color (or
+#: background) is configured, as there is no proper Cocoa API for it.
+#: It sets the background color of the entire window and makes the
+#: titlebar transparent. As such it is incompatible with
+#: background_opacity. If you want to use both, you are probably
+#: better off just hiding the titlebar with hide_window_decorations.
+
+macos_option_as_alt no
+
+#: Use the Option key as an Alt key on macOS. With this set to no,
+#: kitty will use the macOS native Option+Key to enter Unicode
+#: character behavior. This will break any Alt+Key keyboard shortcuts
+#: in your terminal programs, but you can use the macOS Unicode input
+#: technique. You can use the values: left, right or both to use only
+#: the left, right or both Option keys as Alt, instead. Note that
+#: kitty itself always treats Option the same as Alt. This means you
+#: cannot use this option to configure different kitty shortcuts for
+#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using
+#: Option/Alt+Key will take priority, so that any such key presses
+#: will not be passed to terminal programs running inside kitty.
+#: Changing this option by reloading the config is not supported.
+
+macos_hide_from_tasks no
+
+#: Hide the kitty window from running tasks on macOS (⌘+Tab and the
+#: Dock). Changing this option by reloading the config is not
+#: supported.
+
+macos_quit_when_last_window_closed no
+
+#: Have kitty quit when all the top-level windows are closed on macOS.
+#: By default, kitty will stay running, even with no open windows, as
+#: is the expected behavior on macOS.
+
+macos_window_resizable yes
+
+#: Disable this if you want kitty top-level OS windows to not be
+#: resizable on macOS. Changing this option by reloading the config
+#: will only affect newly created OS windows.
+
+macos_thicken_font 0
+
+#: Draw an extra border around the font with the given width, to
+#: increase legibility at small font sizes on macOS. For example, a
+#: value of 0.75 will result in rendering that looks similar to sub-
+#: pixel antialiasing at common font sizes.
+
+macos_traditional_fullscreen no
+
+#: Use the macOS traditional full-screen transition, that is faster,
+#: but less pretty.
+
+macos_show_window_title_in all
+
+#: Control where the window title is displayed on macOS. A value of
+#: window will show the title of the currently active window at the
+#: top of the macOS window. A value of menubar will show the title of
+#: the currently active window in the macOS global menu bar, making
+#: use of otherwise wasted space. A value of all will show the title
+#: in both places, and none hides the title. See
+#: macos_menubar_title_max_length for how to control the length of the
+#: title in the menu bar.
+
+macos_menubar_title_max_length 0
+
+#: The maximum number of characters from the window title to show in
+#: the macOS global menu bar. Values less than one means that there is
+#: no maximum limit.
+
+macos_custom_beam_cursor no
+
+#: Use a custom mouse cursor for macOS that is easier to see on both
+#: light and dark backgrounds. Nowadays, the default macOS cursor
+#: already comes with a white border. WARNING: this might make your
+#: mouse cursor invisible on dual GPU machines. Changing this option
+#: by reloading the config is not supported.
+
+macos_colorspace srgb
+
+#: The colorspace in which to interpret terminal colors. The default
+#: of srgb will cause colors to match those seen in web browsers. The
+#: value of default will use whatever the native colorspace of the
+#: display is. The value of displayp3 will use Apple's special
+#: snowflake display P3 color space, which will result in over
+#: saturated (brighter) colors with some color shift. Reloading
+#: configuration will change this value only for newly created OS
+#: windows.
+
+linux_display_server auto
+
+#: Choose between Wayland and X11 backends. By default, an appropriate
+#: backend based on the system state is chosen automatically. Set it
+#: to x11 or wayland to force the choice. Changing this option by
+#: reloading the config is not supported.
+
+#: }}}
+
+#: Keyboard shortcuts {{{
+
+#: Keys are identified simply by their lowercase Unicode characters.
+#: For example: a for the A key, [ for the left square bracket key,
+#: etc. For functional keys, such as Enter or Escape, the names are
+#: present at Functional key definitions
+#: . For modifier keys, the names are ctrl (control, ⌃),
+#: shift (⇧), alt (opt, option, ⌥), super (cmd, command, ⌘). See also:
+#: GLFW mods
+
+#: On Linux you can also use XKB key names to bind keys that are not
+#: supported by GLFW. See XKB keys
+#: for a list of key names. The name to use is the part
+#: after the XKB_KEY_ prefix. Note that you can only use an XKB key
+#: name for keys that are not known as GLFW keys.
+
+#: Finally, you can use raw system key codes to map keys, again only
+#: for keys that are not known as GLFW keys. To see the system key
+#: code for a key, start kitty with the kitty --debug-input option,
+#: kitty will output some debug text for every key event. In that text
+#: look for native_code, the value of that becomes the key name in the
+#: shortcut. For example:
+
+#: .. code-block:: none
+
+#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a'
+
+#: Here, the key name for the A key is 0x61 and you can use it with::
+
+#: map ctrl+0x61 something
+
+#: to map Ctrl+A to something.
+
+#: You can use the special action no_op to unmap a keyboard shortcut
+#: that is assigned in the default configuration::
+
+#: map kitty_mod+space no_op
+
+#: If you would like kitty to completely ignore a key event, not even
+#: sending it to the program running in the terminal, map it to
+#: discard_event::
+
+#: map kitty_mod+f1 discard_event
+
+#: You can combine multiple actions to be triggered by a single
+#: shortcut with combine action, using the syntax below::
+
+#: map key combine action1 action2 action3 ...
+
+#: For example::
+
+#: map kitty_mod+e combine : new_window : next_layout
+
+#: This will create a new window and switch to the next available
+#: layout.
+
+#: You can use multi-key shortcuts with the syntax shown below::
+
+#: map key1>key2>key3 action
+
+#: For example::
+
+#: map ctrl+f>2 set_font_size 20
+
+#: The full list of actions that can be mapped to key presses is
+#: available here .
+
+kitty_mod ctrl+shift
+
+#: Special modifier key alias for default shortcuts. You can change
+#: the value of this option to alter all default shortcuts that use
+#: kitty_mod.
+
+clear_all_shortcuts no
+
+#: Remove all shortcut definitions up to this point. Useful, for
+#: instance, to remove the default shortcuts.
+
+# action_alias
+
+#: E.g. action_alias launch_tab launch --type=tab --cwd=current
+
+#: Define action aliases to avoid repeating the same options in
+#: multiple mappings. Aliases can be defined for any action and will
+#: be expanded recursively. For example, the above alias allows you to
+#: create mappings to launch a new tab in the current working
+#: directory without duplication::
+
+#: map f1 launch_tab vim
+#: map f2 launch_tab emacs
+
+#: Similarly, to alias kitten invocation::
+
+#: action_alias hints kitten hints --hints-offset=0
+
+# kitten_alias
+
+#: E.g. kitten_alias hints hints --hints-offset=0
+
+#: Like action_alias above, but specifically for kittens. Generally,
+#: prefer to use action_alias. This option is a legacy version,
+#: present for backwards compatibility. It causes all invocations of
+#: the aliased kitten to be substituted. So the example above will
+#: cause all invocations of the hints kitten to have the --hints-
+#: offset=0 option applied.
+
+#: Clipboard {{{
+
+#: Copy to clipboard
+
+map kitty_mod+c copy_to_clipboard
+map cmd+c copy_to_clipboard
+
+#:: There is also a copy_or_interrupt action that can be optionally
+#:: mapped to Ctrl+C. It will copy only if there is a selection and
+#:: send an interrupt otherwise. Similarly,
+#:: copy_and_clear_or_interrupt will copy and clear the selection or
+#:: send an interrupt if there is no selection.
+
+#: Paste from clipboard
+
+map kitty_mod+v paste_from_clipboard
+map cmd+v paste_from_clipboard
+
+#: Paste from selection
+
+map kitty_mod+s paste_from_selection
+map shift+insert paste_from_selection
+
+#: Pass selection to program
+
+map kitty_mod+o pass_selection_to_program
+
+#:: You can also pass the contents of the current selection to any
+#:: program with pass_selection_to_program. By default, the system's
+#:: open program is used, but you can specify your own, the selection
+#:: will be passed as a command line argument to the program. For
+#:: example::
+
+#:: map kitty_mod+o pass_selection_to_program firefox
+
+#:: You can pass the current selection to a terminal program running
+#:: in a new kitty window, by using the @selection placeholder::
+
+#:: map kitty_mod+y new_window less @selection
+
+#: }}}
+
+#: Scrolling {{{
+
+#: Scroll line up
+
+map kitty_mod+up scroll_line_up
+map kitty_mod+k scroll_line_up
+map opt+cmd+page_up scroll_line_up
+map cmd+up scroll_line_up
+
+#: Scroll line down
+
+map kitty_mod+down scroll_line_down
+map kitty_mod+j scroll_line_down
+map opt+cmd+page_down scroll_line_down
+map cmd+down scroll_line_down
+
+#: Scroll page up
+
+map kitty_mod+page_up scroll_page_up
+map cmd+page_up scroll_page_up
+
+#: Scroll page down
+
+map kitty_mod+page_down scroll_page_down
+map cmd+page_down scroll_page_down
+
+#: Scroll to top
+
+map kitty_mod+home scroll_home
+map cmd+home scroll_home
+
+#: Scroll to bottom
+
+map kitty_mod+end scroll_end
+map cmd+end scroll_end
+
+#: Scroll to previous shell prompt
+
+map kitty_mod+z scroll_to_prompt -1
+
+#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last
+#:: jumped to or the last clicked position. Requires shell
+#:: integration
+#:: to work.
+
+#: Scroll to next shell prompt
+
+map kitty_mod+x scroll_to_prompt 1
+
+#: Browse scrollback buffer in pager
+
+map kitty_mod+h show_scrollback
+
+#:: You can pipe the contents of the current screen and history
+#:: buffer as STDIN to an arbitrary program using launch --stdin-
+#:: source. For example, the following opens the scrollback buffer in
+#:: less in an overlay window::
+
+#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
+
+#:: For more details on piping screen and buffer contents to external
+#:: programs, see launch .
+
+#: Browse output of the last shell command in pager
+
+map kitty_mod+g show_last_command_output
+
+#:: You can also define additional shortcuts to get the command
+#:: output. For example, to get the first command output on screen::
+
+#:: map f1 show_first_command_output_on_screen
+
+#:: To get the command output that was last accessed by a keyboard
+#:: action or mouse action::
+
+#:: map f1 show_last_visited_command_output
+
+#:: You can pipe the output of the last command run in the shell
+#:: using the launch action. For example, the following opens the
+#:: output in less in an overlay window::
+
+#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R
+
+#:: To get the output of the first command on the screen, use
+#:: @first_cmd_output_on_screen. To get the output of the last jumped
+#:: to command, use @last_visited_cmd_output.
+
+#:: Requires shell integration
+#:: to work.
+
+#: }}}
+
+#: Window management {{{
+
+#: New window
+
+map kitty_mod+enter new_window
+map cmd+enter new_window
+
+#:: You can open a new kitty window running an arbitrary program, for
+#:: example::
+
+#:: map kitty_mod+y launch mutt
+
+#:: You can open a new window with the current working directory set
+#:: to the working directory of the current window using::
+
+#:: map ctrl+alt+enter launch --cwd=current
+
+#:: You can open a new window that is allowed to control kitty via
+#:: the kitty remote control facility with launch --allow-remote-
+#:: control. Any programs running in that window will be allowed to
+#:: control kitty. For example::
+
+#:: map ctrl+enter launch --allow-remote-control some_program
+
+#:: You can open a new window next to the currently active window or
+#:: as the first window, with::
+
+#:: map ctrl+n launch --location=neighbor
+#:: map ctrl+f launch --location=first
+
+#:: For more details, see launch
+#:: .
+
+#: New OS window
+
+map kitty_mod+n new_os_window
+map cmd+n new_os_window
+
+#:: Works like new_window above, except that it opens a top-level OS
+#:: window. In particular you can use new_os_window_with_cwd to open
+#:: a window with the current working directory.
+
+#: Close window
+
+map kitty_mod+w close_window
+map shift+cmd+d close_window
+
+#: Next window
+
+map kitty_mod+] next_window
+
+#: Previous window
+
+map kitty_mod+[ previous_window
+
+#: Move window forward
+
+map kitty_mod+f move_window_forward
+
+#: Move window backward
+
+map kitty_mod+b move_window_backward
+
+#: Move window to top
+
+map kitty_mod+` move_window_to_top
+
+#: Start resizing window
+
+map kitty_mod+r start_resizing_window
+map cmd+r start_resizing_window
+
+#: First window
+
+map kitty_mod+1 first_window
+map cmd+1 first_window
+
+#: Second window
+
+map kitty_mod+2 second_window
+map cmd+2 second_window
+
+#: Third window
+
+map kitty_mod+3 third_window
+map cmd+3 third_window
+
+#: Fourth window
+
+map kitty_mod+4 fourth_window
+map cmd+4 fourth_window
+
+#: Fifth window
+
+map kitty_mod+5 fifth_window
+map cmd+5 fifth_window
+
+#: Sixth window
+
+map kitty_mod+6 sixth_window
+map cmd+6 sixth_window
+
+#: Seventh window
+
+map kitty_mod+7 seventh_window
+map cmd+7 seventh_window
+
+#: Eight window
+
+map kitty_mod+8 eighth_window
+map cmd+8 eighth_window
+
+#: Ninth window
+
+map kitty_mod+9 ninth_window
+map cmd+9 ninth_window
+
+#: Tenth window
+
+map kitty_mod+0 tenth_window
+
+#: Visually select and focus window
+
+map kitty_mod+f7 focus_visible_window
+
+#:: Display overlay numbers and alphabets on the window, and switch
+#:: the focus to the window when you press the key. When there are
+#:: only two windows, the focus will be switched directly without
+#:: displaying the overlay. You can change the overlay characters and
+#:: their order with option visual_window_select_characters.
+
+#: Visually swap window with another
+
+map kitty_mod+f8 swap_with_window
+
+#:: Works like focus_visible_window above, but swaps the window.
+
+#: }}}
+
+#: Tab management {{{
+
+#: Next tab
+
+map kitty_mod+right next_tab
+map shift+cmd+] next_tab
+map ctrl+tab next_tab
+
+#: Previous tab
+
+map kitty_mod+left previous_tab
+map shift+cmd+[ previous_tab
+map ctrl+shift+tab previous_tab
+
+#: New tab
+
+map kitty_mod+t new_tab
+map cmd+t new_tab
+
+#: Close tab
+
+map kitty_mod+q close_tab
+map cmd+w close_tab
+
+#: Close OS window
+
+map shift+cmd+w close_os_window
+
+#: Move tab forward
+
+map kitty_mod+. move_tab_forward
+
+#: Move tab backward
+
+map kitty_mod+, move_tab_backward
+
+#: Set tab title
+
+map kitty_mod+alt+t set_tab_title
+map shift+cmd+i set_tab_title
+
+
+#: You can also create shortcuts to go to specific tabs, with 1 being
+#: the first tab, 2 the second tab and -1 being the previously active
+#: tab, and any number larger than the last tab being the last tab::
+
+#: map ctrl+alt+1 goto_tab 1
+#: map ctrl+alt+2 goto_tab 2
+
+#: Just as with new_window above, you can also pass the name of
+#: arbitrary commands to run when using new_tab and new_tab_with_cwd.
+#: Finally, if you want the new tab to open next to the current tab
+#: rather than at the end of the tabs list, use::
+
+#: map ctrl+t new_tab !neighbor [optional cmd to run]
+#: }}}
+
+#: Layout management {{{
+
+#: Next layout
+
+map kitty_mod+l next_layout
+
+
+#: You can also create shortcuts to switch to specific layouts::
+
+#: map ctrl+alt+t goto_layout tall
+#: map ctrl+alt+s goto_layout stack
+
+#: Similarly, to switch back to the previous layout::
+
+#: map ctrl+alt+p last_used_layout
+
+#: There is also a toggle_layout action that switches to the named
+#: layout or back to the previous layout if in the named layout.
+#: Useful to temporarily "zoom" the active window by switching to the
+#: stack layout::
+
+#: map ctrl+alt+z toggle_layout stack
+#: }}}
+
+#: Font sizes {{{
+
+#: You can change the font size for all top-level kitty OS windows at
+#: a time or only the current one.
+
+#: Increase font size
+
+map kitty_mod+equal change_font_size all +2.0
+map kitty_mod+plus change_font_size all +2.0
+map kitty_mod+kp_add change_font_size all +2.0
+map cmd+plus change_font_size all +2.0
+map cmd+equal change_font_size all +2.0
+map shift+cmd+equal change_font_size all +2.0
+
+#: Decrease font size
+
+map kitty_mod+minus change_font_size all -2.0
+map kitty_mod+kp_subtract change_font_size all -2.0
+map cmd+minus change_font_size all -2.0
+map shift+cmd+minus change_font_size all -2.0
+
+#: Reset font size
+
+map kitty_mod+backspace change_font_size all 0
+map cmd+0 change_font_size all 0
+
+
+#: To setup shortcuts for specific font sizes::
+
+#: map kitty_mod+f6 change_font_size all 10.0
+
+#: To setup shortcuts to change only the current OS window's font
+#: size::
+
+#: map kitty_mod+f6 change_font_size current 10.0
+#: }}}
+
+#: Select and act on visible text {{{
+
+#: Use the hints kitten to select text and either pass it to an
+#: external program or insert it into the terminal or copy it to the
+#: clipboard.
+
+#: Open URL
+
+map kitty_mod+e open_url_with_hints
+
+#:: Open a currently visible URL using the keyboard. The program used
+#:: to open the URL is specified in open_url_with.
+
+#: Insert selected path
+
+map kitty_mod+p>f kitten hints --type path --program -
+
+#:: Select a path/filename and insert it into the terminal. Useful,
+#:: for instance to run git commands on a filename output from a
+#:: previous git command.
+
+#: Open selected path
+
+map kitty_mod+p>shift+f kitten hints --type path
+
+#:: Select a path/filename and open it with the default open program.
+
+#: Insert selected line
+
+map kitty_mod+p>l kitten hints --type line --program -
+
+#:: Select a line of text and insert it into the terminal. Useful for
+#:: the output of things like: `ls -1`.
+
+#: Insert selected word
+
+map kitty_mod+p>w kitten hints --type word --program -
+
+#:: Select words and insert into terminal.
+
+#: Insert selected hash
+
+map kitty_mod+p>h kitten hints --type hash --program -
+
+#:: Select something that looks like a hash and insert it into the
+#:: terminal. Useful with git, which uses SHA1 hashes to identify
+#:: commits.
+
+#: Open the selected file at the selected line
+
+map kitty_mod+p>n kitten hints --type linenum
+
+#:: Select something that looks like filename:linenum and open it in
+#:: vim at the specified line number.
+
+#: Open the selected hyperlink
+
+map kitty_mod+p>y kitten hints --type hyperlink
+
+#:: Select a hyperlink (i.e. a URL that has been marked as such by
+#:: the terminal program, for example, by `ls --hyperlink=auto`).
+
+
+#: The hints kitten has many more modes of operation that you can map
+#: to different shortcuts. For a full description see hints kitten
+#: .
+#: }}}
+
+#: Miscellaneous {{{
+
+#: Toggle fullscreen
+
+map kitty_mod+f11 toggle_fullscreen
+map ctrl+cmd+f toggle_fullscreen
+
+#: Toggle maximized
+
+map kitty_mod+f10 toggle_maximized
+
+#: Toggle macOS secure keyboard entry
+
+map opt+cmd+s toggle_macos_secure_keyboard_entry
+
+#: Unicode input
+
+map kitty_mod+u kitten unicode_input
+map ctrl+cmd+space kitten unicode_input
+
+#: Edit config file
+
+map kitty_mod+f2 edit_config_file
+map cmd+, edit_config_file
+
+#: Open the kitty command shell
+
+map kitty_mod+escape kitty_shell window
+
+#:: Open the kitty shell in a new window / tab / overlay / os_window
+#:: to control kitty using commands.
+
+#: Increase background opacity
+
+map kitty_mod+a>m set_background_opacity +0.1
+
+#: Decrease background opacity
+
+map kitty_mod+a>l set_background_opacity -0.1
+
+#: Make background fully opaque
+
+map kitty_mod+a>1 set_background_opacity 1
+
+#: Reset background opacity
+
+map kitty_mod+a>d set_background_opacity default
+
+#: Reset the terminal
+
+map kitty_mod+delete clear_terminal reset active
+map opt+cmd+r clear_terminal reset active
+
+#:: You can create shortcuts to clear/reset the terminal. For
+#:: example::
+
+#:: # Reset the terminal
+#:: map f1 clear_terminal reset active
+#:: # Clear the terminal screen by erasing all contents
+#:: map f1 clear_terminal clear active
+#:: # Clear the terminal scrollback by erasing it
+#:: map f1 clear_terminal scrollback active
+#:: # Scroll the contents of the screen into the scrollback
+#:: map f1 clear_terminal scroll active
+#:: # Clear everything up to the line with the cursor
+#:: map f1 clear_terminal to_cursor active
+
+#:: If you want to operate on all kitty windows instead of just the
+#:: current one, use all instead of active.
+
+#:: It is also possible to remap Ctrl+L to both scroll the current
+#:: screen contents into the scrollback buffer and clear the screen,
+#:: instead of just clearing the screen, for example, for ZSH add the
+#:: following to ~/.zshrc:
+
+#:: .. code-block:: zsh
+
+#:: scroll-and-clear-screen() {
+#:: printf '\n%.0s' {1..$LINES}
+#:: zle clear-screen
+#:: }
+#:: zle -N scroll-and-clear-screen
+#:: bindkey '^l' scroll-and-clear-screen
+
+#: Clear up to cursor line
+
+map cmd+k clear_terminal to_cursor active
+
+#: Reload kitty.conf
+
+map kitty_mod+f5 load_config_file
+map ctrl+cmd+, load_config_file
+
+#:: Reload kitty.conf, applying any changes since the last time it
+#:: was loaded. Note that a handful of options cannot be dynamically
+#:: changed and require a full restart of kitty. Particularly, when
+#:: changing shortcuts for actions located on the macOS global menu
+#:: bar, a full restart is needed. You can also map a keybinding to
+#:: load a different config file, for example::
+
+#:: map f5 load_config /path/to/alternative/kitty.conf
+
+#:: Note that all options from the original kitty.conf are discarded,
+#:: in other words the new configuration *replace* the old ones.
+
+#: Debug kitty configuration
+
+map kitty_mod+f6 debug_config
+map opt+cmd+, debug_config
+
+#:: Show details about exactly what configuration kitty is running
+#:: with and its host environment. Useful for debugging issues.
+
+#: Send arbitrary text on key presses
+
+#:: E.g. map ctrl+shift+alt+h send_text all Hello World
+
+#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the
+#:: client program when pressing specified shortcut keys. For
+#:: example::
+
+#:: map ctrl+alt+a send_text all Special text
+
+#:: This will send "Special text" when you press the Ctrl+Alt+A key
+#:: combination. The text to be sent is a python string literal so
+#:: you can use escapes like \x1b to send control codes or \u21fb to
+#:: send Unicode characters (or you can just input the Unicode
+#:: characters directly as UTF-8 text). You can use `kitty +kitten
+#:: show_key` to get the key escape codes you want to emulate.
+
+#:: The first argument to send_text is the keyboard modes in which to
+#:: activate the shortcut. The possible values are normal,
+#:: application, kitty or a comma separated combination of them. The
+#:: modes normal and application refer to the DECCKM cursor key mode
+#:: for terminals, and kitty refers to the kitty extended keyboard
+#:: protocol. The special value all means all of them.
+
+#:: Some more examples::
+
+#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home)
+#:: map ctrl+alt+a send_text normal Word\x1b[H
+#:: map ctrl+alt+a send_text application Word\x1bOH
+#:: # Run a command at a shell prompt (like typing the command and pressing Enter)
+#:: map ctrl+alt+a send_text normal,application some command with arguments\r
+
+#: Open kitty Website
+
+map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/
+
+#: }}}
+
+#: }}}
+
+
+tab_bar_min_tabs 2
+tab_bar_edge bottom
+tab_bar_style powerline
+tab_powerline_style slanted
+tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}
+
+
+# The basic colors
+foreground #CAD3F5
+background #24273A
+selection_foreground #24273A
+selection_background #F4DBD6
+
+# Cursor colors
+cursor #F4DBD6
+cursor_text_color #24273A
+
+# URL underline color when hovering with mouse
+url_color #F4DBD6
+
+# Kitty window border colors
+active_border_color #B7BDF8
+inactive_border_color #6E738D
+bell_border_color #EED49F
+
+# OS Window titlebar colors
+wayland_titlebar_color system
+macos_titlebar_color system
+
+# Tab bar colors
+active_tab_foreground #181926
+active_tab_background #C6A0F6
+inactive_tab_foreground #CAD3F5
+inactive_tab_background #1E2030
+tab_bar_background #181926
+
+# Colors for marks (marked text in the terminal)
+mark1_foreground #24273A
+mark1_background #B7BDF8
+mark2_foreground #24273A
+mark2_background #C6A0F6
+mark3_foreground #24273A
+mark3_background #7DC4E4
+
+# The 16 terminal colors
+
+# black
+color0 #494D64
+color8 #5B6078
+
+# red
+color1 #ED8796
+color9 #ED8796
+
+# green
+color2 #A6DA95
+color10 #A6DA95
+
+# yellow
+color3 #EED49F
+color11 #EED49F
+
+# blue
+color4 #8AADF4
+color12 #8AADF4
+
+# magenta
+color5 #F5BDE6
+color13 #F5BDE6
+
+# cyan
+color6 #8BD5CA
+color14 #8BD5CA
+
+# white
+color7 #B8C0E0
+color15 #A5ADCB
\ No newline at end of file
diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf
new file mode 100644
index 00000000..40861288
--- /dev/null
+++ b/.config/neofetch/config.conf
@@ -0,0 +1,754 @@
+# https://github.com/chick2d/neofetch-themes
+# Made by https://gist.github.com/Talljoe
+
+print_info() {
+ prin "┌─────────\n Hardware Information \n─────────┐"
+ info " " cpu
+ info " " model
+ info " " gpu
+ # info " " disk
+ info " 塞" memory
+ info " " resolution
+ # info " " battery
+ prin "├─────────\n Software Information \n─────────┤"
+ # info " " users
+ info " " distro
+ # Just get your distro's logo off nerdfonts.com
+ info " " kernel
+ # info " " de
+ info " " de
+ info " " shell
+ info " " term
+ info " " term_font
+ info " " font
+ info " " theme
+ info " " icons
+ info " " packages
+
+ # info " " uptime
+ # info " " gpu_driver # Linux/macOS only
+ # info " " cpu_usage
+ # info " ﱘ " song
+ # [[ "$player" ]] && prin "Music Player" "$player"
+ # info " " local_ip
+ # info " " public_ip
+ # info " " locale # This only works on glibc systems.
+ prin "└───────────────────────────────────────┘"
+ prin "\n \n \n \n \n ${cl3} \n \n ${cl5} \n \n ${cl2} \n \n ${cl6} \n \n ${cl4} \n \n ${cl1} \n \n ${cl7} \n \n ${cl0}"
+}
+# info "Disk" disk
+
+# info "WM Theme" wm_theme
+
+# info "CPU Usage" cpu_usage
+# info "Battery" battery
+# info "Font" font
+# info "Song" song
+# [[ $player ]] && prin "Music Player" "$player"
+# info "Local IP" local_ip
+#info "Public IP" public_ip
+# info "Users" users
+# info "Locale" locale # This only works on glibc systems.
+
+# Colors for custom colorblocks
+magenta="\033[1;35m"
+green="\033[1;32m"
+white="\033[1;37m"
+blue="\033[1;34m"
+red="\033[1;31m"
+black="\033[1;40;30m"
+yellow="\033[1;33m"
+cyan="\033[1;36m"
+reset="\033[0m"
+bgyellow="\033[1;43;33m"
+bgwhite="\033[1;47;37m"
+cl0="${reset}"
+cl1="${magenta}"
+cl2="${green}"
+cl3="${white}"
+cl4="${blue}"
+cl5="${red}"
+cl6="${yellow}"
+cl7="${cyan}"
+cl8="${black}"
+cl9="${bgyellow}"
+cl10="${bgwhite}"
+
+# Kernel
+
+# Shorten the output of the kernel function.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --kernel_shorthand
+# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
+#
+# Example:
+# on: '4.8.9-1-ARCH'
+# off: 'Linux 4.8.9-1-ARCH'
+kernel_shorthand="on"
+
+# Distro
+
+# Shorten the output of the distro function
+#
+# Default: 'off'
+# Values: 'on', 'off', 'tiny'
+# Flag: --distro_shorthand
+# Supports: Everything except Windows and Haiku
+distro_shorthand="off"
+
+# Show/Hide OS Architecture.
+# Show 'x86_64', 'x86' and etc in 'Distro:' output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --os_arch
+#
+# Example:
+# on: 'Arch Linux x86_64'
+# off: 'Arch Linux'
+os_arch="on"
+
+# Uptime
+
+# Shorten the output of the uptime function
+#
+# Default: 'on'
+# Values: 'on', 'off', 'tiny'
+# Flag: --uptime_shorthand
+#
+# Example:
+# on: '2 days, 10 hours, 3 mins'
+# off: '2 days, 10 hours, 3 minutes'
+# tiny: '2d 10h 3m'
+uptime_shorthand="on"
+
+# Memory
+
+# Show memory pecentage in output.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --memory_percent
+#
+# Example:
+# on: '1801MiB / 7881MiB (22%)'
+# off: '1801MiB / 7881MiB'
+memory_percent="on"
+
+# Packages
+
+# Show/Hide Package Manager names.
+#
+# Default: 'tiny'
+# Values: 'on', 'tiny' 'off'
+# Flag: --package_managers
+#
+# Example:
+# on: '998 (pacman), 8 (flatpak), 4 (snap)'
+# tiny: '908 (pacman, flatpak, snap)'
+# off: '908'
+package_managers="on"
+
+# Shell
+
+# Show the path to $SHELL
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --shell_path
+#
+# Example:
+# on: '/bin/bash'
+# off: 'bash'
+shell_path="off"
+
+# Show $SHELL version
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --shell_version
+#
+# Example:
+# on: 'bash 4.4.5'
+# off: 'bash'
+shell_version="on"
+
+# CPU
+
+# CPU speed type
+#
+# Default: 'bios_limit'
+# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
+# Flag: --speed_type
+# Supports: Linux with 'cpufreq'
+# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
+speed_type="bios_limit"
+
+# CPU speed shorthand
+#
+# Default: 'off'
+# Values: 'on', 'off'.
+# Flag: --speed_shorthand
+# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
+#
+# Example:
+# on: 'i7-6500U (4) @ 3.1GHz'
+# off: 'i7-6500U (4) @ 3.100GHz'
+speed_shorthand="on"
+
+# Enable/Disable CPU brand in output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_brand
+#
+# Example:
+# on: 'Intel i7-6500U'
+# off: 'i7-6500U (4)'
+cpu_brand="on"
+
+# CPU Speed
+# Hide/Show CPU speed.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_speed
+#
+# Example:
+# on: 'Intel i7-6500U (4) @ 3.1GHz'
+# off: 'Intel i7-6500U (4)'
+cpu_speed="on"
+
+# CPU Cores
+# Display CPU cores in output
+#
+# Default: 'logical'
+# Values: 'logical', 'physical', 'off'
+# Flag: --cpu_cores
+# Support: 'physical' doesn't work on BSD.
+#
+# Example:
+# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
+# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
+# off: 'Intel i7-6500U @ 3.1GHz'
+cpu_cores="logical"
+
+# CPU Temperature
+# Hide/Show CPU temperature.
+# Note the temperature is added to the regular CPU function.
+#
+# Default: 'off'
+# Values: 'C', 'F', 'off'
+# Flag: --cpu_temp
+# Supports: Linux, BSD
+# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
+# coretemp kernel module. This only supports newer Intel processors.
+#
+# Example:
+# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
+# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
+# off: 'Intel i7-6500U (4) @ 3.1GHz'
+cpu_temp="on"
+
+# GPU
+
+# Enable/Disable GPU Brand
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gpu_brand
+#
+# Example:
+# on: 'AMD HD 7950'
+# off: 'HD 7950'
+gpu_brand="on"
+
+# Which GPU to display
+#
+# Default: 'all'
+# Values: 'all', 'dedicated', 'integrated'
+# Flag: --gpu_type
+# Supports: Linux
+#
+# Example:
+# all:
+# GPU1: AMD HD 7950
+# GPU2: Intel Integrated Graphics
+#
+# dedicated:
+# GPU1: AMD HD 7950
+#
+# integrated:
+# GPU1: Intel Integrated Graphics
+gpu_type="all"
+
+# Resolution
+
+# Display refresh rate next to each monitor
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --refresh_rate
+# Supports: Doesn't work on Windows.
+#
+# Example:
+# on: '1920x1080 @ 60Hz'
+# off: '1920x1080'
+refresh_rate="off"
+
+# Gtk Theme / Icons / Font
+
+# Shorten output of GTK Theme / Icons / Font
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --gtk_shorthand
+#
+# Example:
+# on: 'Numix, Adwaita'
+# off: 'Numix [GTK2], Adwaita [GTK3]'
+gtk_shorthand="off"
+
+# Enable/Disable gtk2 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk2
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Adwaita [GTK3]'
+gtk2="on"
+
+# Enable/Disable gtk3 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk3
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Numix [GTK2]'
+gtk3="on"
+
+# IP Address
+
+# Website to ping for the public IP
+#
+# Default: 'http://ident.me'
+# Values: 'url'
+# Flag: --ip_host
+public_ip_host="http://ident.me"
+
+# Public IP timeout.
+#
+# Default: '2'
+# Values: 'int'
+# Flag: --ip_timeout
+public_ip_timeout=2
+
+# Disk
+
+# Which disks to display.
+# The values can be any /dev/sdXX, mount point or directory.
+# NOTE: By default we only show the disk info for '/'.
+#
+# Default: '/'
+# Values: '/', '/dev/sdXX', '/path/to/drive'.
+# Flag: --disk_show
+#
+# Example:
+# disk_show=('/' '/dev/sdb1'):
+# 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 823G / 893G (93%)'
+#
+# disk_show=('/'):
+# 'Disk (/): 74G / 118G (66%)'
+#
+disk_show=('/')
+
+# Disk subtitle.
+# What to append to the Disk subtitle.
+#
+# Default: 'mount'
+# Values: 'mount', 'name', 'dir'
+# Flag: --disk_subtitle
+#
+# Example:
+# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
+# 'Disk (/dev/sdb2): 74G / 118G (66%)'
+#
+# mount: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 74G / 118G (66%)'
+#
+# dir: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (Local Disk): 74G / 118G (66%)'
+# 'Disk (Videos): 74G / 118G (66%)'
+disk_subtitle="dir"
+
+# Song
+
+# Manually specify a music player.
+#
+# Default: 'auto'
+# Values: 'auto', 'player-name'
+# Flag: --music_player
+#
+# Available values for 'player-name':
+#
+# amarok
+# audacious
+# banshee
+# bluemindo
+# clementine
+# cmus
+# deadbeef
+# deepin-music
+# dragon
+# elisa
+# exaile
+# gnome-music
+# gmusicbrowser
+# guayadeque
+# iTunes
+# juk
+# lollypop
+# mocp
+# mopidy
+# mpd
+# netease-cloud-music
+# pogo
+# pragha
+# qmmp
+# quodlibet
+# rhythmbox
+# sayonara
+# smplayer
+# spotify
+# tomahawk
+# vlc
+# xmms2d
+# yarock
+music_player="auto"
+
+# Format to display song information.
+#
+# Default: '%artist% - %album% - %title%'
+# Values: '%artist%', '%album%', '%title%'
+# Flag: --song_format
+#
+# Example:
+# default: 'Song: Jet - Get Born - Sgt Major'
+song_format="%artist% - %album% - %title%"
+
+# Print the Artist, Album and Title on separate lines
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --song_shorthand
+#
+# Example:
+# on: 'Artist: The Fratellis'
+# 'Album: Costello Music'
+# 'Song: Chelsea Dagger'
+#
+# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
+song_shorthand="off"
+
+# 'mpc' arguments (specify a host, password etc).
+#
+# Default: ''
+# Example: mpc_args=(-h HOST -P PASSWORD)
+mpc_args=()
+
+# Text Colors
+
+# Text Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --colors
+#
+# Each number represents a different part of the text in
+# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
+#
+# Example:
+# colors=(distro) - Text is colored based on Distro colors.
+# colors=(4 6 1 8 8 6) - Text is colored in the order above.
+colors=(5 5 6 1 5 7)
+
+# Text Options
+
+# Toggle bold text
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bold
+bold="on"
+
+# Enable/Disable Underline
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --underline
+underline_enabled="on"
+
+# Underline character
+#
+# Default: '-'
+# Values: 'string'
+# Flag: --underline_char
+underline_char="-"
+
+# Info Separator
+# Replace the default separator with the specified string.
+#
+# Default: ':'
+# Flag: --separator
+#
+# Example:
+# separator="->": 'Shell-> bash'
+# separator=" =": 'WM = dwm'
+separator=" ➜"
+
+# Color Blocks
+
+# Color block range
+# The range of colors to print.
+#
+# Default: '0', '7'
+# Values: 'num'
+# Flag: --block_range
+#
+# Example:
+#
+# Display colors 0-7 in the blocks. (8 colors)
+# neofetch --block_range 0 7
+#
+# Display colors 0-15 in the blocks. (16 colors)
+# neofetch --block_range 0 15
+block_range=(0 7)
+
+# Toggle color blocks
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --color_blocks
+color_blocks="on"
+
+# Color block width in spaces
+#
+# Default: '3'
+# Values: 'num'
+# Flag: --block_width
+block_width=3
+
+# Color block height in lines
+#
+# Default: '1'
+# Values: 'num'
+# Flag: --block_height
+block_height=1
+
+# Progress Bars
+
+# Bar characters
+#
+# Default: '-', '='
+# Values: 'string', 'string'
+# Flag: --bar_char
+#
+# Example:
+# neofetch --bar_char 'elapsed' 'total'
+# neofetch --bar_char '-' '='
+bar_char_elapsed="-"
+bar_char_total="="
+
+# Toggle Bar border
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bar_border
+bar_border="on"
+
+# Progress bar length in spaces
+# Number of chars long to make the progress bars.
+#
+# Default: '15'
+# Values: 'num'
+# Flag: --bar_length
+bar_length=15
+
+# Progress bar colors
+# When set to distro, uses your distro's logo colors.
+#
+# Default: 'distro', 'distro'
+# Values: 'distro', 'num'
+# Flag: --bar_colors
+#
+# Example:
+# neofetch --bar_colors 3 4
+# neofetch --bar_colors distro 5
+bar_color_elapsed="distro"
+bar_color_total="distro"
+
+# Info display
+# Display a bar with the info.
+#
+# Default: 'off'
+# Values: 'bar', 'infobar', 'barinfo', 'off'
+# Flags: --cpu_display
+# --memory_display
+# --battery_display
+# --disk_display
+#
+# Example:
+# bar: '[---=======]'
+# infobar: 'info [---=======]'
+# barinfo: '[---=======] info'
+# off: 'info'
+cpu_display="off"
+memory_display="info"
+battery_display="bar"
+disk_display="bar"
+
+# Backend Settings
+
+# Image backend.
+#
+# Default: 'ascii'
+# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
+# 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
+# Flag: --backend
+image_backend="kitty"
+
+# Image Source
+#
+# Which image or ascii file to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
+# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
+# Flag: --source
+#
+# NOTE: 'auto' will pick the best image source for whatever image backend is used.
+# In ascii mode, distro ascii art will be used and in an image mode, your
+# wallpaper will be used.
+image_source="/docs/Imagenes/Edicion Imagen/Trabajos/logo.png"
+
+# Ascii Options
+
+# Ascii distro
+# Which distro's ascii art to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'distro_name'
+# Flag: --ascii_distro
+#
+# NOTE: Arch and Ubuntu have 'old' logo variants.
+# Change this to 'arch_old' or 'ubuntu_old' to use the old logos.
+# NOTE: Ubuntu has flavor variants.
+# Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME' or 'Ubuntu-Budgie' to use the flavors.
+# NOTE: Arch, Crux and Gentoo have a smaller logo variant.
+# Change this to 'arch_small', 'crux_small' or 'gentoo_small' to use the small logos.
+ascii_distro="auto"
+
+# Ascii Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --ascii_colors
+#
+# Example:
+# ascii_colors=(distro) - Ascii is colored based on Distro colors.
+# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
+ascii_colors=(distro)
+
+# Bold ascii logo
+# Whether or not to bold the ascii logo.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --ascii_bold
+ascii_bold="on"
+
+# Image Options
+
+# Image loop
+# Setting this to on will make neofetch redraw the image constantly until
+# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --loop
+image_loop="off"
+
+# Thumbnail directory
+#
+# Default: '~/.cache/thumbnails/neofetch'
+# Values: 'dir'
+thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
+
+# Crop mode
+#
+# Default: 'normal'
+# Values: 'normal', 'fit', 'fill'
+# Flag: --crop_mode
+#
+# See this wiki page to learn about the fit and fill options.
+# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
+crop_mode="normal"
+
+# Crop offset
+# Note: Only affects 'normal' crop mode.
+#
+# Default: 'center'
+# Values: 'northwest', 'north', 'northeast', 'west', 'center'
+# 'east', 'southwest', 'south', 'southeast'
+# Flag: --crop_offset
+crop_offset="center"
+
+# Image size
+# The image is half the terminal width by default.
+#
+# Default: 'auto'
+# Values: 'auto', '00px', '00%', 'none'
+# Flags: --image_size
+# --size
+image_size="300px"
+
+# Gap between image and text
+#
+# Default: '3'
+# Values: 'num', '-num'
+# Flag: --gap
+gap=3
+
+# Image offsets
+# Only works with the w3m backend.
+#
+# Default: '0'
+# Values: 'px'
+# Flags: --xoffset
+# --yoffset
+yoffset=0
+xoffset=0
+
+# Image background color
+# Only works with the w3m backend.
+#
+# Default: ''
+# Values: 'color', 'blue'
+# Flag: --bg_color
+background_color=
+
+# Misc Options
+
+# Stdout mode
+# Turn off all colors and disables image backend (ASCII/Image).
+# Useful for piping into another command.
+# Default: 'off'
+# Values: 'on', 'off'
+stdout="off"
diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi
new file mode 100644
index 00000000..60db4f13
--- /dev/null
+++ b/.config/rofi/config.rasi
@@ -0,0 +1,87 @@
+configuration {
+ /*---------- General setting ----------*/
+ modi: "drun,run,filebrowser,window";
+ case-sensitive: false;
+ cycle: true;
+ filter: "";
+ scroll-method: 0;
+ normalize-match: true;
+ show-icons: true;
+ icon-theme: "Catppuccin-SE";
+ steal-focus: false;
+
+ /*---------- Matching setting ----------*/
+ matching: "normal";
+ tokenize: true;
+
+ /*---------- SSH settings ----------*/
+ ssh-client: "ssh";
+ ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";
+ parse-hosts: true;
+ parse-known-hosts: true;
+
+ /*---------- Drun settings ----------*/
+ drun-categories: "";
+ drun-match-fields: "name,generic,exec,categories,keywords";
+ drun-display-format: "{name} [({generic})]";
+ drun-show-actions: false;
+ drun-url-launcher: "xdg-open";
+ drun-use-desktop-cache: false;
+ drun-reload-desktop-cache: false;
+ drun {
+ /** Parse user desktop files. */
+ parse-user: true;
+ /** Parse system desktop files. */
+ parse-system: true;
+ }
+
+ /*---------- Run settings ----------*/
+ run-command: "{cmd}";
+ run-list-command: "";
+ run-shell-command: "{terminal} -e {cmd}";
+
+ /*---------- Fallback Icon ----------*/
+ run,drun {
+ fallback-icon: "application-x-addon";
+ }
+
+ /*---------- Window switcher settings ----------*/
+ window-match-fields: "title,class,role,name,desktop";
+ window-command: "wmctrl -i -R {window}";
+ window-format: "{w} - {c} - {t:0}";
+ window-thumbnail: false;
+
+ /*---------- History and Sorting ----------*/
+ disable-history: false;
+ sorting-method: "normal";
+ max-history-size: 25;
+
+ /*---------- Display setting ----------*/
+ display-window: "Windows";
+ display-windowcd: "Window CD";
+ display-run: "Run";
+ display-ssh: "SSH";
+ display-drun: "Apps";
+ display-combi: "Combi";
+ display-keys: "Keys";
+ display-filebrowser: "Files";
+
+ /*---------- Misc setting ----------*/
+ terminal: "rofi-sensible-terminal";
+ font: "Mono 12";
+ sort: false;
+ threads: 0;
+ click-to-exit: true;
+
+ /*---------- File browser settings ----------*/
+ filebrowser {
+ directories-first: true;
+ sorting-method: "name";
+ }
+
+ /*---------- Other settings ----------*/
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+}
diff --git a/.config/rofi/style.rasi b/.config/rofi/style.rasi
new file mode 100644
index 00000000..0e27815d
--- /dev/null
+++ b/.config/rofi/style.rasi
@@ -0,0 +1,175 @@
+/*****----- Configuration -----*****/
+configuration {
+ modi: "drun,filebrowser,window";
+ show-icons: true;
+ display-drun: "Apps";
+ display-run: "Run";
+ display-filebrowser: "Files";
+ display-window: "Windows";
+ drun-display-format: "{name}\n[({generic})]";
+ window-format: "Class : {c}\nWorkspace : {w}";
+}
+
+/*****----- Global Properties -----*****/
+* {
+ font: "JetBrains Mono Nerd Font 10";
+}
+
+/*****----- Main Window -----*****/
+window {
+ /* properties for window widget */
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ border: 2px;
+ border-radius: 15px;
+ border-color: #B7BDF87F;
+ width: 500px;
+ x-offset: 0px;
+ y-offset: 0px;
+
+ /* properties for all widgets */
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border-radius: 20px;
+ cursor: "default";
+ background-color: #24273A;
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: 15px;
+ padding: 30px;
+ background-color: transparent;
+ children: [ "inputbar", "mode-switcher", "listview" ];
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ spacing: 15px;
+ margin: 0px;
+ background-color: transparent;
+ children: [ "textbox-prompt-colon", "entry" ];
+
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ padding: 12px 16px;
+ border: 0px;
+ border-radius: 10px;
+ border-color: gray/30%;
+ background-color: gray/15%;
+ text-color: #CAD3F5;
+ str: "";
+}
+entry {
+ enabled: true;
+ padding: 12px 16px;
+ border: 0px;
+ border-radius: 10px;
+ border-color: gray/30%;
+ background-color: gray/15%;
+ text-color: #CAD3F5;
+ cursor: text;
+ placeholder: "Search...";
+ placeholder-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 5;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 10px;
+ background-color: transparent;
+ cursor: "default";
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 15px;
+ background-color: transparent;
+ text-color: #CAD3F5;
+ cursor: pointer;
+}
+element normal.active {
+ background-image: linear-gradient(to right, #19B466, #7BF4B7);
+ text-color: #CAD3F5;
+}
+element selected.normal {
+ border-radius: 15px;
+ background-image: linear-gradient(to right, #363A4F, #B7BDF89F);
+ text-color: #CAD3F5;
+}
+element selected.active {
+ background-image: linear-gradient(to right, #EA5553, #EAACAB);
+ text-color: #CAD3F5;
+}
+element-icon {
+ background-color: transparent;
+ size: 48px;
+ cursor: inherit;
+}
+element-text {
+ background-color: inherit;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Mode Switcher -----*****/
+mode-switcher{
+ enabled: true;
+ expand: false;
+ spacing: 15px;
+ background-color: #24273A;
+}
+button {
+ font: "JetBrains Mono Nerd Font 10";
+ padding: 10px;
+ border-radius: 100%;
+ background-image: linear-gradient(#939ab7);
+ text-color: #24273A;
+ cursor: pointer;
+}
+button selected {
+ background-image: linear-gradient(#B7BDF89F);
+ text-color: #24273A;
+}
+
+/*****----- Message -----*****/
+error-message {
+ padding: 20px;
+ background-color: #24273A;
+ text-color: #CAD3F5;
+}
+textbox {
+ padding: 0px;
+ border-radius: 0px;
+ text-color: #CAD3F5;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
diff --git a/.config/sway/idle.sh b/.config/sway/idle.sh
new file mode 100755
index 00000000..112e49cc
--- /dev/null
+++ b/.config/sway/idle.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+swayidle -w -d \
+ timeout 600 '~/.config/sway/lock.sh -f --grace 12 --fade-in 10' \
+ before-sleep 'pgrep swaylock || ~/.config/sway/lock.sh -f --fade-in 0 && true'
diff --git a/.config/sway/lock.sh b/.config/sway/lock.sh
new file mode 100755
index 00000000..0d367243
--- /dev/null
+++ b/.config/sway/lock.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+swaylock --screenshots --clock --indicator-idle-visible \
+ --indicator-radius 100 \
+ --indicator-thickness 12 \
+ --ignore-empty-password \
+ --ring-color 494d64 \
+ --key-hl-color ed8796 \
+ --text-color b7bdf8 \
+ --line-color b7bdf8 \
+ --inside-color 24273a \
+ --separator-color b7bdf8 \
+ --inside-ver-color 8bd5ca \
+ --inside-wrong-color ed8796 \
+ --line-ver-color 8bd5ca \
+ --ring-ver-color 8bd5ca \
+ --line-wrong-color ed8796 \
+ --ring-wrong-color ed8796 \
+ --fade-in 0.5 \
+ --effect-scale 0.5 --effect-blur 7x3 --effect-scale 2 \
+ --effect-vignette 0.5:0.9 \
+ "$@"
diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 00000000..3654f9fd
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,711 @@
+[
+ {
+ "height": 50,
+ "layer": "top",
+ "output": "DP-1",
+ "mod": "dock",
+ "exclusive": true,
+ "passtrough": false,
+ "margin-top": 10,
+ "margin-left": 17,
+ "margin-bottom": 0,
+ "margin-right": 17,
+ "modules-left": [
+ "custom/arch",
+ "wlr/workspaces"
+ ],
+ "modules-center": [
+ "custom/music"
+ ],
+ "modules-right": [
+ "clock",
+ "pulseaudio",
+ "custom/notifications"
+ ],
+ "custom/arch": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "wleave",
+ "on-click-right": "wleave"
+ },
+ "custom/weather": {
+ "exec": "python3 ~/.config/waybar/scripts/weather.py",
+ "restart-interval": 300,
+ "return-type": "json",
+ "on-click": "xdg-open https://www.eltiempo.es/alicante.html"
+ },
+ "custom/updates": {
+ "format": "{} {icon}",
+ "return-type": "json",
+ "format-icons": {
+ "has-updates": "",
+ "updated": ""
+ },
+ "exec-if": "which waybar-module-pacman-updates",
+ "exec": "waybar-module-pacman-updates"
+ },
+ "custom/notifications": {
+ "tooltip": false,
+ "format": "{} {icon}",
+ "format-icons": {
+ "notification": "",
+ "none": "",
+ "dnd-notification": "",
+ "dnd-none": "",
+ "inhibited-notification": "",
+ "inhibited-none": "",
+ "dnd-inhibited-notification": "",
+ "dnd-inhibited-none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which swaync-client",
+ "exec": "swaync-client -swb",
+ "on-click": "swaync-client -t -sw",
+ "on-click-right": "swaync-client -d -sw",
+ "escape": true
+ },
+ "wlr/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": false,
+ "enable-bar-scroll": true,
+ "format": "{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "🖵",
+ "4": "",
+ "5": "",
+ "6": "🎜",
+ "7": "",
+ "8": "",
+ "9": "",
+ "10": "",
+ "11": "",
+ "12": "",
+ "13": "🖵",
+ "14": "",
+ "15": "",
+ "16": "🎜",
+ "17": "",
+ "18": "",
+ "19": "",
+ "20": "",
+ "21": "",
+ "22": "",
+ "23": "✉",
+ "24": "🖵",
+ "25": "",
+ "26": "",
+ "27": "",
+ "28": "",
+ "29": "",
+ "30": "",
+ "urgent": " ",
+ "focused": " ",
+ "default": " "
+ },
+ "on-scroll-up": "hyprctl dispatch workspace m-1",
+ "on-scroll-down": "hyprctl dispatch workspace m+1",
+ "on-click": "activate",
+ "sort-by-number": true
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/language": {
+ "format": "{short} ⠀⠀"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": " ",
+ "deactivated": " "
+ }
+ },
+ "tray": {
+ "spacing": 10
+ },
+ "clock": {
+ "tooltip-format": "{:%Y %B \t week: %V }\n{calendar}",
+ "format": "{:%H:%M} ",
+ "format-alt": "{:%A, %B %d, %Y} "
+ },
+ "cpu": {
+ "on-click": "kitty btop",
+ "format": "{usage}% ",
+ "tooltip": false,
+ "interval": 2
+ },
+ "memory": {
+ "format": "{}% ",
+ "on-click": "kitty btop",
+ "tooltip": true,
+ "interval": 2
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "format-critical": "{icon} {temperatureC}°C",
+ "format": "{icon} {temperatureC}°C",
+ "format-icons": [
+ "",
+ "",
+ ""
+ ],
+ "tooltip": true,
+ "on-click": "kitty btop",
+ "interval": 2
+ },
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ " ",
+ " "
+ ],
+ "on-scroll-up": "light -A 1",
+ "on-scroll-down": "light -U 1"
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon} {capacity}%",
+ "tooltip-format": "{timeTo}, {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": " ",
+ "format-alt": "{time} {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "network": {
+ "format-wifi": "直 ",
+ "format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "睊 ",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}",
+ "tooltip-format": "{essid} {signalStrength}%"
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}% {format_source}",
+ "format-bluetooth": "{icon} {volume}% {format_source}",
+ "format-bluetooth-muted": " {volume}% {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": " ",
+ "format-source-muted": " ",
+ "format-icons": {
+ "headphone": " ",
+ "hands-free": " ",
+ "headset": " ",
+ "phone": " ",
+ "portable": " ",
+ "car": " ",
+ "default": [
+ " ",
+ " ",
+ " "
+ ]
+ },
+ "tooltip-format": "{desc}, {volume}%",
+ "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
+ "on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
+ "on-click-middle": "pavucontrol"
+ },
+ "custom/music": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 100,
+ "format-icons": {
+ "spotify": " ",
+ "default": " "
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/scripts/mediaplayer.py 2> /dev/null",
+ "on-click": "playerctl play-pause",
+ "on-scroll-up": "playerctl next",
+ "on-scroll-down": "playerctl previous"
+ },
+ "custom/fans": {
+ "format": "{}",
+ "exec": "$HOME/.config/waybar/scripts/fans.sh",
+ "escape": true,
+ "restart-interval": 10
+ }
+ },
+ {
+ "height": 50,
+ "layer": "top",
+ "output": "HDMI-A-1",
+ "margin-top": 10,
+ "margin-left": 17,
+ "margin-bottom": 0,
+ "margin-right": 17,
+ "modules-left": [
+ "custom/arch",
+ "wlr/workspaces"
+ ],
+ "modules-center": [
+ "custom/music"
+ ],
+ "modules-right": [
+ "clock",
+ "custom/weather",
+ "custom/notifications"
+ ],
+ "custom/arch": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "wleave",
+ "on-click-right": "wleave"
+ },
+ "custom/weather": {
+ "exec": "python3 ~/.config/waybar/scripts/weather.py",
+ "restart-interval": 300,
+ "return-type": "json",
+ "on-click": "xdg-open https://www.eltiempo.es/alicante.html"
+ },
+ "custom/notifications": {
+ "tooltip": false,
+ "format": "{} {icon}",
+ "format-icons": {
+ "notification": "",
+ "none": "",
+ "dnd-notification": "",
+ "dnd-none": "",
+ "inhibited-notification": "",
+ "inhibited-none": "",
+ "dnd-inhibited-notification": "",
+ "dnd-inhibited-none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which swaync-client",
+ "exec": "swaync-client -swb",
+ "on-click": "swaync-client -t -sw",
+ "on-click-right": "swaync-client -d -sw",
+ "escape": true
+ },
+ "wlr/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": false,
+ "enable-bar-scroll": true,
+ "format": "{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "🖵",
+ "4": "",
+ "5": "",
+ "6": "🎜",
+ "7": "",
+ "8": "",
+ "9": "",
+ "10": "",
+ "11": "",
+ "12": "",
+ "13": "🖵",
+ "14": "",
+ "15": "",
+ "16": "🎜",
+ "17": "",
+ "18": "",
+ "19": "",
+ "20": "",
+ "21": "",
+ "22": "",
+ "23": "✉",
+ "24": "🖵",
+ "25": "",
+ "26": "",
+ "27": "",
+ "28": "",
+ "29": "",
+ "30": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ },
+ "on-scroll-up": "hyprctl dispatch workspace m-1",
+ "on-scroll-down": "hyprctl dispatch workspace m+1",
+ "on-click": "activate",
+ "sort-by-number": true
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/language": {
+ "format": "{short} ⠀⠀"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": " ",
+ "deactivated": " "
+ }
+ },
+ "tray": {
+ "spacing": 10
+ },
+ "clock": {
+ "format": "{:%H:%M} ",
+ "format-alt": " {:%A %B %d %Y (%V) | %r}",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "calendar-weeks-pos": "right",
+ "today-format": "{}",
+ "format-calendar": "{}",
+ "format-calendar-weeks": "W{:%U}",
+ "format-calendar-weekdays": "{}",
+ },
+ "cpu": {
+ "on-click": "kitty btop",
+ "format": "{usage}% ",
+ "tooltip": false,
+ "interval": 2
+ },
+ "memory": {
+ "format": "{}% ",
+ "on-click": "kitty btop",
+ "tooltip": true,
+ "interval": 2
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "format-critical": "{icon} {temperatureC}°C",
+ "format": "{icon} {temperatureC}°C",
+ "format-icons": [
+ "",
+ "",
+ ""
+ ],
+ "tooltip": true,
+ "on-click": "kitty btop",
+ "interval": 2
+ },
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ " ",
+ " "
+ ],
+ "on-scroll-up": "light -A 1",
+ "on-scroll-down": "light -U 1"
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon} {capacity}%",
+ "tooltip-format": "{timeTo}, {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": " ",
+ "format-alt": "{time} {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "network": {
+ "format-wifi": "直 ",
+ "format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "睊 ",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}",
+ "tooltip-format": "{essid} {signalStrength}%"
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}% {format_source}",
+ "format-bluetooth": "{icon} {volume}% {format_source}",
+ "format-bluetooth-muted": " {volume}% {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": " ",
+ "format-source-muted": " ",
+ "format-icons": {
+ "headphone": " ",
+ "hands-free": " ",
+ "headset": " ",
+ "phone": " ",
+ "portable": " ",
+ "car": " ",
+ "default": [
+ " ",
+ " ",
+ " "
+ ]
+ },
+ "tooltip-format": "{desc}, {volume}%",
+ "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
+ "on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
+ "on-click-middle": "pavucontrol"
+ },
+ "custom/music": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 100,
+ "format-icons": {
+ "spotify": " ",
+ "default": " "
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/scripts/mediaplayer.py 2> /dev/null",
+ "on-click": "playerctl play-pause",
+ "on-scroll-up": "playerctl next",
+ "on-scroll-down": "playerctl previous",
+ },
+ "custom/fans": {
+ "format": "{}",
+ "exec": "$HOME/.config/waybar/scripts/fans.sh",
+ "escape": true,
+ "restart-interval": 10,
+ }
+ },
+ {
+ "height": 50,
+ "layer": "top",
+ "output": "DP-3",
+ "margin-top": 10,
+ "margin-left": 17,
+ "margin-bottom": 0,
+ "margin-right": 17,
+ "modules-left": [
+ "custom/arch",
+ "wlr/workspaces"
+ ],
+ "modules-center": [
+ "custom/music"
+ ],
+ "modules-right": [
+ "memory",
+ "cpu",
+ "temperature",
+ "custom/gpu-usage",
+ "custom/gpu-temp",
+ "tray"
+ ],
+ "custom/arch": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "wleave",
+ "on-click-right": "wleave",
+ },
+ "custom/weather": {
+ "exec": "python3 ~/.config/waybar/scripts/weather.py",
+ "restart-interval": 300,
+ "return-type": "json",
+ "on-click": "xdg-open https://www.eltiempo.es/alicante.html"
+ },
+ "custom/notifications": {
+ "tooltip": false,
+ "format": "{} {icon}",
+ "format-icons": {
+ "notification": "",
+ "none": "",
+ "dnd-notification": "",
+ "dnd-none": "",
+ "inhibited-notification": "",
+ "inhibited-none": "",
+ "dnd-inhibited-notification": "",
+ "dnd-inhibited-none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which swaync-client",
+ "exec": "swaync-client -swb",
+ "on-click": "swaync-client -t -sw",
+ "on-click-right": "swaync-client -d -sw",
+ "escape": true
+ },
+ "wlr/workspaces": {
+ "disable-scroll": true,
+ "active-only": false,
+ "all-outputs": false,
+ "enable-bar-scroll": true,
+ "format": "{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "🖵",
+ "4": "",
+ "5": "",
+ "6": "🎜",
+ "7": "",
+ "8": "",
+ "9": "",
+ "10": "",
+ "11": "",
+ "12": "",
+ "13": "🖵",
+ "14": "",
+ "15": "",
+ "16": "🎜",
+ "17": "",
+ "18": "",
+ "19": "",
+ "20": "",
+ "21": "",
+ "22": "",
+ "23": "✉",
+ "24": "🖵",
+ "25": "",
+ "26": "",
+ "27": "",
+ "28": "",
+ "29": "",
+ "30": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ },
+ "on-scroll-up": "hyprctl dispatch workspace m-1",
+ "on-scroll-down": "hyprctl dispatch workspace m+1",
+ "on-click": "activate",
+ "sort-by-number": true
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/language": {
+ "format": "{short} ⠀⠀"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": " ",
+ "deactivated": " "
+ }
+ },
+ "tray": {
+ "spacing": 10
+ },
+ "clock": {
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format": "{:%H:%M} ",
+ "format-alt": "{:%A, %B %d, %Y} "
+ },
+ "cpu": {
+ "on-click": "kitty --class btop-kitty btop",
+ "format": "CPU: {usage}%",
+ "tooltip": false,
+ "interval": 2
+ },
+ "custom/gpu-usage": {
+ "exec": "cat /sys/class/hwmon/hwmon1/device/gpu_busy_percent",
+ "on-click": "kitty --class nvtop-kitty nvtop",
+ "format": "GPU: {}%",
+ "return-type": "",
+ "interval": 2
+ },
+ "memory": {
+ "format": "{}% ",
+ "on-click": "kitty --class btop-kitty btop",
+ "tooltip": true,
+ "interval": 2
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "on-click": "kitty --class btop-kitty btop",
+ "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "format-critical": "{icon} {temperatureC}°C",
+ "format": "{icon} {temperatureC}°C",
+ "format-icons": [
+ "",
+ "",
+ ""
+ ],
+ "tooltip": true,
+ "interval": 2
+ },
+ "custom/gpu-temp": {
+ "exec": "cat /sys/class/hwmon/hwmon1/temp1_input | cut -b 1-2",
+ "on-click": "kitty --class nvtop-kitty nvtop",
+ "format": " {}°C",
+ "return-type": "",
+ "interval": 2
+ },
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ " ",
+ " "
+ ],
+ "on-scroll-up": "light -A 1",
+ "on-scroll-down": "light -U 1"
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon} {capacity}%",
+ "tooltip-format": "{timeTo}, {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": " ",
+ "format-alt": "{time} {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "network": {
+ "format-wifi": "直 ",
+ "format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "睊 ",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}",
+ "tooltip-format": "{essid} {signalStrength}%"
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}% {format_source}",
+ "format-bluetooth": "{icon} {volume}% {format_source}",
+ "format-bluetooth-muted": " {volume}% {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": " ",
+ "format-source-muted": " ",
+ "format-icons": {
+ "headphone": " ",
+ "hands-free": " ",
+ "headset": " ",
+ "phone": " ",
+ "portable": " ",
+ "car": " ",
+ "default": [
+ " ",
+ " ",
+ " "
+ ]
+ },
+ "tooltip-format": "{desc}, {volume}%",
+ "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
+ "on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
+ "on-click-middle": "pavucontrol"
+ },
+ "custom/music": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 100,
+ "format-icons": {
+ "spotify": " ",
+ "default": " "
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/scripts/mediaplayer.py 2> /dev/null",
+ "on-click": "playerctl play-pause",
+ "on-scroll-up": "playerctl next",
+ "on-scroll-down": "playerctl previous"
+ },
+ "custom/fans": {
+ "format": "{}",
+ "exec": "$HOME/.config/waybar/scripts/fans.sh",
+ "escape": true,
+ "restart-interval": 10
+ }
+ }
+]
\ No newline at end of file
diff --git a/.config/waybar/scripts/caway b/.config/waybar/scripts/caway
new file mode 100755
index 00000000..d20ee431
--- /dev/null
+++ b/.config/waybar/scripts/caway
@@ -0,0 +1,115 @@
+#!/usr/bin/bash
+
+# Nuke all internal spawns when script dies
+trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM
+
+BARS=8;
+FRAMERATE=60;
+EQUILIZER=1;
+
+# Get script options
+while getopts 'b:f:m:eh' flag; do
+ case "${flag}" in
+ b) BARS="${OPTARG}" ;;
+ f) FRAMERATE="${OPTARG}" ;;
+ e) EQUILIZER=0 ;;
+ h)
+ echo "caway usage: caway [ options ... ]"
+ echo "where options include:"
+ echo
+ echo " -b (Number of bars to display. Default 8)"
+ echo " -f (Framerate of the equilizer. Default 60)"
+ echo " -e (Disable equilizer. Default enabled)"
+ echo " -h (Show help message)"
+ exit 0
+ ;;
+ esac
+done
+
+bar="▁▂▃▄▅▆▇█"
+dict="s/;//g;"
+
+# creating "dictionary" to replace char with bar + thin space " "
+i=0
+while [ $i -lt ${#bar} ]
+do
+ dict="${dict}s/$i/${bar:$i:1} /g;"
+ i=$((i=i+1))
+done
+
+# Remove last extra thin space
+dict="${dict}s/.$//;"
+
+clean_create_pipe() {
+ if [ -p $1 ]; then
+ unlink $1
+ fi
+ mkfifo $1
+}
+
+kill_pid_file() {
+ if [[ -f $1 ]]; then
+ while read pid; do
+ { kill "$pid" && wait "$pid"; } 2>/dev/null
+ done < $1
+ fi
+}
+
+# PID of the cava process and while loop launched from the script
+cava_waybar_pid="/tmp/cava_waybar_pid"
+
+# Clean pipe for cava
+cava_waybar_pipe="/tmp/cava_waybar.fifo"
+clean_create_pipe $cava_waybar_pipe
+
+# Custom cava config
+cava_waybar_config="/tmp/cava_waybar_config"
+echo "
+[general]
+mode = normal
+framerate = $FRAMERATE
+bars = $BARS
+
+[output]
+method = raw
+raw_target = $cava_waybar_pipe
+data_format = ascii
+ascii_max_range = 7
+" > $cava_waybar_config
+
+# Clean pipe for playerctl
+playerctl_waybar_pipe="/tmp/playerctl_waybar.fifo"
+clean_create_pipe $playerctl_waybar_pipe
+
+# playerctl output into playerctl_waybar_pipe
+playerctl -a metadata --format '{"text": "{{artist}} - {{title}}", "tooltip": "{{playerName}} : {{markup_escape(artist)}} - {{markup_escape(title)}}", "alt": "{{status}}", "class": "{{status}}"}' -F >$playerctl_waybar_pipe &
+
+# Read the playerctl o/p via its fifo pipe
+while read -r line; do
+ # Kill the cava process to stop the input to cava_waybar_pipe
+ kill_pid_file $cava_waybar_pid
+
+ echo "$line" | jq --unbuffered --compact-output
+
+ # If the class says "Playing" and equilizer is enabled
+ # then show the cava equilizer
+ if [[ $EQUILIZER == 1 && $(echo $line | jq -r '.class') == 'Playing' ]]; then
+ # Show the playing title for 2 seconds
+ sleep 2
+
+ # cava output into cava_waybar_pipe
+ cava -p $cava_waybar_config >$cava_waybar_pipe &
+
+ # Save the PID of child process
+ echo $! > $cava_waybar_pid
+
+ # Read the cava o/p via its fifo pipe
+ while read -r cmd2; do
+ # Change the "text" key to bars
+ echo "$line" | jq --arg a $(echo $cmd2 | sed "$dict") '.text = $a' --unbuffered --compact-output
+ done < $cava_waybar_pipe & # Do this fifo read in background
+
+ # Save the while loop PID into the file as well
+ echo $! >> $cava_waybar_pid
+ fi
+done < $playerctl_waybar_pipe
diff --git a/.config/waybar/scripts/color-picker b/.config/waybar/scripts/color-picker
new file mode 100644
index 00000000..dfc680db
--- /dev/null
+++ b/.config/waybar/scripts/color-picker
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+## Simple Script To Pick Color Quickly.
+
+# pick and autocopy
+hyprpicker -n -a
+
+# get the value
+color=$(wl-paste)
+
+image=/tmp/${color}.png
+
+if [[ "$color" ]]; then
+ # generate preview
+ convert -size 48x48 xc:"$color" ${image}
+ # notify the color
+ notify-send -u low -i ${image} "$color" "Copied to clipboard."
+fi
+
diff --git a/.config/waybar/scripts/fans.sh b/.config/waybar/scripts/fans.sh
new file mode 100755
index 00000000..3c72e4c0
--- /dev/null
+++ b/.config/waybar/scripts/fans.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+echo "$(cat /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/fan1_input) RPM "
diff --git a/.config/waybar/scripts/launch_waybar b/.config/waybar/scripts/launch_waybar
new file mode 100644
index 00000000..f4cccca1
--- /dev/null
+++ b/.config/waybar/scripts/launch_waybar
@@ -0,0 +1,6 @@
+#!/usr/bin/bash
+
+killall -q waybar
+
+# env GTK_DEBUG=interactive
+waybar -l info -c ~/.config/waybar/config.jsonc -s ~/.config/waybar/style.css > /tmp/waybar.log 2>&1 & disown
diff --git a/.config/waybar/scripts/lock b/.config/waybar/scripts/lock
new file mode 100644
index 00000000..06131aa9
--- /dev/null
+++ b/.config/waybar/scripts/lock
@@ -0,0 +1,24 @@
+#!/usr/bin/bash
+swaylockd \
+--screenshots \
+--indicator \
+--clock \
+--inside-wrong-color f38ba8 \
+--ring-wrong-color 161925 \
+--inside-clear-color a6e3a1 \
+--ring-clear-color 161925 \
+--inside-ver-color 89b4fa \
+--ring-ver-color 161925 \
+--text-color f5c2e7 \
+--indicator-radius 100 \
+--indicator-thickness 5 \
+--effect-blur 8x5 \
+--effect-vignette 0.4:0.4 \
+--ring-color 161925 \
+--key-hl-color f5c2e7 \
+--line-color 313244 \
+--inside-color 00161925 \
+--separator-color 00000000 \
+--fade-in 0.2 &
+
+# sleep 2; ~/.config/hypr/scripts/screenshot_full
diff --git a/.config/waybar/scripts/mediaplayer.py b/.config/waybar/scripts/mediaplayer.py
new file mode 100755
index 00000000..1630d97c
--- /dev/null
+++ b/.config/waybar/scripts/mediaplayer.py
@@ -0,0 +1,128 @@
+#!/usr/bin/env python3
+import argparse
+import logging
+import sys
+import signal
+import gi
+import json
+gi.require_version('Playerctl', '2.0')
+from gi.repository import Playerctl, GLib
+
+logger = logging.getLogger(__name__)
+
+
+def write_output(text, player):
+ logger.info('Writing output')
+
+ output = {'text': text,
+ 'class': 'custom-' + player.props.player_name,
+ 'alt': player.props.player_name}
+
+ sys.stdout.write(json.dumps(output) + '\n')
+ sys.stdout.flush()
+
+
+def on_play(player, status, manager):
+ logger.info('Received new playback status')
+ on_metadata(player, player.props.metadata, manager)
+
+
+def on_metadata(player, metadata, manager):
+ logger.info('Received new metadata')
+ track_info = ''
+
+ if player.props.player_name == 'spotify' and \
+ 'mpris:trackid' in metadata.keys() and \
+ ':ad:' in player.props.metadata['mpris:trackid']:
+ track_info = 'AD PLAYING'
+ elif player.get_artist() != '' and player.get_title() != '':
+ track_info = '{artist} - {title}'.format(artist=player.get_artist(),
+ title=player.get_title())
+ else:
+ track_info = player.get_title()
+
+ if player.props.status != 'Playing' and track_info:
+ track_info = ' ' + track_info
+ write_output(track_info, player)
+
+
+def on_player_appeared(manager, player, selected_player=None):
+ if player is not None and (selected_player is None or player.name == selected_player):
+ init_player(manager, player)
+ else:
+ logger.debug("New player appeared, but it's not the selected player, skipping")
+
+
+def on_player_vanished(manager, player):
+ logger.info('Player has vanished')
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+
+
+def init_player(manager, name):
+ logger.debug('Initialize player: {player}'.format(player=name.name))
+ player = Playerctl.Player.new_from_name(name)
+ player.connect('playback-status', on_play, manager)
+ player.connect('metadata', on_metadata, manager)
+ manager.manage_player(player)
+ on_metadata(player, player.props.metadata, manager)
+
+
+def signal_handler(sig, frame):
+ logger.debug('Received signal to stop, exiting')
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+ # loop.quit()
+ sys.exit(0)
+
+
+def parse_arguments():
+ parser = argparse.ArgumentParser()
+
+ # Increase verbosity with every occurrence of -v
+ parser.add_argument('-v', '--verbose', action='count', default=0)
+
+ # Define for which player we're listening
+ parser.add_argument('--player')
+
+ return parser.parse_args()
+
+
+def main():
+ arguments = parse_arguments()
+
+ # Initialize logging
+ logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
+ format='%(name)s %(levelname)s %(message)s')
+
+ # Logging is set by default to WARN and higher.
+ # With every occurrence of -v it's lowered by one
+ logger.setLevel(max((3 - arguments.verbose) * 10, 0))
+
+ # Log the sent command line arguments
+ logger.debug('Arguments received {}'.format(vars(arguments)))
+
+ manager = Playerctl.PlayerManager()
+ loop = GLib.MainLoop()
+
+ manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
+ manager.connect('player-vanished', on_player_vanished)
+
+ signal.signal(signal.SIGINT, signal_handler)
+ signal.signal(signal.SIGTERM, signal_handler)
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+
+ for player in manager.props.player_names:
+ if arguments.player is not None and arguments.player != player.name:
+ logger.debug('{player} is not the filtered player, skipping it'
+ .format(player=player.name)
+ )
+ continue
+
+ init_player(manager, player)
+
+ loop.run()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.config/waybar/scripts/updates b/.config/waybar/scripts/updates
new file mode 100755
index 00000000..c0d3ea78
--- /dev/null
+++ b/.config/waybar/scripts/updates
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+# Original script by @speltriao on GitHub
+# https://github.com/speltriao/Pacman-Update-for-GNOME-Shell
+
+# If the operating system is not Arch Linux, exit the script successfully
+if [ ! -f /etc/arch-release ]; then
+ exit 0
+fi
+
+# Calculate updates for each service
+AUR=$(yay -Qua | wc -l)
+
+# Case/switch for each service updates
+case $1 in
+ aur) echo " $AUR";;
+esac
+
+# If the parameter is "update", update all services
+if [ "$1" = "update" ]; then
+ kitty --start-as=fullscreen --title all_is_kitty sh -c 'yay -Syu'
+fi
+
+# If there aren't any parameters, return the total number of updates
+if [ "$1" = "" ]; then
+ # Calculate total number of updates
+ COUNT=$((AUR))
+ # If there are updates, the script will output the following: Updates
+ # If there are no updates, the script will output nothing.
+
+ if [[ "$COUNT" = "0" ]]
+ then
+ echo ""
+ else
+ # This Update symbol is RTL. So is left-to-right override.
+ echo " $COUNT"
+ fi
+ exit 0
+fi
diff --git a/.config/waybar/scripts/weather.py b/.config/waybar/scripts/weather.py
new file mode 100755
index 00000000..8e2690b8
--- /dev/null
+++ b/.config/waybar/scripts/weather.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+
+import json
+import requests
+from datetime import datetime
+
+WEATHER_CODES = {
+ '113': '🌈',
+ '116': '⛅️',
+ '119': '☁️',
+ '122': '☁️',
+ '143': '🌫',
+ '176': '🌦',
+ '179': '🌧',
+ '182': '🌧',
+ '185': '🌧',
+ '200': '⛈',
+ '227': '🌨',
+ '230': '❄️',
+ '248': '🌫',
+ '260': '🌫',
+ '263': '🌦',
+ '266': '🌦',
+ '281': '🌧',
+ '284': '🌧',
+ '293': '🌦',
+ '296': '🌦',
+ '299': '🌧',
+ '302': '🌧',
+ '305': '🌧',
+ '308': '🌧',
+ '311': '🌧',
+ '314': '🌧',
+ '317': '🌧',
+ '320': '🌨',
+ '323': '🌨',
+ '326': '🌨',
+ '329': '❄️',
+ '332': '❄️',
+ '335': '❄️',
+ '338': '❄️',
+ '350': '🌧',
+ '353': '🌦',
+ '356': '🌧',
+ '359': '🌧',
+ '362': '🌧',
+ '365': '🌧',
+ '368': '🌨',
+ '371': '❄️',
+ '374': '🌧',
+ '377': '🌧',
+ '386': '⛈',
+ '389': '🌩',
+ '392': '⛈',
+ '395': '❄️'
+}
+
+data = {}
+
+
+weather = requests.get("https://wttr.in/Alicante?format=j1").json()
+
+
+def format_time(time):
+ return time.replace("00", "").zfill(2)
+
+
+def format_temp(temp):
+ return (hour['FeelsLikeC']+"°").ljust(3)
+
+
+def format_chances(hour):
+ chances = {
+ "chanceoffog": "Fog",
+ "chanceoffrost": "Frost",
+ "chanceofovercast": "Overcast",
+ "chanceofrain": "Rain",
+ "chanceofsnow": "Snow",
+ "chanceofsunshine": "Sunshine",
+ "chanceofthunder": "Thunder",
+ "chanceofwindy": "Wind"
+ }
+
+ conditions = []
+ for event in chances.keys():
+ if int(hour[event]) > 0:
+ conditions.append(chances[event]+" "+hour[event]+"%")
+ return ", ".join(conditions)
+
+
+data['text'] = WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \
+ " "+weather['current_condition'][0]['FeelsLikeC']+"°C"
+
+data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°C\n"
+data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}°C\n"
+data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n"
+data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
+for i, day in enumerate(weather['weather']):
+ data['tooltip'] += f"\n"
+ if i == 0:
+ data['tooltip'] += "Today, "
+ if i == 1:
+ data['tooltip'] += "Tomorrow, "
+ data['tooltip'] += f"{day['date']}\n"
+ data['tooltip'] += f"⬆️ {day['maxtempC']}° ⬇️ {day['mintempC']}° "
+ data['tooltip'] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n"
+ for hour in day['hourly']:
+ if i == 0:
+ if int(format_time(hour['time'])) < datetime.now().hour-2:
+ continue
+ data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
+
+
+print(json.dumps(data))
+
diff --git a/.config/waybar/scripts/wttr b/.config/waybar/scripts/wttr
new file mode 100644
index 00000000..0ec52958
--- /dev/null
+++ b/.config/waybar/scripts/wttr
@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+
+import json
+import requests
+from datetime import datetime
+WEATHER_CODES = {
+ '113': '☀️ ',
+ '116': '⛅ ',
+ '119': '☁️ ',
+ '122': '☁️ ',
+ '143': '☁️ ',
+ '176': '🌧️',
+ '179': '🌧️',
+ '182': '🌧️',
+ '185': '🌧️',
+ '200': '⛈️ ',
+ '227': '🌨️',
+ '230': '🌨️',
+ '248': '☁️ ',
+ '260': '☁️ ',
+ '263': '🌧️',
+ '266': '🌧️',
+ '281': '🌧️',
+ '284': '🌧️',
+ '293': '🌧️',
+ '296': '🌧️',
+ '299': '🌧️',
+ '302': '🌧️',
+ '305': '🌧️',
+ '308': '🌧️',
+ '311': '🌧️',
+ '314': '🌧️',
+ '317': '🌧️',
+ '320': '🌨️',
+ '323': '🌨️',
+ '326': '🌨️',
+ '329': '❄️ ',
+ '332': '❄️ ',
+ '335': '❄️ ',
+ '338': '❄️ ',
+ '350': '🌧️',
+ '353': '🌧️',
+ '356': '🌧️',
+ '359': '🌧️',
+ '362': '🌧️',
+ '365': '🌧️',
+ '368': '🌧️',
+ '371': '❄️',
+ '374': '🌨️',
+ '377': '🌨️',
+ '386': '🌨️',
+ '389': '🌨️',
+ '392': '🌧️',
+ '395': '❄️ '
+}
+
+data = {}
+
+try:
+ weather = requests.get("https://wttr.in/?format=j1").json()
+except Exception:
+ data['text'] = '🪐'
+ data['tooltip'] = 'Weather data unavailable'
+ print(json.dumps(data))
+ exit()
+
+def format_time(time):
+ return time.replace("00", "").zfill(2)
+
+
+def format_temp(temp):
+ return (hour['FeelsLikeC']+"°").ljust(3)
+
+
+def format_chances(hour):
+ chances = {
+ "chanceoffog": "Fog",
+ "chanceoffrost": "Frost",
+ "chanceofovercast": "Overcast",
+ "chanceofrain": "Rain",
+ "chanceofsnow": "Snow",
+ "chanceofsunshine": "Sunshine",
+ "chanceofthunder": "Thunder",
+ "chanceofwindy": "Wind"
+ }
+
+ conditions = []
+ for event in chances.keys():
+ if int(hour[event]) > 0:
+ conditions.append(chances[event]+" "+hour[event]+"%")
+ return ", ".join(conditions)
+
+tempint = int(weather['current_condition'][0]['FeelsLikeC'])
+extrachar = ''
+if tempint > 0 and tempint < 10:
+ extrachar = '+'
+
+
+data['text'] = ' '+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \
+ extrachar+weather['current_condition'][0]['FeelsLikeC']+"°"
+
+data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°\n"
+data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}°\n"
+data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n"
+data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
+for i, day in enumerate(weather['weather']):
+ data['tooltip'] += f"\n"
+ if i == 0:
+ data['tooltip'] += "Today, "
+ if i == 1:
+ data['tooltip'] += "Tomorrow, "
+ data['tooltip'] += f"{day['date']}\n"
+ data['tooltip'] += f"⬆️ {day['maxtempC']}° ⬇️ {day['mintempC']}° "
+ data['tooltip'] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n"
+ for hour in day['hourly']:
+ if i == 0:
+ if int(format_time(hour['time'])) < datetime.now().hour-2:
+ continue
+ data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
+
+
+print(json.dumps(data))
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 00000000..d268ffe0
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,301 @@
+* {
+ font-family: JetBrainsMono Nerd Font;
+ font-size: 13px;
+ min-height: 0;
+}
+
+/* General Settings */
+#custom-clipboard,
+#custom-notifications,
+#custom-arch,
+#custom-gpu-temp,
+#custom-gpu-usage,
+#custom-updates,
+#mode,
+#cpu,
+#memory,
+#temperature,
+#custom-music,
+#custom-fans,
+#clock,
+#idle_inhibitor,
+#language,
+#pulseaudio,
+#backlight,
+#battery,
+#network,
+#tray,
+#custom-power-menu,
+#custom-weather,
+#custom-weather.severe,
+#custom-weather.sunnyDay,
+#custom-weather.clearNight,
+#custom-weather.cloudyFoggyDay,
+#custom-weather.cloudyFoggyNight,
+#custom-weather.rainyDay,
+#custom-weather.rainyNight,
+#custom-weather.showyIcyDay,
+#custom-weather.snowyIcyNight,
+#custom-weather.default {
+ background-color: #24273a;
+ padding: 0 10px;
+ margin: 2px 4px 5px 4px;
+ border-radius: 15px;
+ border: 2px solid rgba(183, 189, 248, 0.5);
+ box-shadow: 3px 3px 1px 1px #101010;
+ background-clip: padding-box;
+
+}
+
+/* Window */
+window#waybar {
+ color: #cad3f5;
+ background: transparent;
+ color: #cdd6f4;
+
+}
+
+window#waybar.hidded {
+ opacity: 0.0;
+}
+
+/* Workspaces */
+#workspaces * {
+ font-size: 13px;
+}
+#workspaces button label{
+ color: #b7bdf8 ;
+ font-weight: bolder;
+ transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.68);
+}
+
+#workspaces button.active label{
+ color: #24273a;
+ font-weight: bolder;
+}
+
+#workspaces button.urgent label{
+ color: #e06c75;
+ font-weight: bolder;
+}
+
+#workspaces{
+ background-color: #24273a;
+ padding: 0 10px;
+ margin: 2px 4px 5px 4px;
+ border-radius: 15px;
+ border: 2px solid rgba(183, 189, 248, 0.5);
+ box-shadow: 3px 3px 1px 1px #101010;
+ background-clip: padding-box;
+}
+
+#workspaces button{
+ box-shadow: rgba(0, 0, 0, 0.116) 2 2 5 2px;
+ background-color: #24273a ;
+ border-radius: 15px;
+ margin-right: 3px;
+ margin-left: 3px;
+ padding: 0 5px;
+ font-weight: bolder;
+ min-width: 20px;
+ color: #24273a;
+ transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.68);
+}
+
+#workspaces button.active{
+ padding-right: 6px;
+ padding-left: 6px;
+ box-shadow: rgba(0, 0, 0, 0.288) 2 2 5 2px;
+ padding-bottom: 3px;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ background: #cad3f5;
+ background-size: 100% 200%;
+ animation: gradient_f 20s ease-in-out infinite;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #c678dd;
+}
+
+#workspaces button:hover {
+ background-color: #363a4f;
+}
+
+#workspaces button.focused:hover {
+ background-color: #24273a;
+}
+
+#workspaces button.focused:hover label{
+ color: #cad3f5;
+}
+
+/* Individual Modules */
+#cpu {
+ background-color: #24273a;
+ color: #8aadf4;
+ transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.68);
+}
+
+#memory {
+ background-color: #24273a;
+ color: #a6da95;
+ transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.68);
+}
+
+#custom-notifications {
+ background-color: #24273a;
+ color: #eed49f;
+}
+
+#custom-updates {
+ background-color: #24273a;
+ color: #8bd5ca;
+}
+
+#custom-gpu-temp {
+ background-color: #24273a;
+ color: #f5a97f;
+}
+
+#custom-gpu-usage {
+ background-color: #24273a;
+ color: #8bd5ca;
+}
+
+#custom-power-menu {
+ color: #e06c75;
+}
+
+#temperature {
+ background-color: #24273a;
+ color: #f5a97f;
+}
+
+#temperature.critical {
+ background-color: #ed8796;
+ color: #1e2030;
+}
+
+#custom-music {
+ background: #b7bdf8;
+ /*background: radial-gradient(circle, rgb(139, 213, 202) 0%, rgb(145, 215, 227) 21%, rgb(238, 212, 159) 34%, rgb(139, 213, 202) 35%, rgb(166, 218, 149) 59%, rgb(145, 215, 227) 74%, rgb(166, 218, 149) 74%, rgb(125, 196, 228) 100%, rgb(245, 169, 127) 0%, rgb(238, 153, 160) 30%, rgb(237, 135, 150) 48%, rgb(245, 169, 127) 77%, rgb(238, 212, 159) 100%, rgb(145, 215, 227) 0%, rgb(125, 196, 228) 19%, rgb(138, 173, 244) 43%, rgb(145, 215, 227) 56%, rgb(125, 196, 228) 80%, rgb(183, 189, 248) 100%);*/
+ background-size: 400% 400%;
+ animation: gradient_f 14s ease infinite;
+ text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.377);
+ font-weight: bold;
+ color: #1e2030;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#custom-fans {
+ color: #98c379;
+}
+
+#clock {
+ color: #b7bdf8;
+}
+
+#idle_inhibitor {
+ color: #abb2bf;
+}
+
+#idle_inhibitor.activated {
+ background-color: #abb2bf;
+ color: #1e222a;
+}
+
+#language {
+ color: #56b6c2;
+}
+
+#pulseaudio {
+ background-color: #24273a;
+ color: #f5bde6;
+}
+
+#pulseaudio.muted {
+ background-color: #ed8796;
+ color: #1e222a;
+}
+
+#backlight {
+ color: #61afef;
+}
+
+#battery {
+ color: #98c379;
+}
+
+#battery.charging, #battery.plugged {
+ background-color: #98c379;
+ color: #1e222a;
+}
+
+#battery.critical:not(.charging) {
+ background-color: #e06c75;
+ color: #1e222a;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#network {
+ background-color: #24273a;
+ color: #8bd5ca
+}
+
+#network.disconnected {
+ background-color: #ed8796;
+ color: #1e222a;
+}
+
+#custom-notifications {
+ padding-right: 10px;
+}
+
+/* Animation Keyframes */
+@keyframes blink {
+ to {
+ background-color: #24273a;
+ color: #e06c75;
+ }
+}
+
+@keyframes gradient {
+ 0% {
+ background-position: 0% 50%;
+ }
+
+ 50% {
+ background-position: 100% 30%;
+ }
+
+ 100% {
+ background-position: 0% 50%;
+ }
+}
+
+@keyframes gradient_f {
+ 0% {
+ background-position: 0% 200%;
+ }
+
+ 50% {
+ background-position: 200% 0%;
+ }
+
+ 100% {
+ background-position: 400% 200%;
+ }
+}
+
+@keyframes gradient_f_nh {
+ 0% {
+ background-position: 0% 200%;
+ }
+
+ 100% {
+ background-position: 200% 200%;
+ }
+}
\ No newline at end of file
diff --git a/.config/wleave/actions b/.config/wleave/actions
new file mode 100755
index 00000000..43418873
--- /dev/null
+++ b/.config/wleave/actions
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+if [[ "$?" == 0 ]]; then
+ sleep 0.25s
+ if [[ "$1" == 'shutdown' ]]; then
+ systemctl poweroff
+ elif [[ "$1" == 'reboot' ]]; then
+ systemctl reboot
+ elif [[ "$1" == 'hibernate' ]]; then
+ playerctl --all-players stop
+ pkill wleave
+ sleep 0.5s
+ ~/.config/sway/lock.sh
+ sleep 0.5s
+ systemctl suspend-then-hibernate
+ elif [[ "$1" == 'lock' ]]; then
+ pkill wleave
+ sleep 0.5s
+ ~/.config/sway/lock.sh
+ elif [[ "$1" == 'suspend' ]]; then
+ playerctl --all-players stop
+ pkill wleave
+ sleep 0.5s
+ ~/.config/sway/lock.sh
+ sleep 0.5s
+ systemctl suspend
+ elif [[ "$1" == 'logout' ]]; then
+ hyprctl dispatch exit none
+ fi
+else
+ exit
+fi
diff --git a/.config/wleave/icons/hibernate.png b/.config/wleave/icons/hibernate.png
new file mode 100644
index 00000000..8304232e
Binary files /dev/null and b/.config/wleave/icons/hibernate.png differ
diff --git a/.config/wleave/icons/lock.png b/.config/wleave/icons/lock.png
new file mode 100644
index 00000000..e00785b3
Binary files /dev/null and b/.config/wleave/icons/lock.png differ
diff --git a/.config/wleave/icons/logout.png b/.config/wleave/icons/logout.png
new file mode 100644
index 00000000..6325a829
Binary files /dev/null and b/.config/wleave/icons/logout.png differ
diff --git a/.config/wleave/icons/reboot.png b/.config/wleave/icons/reboot.png
new file mode 100644
index 00000000..67e2b0af
Binary files /dev/null and b/.config/wleave/icons/reboot.png differ
diff --git a/.config/wleave/icons/shutdown.png b/.config/wleave/icons/shutdown.png
new file mode 100644
index 00000000..8055dd43
Binary files /dev/null and b/.config/wleave/icons/shutdown.png differ
diff --git a/.config/wleave/icons/suspend.png b/.config/wleave/icons/suspend.png
new file mode 100644
index 00000000..01176f9a
Binary files /dev/null and b/.config/wleave/icons/suspend.png differ
diff --git a/.config/wleave/launch.sh b/.config/wleave/launch.sh
new file mode 100755
index 00000000..29b0921a
--- /dev/null
+++ b/.config/wleave/launch.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+LAYOUT="$HOME/.config/wleave/layout"
+STYLE="$HOME/.config/wleave/style.css"
+
+if [[ ! $(pidof wlogout) ]]; then
+ wleave --layout ${LAYOUT} --css ${STYLE} \
+ --buttons-per-row 3 \
+ --column-spacing 50 \
+ --row-spacing 50 \
+ --margin-top 290 \
+ --margin-bottom 290 \
+ --margin-left 300 \
+ --margin-right 300
+else
+ pkill wleave
+fi
diff --git a/.config/wleave/layout b/.config/wleave/layout
new file mode 100755
index 00000000..3362855f
--- /dev/null
+++ b/.config/wleave/layout
@@ -0,0 +1,36 @@
+{
+ "label": "lock",
+ "text": "",
+ "action": "~/.config/wleave/actions lock",
+ "keybind": "l"
+}
+{
+ "label": "hibernate",
+ "text": "",
+ "action": "~/.config/wleave/actions hibernate",
+ "keybind": "h"
+}
+{
+ "label": "suspend",
+ "text": "",
+ "action": "~/.config/wleave/actions suspend",
+ "keybind": "u"
+}
+{
+ "label": "reboot",
+ "text": "",
+ "action": "~/.config/wleave/actions reboot",
+ "keybind": "r"
+}
+{
+ "label": "logout",
+ "text": "",
+ "action": "~/.config/wleave/actions logout",
+ "keybind": "e"
+}
+{
+ "label": "shutdown",
+ "text": "",
+ "action": "~/.config/wleave/actions shutdown",
+ "keybind": "s"
+}
\ No newline at end of file
diff --git a/.config/wleave/style.css b/.config/wleave/style.css
new file mode 100644
index 00000000..e7a3abd3
--- /dev/null
+++ b/.config/wleave/style.css
@@ -0,0 +1,62 @@
+/** ********** Fonts ********** **/
+* {
+ font-family: "CaskaydiaCove Nerd Font", "Lato", sans-serif;
+ font-size: 15px;
+ font-weight: bold;
+}
+
+/** ********** Main Window ********** **/
+window {
+ background-color: transparent;
+}
+
+/** ********** Buttons ********** **/
+button {
+ background-color: #24273a;
+ color: #cdd6f4;
+ border: 2px solid #b7bdf8;
+ border-radius: 20px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 25%;
+ transition: all 0.2s ease-in-out;
+ background-color: #24273a;
+ padding: 0 10px;
+ margin: 2px 4px 5px 4px;
+ border-radius: 15px;
+ border: 2px solid rgba(183, 189, 248, 0.5);
+ box-shadow: 3px 3px 1px 1px #101010;
+ background-clip: padding-box;
+}
+
+
+button:hover {
+ color: #FFFFFF;
+ background-color: #363a4f;
+ outline-style: none;
+}
+
+/** ********** Icons ********** **/
+#lock {
+ background-image: image(url("icons/lock.png"), url("/usr/share/wlogout/icons/lock.png"));
+}
+
+#logout {
+ background-image: image(url("icons/logout.png"), url("/usr/share/wlogout/icons/logout.png"));
+}
+
+#suspend {
+ background-image: image(url("icons/suspend.png"), url("/usr/share/wlogout/icons/suspend.png"));
+}
+
+#hibernate {
+ background-image: image(url("icons/hibernate.png"), url("/usr/share/wlogout/icons/hibernate.png"));
+}
+
+#shutdown {
+ background-image: image(url("icons/shutdown.png"), url("/usr/share/wlogout/icons/shutdown.png"));
+}
+
+#reboot {
+ background-image: image(url("icons/reboot.png"), url("/usr/share/wlogout/icons/reboot.png"));
+}
diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc
new file mode 100644
index 00000000..f7aae344
--- /dev/null
+++ b/.config/zathura/zathurarc
@@ -0,0 +1,66 @@
+# Open document in fit-width mode by default
+set adjust-open "best-fit"
+
+# One page per row by default
+set pages-per-row 1
+
+# Stop at page boundries
+set scroll-page-aware "true"
+set scroll-full-overlap 0.01
+set scroll-step 100
+
+# Zoom settings
+set zoom-min 10
+set guioptions ""
+
+set render-loading "false"
+unmap f
+map f toggle_fullscreen
+unmap a
+map a toggle_statusbar
+map [fullscreen] f toggle_fullscreen
+
+# Colors
+set selection-clipboard clipboard
+
+set default-fg "#CAD3F5"
+set default-bg "#24273A"
+
+set completion-bg "#363A4F"
+set completion-fg "#CAD3F5"
+set completion-highlight-bg "#575268"
+set completion-highlight-fg "#CAD3F5"
+set completion-group-bg "#363A4F"
+set completion-group-fg "#8AADF4"
+
+set statusbar-fg "#CAD3F5"
+set statusbar-bg "#363A4F"
+
+set notification-bg "#363A4F"
+set notification-fg "#CAD3F5"
+set notification-error-bg "#363A4F"
+set notification-error-fg "#ED8796"
+set notification-warning-bg "#363A4F"
+set notification-warning-fg "#FAE3B0"
+
+set inputbar-fg "#CAD3F5"
+set inputbar-bg "#363A4F"
+
+set recolor-lightcolor "#24273A"
+set recolor-darkcolor "#CAD3F5"
+
+set index-fg "#CAD3F5"
+set index-bg "#24273A"
+set index-active-fg "#CAD3F5"
+set index-active-bg "#363A4F"
+
+set render-loading-bg "#24273A"
+set render-loading-fg "#CAD3F5"
+
+set highlight-color "#575268"
+set highlight-fg "#F5BDE6"
+set highlight-active-color "#F5BDE6"
+
+set recolor "true"
+set recolor-reverse-video "true"
+set recolor-keephue "true"
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 00000000..eb6f9161
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,130 @@
+# If you come from bash you might have to change your $PATH.
+# export PATH=$HOME/bin:/usr/local/bin:$PATH
+
+# Path to your oh-my-zsh installation.
+export ZSH="$HOME/.oh-my-zsh"
+
+# Set name of the theme to load --- if set to "random", it will
+# load a random theme each time oh-my-zsh is loaded, in which case,
+# to know which specific one was loaded, run: echo $RANDOM_THEME
+# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
+ZSH_THEME="robbyrussell"
+
+# source ~/.oh-my-zsh/plugins/zsh-autocomplete/zsh-autocomplete.plugin.zsh
+# source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+
+# Set list of themes to pick from when loading at random
+# Setting this variable when ZSH_THEME=random will cause zsh to load
+# a theme from this variable instead of looking in $ZSH/themes/
+# If set to an empty array, this variable will have no effect.
+# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
+
+# Uncomment the following line to use case-sensitive completion.
+# CASE_SENSITIVE="true"
+
+# Uncomment the following line to use hyphen-insensitive completion.
+# Case-sensitive completion must be off. _ and - will be interchangeable.
+# HYPHEN_INSENSITIVE="true"
+
+# Uncomment one of the following lines to change the auto-update behavior
+# zstyle ':omz:update' mode disabled # disable automatic updates
+# zstyle ':omz:update' mode auto # update automatically without asking
+# zstyle ':omz:update' mode reminder # just remind me to update when it's time
+
+# Uncomment the following line to change how often to auto-update (in days).
+# zstyle ':omz:update' frequency 13
+
+# Uncomment the following line if pasting URLs and other text is messed up.
+# DISABLE_MAGIC_FUNCTIONS="true"
+
+# Uncomment the following line to disable colors in ls.
+# DISABLE_LS_COLORS="true"
+
+# Uncomment the following line to disable auto-setting terminal title.
+# DISABLE_AUTO_TITLE="true"
+
+# Uncomment the following line to enable command auto-correction.
+# ENABLE_CORRECTION="true"
+
+# Uncomment the following line to display red dots whilst waiting for completion.
+# You can also set it to another string to have that shown instead of the default red dots.
+# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
+# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
+# COMPLETION_WAITING_DOTS="true"
+
+# Uncomment the following line if you want to disable marking untracked files
+# under VCS as dirty. This makes repository status check for large repositories
+# much, much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="true"
+
+# Uncomment the following line if you want to change the command execution time
+# stamp shown in the history command output.
+# You can set one of the optional three formats:
+# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
+# or set a custom format using the strftime function format specifications,
+# see 'man strftime' for details.
+# HIST_STAMPS="mm/dd/yyyy"
+
+# Would you like to use another custom folder than $ZSH/custom?
+# ZSH_CUSTOM=/path/to/new-custom-folder
+
+# Which plugins would you like to load?
+# Standard plugins can be found in $ZSH/plugins/
+# Custom plugins may be added to $ZSH_CUSTOM/plugins/
+# Example format: plugins=(rails git textmate ruby lighthouse)
+# Add wisely, as too many plugins slow down shell startup.
+plugins=(git)
+
+source $ZSH/oh-my-zsh.sh
+
+# User configuration
+
+# export MANPATH="/usr/local/man:$MANPATH"
+
+# You may need to manually set your language environment
+export LANG=en_US.UTF-8
+
+# Preferred editor for local and remote sessions
+if [[ -n $SSH_CONNECTION ]]; then
+ export EDITOR='lvim'
+ else
+ export EDITOR='lvim'
+ fi
+
+# Compilation flags
+# export ARCHFLAGS="-arch x86_64"
+
+# Set personal aliases, overriding those provided by oh-my-zsh libs,
+# plugins, and themes. Aliases can be placed here, though oh-my-zsh
+# users are encouraged to define aliases within the ZSH_CUSTOM folder.
+# For a full list of active aliases, run `alias`.
+#
+# Example aliases
+# alias zshconfig="mate ~/.zshrc"
+# alias ohmyzsh="mate ~/.oh-my-zsh"
+/home/matt/.config/tty/macchiato.sh
+
+# Some aliases
+alias code='vscodium'
+alias ls='exa --long --header -a'
+alias bruh='genact -s 4'
+alias matrix='unimatrix'
+alias q='exit'
+alias install='sudo pacman -S '
+alias uninstall='sudo pacman -R '
+alias yayinstall='yay -S '
+alias yayuninstall='yay -R '
+alias update='sudo pacman -Syu'
+alias yayupdate='yay -Syu'
+alias search='pacseek'
+alias gpt='tgpt'
+alias clock='tty-clock -sbc'
+alias l='xplr'
+alias sysproc='sysz'
+
+PATH=$PATH:/home/matt/.local/bin
+TERMINAL=$TERMINAL:/usr/bin/kitty
+export EDITOR=vscodium
+
+
+neofetch