Compare commits
2
Commits
main
..
f7e6fc79ff
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7e6fc79ff | ||
|
|
70b02662aa |
@@ -1,4 +1,5 @@
|
|||||||
[general]
|
[general]
|
||||||
|
enable-osc8=true
|
||||||
log-file=~/aerc.log
|
log-file=~/aerc.log
|
||||||
|
|
||||||
[ui]
|
[ui]
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ inline_height = 20
|
|||||||
## the maximum number of lines the interface should take up
|
## the maximum number of lines the interface should take up
|
||||||
## when atuin is invoked from a shell up-key binding
|
## when atuin is invoked from a shell up-key binding
|
||||||
## the accepted values are identical to those of "inline_height"
|
## the accepted values are identical to those of "inline_height"
|
||||||
inline_height_shell_up_key_binding = 20
|
inline_height_shell_up_key_binding = 5
|
||||||
|
|
||||||
## Invert the UI - put the search bar at the top , Default to `false`
|
## Invert the UI - put the search bar at the top , Default to `false`
|
||||||
# invert = false
|
# invert = false
|
||||||
@@ -108,7 +108,11 @@ ctrl_n_shortcuts = true
|
|||||||
## with ^ or end with $, they'll match anywhere in the command.
|
## with ^ or end with $, they'll match anywhere in the command.
|
||||||
## For details on the supported regular expression syntax, see
|
## For details on the supported regular expression syntax, see
|
||||||
## https://docs.rs/regex/latest/regex/#syntax
|
## https://docs.rs/regex/latest/regex/#syntax
|
||||||
history_filter = [ "^exit$", "^ .*", "_secret=" ]
|
history_filter = [
|
||||||
|
"^exit$",
|
||||||
|
"^ .*",
|
||||||
|
"_secret="
|
||||||
|
]
|
||||||
|
|
||||||
## prevent commands run with cwd matching any of these regexes from being written
|
## prevent commands run with cwd matching any of these regexes from being written
|
||||||
## to history. Note that these regular expressions are unanchored, i.e. if they don't
|
## to history. Note that these regular expressions are unanchored, i.e. if they don't
|
||||||
@@ -122,7 +126,7 @@ history_filter = [ "^exit$", "^ .*", "_secret=" ]
|
|||||||
## Configure the maximum height of the preview to show.
|
## Configure the maximum height of the preview to show.
|
||||||
## Useful when you have long scripts in your history that you want to distinguish
|
## Useful when you have long scripts in your history that you want to distinguish
|
||||||
## by more than the first few lines.
|
## by more than the first few lines.
|
||||||
max_preview_height = 20
|
# max_preview_height = 4
|
||||||
|
|
||||||
## Configure whether or not to show the help row, which includes the current Atuin
|
## Configure whether or not to show the help row, which includes the current Atuin
|
||||||
## version (and whether an update is available), a keymap hint, and the total
|
## version (and whether an update is available), a keymap hint, and the total
|
||||||
@@ -203,10 +207,14 @@ keymap_mode = "auto"
|
|||||||
# ]
|
# ]
|
||||||
|
|
||||||
## Set commands that should be totally stripped and ignored from stats
|
## Set commands that should be totally stripped and ignored from stats
|
||||||
# common_prefix = [ "sudo" ]
|
# common_prefix = ["sudo"]
|
||||||
|
|
||||||
## Set commands that will be completely ignored from stats
|
## Set commands that will be completely ignored from stats
|
||||||
# ignored_commands = [ "cd", "ls", "vi" ]
|
# ignored_commands = [
|
||||||
|
# "cd",
|
||||||
|
# "ls",
|
||||||
|
# "vi"
|
||||||
|
# ]
|
||||||
|
|
||||||
[keys]
|
[keys]
|
||||||
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
|
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
|
||||||
@@ -271,6 +279,3 @@ records = true
|
|||||||
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
|
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
|
||||||
## Default filter mode can be overridden with the filter_mode setting.
|
## Default filter mode can be overridden with the filter_mode setting.
|
||||||
# filters = [ "global", "host", "session", "workspace", "directory" ]
|
# filters = [ "global", "host", "session", "workspace", "directory" ]
|
||||||
|
|
||||||
[ui]
|
|
||||||
columns = [ "datetime", "duration", "host", "command" ]
|
|
||||||
|
|||||||
+6
-20
@@ -1,11 +1,11 @@
|
|||||||
#? Config file for btop v.1.4.7
|
#? Config file for btop v.1.4.6
|
||||||
|
|
||||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
#* 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"
|
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||||
color_theme = "Default"
|
color_theme = "Default"
|
||||||
|
|
||||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||||
theme_background = false
|
theme_background = true
|
||||||
|
|
||||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||||
truecolor = true
|
truecolor = true
|
||||||
@@ -14,11 +14,6 @@ truecolor = true
|
|||||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
#* 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
|
force_tty = false
|
||||||
|
|
||||||
#* Option to disable presets. Either the default preset, custom presets, or all presets.
|
|
||||||
#* "Off" All presets are enabled.
|
|
||||||
#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
|
|
||||||
disable_presets = "Off"
|
|
||||||
|
|
||||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
#* 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.
|
#* 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.
|
#* Use whitespace " " as separator between different presets.
|
||||||
@@ -27,10 +22,7 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
|
|||||||
|
|
||||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
#* 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.
|
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||||
vim_keys = true
|
vim_keys = false
|
||||||
|
|
||||||
#* Disable all mouse events.
|
|
||||||
disable_mouse = false
|
|
||||||
|
|
||||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||||
rounded_corners = true
|
rounded_corners = true
|
||||||
@@ -61,14 +53,14 @@ graph_symbol_net = "default"
|
|||||||
graph_symbol_proc = "default"
|
graph_symbol_proc = "default"
|
||||||
|
|
||||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||||
shown_boxes = "gpu0 cpu mem net proc"
|
shown_boxes = "cpu mem net proc gpu0"
|
||||||
|
|
||||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||||
update_ms = 2000
|
update_ms = 2000
|
||||||
|
|
||||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
#* 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.
|
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||||
proc_sorting = "memory"
|
proc_sorting = "cpu lazy"
|
||||||
|
|
||||||
#* Reverse sorting order, True or False.
|
#* Reverse sorting order, True or False.
|
||||||
proc_reversed = false
|
proc_reversed = false
|
||||||
@@ -100,9 +92,6 @@ proc_left = false
|
|||||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||||
proc_filter_kernel = false
|
proc_filter_kernel = false
|
||||||
|
|
||||||
#* Should the process list follow the selected process when detailed view is open.
|
|
||||||
proc_follow_detailed = true
|
|
||||||
|
|
||||||
#* In tree-view, always accumulate child process resources in the parent process.
|
#* In tree-view, always accumulate child process resources in the parent process.
|
||||||
proc_aggregate = false
|
proc_aggregate = false
|
||||||
|
|
||||||
@@ -219,9 +208,6 @@ io_graph_combined = false
|
|||||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||||
io_graph_speeds = ""
|
io_graph_speeds = ""
|
||||||
|
|
||||||
#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
|
|
||||||
swap_upload_download = false
|
|
||||||
|
|
||||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||||
net_download = 100
|
net_download = 100
|
||||||
|
|
||||||
@@ -264,7 +250,7 @@ rsmi_measure_pcie_speeds = true
|
|||||||
#* Horizontally mirror the GPU graph.
|
#* Horizontally mirror the GPU graph.
|
||||||
gpu_mirror_graph = true
|
gpu_mirror_graph = true
|
||||||
|
|
||||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
|
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||||
shown_gpus = "nvidia amd intel"
|
shown_gpus = "nvidia amd intel"
|
||||||
|
|
||||||
#* Custom gpu0 model name, empty string to disable.
|
#* Custom gpu0 model name, empty string to disable.
|
||||||
|
|||||||
@@ -0,0 +1,144 @@
|
|||||||
|
# Whether to enable mouse or not.
|
||||||
|
mouse = true
|
||||||
|
# The program to open when the `keys.message_input.editor` keymap is pressed. Set the value to `"default"` to use `$EDITOR`.
|
||||||
|
editor = "default"
|
||||||
|
|
||||||
|
# "default" (unknown), "online", "dnd", "idle", "invisible", "offline"
|
||||||
|
status = "default"
|
||||||
|
|
||||||
|
# Whether to parse and render markdown in messages or not.
|
||||||
|
markdown = true
|
||||||
|
hide_blocked_users = true
|
||||||
|
show_attachment_links = true
|
||||||
|
|
||||||
|
# Use autocomplete_limit = 0 to disable autocompleting mentions
|
||||||
|
# Note: tab completion will still work, but it won't show any list.
|
||||||
|
autocomplete_limit = 20
|
||||||
|
|
||||||
|
# The number of messages to fetch when a text-based channel is selected from guilds tree. The minimum and maximum value is 0 and 100, respectively.
|
||||||
|
messages_limit = 50
|
||||||
|
|
||||||
|
[timestamps]
|
||||||
|
enabled = true
|
||||||
|
# https://pkg.go.dev/time#Layout
|
||||||
|
format = "01-02 15:04:05 (Z07:00)"
|
||||||
|
|
||||||
|
[notifications]
|
||||||
|
enabled = true
|
||||||
|
# The duration of the sound. Set the value to `0` to use default duration. This is only supported on Unix and Windows.
|
||||||
|
duration = 0
|
||||||
|
[notifications.sound]
|
||||||
|
enabled = true
|
||||||
|
only_on_ping = true
|
||||||
|
|
||||||
|
# Global shortcuts
|
||||||
|
# Esc: Reset message selection or close the channel selection popup.
|
||||||
|
[keys]
|
||||||
|
focus_guilds_tree = "Ctrl+G"
|
||||||
|
focus_messages_list = "Ctrl+T"
|
||||||
|
focus_message_input = "Ctrl+Space"
|
||||||
|
# Cycle focus between the widgets.
|
||||||
|
focus_previous = "Ctrl+H"
|
||||||
|
focus_next = "Ctrl+L"
|
||||||
|
# Hide/show the guilds tree.
|
||||||
|
toggle_guilds_tree = "Ctrl+B"
|
||||||
|
quit = "Ctrl+C"
|
||||||
|
# Log out and remove the authentication token from keyring.
|
||||||
|
# Requires re-login upon restart.
|
||||||
|
logout = "Ctrl+D"
|
||||||
|
|
||||||
|
# Only while focusing on the guilds tree
|
||||||
|
[keys.guilds_tree]
|
||||||
|
select_previous = "Rune[k]"
|
||||||
|
select_next = "Rune[j]"
|
||||||
|
select_first = "Rune[g]"
|
||||||
|
select_last = "Rune[G]"
|
||||||
|
# Select the currently highlighted text-based channel or expand a guild or channel.
|
||||||
|
select_current = "Enter"
|
||||||
|
yank_id = "Rune[i]"
|
||||||
|
collapse_parent_node = "Rune[-]"
|
||||||
|
move_to_parent_node = "Rune[p]"
|
||||||
|
|
||||||
|
# Only while focusing on sent messages
|
||||||
|
[keys.messages_list]
|
||||||
|
select_previous = "Rune[k]"
|
||||||
|
select_next = "Rune[j]"
|
||||||
|
select_first = "Rune[g]"
|
||||||
|
select_last = "Rune[G]"
|
||||||
|
# Select the message reference (reply) of the selected channel.
|
||||||
|
select_reply = "Rune[s]"
|
||||||
|
# Reply to the selected message.
|
||||||
|
reply = "Rune[r]"
|
||||||
|
# Reply (with mention) to the selected message.
|
||||||
|
reply_mention = "Rune[R]"
|
||||||
|
cancel = "Esc"
|
||||||
|
edit = "Rune[e]"
|
||||||
|
delete = "Rune[D]"
|
||||||
|
delete_confirm = "Rune[d]"
|
||||||
|
# Open the selected message's attachments or hyperlinks in the message
|
||||||
|
# using the default browser application.
|
||||||
|
open = "Rune[o]"
|
||||||
|
# Yank (copy) the selected message's content/url/id.
|
||||||
|
yank_content = "Rune[y]"
|
||||||
|
yank_url = "Rune[u]"
|
||||||
|
yank_id = "Rune[i]"
|
||||||
|
|
||||||
|
# Only while typing a message
|
||||||
|
# Alt+Enter: Insert a new line to the current text.
|
||||||
|
[keys.message_input]
|
||||||
|
# paste from clipboard (supports both text and images)
|
||||||
|
paste = "Ctrl+V"
|
||||||
|
send = "Enter"
|
||||||
|
# Remove existing text or cancel reply.
|
||||||
|
cancel = "Esc"
|
||||||
|
# Complete usernames when mentioning
|
||||||
|
tab_complete = "Tab"
|
||||||
|
|
||||||
|
open_editor = "Ctrl+E"
|
||||||
|
open_file_picker = "Ctrl+\\"
|
||||||
|
|
||||||
|
[keys.mentions_list]
|
||||||
|
up = "Ctrl+P"
|
||||||
|
down = "Ctrl+N"
|
||||||
|
|
||||||
|
# style = { foreground = "", background = "", attributes = "" or [""] }
|
||||||
|
[theme.title]
|
||||||
|
alignment = "left" # `"left"`, `"center"`, or `"right"`.
|
||||||
|
|
||||||
|
normal_style = { attributes = "dim" }
|
||||||
|
active_style = { foreground = "green", attributes = "bold" }
|
||||||
|
|
||||||
|
[theme.border]
|
||||||
|
enabled = true
|
||||||
|
padding = [0, 0, 1, 1] # [top, bottom, left, right]
|
||||||
|
|
||||||
|
normal_style = { attributes = "dim" }
|
||||||
|
active_style = { foreground = "green", attributes = "bold" }
|
||||||
|
|
||||||
|
# `"hidden"`, `"plain"`, `"round"`, `"thick"`, or `"double"`.
|
||||||
|
normal_set = "round"
|
||||||
|
active_set = "round"
|
||||||
|
|
||||||
|
[theme.guilds_tree]
|
||||||
|
auto_expand_folders = true
|
||||||
|
# Give tree-like shape
|
||||||
|
graphics = true
|
||||||
|
graphics_color = "default"
|
||||||
|
|
||||||
|
[theme.messages_list]
|
||||||
|
reply_indicator = ">"
|
||||||
|
forwarded_indicator = "<"
|
||||||
|
|
||||||
|
mention_style = { foreground = "blue" }
|
||||||
|
emoji_style = { foreground = "green" }
|
||||||
|
url_style = { foreground = "blue" }
|
||||||
|
attachment_style = { foreground = "yellow" }
|
||||||
|
|
||||||
|
[theme.mentions_list]
|
||||||
|
# Note: width and height are capped to the avaliable space
|
||||||
|
# Minimum width
|
||||||
|
# 0 = make the list as wide as possible
|
||||||
|
min_width = 20
|
||||||
|
# Maximum height
|
||||||
|
# 0 = make the list as tall as needed
|
||||||
|
max_height = 0
|
||||||
+44
-3
@@ -32,9 +32,6 @@ dpi-aware=yes
|
|||||||
# selection-target=primary
|
# selection-target=primary
|
||||||
# workers=<number of logical CPUs>
|
# workers=<number of logical CPUs>
|
||||||
|
|
||||||
[main]
|
|
||||||
include=/usr/share/foot/themes/gruvbox
|
|
||||||
|
|
||||||
[environment]
|
[environment]
|
||||||
SYSTEMD_EDITOR=/usr/bin/nvim
|
SYSTEMD_EDITOR=/usr/bin/nvim
|
||||||
EDITOR=/usr/bin/nvim
|
EDITOR=/usr/bin/nvim
|
||||||
@@ -71,6 +68,50 @@ lines=100000
|
|||||||
# hide-when-typing=no
|
# hide-when-typing=no
|
||||||
# alternate-scroll-mode=yes
|
# alternate-scroll-mode=yes
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
alpha=0.9 # Adjust alpha to change transparency level
|
||||||
|
foreground=cdd6f4
|
||||||
|
background=1e1e2e
|
||||||
|
cursor=11111b f5e0dc
|
||||||
|
|
||||||
|
regular0=45475a
|
||||||
|
regular1=f38ba8
|
||||||
|
regular2=a6e3a1
|
||||||
|
regular3=f9e2af
|
||||||
|
regular4=89b4fa
|
||||||
|
regular5=f5c2e7
|
||||||
|
regular6=94e2d5
|
||||||
|
regular7=bac2de
|
||||||
|
|
||||||
|
bright0=585b70
|
||||||
|
bright1=f38ba8
|
||||||
|
bright2=a6e3a1
|
||||||
|
bright3=f9e2af
|
||||||
|
bright4=89b4fa
|
||||||
|
bright5=f5c2e7
|
||||||
|
bright6=94e2d5
|
||||||
|
bright7=a6adc8
|
||||||
|
|
||||||
|
## dimmed colors (see foot.ini(5) man page)
|
||||||
|
# dim0=<not set>
|
||||||
|
# ...
|
||||||
|
# dim7=<not-set>
|
||||||
|
|
||||||
|
## The remaining 256-color palette
|
||||||
|
16=fab387
|
||||||
|
17=f5e0dc
|
||||||
|
# ...
|
||||||
|
# 255 = <256-color palette #255>
|
||||||
|
|
||||||
|
# Misc colors
|
||||||
|
selection-foreground=cdd6f4
|
||||||
|
selection-background=414356
|
||||||
|
jump-labels=11111b fab387
|
||||||
|
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
|
||||||
|
search-box-no-match=11111b f38ba8
|
||||||
|
search-box-match=cdd6f4 313244
|
||||||
|
urls=89b4fa
|
||||||
|
|
||||||
[csd]
|
[csd]
|
||||||
# preferred=server
|
# preferred=server
|
||||||
size=0
|
size=0
|
||||||
|
|||||||
+13
-11
@@ -1,6 +1,6 @@
|
|||||||
# output=<not set>
|
# output=<not set>
|
||||||
font=JetBrainsMono-Regular:size=14
|
font=JetBrainsMono-Regular:size=14
|
||||||
dpi-aware=auto
|
dpi-aware=no
|
||||||
# use-bold=no
|
# use-bold=no
|
||||||
prompt="❯ "
|
prompt="❯ "
|
||||||
# placeholder=
|
# placeholder=
|
||||||
@@ -9,7 +9,7 @@ icon-theme=Qogir-dark
|
|||||||
# fields=filename,name,generic
|
# fields=filename,name,generic
|
||||||
# password-character=*
|
# password-character=*
|
||||||
# filter-desktop=no
|
# filter-desktop=no
|
||||||
match-mode=fzf
|
# match-mode=fzf
|
||||||
# sort-result=yes
|
# sort-result=yes
|
||||||
# match-counter=no
|
# match-counter=no
|
||||||
# delayed-filter-ms=300
|
# delayed-filter-ms=300
|
||||||
@@ -43,15 +43,17 @@ exit-on-keyboard-focus-loss=no
|
|||||||
# match-workers=<number of logical CPUs>
|
# match-workers=<number of logical CPUs>
|
||||||
|
|
||||||
[colors]
|
[colors]
|
||||||
background=0a0a0aff
|
background=08052bdd
|
||||||
text=ffffffff
|
text=e3e3eaff
|
||||||
prompt=00e5ffff
|
prompt=ff7f7fff
|
||||||
input=ffffffff
|
# placeholder=ffd966ff
|
||||||
match=00e5ffff
|
input=ff7f7fff
|
||||||
selection-match=00e5ffff
|
match=FFE57Fff
|
||||||
selection=333333ff
|
selection-match=FFE57Fff
|
||||||
selection-text=ffffffff
|
selection=44475add
|
||||||
border=00e5ffff
|
selection-text=FFFFFFff
|
||||||
|
# counter=93a1a1ff
|
||||||
|
border=7f3fbf55
|
||||||
|
|
||||||
[border]
|
[border]
|
||||||
# width=1
|
# width=1
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
[Settings]
|
[Settings]
|
||||||
gtk-theme-name=Arc-Dark
|
gtk-theme-name=Arc-Dark
|
||||||
gtk-icon-theme-name=Qogir-Dark
|
gtk-icon-theme-name=Qogir-dark
|
||||||
gtk-font-name=Noto Sans 10
|
gtk-font-name=Noto Sans 10
|
||||||
gtk-cursor-theme-name=Qogir-Dark
|
gtk-cursor-theme-name=Qogir-dark
|
||||||
gtk-cursor-theme-size=20
|
gtk-cursor-theme-size=0
|
||||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
|
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
|
||||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||||
gtk-button-images=0
|
gtk-button-images=0
|
||||||
gtk-menu-images=0
|
gtk-menu-images=0
|
||||||
gtk-enable-event-sounds=0
|
gtk-enable-event-sounds=1
|
||||||
gtk-enable-input-feedback-sounds=0
|
gtk-enable-input-feedback-sounds=1
|
||||||
gtk-xft-antialias=1
|
gtk-xft-antialias=1
|
||||||
gtk-xft-hinting=1
|
gtk-xft-hinting=1
|
||||||
gtk-xft-hintstyle=hintslight
|
gtk-xft-hintstyle=hintmedium
|
||||||
gtk-xft-rgba=rgb
|
gtk-xft-rgba=rgb
|
||||||
gtk-application-prefer-dark-theme=1
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
[main]
|
[main]
|
||||||
gtk-theme-name=Adwaita-dark
|
gtk-theme=Arc-Dark
|
||||||
time-format=%H:%M
|
time-format=%H:%M
|
||||||
start-hidden=1
|
start-hidden=1
|
||||||
modules=powerbar-module
|
modules=userinfo-module;powerbar-module
|
||||||
|
|
||||||
[userinfo]
|
[userinfo]
|
||||||
round-image=true
|
round-image=true
|
||||||
@@ -13,7 +13,7 @@ under-clock=true
|
|||||||
show-labels=true
|
show-labels=true
|
||||||
linked-buttons=true
|
linked-buttons=true
|
||||||
reboot-command=systemctl reboot
|
reboot-command=systemctl reboot
|
||||||
poweroff-command=systemctl poweroff
|
poweroff-command=systemctl -i poweroff
|
||||||
suspend-command=systemctl suspend
|
suspend-command=systemctl suspend
|
||||||
userswitch-command=
|
userswitch-command=
|
||||||
logout-command=swaymsg exit
|
logout-command=swaymsg exit
|
||||||
|
|||||||
+16
-18
@@ -1,45 +1,43 @@
|
|||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.9);
|
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8)
|
||||||
border-radius: 0px;
|
|
||||||
}
|
}
|
||||||
window {
|
window {
|
||||||
background-image: url("EndeavourOS_Astronaut_SpaceWalk.png");
|
background-image: url("EndeavourOS_Astronaut_SpaceWalk.png");
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-color: #0a0a0a;
|
background-color: black;
|
||||||
}
|
}
|
||||||
#clock-label {
|
#clock-label {
|
||||||
font-family: JetBrainsMono;
|
font-family: JetBrainsMono;
|
||||||
font-size: 64px;
|
font-size: 64.0px;
|
||||||
color: #00e5ff;
|
|
||||||
}
|
}
|
||||||
#unlock-button {
|
#unlock-button {
|
||||||
background-color: rgba(10, 10, 10, 0.8);
|
background: none;
|
||||||
border: 2px solid #333333;
|
background-color: rgba(127, 63, 191, 0.4);
|
||||||
|
border: 2px solid rgba(127, 63, 191, 0.5);
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
color: #ffffff;
|
|
||||||
}
|
}
|
||||||
#unlock-button:hover {
|
#unlock-button:hover {
|
||||||
border-color: #00e5ff;
|
background-color: rgba(127, 63, 191, 0.9);
|
||||||
background-color: #000000;
|
|
||||||
}
|
}
|
||||||
#input-field {
|
#input-field {
|
||||||
background-color: rgba(0, 0, 0, 0.8);
|
border-radius: 10px;
|
||||||
border: 2px solid #00e5ff;
|
background-color: rgba(127, 127, 255, 0.1);
|
||||||
|
border: 2px solid rgba(127, 63, 191, 0.5);
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
padding-bottom: 5px;
|
padding-bottom: 5px;
|
||||||
color: #ffffff;
|
|
||||||
}
|
}
|
||||||
#powerbar-box button {
|
#powerbar-box button {
|
||||||
background-color: rgba(10, 10, 10, 0.8);
|
background: none;
|
||||||
border: 2px solid #333333;
|
background-color: rgba(127, 63, 191, 0.4);
|
||||||
padding: 6px;
|
border: 2px solid rgba(127, 63, 191, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 4px;
|
||||||
}
|
}
|
||||||
#powerbar-box button:hover {
|
#powerbar-box button:hover {
|
||||||
border-color: #00e5ff;
|
background-color: rgba(127, 63, 191, 0.9);
|
||||||
color: #00e5ff;
|
|
||||||
}
|
}
|
||||||
#input-label {
|
#input-label {
|
||||||
font-size: 0px;
|
font-size: 0px;
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
theme = "catppuccin_mocha"
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
bufferline = "multiple"
|
||||||
|
true-color = true
|
||||||
|
line-number = "relative"
|
||||||
|
rulers = [100]
|
||||||
|
insert-final-newline = false
|
||||||
|
cursorline = true
|
||||||
|
|
||||||
|
[editor.cursor-shape]
|
||||||
|
insert = "bar"
|
||||||
|
normal = "block"
|
||||||
|
select = "underline"
|
||||||
|
|
||||||
|
[editor.file-picker]
|
||||||
|
git-ignore = false
|
||||||
|
|
||||||
|
[editor.indent-guides]
|
||||||
|
character = "│"
|
||||||
|
render = true
|
||||||
|
|
||||||
|
[editor.lsp]
|
||||||
|
auto-signature-help = false
|
||||||
|
display-messages = true
|
||||||
|
|
||||||
|
[editor.soft-wrap]
|
||||||
|
enable = false
|
||||||
|
# wrap-at-text-width = true
|
||||||
|
wrap-indicator = "↩ "
|
||||||
|
|
||||||
|
[editor.statusline]
|
||||||
|
left = ["mode", "spinner", "version-control", "file-name", "read-only-indicator", "file-modification-indicator"]
|
||||||
|
right = ["diagnostics", "selections", "register", "position", "position-percentage", "file-encoding", "file-line-ending"]
|
||||||
|
|
||||||
|
|
||||||
|
[editor.whitespace.characters]
|
||||||
|
space = " "
|
||||||
|
nbsp = "⍽" # Non breaking space
|
||||||
|
tab = "→"
|
||||||
|
newline = "⏎"
|
||||||
|
tabpad = "·"
|
||||||
|
|
||||||
|
[editor.whitespace.render]
|
||||||
|
space = "all"
|
||||||
|
tab = "all"
|
||||||
|
newline = "none"
|
||||||
|
|
||||||
|
[keys.normal]
|
||||||
|
X = ["extend_line_up", "extend_to_line_bounds"]
|
||||||
|
|
||||||
|
[keys.select]
|
||||||
|
X = ["extend_line_up", "extend_to_line_bounds"]
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
[[language]]
|
||||||
|
name = "go"
|
||||||
|
auto-format = true
|
||||||
|
formatter = { command = "goimports" }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "markdown"
|
||||||
|
#language-servers = [ "marksman", "ltex-ls", "mpls" ]
|
||||||
|
language-servers = [ "marksman", "ltex-ls" ]
|
||||||
|
rulers = [120]
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "html"
|
||||||
|
formatter = { command = 'prettier', args = ["--parser", "html"] }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "json"
|
||||||
|
formatter = { command = 'prettier', args = ["--parser", "json"] }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "css"
|
||||||
|
formatter = { command = 'prettier', args = ["--parser", "css"] }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "javascript"
|
||||||
|
formatter = { command = 'prettier', args = ["--parser", "typescript"] }
|
||||||
|
auto-format = true
|
||||||
|
|
||||||
|
# markdown previewer https://github.com/mhersson/mpls
|
||||||
|
[language-server.mpls]
|
||||||
|
command = "mpls"
|
||||||
|
# args = ["--no-auto","--port","8989","--browser","explorer.exe"]
|
||||||
|
args = ["--browser","explorer.exe"]
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "hledger-rules"
|
||||||
|
scope = "source.hledger-rules"
|
||||||
|
file-types = ["toml", { glob = "*.rules"} ]
|
||||||
|
|
||||||
|
#[language-server.ltex-ls.config]
|
||||||
|
#ltex.disabledRules = { "en-US" = ["PROFANITY"], "en-GB" = ["PROFANITY"] }
|
||||||
|
#ltex.dictionary = { "en-US" = ["builtin"], "en-GB" = ["builtin"] }
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f2d5cf"
|
||||||
|
flamingo = "#eebebe"
|
||||||
|
pink = "#f4b8e4"
|
||||||
|
mauve = "#ca9ee6"
|
||||||
|
red = "#e78284"
|
||||||
|
maroon = "#ea999c"
|
||||||
|
peach = "#ef9f76"
|
||||||
|
yellow = "#e5c890"
|
||||||
|
green = "#a6d189"
|
||||||
|
teal = "#81c8be"
|
||||||
|
sky = "#99d1db"
|
||||||
|
sapphire = "#85c1dc"
|
||||||
|
blue = "#8caaee"
|
||||||
|
lavender = "#babbf1"
|
||||||
|
text = "#c6d0f5"
|
||||||
|
subtext1 = "#b5bfe2"
|
||||||
|
subtext0 = "#a5adce"
|
||||||
|
overlay2 = "#949cbb"
|
||||||
|
overlay1 = "#838ba7"
|
||||||
|
overlay0 = "#737994"
|
||||||
|
surface2 = "#626880"
|
||||||
|
surface1 = "#51576d"
|
||||||
|
surface0 = "#414559"
|
||||||
|
base = "#303446"
|
||||||
|
mantle = "#292c3c"
|
||||||
|
crust = "#232634"
|
||||||
|
|
||||||
|
cursorline = "#3b3f52"
|
||||||
|
secondary_cursor = "#b8a5a6"
|
||||||
|
secondary_cursor_normal = "#9192be"
|
||||||
|
secondary_cursor_insert = "#83a275"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#dc8a78"
|
||||||
|
flamingo = "#dd7878"
|
||||||
|
pink = "#ea76cb"
|
||||||
|
mauve = "#8839ef"
|
||||||
|
red = "#d20f39"
|
||||||
|
maroon = "#e64553"
|
||||||
|
peach = "#fe640b"
|
||||||
|
yellow = "#df8e1d"
|
||||||
|
green = "#40a02b"
|
||||||
|
teal = "#179299"
|
||||||
|
sky = "#04a5e5"
|
||||||
|
sapphire = "#209fb5"
|
||||||
|
blue = "#1e66f5"
|
||||||
|
lavender = "#7287fd"
|
||||||
|
text = "#4c4f69"
|
||||||
|
subtext1 = "#5c5f77"
|
||||||
|
subtext0 = "#6c6f85"
|
||||||
|
overlay2 = "#7c7f93"
|
||||||
|
overlay1 = "#8c8fa1"
|
||||||
|
overlay0 = "#9ca0b0"
|
||||||
|
surface2 = "#acb0be"
|
||||||
|
surface1 = "#bcc0cc"
|
||||||
|
surface0 = "#ccd0da"
|
||||||
|
base = "#eff1f5"
|
||||||
|
mantle = "#e6e9ef"
|
||||||
|
crust = "#dce0e8"
|
||||||
|
|
||||||
|
cursorline = "#e8ecf1"
|
||||||
|
secondary_cursor = "#e1a99d"
|
||||||
|
secondary_cursor_normal = "#97a7fb"
|
||||||
|
secondary_cursor_insert = "#74b867"
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
|
||||||
|
# fix issue with background color getting messed up in tmux...
|
||||||
|
"ui.background" = { }
|
||||||
|
# "ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f4dbd6"
|
||||||
|
flamingo = "#f0c6c6"
|
||||||
|
pink = "#f5bde6"
|
||||||
|
mauve = "#c6a0f6"
|
||||||
|
red = "#ed8796"
|
||||||
|
maroon = "#ee99a0"
|
||||||
|
peach = "#f5a97f"
|
||||||
|
yellow = "#eed49f"
|
||||||
|
green = "#a6da95"
|
||||||
|
teal = "#8bd5ca"
|
||||||
|
sky = "#91d7e3"
|
||||||
|
sapphire = "#7dc4e4"
|
||||||
|
blue = "#8aadf4"
|
||||||
|
lavender = "#b7bdf8"
|
||||||
|
text = "#cad3f5"
|
||||||
|
subtext1 = "#b8c0e0"
|
||||||
|
subtext0 = "#a5adcb"
|
||||||
|
overlay2 = "#939ab7"
|
||||||
|
overlay1 = "#8087a2"
|
||||||
|
overlay0 = "#6e738d"
|
||||||
|
surface2 = "#5b6078"
|
||||||
|
surface1 = "#494d64"
|
||||||
|
surface0 = "#363a4f"
|
||||||
|
base = "#24273a"
|
||||||
|
mantle = "#1e2030"
|
||||||
|
crust = "#181926"
|
||||||
|
|
||||||
|
cursorline = "#303347"
|
||||||
|
secondary_cursor = "#b6a6a7"
|
||||||
|
secondary_cursor_normal = "#8b91bf"
|
||||||
|
secondary_cursor_insert = "#80a57a"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow", modifiers = ["italic"] }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f5e0dc"
|
||||||
|
flamingo = "#f2cdcd"
|
||||||
|
pink = "#f5c2e7"
|
||||||
|
mauve = "#cba6f7"
|
||||||
|
red = "#f38ba8"
|
||||||
|
maroon = "#eba0ac"
|
||||||
|
peach = "#fab387"
|
||||||
|
yellow = "#f9e2af"
|
||||||
|
green = "#a6e3a1"
|
||||||
|
teal = "#94e2d5"
|
||||||
|
sky = "#89dceb"
|
||||||
|
sapphire = "#74c7ec"
|
||||||
|
blue = "#89b4fa"
|
||||||
|
lavender = "#b4befe"
|
||||||
|
text = "#cdd6f4"
|
||||||
|
subtext1 = "#bac2de"
|
||||||
|
subtext0 = "#a6adc8"
|
||||||
|
overlay2 = "#9399b2"
|
||||||
|
overlay1 = "#7f849c"
|
||||||
|
overlay0 = "#6c7086"
|
||||||
|
surface2 = "#585b70"
|
||||||
|
surface1 = "#45475a"
|
||||||
|
surface0 = "#313244"
|
||||||
|
base = "#1e1e2e"
|
||||||
|
mantle = "#181825"
|
||||||
|
crust = "#11111b"
|
||||||
|
|
||||||
|
cursorline = "#2a2b3c"
|
||||||
|
secondary_cursor = "#b5a6a8"
|
||||||
|
secondary_cursor_normal = "#878ec0"
|
||||||
|
secondary_cursor_insert = "#7ea87f"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2" }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon" }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve" }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow" }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f2d5cf"
|
||||||
|
flamingo = "#eebebe"
|
||||||
|
pink = "#f4b8e4"
|
||||||
|
mauve = "#ca9ee6"
|
||||||
|
red = "#e78284"
|
||||||
|
maroon = "#ea999c"
|
||||||
|
peach = "#ef9f76"
|
||||||
|
yellow = "#e5c890"
|
||||||
|
green = "#a6d189"
|
||||||
|
teal = "#81c8be"
|
||||||
|
sky = "#99d1db"
|
||||||
|
sapphire = "#85c1dc"
|
||||||
|
blue = "#8caaee"
|
||||||
|
lavender = "#babbf1"
|
||||||
|
text = "#c6d0f5"
|
||||||
|
subtext1 = "#b5bfe2"
|
||||||
|
subtext0 = "#a5adce"
|
||||||
|
overlay2 = "#949cbb"
|
||||||
|
overlay1 = "#838ba7"
|
||||||
|
overlay0 = "#737994"
|
||||||
|
surface2 = "#626880"
|
||||||
|
surface1 = "#51576d"
|
||||||
|
surface0 = "#414559"
|
||||||
|
base = "#303446"
|
||||||
|
mantle = "#292c3c"
|
||||||
|
crust = "#232634"
|
||||||
|
|
||||||
|
cursorline = "#3b3f52"
|
||||||
|
secondary_cursor = "#b8a5a6"
|
||||||
|
secondary_cursor_normal = "#9192be"
|
||||||
|
secondary_cursor_insert = "#83a275"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2" }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon" }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve" }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow" }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#dc8a78"
|
||||||
|
flamingo = "#dd7878"
|
||||||
|
pink = "#ea76cb"
|
||||||
|
mauve = "#8839ef"
|
||||||
|
red = "#d20f39"
|
||||||
|
maroon = "#e64553"
|
||||||
|
peach = "#fe640b"
|
||||||
|
yellow = "#df8e1d"
|
||||||
|
green = "#40a02b"
|
||||||
|
teal = "#179299"
|
||||||
|
sky = "#04a5e5"
|
||||||
|
sapphire = "#209fb5"
|
||||||
|
blue = "#1e66f5"
|
||||||
|
lavender = "#7287fd"
|
||||||
|
text = "#4c4f69"
|
||||||
|
subtext1 = "#5c5f77"
|
||||||
|
subtext0 = "#6c6f85"
|
||||||
|
overlay2 = "#7c7f93"
|
||||||
|
overlay1 = "#8c8fa1"
|
||||||
|
overlay0 = "#9ca0b0"
|
||||||
|
surface2 = "#acb0be"
|
||||||
|
surface1 = "#bcc0cc"
|
||||||
|
surface0 = "#ccd0da"
|
||||||
|
base = "#eff1f5"
|
||||||
|
mantle = "#e6e9ef"
|
||||||
|
crust = "#dce0e8"
|
||||||
|
|
||||||
|
cursorline = "#e8ecf1"
|
||||||
|
secondary_cursor = "#e1a99d"
|
||||||
|
secondary_cursor_normal = "#97a7fb"
|
||||||
|
secondary_cursor_insert = "#74b867"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2" }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon" }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve" }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow" }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f4dbd6"
|
||||||
|
flamingo = "#f0c6c6"
|
||||||
|
pink = "#f5bde6"
|
||||||
|
mauve = "#c6a0f6"
|
||||||
|
red = "#ed8796"
|
||||||
|
maroon = "#ee99a0"
|
||||||
|
peach = "#f5a97f"
|
||||||
|
yellow = "#eed49f"
|
||||||
|
green = "#a6da95"
|
||||||
|
teal = "#8bd5ca"
|
||||||
|
sky = "#91d7e3"
|
||||||
|
sapphire = "#7dc4e4"
|
||||||
|
blue = "#8aadf4"
|
||||||
|
lavender = "#b7bdf8"
|
||||||
|
text = "#cad3f5"
|
||||||
|
subtext1 = "#b8c0e0"
|
||||||
|
subtext0 = "#a5adcb"
|
||||||
|
overlay2 = "#939ab7"
|
||||||
|
overlay1 = "#8087a2"
|
||||||
|
overlay0 = "#6e738d"
|
||||||
|
surface2 = "#5b6078"
|
||||||
|
surface1 = "#494d64"
|
||||||
|
surface0 = "#363a4f"
|
||||||
|
base = "#24273a"
|
||||||
|
mantle = "#1e2030"
|
||||||
|
crust = "#181926"
|
||||||
|
|
||||||
|
cursorline = "#303347"
|
||||||
|
secondary_cursor = "#b6a6a7"
|
||||||
|
secondary_cursor_normal = "#8b91bf"
|
||||||
|
secondary_cursor_insert = "#80a57a"
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Syntax highlighting
|
||||||
|
# -------------------
|
||||||
|
"attribute" = "yellow"
|
||||||
|
|
||||||
|
"type" = "yellow"
|
||||||
|
"type.enum.variant" = "teal"
|
||||||
|
|
||||||
|
"constructor" = "sapphire"
|
||||||
|
|
||||||
|
"constant" = "peach"
|
||||||
|
"constant.character" = "teal"
|
||||||
|
"constant.character.escape" = "pink"
|
||||||
|
|
||||||
|
"string" = "green"
|
||||||
|
"string.regexp" = "pink"
|
||||||
|
"string.special" = "blue"
|
||||||
|
"string.special.symbol" = "red"
|
||||||
|
|
||||||
|
"comment" = { fg = "overlay2" }
|
||||||
|
|
||||||
|
"variable" = "text"
|
||||||
|
"variable.parameter" = { fg = "maroon" }
|
||||||
|
"variable.builtin" = "red"
|
||||||
|
"variable.other.member" = "teal"
|
||||||
|
|
||||||
|
"label" = "sapphire" # used for lifetimes
|
||||||
|
|
||||||
|
"punctuation" = "overlay2"
|
||||||
|
"punctuation.special" = "sky"
|
||||||
|
|
||||||
|
"keyword" = "mauve"
|
||||||
|
"keyword.control.conditional" = { fg = "mauve" }
|
||||||
|
|
||||||
|
"operator" = "sky"
|
||||||
|
|
||||||
|
"function" = "blue"
|
||||||
|
"function.macro" = "mauve"
|
||||||
|
|
||||||
|
"tag" = "blue"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow" }
|
||||||
|
|
||||||
|
"special" = "blue" # fuzzy highlight
|
||||||
|
|
||||||
|
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
"markup.heading.1" = "lavender"
|
||||||
|
"markup.heading.2" = "mauve"
|
||||||
|
"markup.heading.3" = "green"
|
||||||
|
"markup.heading.4" = "yellow"
|
||||||
|
"markup.heading.5" = "pink"
|
||||||
|
"markup.heading.6" = "teal"
|
||||||
|
"markup.list" = "mauve"
|
||||||
|
"markup.bold" = { modifiers = ["bold"] }
|
||||||
|
"markup.italic" = { modifiers = ["italic"] }
|
||||||
|
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
|
||||||
|
"markup.link.text" = "blue"
|
||||||
|
"markup.raw" = "flamingo"
|
||||||
|
|
||||||
|
"diff.plus" = "green"
|
||||||
|
"diff.minus" = "red"
|
||||||
|
"diff.delta" = "blue"
|
||||||
|
|
||||||
|
# User Interface
|
||||||
|
# --------------
|
||||||
|
"ui.background" = { fg = "text", bg = "base" }
|
||||||
|
|
||||||
|
"ui.linenr" = { fg = "surface1" }
|
||||||
|
"ui.linenr.selected" = { fg = "lavender" }
|
||||||
|
|
||||||
|
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
|
||||||
|
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
|
||||||
|
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
|
||||||
|
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.popup" = { fg = "text", bg = "surface0" }
|
||||||
|
"ui.window" = { fg = "crust" }
|
||||||
|
"ui.help" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
|
||||||
|
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
|
||||||
|
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
|
||||||
|
"ui.bufferline.background" = { bg = "crust" }
|
||||||
|
|
||||||
|
"ui.text" = "text"
|
||||||
|
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
|
||||||
|
"ui.text.inactive" = { fg = "overlay1" }
|
||||||
|
|
||||||
|
"ui.virtual" = "overlay0"
|
||||||
|
"ui.virtual.ruler" = { bg = "surface0" }
|
||||||
|
"ui.virtual.indent-guide" = "surface0"
|
||||||
|
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
|
||||||
|
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.selection" = { bg = "surface1" }
|
||||||
|
|
||||||
|
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
|
||||||
|
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
|
||||||
|
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
|
||||||
|
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
|
||||||
|
|
||||||
|
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
|
||||||
|
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
|
||||||
|
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
|
||||||
|
|
||||||
|
"ui.cursorline.primary" = { bg = "cursorline" }
|
||||||
|
|
||||||
|
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"ui.menu" = { fg = "overlay2", bg = "surface0" }
|
||||||
|
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
|
||||||
|
|
||||||
|
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
|
||||||
|
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
|
||||||
|
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
|
||||||
|
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
|
||||||
|
|
||||||
|
error = "red"
|
||||||
|
warning = "yellow"
|
||||||
|
info = "sky"
|
||||||
|
hint = "teal"
|
||||||
|
|
||||||
|
[palette]
|
||||||
|
rosewater = "#f5e0dc"
|
||||||
|
flamingo = "#f2cdcd"
|
||||||
|
pink = "#f5c2e7"
|
||||||
|
mauve = "#cba6f7"
|
||||||
|
red = "#f38ba8"
|
||||||
|
maroon = "#eba0ac"
|
||||||
|
peach = "#fab387"
|
||||||
|
yellow = "#f9e2af"
|
||||||
|
green = "#a6e3a1"
|
||||||
|
teal = "#94e2d5"
|
||||||
|
sky = "#89dceb"
|
||||||
|
sapphire = "#74c7ec"
|
||||||
|
blue = "#89b4fa"
|
||||||
|
lavender = "#b4befe"
|
||||||
|
text = "#cdd6f4"
|
||||||
|
subtext1 = "#bac2de"
|
||||||
|
subtext0 = "#a6adc8"
|
||||||
|
overlay2 = "#9399b2"
|
||||||
|
overlay1 = "#7f849c"
|
||||||
|
overlay0 = "#6c7086"
|
||||||
|
surface2 = "#585b70"
|
||||||
|
surface1 = "#45475a"
|
||||||
|
surface0 = "#313244"
|
||||||
|
base = "#1e1e2e"
|
||||||
|
mantle = "#181825"
|
||||||
|
crust = "#11111b"
|
||||||
|
|
||||||
|
cursorline = "#2a2b3c"
|
||||||
|
secondary_cursor = "#b5a6a8"
|
||||||
|
secondary_cursor_normal = "#878ec0"
|
||||||
|
secondary_cursor_insert = "#7ea87f"
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
font=UbuntuMono 12.5
|
||||||
|
|
||||||
|
background-color=#404552
|
||||||
|
text-color=#e5e9f0
|
||||||
|
width=315
|
||||||
|
height=200
|
||||||
|
padding=10
|
||||||
|
margin=10
|
||||||
|
progress-color=over #eceff480
|
||||||
|
icon-path=/usr/share/icons/Arc-X-D
|
||||||
|
max-icon-size=70
|
||||||
|
layer=overlay
|
||||||
|
anchor=bottom-center
|
||||||
|
|
||||||
|
border-size=2
|
||||||
|
border-radius=15
|
||||||
|
border-color=#5294e2
|
||||||
|
|
||||||
|
default-timeout=0
|
||||||
|
ignore-timeout=1
|
||||||
|
|
||||||
|
[urgency=normal]
|
||||||
|
border-color=#d08770
|
||||||
|
|
||||||
|
[urgency=high]
|
||||||
|
border-color=#bf616a
|
||||||
|
default-timeout=0
|
||||||
@@ -28,7 +28,7 @@ application/x-bittorrent=org.qbittorrent.qBittorrent.desktop;
|
|||||||
inode/directory=yazi.desktop;
|
inode/directory=yazi.desktop;
|
||||||
x-scheme-handler/msteams=teams.desktop;
|
x-scheme-handler/msteams=teams.desktop;
|
||||||
text/calendar=userapp-khalimport.desktop;
|
text/calendar=userapp-khalimport.desktop;
|
||||||
x-scheme-handler/discord=discord.desktop
|
x-scheme-handler/discord=vesktop.desktop;
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=org.kde.okular.desktop;
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document=org.kde.okular.desktop;
|
||||||
text/markdown=org.kde.okular.desktop;
|
text/markdown=org.kde.okular.desktop;
|
||||||
application/zip=userapp-file-roller.desktop;
|
application/zip=userapp-file-roller.desktop;
|
||||||
@@ -38,7 +38,6 @@ x-scheme-handler/vnc=org.remmina.Remmina.desktop;
|
|||||||
x-scheme-handler/remmina=org.remmina.Remmina.desktop;
|
x-scheme-handler/remmina=org.remmina.Remmina.desktop;
|
||||||
application/x-remmina=org.remmina.Remmina.desktop;
|
application/x-remmina=org.remmina.Remmina.desktop;
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
||||||
image/heif=qimgv.desktop
|
|
||||||
|
|
||||||
[Added Associations]
|
[Added Associations]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
# ttrss
|
||||||
|
ttrss-flag-publish "b"
|
||||||
|
ttrss-flag-star "a"
|
||||||
|
ttrss-login "admin"
|
||||||
|
ttrss-mode "multi"
|
||||||
|
ttrss-passwordeval "pass show ttrss"
|
||||||
|
ttrss-url "https://rss.hjarl.com/"
|
||||||
|
urls-source "ttrss"
|
||||||
|
|
||||||
|
# data
|
||||||
|
cache-file "~/.cache/newsboat/cache.db"
|
||||||
|
cookie-cache "~/.cache/newsboat/cookies.txt"
|
||||||
|
|
||||||
|
# feeds
|
||||||
|
auto-reload yes
|
||||||
|
delete-read-articles-on-quit yes
|
||||||
|
feed-sort-order unreadarticlecount-asc
|
||||||
|
prepopulate-query-feeds yes
|
||||||
|
reload-threads 11
|
||||||
|
reload-time 30
|
||||||
|
scrolloff 15
|
||||||
|
|
||||||
|
# display
|
||||||
|
article-sort-order date
|
||||||
|
datetime-format "%D %R"
|
||||||
|
download-full-page yes
|
||||||
|
external-url-viewer "urlscan"
|
||||||
|
html-renderer "w3m -dump -T text/html"
|
||||||
|
show-read-articles no
|
||||||
|
show-read-feeds no
|
||||||
|
text-width 72
|
||||||
|
|
||||||
|
# navigation
|
||||||
|
browser "$BROWSER %u >/dev/null 2>&1 &"
|
||||||
|
#browser "w3m %u"
|
||||||
|
goto-next-feed yes
|
||||||
|
goto-first-unread no
|
||||||
|
mark-as-read-on-hover yes
|
||||||
|
|
||||||
|
# bindings
|
||||||
|
# original bindings here https://raw.githubusercontent.com/newsboat/newsboat/master/src/keymap.cpp
|
||||||
|
# unbind
|
||||||
|
unbind-key f
|
||||||
|
unbind-key F
|
||||||
|
unbind-key C
|
||||||
|
unbind-key n
|
||||||
|
unbind-key p
|
||||||
|
unbind-key ^k
|
||||||
|
unbind-key ,
|
||||||
|
# bind
|
||||||
|
bind SPACE everywhere macro-prefix
|
||||||
|
bind l everywhere open
|
||||||
|
bind h everywhere quit
|
||||||
|
bind j everywhere down
|
||||||
|
bind k everywhere up
|
||||||
|
bind J everywhere next-feed
|
||||||
|
bind K everywhere prev-feed
|
||||||
|
bind J article next
|
||||||
|
bind K article prev
|
||||||
|
bind n everywhere next
|
||||||
|
bind p everywhere prev
|
||||||
|
bind g everywhere home
|
||||||
|
bind G everywhere end
|
||||||
|
bind ^F everywhere halfpagedown
|
||||||
|
bind ^B everywhere halfpageup
|
||||||
|
bind ^D everywhere pagedown
|
||||||
|
bind ^U everywhere pageup
|
||||||
|
bind d everywhere delete-article
|
||||||
|
bind D everywhere delete-all-articles
|
||||||
|
bind $ everywhere purge-deleted
|
||||||
|
bind a everywhere mark-all-above-as-read
|
||||||
|
bind A everywhere mark-feed-read
|
||||||
|
bind ^A everywhere mark-all-feeds-read
|
||||||
|
bind i everywhere sort
|
||||||
|
bind I everywhere rev-sort
|
||||||
|
bind T everywhere set-tag
|
||||||
|
bind t everywhere toggle-article-read
|
||||||
|
bind b everywhere toggle-source-view
|
||||||
|
bind U everywhere toggle-show-read-feeds
|
||||||
|
|
||||||
|
# macros
|
||||||
|
macro w set browser "w3m %u"; open-in-browser ; set browser "$BROWSER %u >/dev/null 2>&1 &"
|
||||||
|
macro l set browser "links %u"; open-in-browser ; set browser "$BROWSER %u >/dev/null 2>&1 &"
|
||||||
|
macro m set browser "mpv %u"; open-in-browser ; set browser "$BROWSER %u >/dev/null 2>&1 &"
|
||||||
|
|
||||||
|
# format
|
||||||
|
feedlist-title-format "(%u unread, %t total) Your feeds%?T? - tag ‘%T’&?"
|
||||||
|
articlelist-title-format "(%u unread, %t total) Articles in feed %T - %U"
|
||||||
|
searchresult-title-format "(%u unread, %t total) Search result"
|
||||||
|
itemview-title-format "(%u unread, %t total) Article %T"
|
||||||
|
filebrowser-title-format "%?O?Open File&Save File? - %f"
|
||||||
|
help-title-format "Help"
|
||||||
|
selecttag-title-format "Select Tag"
|
||||||
|
selectfilter-title-format "Select Filter"
|
||||||
|
urlview-title-format "URLs"
|
||||||
|
dialogs-title-format "Dialogs"
|
||||||
|
|
||||||
|
include "~/.config/newsboat/themes/catppuccin.dark"
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# https://raw.githubusercontent.com/catppuccin/newsboat/refs/heads/main/themes/dark
|
||||||
|
color listnormal color15 default
|
||||||
|
color listnormal_unread color2 default
|
||||||
|
color listfocus_unread color2 color0
|
||||||
|
color listfocus default color0
|
||||||
|
color background default default
|
||||||
|
color article default default
|
||||||
|
color end-of-text-marker color8 default
|
||||||
|
color info color4 color8
|
||||||
|
color hint-separator default color8
|
||||||
|
color hint-description default color8
|
||||||
|
color title color14 color8
|
||||||
|
|
||||||
|
highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold
|
||||||
|
highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold
|
||||||
|
|
||||||
|
highlight article "\\((link|image|video)\\)" color8 default
|
||||||
|
highlight article "https?://[^ ]+" color4 default
|
||||||
|
highlight article "\[[0-9]+\]" color6 default bold
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# https://raw.githubusercontent.com/catppuccin/newsboat/refs/heads/main/themes/latte
|
||||||
|
color listnormal color15 default
|
||||||
|
color listnormal_unread color2 default
|
||||||
|
color listfocus_unread color2 color15
|
||||||
|
color listfocus default color15
|
||||||
|
color background default default
|
||||||
|
color article default default
|
||||||
|
color end-of-text-marker color8 default
|
||||||
|
color info color4 color7
|
||||||
|
color hint-separator default color7
|
||||||
|
color hint-description default color7
|
||||||
|
color title color14 color7
|
||||||
|
|
||||||
|
highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold
|
||||||
|
highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold
|
||||||
|
|
||||||
|
highlight article "\\((link|image|video)\\)" color8 default
|
||||||
|
highlight article "https?://[^ ]+" color4 default
|
||||||
|
highlight article "\[[0-9]+\]" color6 default bold
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
$env.SYSTEMD_EDITOR = "/usr/bin/nvim"
|
||||||
|
$env.EDITOR = "/usr/bin/nvim"
|
||||||
|
$env.VISUAL = "/usr/bin/nvim"
|
||||||
|
$env.path ++= ["~/.local/bin"]
|
||||||
|
$env.config = {
|
||||||
|
buffer_editor: "/usr/bin/nvim"
|
||||||
|
completions: {
|
||||||
|
external: {
|
||||||
|
enable: true
|
||||||
|
max_results: 100
|
||||||
|
completer: {|spans|
|
||||||
|
let carapace_completer = {|spans: list<string>|
|
||||||
|
carapace $spans.0 nushell ...$spans
|
||||||
|
| from json
|
||||||
|
| if ($in | default [] | where value =~ '^-.*ERR$' | is-empty) { $in } else { null }
|
||||||
|
}
|
||||||
|
|
||||||
|
match $spans.0 {
|
||||||
|
_ => $carapace_completer
|
||||||
|
} | do $in $spans
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cursor_shape: {
|
||||||
|
vi_insert: line
|
||||||
|
vi_normal: block
|
||||||
|
}
|
||||||
|
edit_mode: 'vi'
|
||||||
|
history: {
|
||||||
|
file_format: sqlite
|
||||||
|
isolation: true
|
||||||
|
}
|
||||||
|
hooks: {
|
||||||
|
env_change: {
|
||||||
|
PWD: [
|
||||||
|
{
|
||||||
|
__zoxide_hook: true,
|
||||||
|
code: {|_, dir| zoxide add -- $dir}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keybindings: [
|
||||||
|
{
|
||||||
|
name: fuzzy_history_fzf
|
||||||
|
modifier: control
|
||||||
|
keycode: char_r
|
||||||
|
mode: [emacs, vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
send: ExecuteHostCommand
|
||||||
|
cmd: "commandline edit --insert (
|
||||||
|
history
|
||||||
|
# | where exit_status == 0
|
||||||
|
| get command
|
||||||
|
| reverse
|
||||||
|
| uniq
|
||||||
|
| str join (char -i 0)
|
||||||
|
| fzf
|
||||||
|
--preview '{}'
|
||||||
|
--preview-window 'bottom:3:wrap'
|
||||||
|
--scheme history
|
||||||
|
--read0
|
||||||
|
--layout reverse
|
||||||
|
--bind alt-up:preview-up,alt-down:preview-down
|
||||||
|
--height 70%
|
||||||
|
--query (commandline)
|
||||||
|
| decode utf-8
|
||||||
|
| str trim
|
||||||
|
)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: fuzzy_history_fzf
|
||||||
|
modifier: none
|
||||||
|
keycode: char_/
|
||||||
|
mode: [ vi_normal ]
|
||||||
|
event: { send: menu name: fuzzy_history_fzf }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: clear_everything
|
||||||
|
modifier: control
|
||||||
|
keycode: char_b
|
||||||
|
mode: [ emacs, vi_insert, vi_normal ]
|
||||||
|
event: [
|
||||||
|
{ send: clearscreen }
|
||||||
|
{ send: clearscrollback }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_right_or_take_history_hint
|
||||||
|
modifier: control
|
||||||
|
keycode: char_f
|
||||||
|
mode: [ emacs, vi_insert, vi_normal ]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: historyhintcomplete }
|
||||||
|
{ send: menuright }
|
||||||
|
{ send: right }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_word_backward
|
||||||
|
modifier: alt
|
||||||
|
keycode: backspace
|
||||||
|
mode: vi_insert
|
||||||
|
event: {edit: backspaceword}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
show_banner: false
|
||||||
|
}
|
||||||
|
|
||||||
|
# from: https://github.com/nushell/nushell/issues/8166
|
||||||
|
def monitor [
|
||||||
|
--duration (-d): duration = 1sec
|
||||||
|
...args
|
||||||
|
] {
|
||||||
|
let args = $args | into string
|
||||||
|
let cmd = $args | str join ' '
|
||||||
|
|
||||||
|
loop {
|
||||||
|
let last_run = (date now)
|
||||||
|
let till = $last_run + $duration
|
||||||
|
|
||||||
|
let out = nu --config $nu.config-path --env-config $nu.env-path --commands $cmd | complete
|
||||||
|
|
||||||
|
if $out.exit_code == 0 {
|
||||||
|
clear
|
||||||
|
print $"Running every ($duration) on '(hostname)': `($cmd)`"
|
||||||
|
|
||||||
|
print $out.stdout
|
||||||
|
|
||||||
|
print $"Last run: ($last_run)"
|
||||||
|
sleep ($till - (date now))
|
||||||
|
} else {
|
||||||
|
print $out.stdout $out.stderr
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Jump to a directory using only keywords.
|
||||||
|
def --env --wrapped z [...rest: string@zoxide_completer] {
|
||||||
|
let path = match $rest {
|
||||||
|
[] => {'~'},
|
||||||
|
[ '-' ] => {'-'},
|
||||||
|
[ $arg ] if ($arg | path type) == 'dir' => {$arg}
|
||||||
|
_ => {
|
||||||
|
zoxide query --exclude $env.PWD -- ...$rest | str trim -r -c "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cd $path
|
||||||
|
}
|
||||||
|
# Jump to a directory using interactive search.
|
||||||
|
def --env --wrapped zi [...rest:string] {
|
||||||
|
cd $'(zoxide query --interactive -- ...$rest | str trim -r -c "\n")'
|
||||||
|
}
|
||||||
|
def zoxide_completer [context: string] {
|
||||||
|
let parts = $context | split row " " | skip 1
|
||||||
|
{
|
||||||
|
options: {
|
||||||
|
sort: false
|
||||||
|
completion_algorithm: prefix
|
||||||
|
positional: false
|
||||||
|
case_sensitive: false
|
||||||
|
}
|
||||||
|
completions: (zoxide query --list --exclude $env.PWD -- ...$parts | lines)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# yazi helper
|
||||||
|
def --env y [...args] {
|
||||||
|
let tmp = (mktemp -t "yazi-cwd.XXXXXX")
|
||||||
|
yazi ...$args --cwd-file $tmp
|
||||||
|
let cwd = (open $tmp)
|
||||||
|
if $cwd != "" and $cwd != $env.PWD {
|
||||||
|
cd $cwd
|
||||||
|
}
|
||||||
|
rm -fp $tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
source ~/.oh-my-posh.nu
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
vim.opt_local.number = true
|
|
||||||
vim.opt_local.relativenumber = true
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
-- Indentation & Layout
|
|
||||||
vim.opt_local.colorcolumn = "100"
|
|
||||||
vim.opt_local.textwidth = 100
|
|
||||||
vim.opt_local.tabstop = 4
|
|
||||||
vim.opt_local.shiftwidth = 4
|
|
||||||
vim.opt_local.softtabstop = 4
|
|
||||||
vim.opt_local.expandtab = true
|
|
||||||
|
|
||||||
-- Formatting Behavior
|
|
||||||
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
|
|
||||||
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
-- Indentation & Layout
|
|
||||||
vim.opt_local.colorcolumn = "120"
|
|
||||||
vim.opt_local.textwidth = 120
|
|
||||||
vim.opt_local.tabstop = 4
|
|
||||||
vim.opt_local.shiftwidth = 4
|
|
||||||
vim.opt_local.softtabstop = 4
|
|
||||||
vim.opt_local.expandtab = true
|
|
||||||
|
|
||||||
-- Formatting Behavior
|
|
||||||
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
|
|
||||||
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
local bufname = vim.api.nvim_buf_get_name(0)
|
|
||||||
local filename_arg = bufname ~= "" and (" --stdin-filepath " .. vim.fn.shellescape(bufname)) or ""
|
|
||||||
|
|
||||||
-- Indentation & Layout
|
|
||||||
vim.opt_local.colorcolumn = ""
|
|
||||||
vim.opt_local.wrap = true
|
|
||||||
vim.opt_local.textwidth = 80
|
|
||||||
vim.opt_local.tabstop = 2
|
|
||||||
vim.opt_local.shiftwidth = 2
|
|
||||||
vim.opt_local.softtabstop = 2
|
|
||||||
vim.opt_local.expandtab = true
|
|
||||||
|
|
||||||
-- Formatting Behavior: wrap text, keep comment/quote headers, parse lists
|
|
||||||
vim.opt_local.formatoptions:append("tqn")
|
|
||||||
|
|
||||||
-- gq Formatter: Prettier handles links/parentheses cleanly; par as fallback
|
|
||||||
if vim.fn.executable("prettier") == 1 then
|
|
||||||
vim.bo.formatprg = "prettier --parser markdown" .. filename_arg
|
|
||||||
elseif vim.fn.executable("par") == 1 then
|
|
||||||
vim.bo.formatprg = "par -w80req"
|
|
||||||
end
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
-- Indentation & Layout
|
|
||||||
vim.opt_local.colorcolumn = "100"
|
|
||||||
vim.opt_local.textwidth = 100
|
|
||||||
vim.opt_local.tabstop = 4
|
|
||||||
vim.opt_local.shiftwidth = 4
|
|
||||||
vim.opt_local.softtabstop = 4
|
|
||||||
vim.opt_local.expandtab = true
|
|
||||||
|
|
||||||
-- Formatting Behavior
|
|
||||||
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
|
|
||||||
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
vim.o.number = true
|
||||||
|
vim.o.relativenumber = true
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
vim.o.colorcolumn = "100"
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
vim.o.colorcolumn = "120"
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
vim.o.colorcolumn = ""
|
||||||
|
vim.o.wrap = true
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.softtabstop = 2
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
vim.o.colorcolumn = "100"
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
+314
-511
File diff suppressed because it is too large
Load Diff
@@ -1,43 +1,38 @@
|
|||||||
window {
|
window {
|
||||||
background-color: rgba(10, 10, 10, 0.95);
|
background-color: rgba (38, 18, 57, 0.9);
|
||||||
color: #ffffff;
|
color: #eceff4;
|
||||||
border-radius: 0px;
|
border-radius: 30px
|
||||||
border-right: 2px solid #00e5ff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search entry */
|
/* search entry */
|
||||||
entry {
|
entry {
|
||||||
box-shadow: none;
|
box-shadow: 0 0 6px 5px #2e3440;
|
||||||
border: 1px solid #00e5ff;
|
background-color: rgba (0, 0, 0, 0.5)
|
||||||
background-color: #000000;
|
|
||||||
color: #00e5ff;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
button,
|
button, image {
|
||||||
image {
|
background-color: #3b4252;
|
||||||
background-color: transparent;
|
background: none;
|
||||||
background: none;
|
border: none;
|
||||||
border: 1px solid transparent;
|
margin: 10px
|
||||||
margin: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover {
|
button:hover {
|
||||||
background-color: #111111;
|
background-color: rgba (127, 63, 191, .4);
|
||||||
border: 1px solid #00e5ff;
|
box-shadow: 0 0 6px 5px #190C26
|
||||||
box-shadow: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* in case you wanted to give category buttons a different look */
|
||||||
#category-button {
|
#category-button {
|
||||||
margin: 0;
|
margin: 0 0px 0 0px
|
||||||
}
|
}
|
||||||
|
|
||||||
#pinned-box {
|
#pinned-box {
|
||||||
padding-bottom: 5px;
|
padding-bottom: 1px;
|
||||||
border-bottom: 2px solid #333333;
|
border-bottom: 1px solid gray
|
||||||
}
|
}
|
||||||
|
|
||||||
#files-box {
|
#files-box {
|
||||||
padding: 5px;
|
padding: 1px;
|
||||||
border: 1px solid #333333;
|
border: 1px solid gray
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,23 @@
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
import os
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from qutebrowser.config.config import ConfigContainer
|
from typing import Any
|
||||||
from qutebrowser.config.configfiles import ConfigAPI
|
|
||||||
|
|
||||||
c: "ConfigContainer" = c # type: ignore # noqa: F821
|
config: Any = None
|
||||||
config: "ConfigAPI" = config # type: ignore # noqa: F821
|
c: Any = None
|
||||||
|
|
||||||
config.load_autoconfig(True)
|
config.load_autoconfig(True)
|
||||||
config.bind("<", "tab-move -")
|
config.bind("<", "tab-move -")
|
||||||
config.bind("<Ctrl+Shift+Tab>", "tab-prev")
|
config.bind("<Ctrl+Shift+Tab>", "tab-prev")
|
||||||
config.bind("<Ctrl+Tab>", "tab-next")
|
config.bind("<Ctrl+Tab>", "tab-next")
|
||||||
config.bind("<Ctrl+l>", "cmd-set-text :open {url:pretty}")
|
config.bind("<Ctrl+l>", "cmd-set-text :open {url:pretty}")
|
||||||
config.unbind("r", mode="normal")
|
config.bind("<Ctrl+r>", "reload")
|
||||||
config.bind("<Ctrl+r>", "reload -f")
|
|
||||||
config.bind("R", "reload", mode="normal")
|
|
||||||
config.bind("<Ctrl+n>", "tab-clone -w")
|
config.bind("<Ctrl+n>", "tab-clone -w")
|
||||||
config.bind("<Ctrl+t>", "tab-clone -t")
|
config.bind("<Ctrl+t>", "tab-clone -t")
|
||||||
config.bind("<Ctrl+Shift+r>", "restart", mode="normal")
|
config.bind("<Ctrl+Shift+r>", "restart", mode="normal")
|
||||||
config.bind("<Ctrl+h>", "history")
|
config.bind("<Ctrl+h>", "history")
|
||||||
|
config.bind("<F8>", "config-cycle colors.webpage.darkmode.enabled true false")
|
||||||
config.bind("<F2>", "edit-url")
|
config.bind("<F2>", "edit-url")
|
||||||
config.bind("<F10>", "config-cycle colors.webpage.darkmode.enabled true false")
|
|
||||||
config.bind("<F11>", "config-cycle tabs.position top left")
|
config.bind("<F11>", "config-cycle tabs.position top left")
|
||||||
config.bind("<F12>", "devtools")
|
config.bind("<F12>", "devtools")
|
||||||
config.bind("<Shift+F12>", "view-source")
|
config.bind("<Shift+F12>", "view-source")
|
||||||
@@ -47,10 +43,11 @@ config.bind("tj", "back -t", mode="normal")
|
|||||||
config.bind("wj", "back -w", mode="normal")
|
config.bind("wj", "back -w", mode="normal")
|
||||||
config.bind("tk", "forward -t", mode="normal")
|
config.bind("tk", "forward -t", mode="normal")
|
||||||
config.bind("wk", "forward -w", mode="normal")
|
config.bind("wk", "forward -w", mode="normal")
|
||||||
|
config.bind("ø", "cmd-set-text :")
|
||||||
config.bind("m", 'cmd-set-text :quickmark-add {url:pretty} "', mode="normal")
|
config.bind("m", 'cmd-set-text :quickmark-add {url:pretty} "', mode="normal")
|
||||||
config.bind("D", "tab-close")
|
config.bind("D", "tab-close")
|
||||||
config.bind(",m", "hint links spawn -d mpv {hint-url}", mode="normal")
|
config.bind(",m", "hint links spawn mpv {hint-url}", mode="normal")
|
||||||
config.bind(",M", "spawn -d mpv {url}", mode="normal")
|
config.bind(",M", "spawn mpv {url}", mode="normal")
|
||||||
config.unbind("co") # close all tabs except this one
|
config.unbind("co") # close all tabs except this one
|
||||||
config.unbind("<Ctrl+x>") # navigate decrement
|
config.unbind("<Ctrl+x>") # navigate decrement
|
||||||
config.unbind("<Ctrl+a>") # navigate increment
|
config.unbind("<Ctrl+a>") # navigate increment
|
||||||
@@ -72,7 +69,7 @@ c.completion.open_categories = [
|
|||||||
c.content.register_protocol_handler = False
|
c.content.register_protocol_handler = False
|
||||||
c.content.blocking.enabled = True
|
c.content.blocking.enabled = True
|
||||||
c.content.fullscreen.window = True
|
c.content.fullscreen.window = True
|
||||||
c.content.blocking.method = "auto"
|
c.content.blocking.method = "both"
|
||||||
c.content.blocking.adblock.lists = [
|
c.content.blocking.adblock.lists = [
|
||||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
|
||||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
|
||||||
@@ -83,12 +80,6 @@ c.content.blocking.adblock.lists = [
|
|||||||
"https://easylist.to/easylist/easyprivacy.txt",
|
"https://easylist.to/easylist/easyprivacy.txt",
|
||||||
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext",
|
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext",
|
||||||
]
|
]
|
||||||
c.content.javascript.log_message.excludes = {
|
|
||||||
"userscript:_qute_js": ["*TrustedHTML*"],
|
|
||||||
"userscript:_qute_stylesheet": [
|
|
||||||
"*Refused to apply inline style because it violates the following Content Security Policy directive: *"
|
|
||||||
],
|
|
||||||
}
|
|
||||||
c.completion.web_history.max_items = 10000
|
c.completion.web_history.max_items = 10000
|
||||||
c.completion.height = "100%"
|
c.completion.height = "100%"
|
||||||
c.confirm_quit = ["multiple-tabs", "downloads"]
|
c.confirm_quit = ["multiple-tabs", "downloads"]
|
||||||
@@ -116,14 +107,6 @@ urlconfigs: dict[str, list[tuple[str, bool | str | dict[str, str]]]] = {
|
|||||||
{"X-YouTube-Client-Name": "85", "X-YouTube-Client-Version": "2.0"},
|
{"X-YouTube-Client-Name": "85", "X-YouTube-Client-Version": "2.0"},
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
"https://*.altinn.no": [
|
|
||||||
("content.cookies.accept", "all"),
|
|
||||||
("content.javascript.can_open_tabs_automatically", True),
|
|
||||||
],
|
|
||||||
"https://*.bankid.no": [
|
|
||||||
("content.cookies.accept", "all"),
|
|
||||||
("content.javascript.can_open_tabs_automatically", True),
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
for url, urlconfig in urlconfigs.items():
|
for url, urlconfig in urlconfigs.items():
|
||||||
for setting, value in urlconfig:
|
for setting, value in urlconfig:
|
||||||
@@ -148,22 +131,8 @@ c.input.insert_mode.auto_leave = False
|
|||||||
c.input.insert_mode.plugins = True
|
c.input.insert_mode.plugins = True
|
||||||
c.messages.timeout = 5000
|
c.messages.timeout = 5000
|
||||||
c.qt.force_platform = "wayland"
|
c.qt.force_platform = "wayland"
|
||||||
|
c.qt.force_software_rendering = "qt-quick"
|
||||||
c.qt.highdpi = True
|
c.qt.highdpi = True
|
||||||
qt_args = [
|
|
||||||
"disable-features=WebAuth", # makes BankID work
|
|
||||||
]
|
|
||||||
# Disable GPU by default (for AI training), unless QUTE_ENABLE_GPU is set
|
|
||||||
if os.environ.get("QUTE_ENABLE_GPU") != "1":
|
|
||||||
qt_args.extend(
|
|
||||||
[
|
|
||||||
"disable-gpu", # Stops using the GPU for rendering
|
|
||||||
"disable-gpu-compositing", # Forces CPU compositing
|
|
||||||
"disable-accelerated-2d-canvas", # Offloads canvas drawing to CPU
|
|
||||||
"disable-accelerated-video-decode", # Prevents VRAM usage for videos
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
c.qt.args = qt_args
|
|
||||||
c.scrolling.bar = "always"
|
c.scrolling.bar = "always"
|
||||||
c.scrolling.smooth = False
|
c.scrolling.smooth = False
|
||||||
c.session.lazy_restore = False
|
c.session.lazy_restore = False
|
||||||
@@ -195,18 +164,18 @@ c.tabs.tabs_are_windows = False
|
|||||||
c.tabs.title.format = "{index}.{current_title}"
|
c.tabs.title.format = "{index}.{current_title}"
|
||||||
c.tabs.undo_stack_size = 1000
|
c.tabs.undo_stack_size = 1000
|
||||||
c.tabs.width = "15%"
|
c.tabs.width = "15%"
|
||||||
c.url.start_pages = "https://www.google.com/search?hl=en&source=hp"
|
c.url.start_pages = "http://www.google.com/search?hl=en&source=hp"
|
||||||
c.url.default_page = "https://www.google.com/search?hl=en&source=hp"
|
c.url.default_page = "http://www.google.com/search?hl=en&source=hp"
|
||||||
c.url.searchengines = {
|
c.url.searchengines = dict(
|
||||||
"DEFAULT": "https://www.google.com/search?hl=en&source=hp&q={}",
|
DEFAULT="http://www.google.com/search?hl=en&source=hp&q={}",
|
||||||
"aw": "https://wiki.archlinux.org/?search={}",
|
aw="https://wiki.archlinux.org/?search={}",
|
||||||
"ap": "https://www.archlinux.org/packages/?q={}",
|
ap="https://www.archlinux.org/packages/?q={}",
|
||||||
"gh": "https://github.com/search?q={}&type=repositories",
|
gh="https://github.com/search?q={}&type=repositories",
|
||||||
"ip": "https://iplocation.io/ip/{}",
|
ip="https://iplocation.io/ip/{}",
|
||||||
"sh": "https://explainshell.com/explain?cmd={}",
|
sh="https://explainshell.com/explain?cmd={}",
|
||||||
"wi": "https://en.wikipedia.org/w/index.php?search={}",
|
wi="https://en.wikipedia.org/w/index.php?search={}",
|
||||||
"yt": "https://yewtu.be/search?q={}",
|
yt="https://yewtu.be/search?q={}",
|
||||||
}
|
)
|
||||||
c.zoom.default = "100%"
|
c.zoom.default = "100%"
|
||||||
|
|
||||||
# FONTS
|
# FONTS
|
||||||
@@ -219,20 +188,20 @@ c.fonts.web.family.fixed = "IBM Plex Mono"
|
|||||||
c.fonts.web.family.standard = c.fonts.web.family.sans_serif
|
c.fonts.web.family.standard = c.fonts.web.family.sans_serif
|
||||||
|
|
||||||
# COLORS
|
# COLORS
|
||||||
base00 = "#0A0A0A"
|
base00 = "#181818"
|
||||||
base01 = "#111111"
|
base01 = "#282828"
|
||||||
base02 = "#333333"
|
base02 = "#383838"
|
||||||
base03 = "#585858"
|
base03 = "#585858"
|
||||||
base04 = "#b8b8b8"
|
base04 = "#b8b8b8"
|
||||||
base05 = "#FFFFFF"
|
base05 = "#d8d8d8"
|
||||||
base06 = "#e8e8e8"
|
base06 = "#e8e8e8"
|
||||||
base07 = "#f8f8f8"
|
base07 = "#f8f8f8"
|
||||||
base08 = "#FF0033"
|
base08 = "#ab4642"
|
||||||
base09 = "#dc9656"
|
base09 = "#dc9656"
|
||||||
base0A = "#FFE57F"
|
base0A = "#f7ca88"
|
||||||
base0B = "#00E5FF"
|
base0B = "#a1b56c"
|
||||||
base0C = "#86c1b9"
|
base0C = "#86c1b9"
|
||||||
base0D = "#00E5FF"
|
base0D = "#7cafc2"
|
||||||
base0E = "#ba8baf"
|
base0E = "#ba8baf"
|
||||||
base0F = "#a16946"
|
base0F = "#a16946"
|
||||||
c.colors.webpage.preferred_color_scheme = "light"
|
c.colors.webpage.preferred_color_scheme = "light"
|
||||||
@@ -266,9 +235,9 @@ c.colors.downloads.start.bg = base0D
|
|||||||
c.colors.downloads.stop.fg = base00
|
c.colors.downloads.stop.fg = base00
|
||||||
c.colors.downloads.stop.bg = base0C
|
c.colors.downloads.stop.bg = base0C
|
||||||
c.colors.downloads.error.fg = base08
|
c.colors.downloads.error.fg = base08
|
||||||
c.colors.hints.bg = base00
|
c.colors.hints.fg = base00
|
||||||
c.colors.hints.fg = base0B
|
c.colors.hints.bg = base0A
|
||||||
c.colors.hints.match.fg = base08
|
c.colors.hints.match.fg = base05
|
||||||
c.colors.keyhint.fg = base05
|
c.colors.keyhint.fg = base05
|
||||||
c.colors.keyhint.suffix.fg = base05
|
c.colors.keyhint.suffix.fg = base05
|
||||||
c.colors.keyhint.bg = base00
|
c.colors.keyhint.bg = base00
|
||||||
@@ -326,9 +295,9 @@ c.colors.tabs.pinned.selected.even.fg = base05
|
|||||||
c.colors.tabs.pinned.selected.odd.bg = base02
|
c.colors.tabs.pinned.selected.odd.bg = base02
|
||||||
c.colors.tabs.pinned.selected.odd.fg = base05
|
c.colors.tabs.pinned.selected.odd.fg = base05
|
||||||
c.colors.tabs.selected.odd.fg = base05
|
c.colors.tabs.selected.odd.fg = base05
|
||||||
|
c.colors.tabs.selected.odd.bg = base02
|
||||||
c.colors.tabs.selected.even.fg = base05
|
c.colors.tabs.selected.even.fg = base05
|
||||||
c.colors.tabs.selected.odd.bg = base0B
|
c.colors.tabs.selected.even.bg = base02
|
||||||
c.colors.tabs.selected.even.bg = base0B
|
|
||||||
|
|
||||||
# overrides
|
# overrides
|
||||||
c.colors.hints.fg = base05
|
c.colors.hints.fg = base05
|
||||||
|
|||||||
@@ -5,29 +5,19 @@ should_launch_new_window 1
|
|||||||
should_launch_new_instance 1
|
should_launch_new_instance 1
|
||||||
startup_commands toggle_visual_scroll;toggle_custom_color
|
startup_commands toggle_visual_scroll;toggle_custom_color
|
||||||
|
|
||||||
# Document Colors (Deep Black bg, Pure White text)
|
# - dracula: https://github.com/dracula/sioyek
|
||||||
custom_background_color #0A0A0A
|
# - catppuccin: https://github.com/catppuccin/sioyek
|
||||||
custom_text_color #FFFFFF
|
# - gruvbox: https://mil.ad/blog/2022/gruvbox-for-sioyek.html
|
||||||
custom_color_mode_empty_background_color #000000
|
new_macro _theme_solaris setconfig_custom_text_color(#b58900);setconfig_custom_background_color(#586e75)
|
||||||
page_separator_color #333333
|
new_macro _theme_normal setconfig_custom_text_color(#000000);setconfig_custom_background_color(#ffffff)
|
||||||
|
new_macro _theme_dark setconfig_custom_text_color(#ffffff);setconfig_custom_background_color(#000000)
|
||||||
# UI & Status Bar (Electric Cyan & Black)
|
new_macro _theme_softlight setconfig_custom_text_color(#434c5e);setconfig_custom_background_color(#faf4ed)
|
||||||
ui_background_color #111111
|
new_macro _theme_macchiato setconfig_custom_text_color(#cad3f5);setconfig_custom_background_color(#24273a)
|
||||||
ui_text_color #FFFFFF
|
new_macro _theme_frappe setconfig_custom_text_color(#c6d0f5);setconfig_custom_background_color(#303446)
|
||||||
ui_selected_background_color #333333
|
new_macro _theme_moccha setconfig_custom_text_color(#cdd6f4);setconfig_custom_background_color(#1e1e2e)
|
||||||
ui_selected_text_color #00E5FF
|
new_macro _theme_latte setconfig_custom_text_color(#4c4f69);setconfig_custom_background_color(#eff1f5)
|
||||||
|
new_macro _theme_gruvbox setconfig_custom_text_color(#fbf1c7);setconfig_custom_background_color(#282828)
|
||||||
status_bar_color #00E5FF
|
new_macro _theme_dracula setconfig_custom_text_color(0.97255 0.97255 0.94902);setconfig_custom_background_color(0.15686 0.16471 0.21176)
|
||||||
status_bar_text_color #000000
|
|
||||||
|
|
||||||
# Highlights (Cyan for links, Crimson for search)
|
|
||||||
search_highlight_color #FF0033
|
|
||||||
unselected_search_highlight_color #880011
|
|
||||||
link_highlight_color #00E5FF
|
|
||||||
synctex_highlight_color #00E5FF
|
|
||||||
|
|
||||||
# Visual Mark (You autostart this, make it subtle but sharp)
|
|
||||||
visual_mark_color #333333
|
|
||||||
|
|
||||||
# page separation
|
# page separation
|
||||||
page_separator_color #1d2021
|
page_separator_color #1d2021
|
||||||
|
|||||||
+6
-14
@@ -1,5 +1,5 @@
|
|||||||
add_newline = true
|
add_newline = true
|
||||||
right_format = """$cmd_duration\n"""
|
right_format = """$cmd_duration"""
|
||||||
|
|
||||||
[line_break]
|
[line_break]
|
||||||
disabled = false
|
disabled = false
|
||||||
@@ -8,25 +8,17 @@ disabled = false
|
|||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
[cmd_duration]
|
[cmd_duration]
|
||||||
disabled = true
|
min_time = 1000
|
||||||
|
format = 'underwent [$duration](bold yellow)'
|
||||||
|
show_milliseconds = true
|
||||||
|
|
||||||
[directory]
|
[directory]
|
||||||
truncation_length = 5
|
truncation_length = 5
|
||||||
truncate_to_repo = false
|
truncate_to_repo = false
|
||||||
truncation_symbol = "…/"
|
truncation_symbol = '…/'
|
||||||
repo_root_style = "red"
|
repo_root_style = "red"
|
||||||
before_repo_root_style = "cyan"
|
before_repo_root_style = "cyan"
|
||||||
repo_root_format = """\
|
repo_root_format = '[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) '
|
||||||
[$before_root_path]\
|
|
||||||
($before_repo_root_style)\
|
|
||||||
[$repo_root]\
|
|
||||||
($repo_root_style)\
|
|
||||||
[$path]\
|
|
||||||
($style)\
|
|
||||||
[$read_only]\
|
|
||||||
($read_only_style)\
|
|
||||||
\
|
|
||||||
"""
|
|
||||||
|
|
||||||
[git_status]
|
[git_status]
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|||||||
+56
-58
@@ -10,34 +10,29 @@ mouse_warping none
|
|||||||
|
|
||||||
# Set inner/outer gaps
|
# Set inner/outer gaps
|
||||||
smart_gaps on
|
smart_gaps on
|
||||||
gaps inner 4
|
gaps inner 2
|
||||||
gaps outer 0
|
gaps outer 0
|
||||||
|
|
||||||
# Hide titlebar on windows:
|
# Hide titlebar on windows:
|
||||||
default_border pixel 2
|
default_border pixel 1
|
||||||
smart_borders on
|
|
||||||
|
|
||||||
# Default Font
|
# Default Font
|
||||||
font pango:Noto Sans Regular 10
|
font pango:Noto Sans Regular 10
|
||||||
|
|
||||||
# Cursor
|
# Thin borders:
|
||||||
seat seat0 xcursor_theme Adwaita 0
|
smart_borders on
|
||||||
|
|
||||||
# Title format for windows
|
# Title format for windows
|
||||||
set $focus #00E5FF
|
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
|
||||||
set $unfocused #333333
|
for_window [shell="x_wayland"] title_format "%class - %title"
|
||||||
set $urgent #FF0033
|
|
||||||
set $bg #0A0A0A
|
|
||||||
set $text_dark #000000
|
|
||||||
set $text_dim #888888
|
|
||||||
|
|
||||||
# class border bground text indicator child_border
|
# class border bground text indicator child_border
|
||||||
client.focused $focus $focus $text_dark $focus $focus
|
client.focused #556064 #F9CE5C #000000 #CB4B16 #FDF6E3
|
||||||
client.focused_inactive $unfocused $unfocused $text_dim $unfocused $unfocused
|
client.focused_inactive #CB4B16 #2F3D44 #1ABC9C #454948 #454948
|
||||||
client.unfocused $unfocused $unfocused $text_dim $unfocused $unfocused
|
client.unfocused #556064 #2F3D44 #1ABC9C #454948 #454948
|
||||||
client.urgent $urgent $urgent #FFFFFF $urgent $urgent
|
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2 #268BD2
|
||||||
client.placeholder #000000 #000000 #FFFFFF #000000 #000000
|
client.placeholder #000000 #0C0C0C #ffffff #000000 #000000
|
||||||
client.background $bg
|
client.background #2B2C2B
|
||||||
|
|
||||||
# Status Bar:
|
# Status Bar:
|
||||||
bar {
|
bar {
|
||||||
@@ -72,7 +67,7 @@ set $powermenu ~/.config/sway/scripts/power_menu.sh
|
|||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
# Launch the terminal
|
# Launch the terminal
|
||||||
bindsym $mod+Return exec $term
|
bindsym $mod+Return exec $term
|
||||||
bindsym $mod+Shift+Return exec foot bash
|
bindsym $mod+Shift+Return exec foot
|
||||||
# Kill focused window
|
# Kill focused window
|
||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
# Lock screen
|
# Lock screen
|
||||||
@@ -162,15 +157,15 @@ bindsym {
|
|||||||
floating_modifier $mod normal
|
floating_modifier $mod normal
|
||||||
bindsym {
|
bindsym {
|
||||||
# Resize with arrow keys
|
# Resize with arrow keys
|
||||||
$mod+ctrl+Right resize shrink width 100 px
|
$mod+ctrl+Right resize shrink width 10 px
|
||||||
$mod+ctrl+Up resize grow height 100 px
|
$mod+ctrl+Up resize grow height 10 px
|
||||||
$mod+ctrl+Down resize shrink height 100 px
|
$mod+ctrl+Down resize shrink height 10 px
|
||||||
$mod+ctrl+Left resize grow width 100 px
|
$mod+ctrl+Left resize grow width 10 px
|
||||||
# Resize with Vim keys
|
# Resize with Vim keys
|
||||||
$mod+ctrl+$right resize shrink width 100 px
|
$mod+ctrl+$right resize shrink width 10 px
|
||||||
$mod+ctrl+$up resize grow height 100 px
|
$mod+ctrl+$up resize grow height 10 px
|
||||||
$mod+ctrl+$down resize shrink height 100 px
|
$mod+ctrl+$down resize shrink height 10 px
|
||||||
$mod+ctrl+$left resize grow width 100 px
|
$mod+ctrl+$left resize grow width 10 px
|
||||||
}
|
}
|
||||||
# Resize floating windows with mouse scroll
|
# Resize floating windows with mouse scroll
|
||||||
bindsym --whole-window --border {
|
bindsym --whole-window --border {
|
||||||
@@ -185,8 +180,8 @@ bindsym --whole-window --border {
|
|||||||
# media keys
|
# media keys
|
||||||
bindsym {
|
bindsym {
|
||||||
# Volume
|
# Volume
|
||||||
XF86AudioRaiseVolume exec pamixer --unmute -i 2
|
XF86AudioRaiseVolume exec pamixer -ui 2
|
||||||
XF86AudioLowerVolume exec pamixer --unmute -d 2
|
XF86AudioLowerVolume exec pamixer -ud 2
|
||||||
XF86AudioMute exec pamixer --toggle-mute
|
XF86AudioMute exec pamixer --toggle-mute
|
||||||
Pause exec pamixer -ui 2
|
Pause exec pamixer -ui 2
|
||||||
Print exec pamixer -ud 2
|
Print exec pamixer -ud 2
|
||||||
@@ -254,15 +249,13 @@ bindsym {
|
|||||||
|
|
||||||
# Launch the browser
|
# Launch the browser
|
||||||
$mod+i exec qutebrowser
|
$mod+i exec qutebrowser
|
||||||
$mod+Shift+i exec env QUTE_ENABLE_GPU=1 qutebrowser
|
|
||||||
|
|
||||||
# Launch the file explorer
|
# Launch the file explorer
|
||||||
$mod+o exec pcmanfm
|
$mod+o exec pcmanfm
|
||||||
|
|
||||||
# Notifications
|
# Dismiss message
|
||||||
$mod+n exec swaync-client --hide-latest
|
$mod+n exec makoctl dismiss
|
||||||
$mod+Shift+n exec swaync-client --close-latest
|
$mod+Shift+n exec makoctl dismiss -a
|
||||||
$mod+m exec swaync-client -t -sw
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# config tools
|
# config tools
|
||||||
@@ -277,7 +270,7 @@ mode "$mode_monitor" {
|
|||||||
bindsym Return mode "default"
|
bindsym Return mode "default"
|
||||||
bindsym Escape mode "default"
|
bindsym Escape mode "default"
|
||||||
}
|
}
|
||||||
bindsym $mod+Shift+m mode "$mode_monitor"
|
bindsym $mod+m mode "$mode_monitor"
|
||||||
|
|
||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
# AUTOSTART
|
# AUTOSTART
|
||||||
@@ -285,9 +278,6 @@ bindsym $mod+Shift+m mode "$mode_monitor"
|
|||||||
# Auth with polkit-gnome
|
# Auth with polkit-gnome
|
||||||
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
|
||||||
# Keyring
|
|
||||||
exec gnome-keyring-daemon --start --components=secrets
|
|
||||||
|
|
||||||
# Import environment variables for user systemd service manager
|
# Import environment variables for user systemd service manager
|
||||||
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
|
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
|
||||||
|
|
||||||
@@ -295,9 +285,20 @@ exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CU
|
|||||||
exec hash dbus-update-activation-environment 2>/dev/null && \
|
exec hash dbus-update-activation-environment 2>/dev/null && \
|
||||||
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
|
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
|
||||||
|
|
||||||
|
# Idle configuration
|
||||||
|
exec_always swayidle -w \
|
||||||
|
timeout 1200 'gtklock -d' \
|
||||||
|
timeout 2400 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
|
||||||
|
before-sleep 'gtklock -d' \
|
||||||
|
after-resume 'swaymsg reload' \
|
||||||
|
idlehint 240
|
||||||
|
|
||||||
|
# Start foot server
|
||||||
|
exec_always --no-startup-id foot --server
|
||||||
|
|
||||||
exec {
|
exec {
|
||||||
# Start foot server
|
# Desktop notifications
|
||||||
exec systemctl --user enable --now foot-server.service
|
exec mako
|
||||||
|
|
||||||
# Set wallpaper
|
# Set wallpaper
|
||||||
~/.azotebg
|
~/.azotebg
|
||||||
@@ -313,21 +314,19 @@ exec {
|
|||||||
|
|
||||||
# night-time color shift
|
# night-time color shift
|
||||||
wlsunset -l 59.91:10.76
|
wlsunset -l 59.91:10.76
|
||||||
|
|
||||||
# persist clipboard after close
|
|
||||||
wl-clip-persist --clipboard regular --all-mime-type-regex '(?i)^(?!image/x-inkscape-svg).+'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_always {
|
exec_always {
|
||||||
pkill -x swayidle; exec swayidle -w \
|
|
||||||
timeout 1200 'gtklock -d' \
|
|
||||||
timeout 2400 'swaymsg "output * dpms off"' \
|
|
||||||
resume 'swaymsg "output * dpms on"' \
|
|
||||||
before-sleep 'gtklock -d' \
|
|
||||||
lock 'gtklock -d'
|
|
||||||
|
|
||||||
# nwg-drawer
|
# nwg-drawer
|
||||||
nwg-drawer -r -c 7 -is 90 -mb 10 -ml 50 -mr 50 -mt 10
|
nwg-drawer -r -c 7 -is 90 -mb 10 -ml 50 -mr 50 -mt 10
|
||||||
|
|
||||||
|
# persist clipboard after close
|
||||||
|
pkill -x wl-clip-persist
|
||||||
|
wl-clip-persist --clipboard regular --all-mime-type-regex '(?i)^(?!image/x-inkscape-svg).+'
|
||||||
|
|
||||||
|
# enable noisetorch
|
||||||
|
noisetorch -u
|
||||||
|
noisetorch -i
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
@@ -349,16 +348,13 @@ for_window [title="File Operation Progress"] floating enable, border pixel 1, st
|
|||||||
for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable
|
for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable
|
||||||
for_window [title="Picture in picture"] floating enable, sticky enable
|
for_window [title="Picture in picture"] floating enable, sticky enable
|
||||||
for_window [title="Save File"] floating enable
|
for_window [title="Save File"] floating enable
|
||||||
for_window [instance="matplotlib"] floating enable
|
|
||||||
for_window [app_id="qalculate-gtk"] floating enable
|
|
||||||
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
|
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
|
||||||
# only thunderbird main window as float
|
|
||||||
for_window [app_id="org.mozilla.Thunderbird" title="^((?!Mozilla Thunderbird).)*$"] floating enable
|
|
||||||
|
|
||||||
# steam
|
# steam
|
||||||
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
|
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
|
||||||
for_window [app_id="(?i)^steam$"] floating enable
|
for_window [app_id="^steam$"] floating enable
|
||||||
for_window [app_id="(?i)^steam$" title="^Steam$"] floating disable
|
for_window [app_id="^Steam$"] floating enable
|
||||||
|
for_window [app_id="^steam$" title="^Steam$"] floating disable
|
||||||
|
|
||||||
# Inhibit idle
|
# Inhibit idle
|
||||||
for_window [app_id="firefox"] inhibit_idle fullscreen
|
for_window [app_id="firefox"] inhibit_idle fullscreen
|
||||||
@@ -379,11 +375,13 @@ input type:touchpad {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input type:keyboard {
|
input type:keyboard {
|
||||||
xkb_layout "us_custom,us_norwegian"
|
xkb_layout "us"
|
||||||
xkb_options "grp:shifts_toggle,caps:escape"
|
xkb_variant "altgr-weur"
|
||||||
|
xkb_options "caps:escape"
|
||||||
}
|
}
|
||||||
|
|
||||||
input type:mouse {
|
input type:mouse {
|
||||||
accel_profile "flat"
|
accel_profile "flat"
|
||||||
pointer_accel 0.5
|
pointer_accel 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
# usage: import-gsettings
|
||||||
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
|
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
|
||||||
if [ ! -f "$config" ]; then exit 1; fi
|
if [ ! -f "$config" ]; then exit 1; fi
|
||||||
|
|
||||||
@@ -11,4 +13,3 @@ gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
|
|||||||
gsettings set "$gnome_schema" icon-theme "$icon_theme"
|
gsettings set "$gnome_schema" icon-theme "$icon_theme"
|
||||||
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
|
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
|
||||||
gsettings set "$gnome_schema" font-name "$font_name"
|
gsettings set "$gnome_schema" font-name "$font_name"
|
||||||
gsettings set "$gnome_schema" color-scheme 'prefer-dark'
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SELECTION="$(printf " Lock\n Suspend\n Log out\n Reboot\n Reboot to UEFI\n Shutdown" | fuzzel --dmenu -a top-right -l 6 -w 18 -p "Select an option: ")"
|
SELECTION="$(printf " Lock\n Suspend\n Log out\n Reboot\n Reboot to UEFI\n Shutdown" | fuzzel --dmenu -a top-right -l 6 -w 18 -p "Select an option: ")"
|
||||||
[[ -z "$SELECTION" ]] && exit 0
|
|
||||||
|
|
||||||
confirm_action() {
|
confirm_action() {
|
||||||
local action="$1"
|
local action="$1"
|
||||||
@@ -10,32 +9,26 @@ confirm_action() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case $SELECTION in
|
case $SELECTION in
|
||||||
*" Lock"*)
|
*" Lock"*)
|
||||||
gtklock
|
gtklock;;
|
||||||
;;
|
*" Suspend"*)
|
||||||
*" Suspend"*)
|
if confirm_action "Suspend"; then
|
||||||
if confirm_action "Suspend"; then
|
systemctl suspend-then-hibernate
|
||||||
systemctl suspend-then-hibernate
|
fi;;
|
||||||
fi
|
*" Log out"*)
|
||||||
;;
|
if confirm_action "Log out"; then
|
||||||
*" Log out"*)
|
swaymsg exit
|
||||||
if confirm_action "Log out"; then
|
fi;;
|
||||||
swaymsg exit
|
*" Reboot"*)
|
||||||
fi
|
if confirm_action "Reboot"; then
|
||||||
;;
|
systemctl reboot
|
||||||
*" Reboot"*)
|
fi;;
|
||||||
if confirm_action "Reboot"; then
|
*" Reboot to UEFI"*)
|
||||||
systemctl reboot
|
if confirm_action "Reboot to UEFI"; then
|
||||||
fi
|
systemctl reboot --firmware-setup
|
||||||
;;
|
fi;;
|
||||||
*" Reboot to UEFI"*)
|
*" Shutdown"*)
|
||||||
if confirm_action "Reboot to UEFI"; then
|
if confirm_action "Shutdown"; then
|
||||||
systemctl reboot --firmware-setup
|
systemctl poweroff
|
||||||
fi
|
fi;;
|
||||||
;;
|
|
||||||
*" Shutdown"*)
|
|
||||||
if confirm_action "Shutdown"; then
|
|
||||||
systemctl poweroff
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"positionX": "right",
|
|
||||||
"positionY": "top",
|
|
||||||
"layer": "overlay",
|
|
||||||
"control-center-layer": "top",
|
|
||||||
"layer-shell": true,
|
|
||||||
"cssPriority": "application",
|
|
||||||
"control-center-margin-top": 8,
|
|
||||||
"control-center-margin-bottom": 8,
|
|
||||||
"control-center-margin-right": 8,
|
|
||||||
"control-center-margin-left": 8,
|
|
||||||
"notification-2d-margin": true,
|
|
||||||
"notification-window-width": 400,
|
|
||||||
"keyboard-shortcuts": true,
|
|
||||||
"image-visibility": "when-available",
|
|
||||||
"transition-length": 200,
|
|
||||||
"hide-on-clear": false,
|
|
||||||
"hide-on-action": true,
|
|
||||||
"script-fail-notify": true,
|
|
||||||
"widgets": [
|
|
||||||
"title",
|
|
||||||
"dnd",
|
|
||||||
"mpris",
|
|
||||||
"volume",
|
|
||||||
"backlight",
|
|
||||||
"buttons-grid",
|
|
||||||
"notifications"
|
|
||||||
],
|
|
||||||
"widget-config": {
|
|
||||||
"title": {
|
|
||||||
"text": "Notifications",
|
|
||||||
"clear-all-button": true,
|
|
||||||
"button-text": "Clear All"
|
|
||||||
},
|
|
||||||
"dnd": {
|
|
||||||
"text": "Do Not Disturb"
|
|
||||||
},
|
|
||||||
"mpris": {
|
|
||||||
"image-size": 96,
|
|
||||||
"image-radius": 8
|
|
||||||
},
|
|
||||||
"volume": {
|
|
||||||
"label": "Volume",
|
|
||||||
"show-percentage": true
|
|
||||||
},
|
|
||||||
"backlight": {
|
|
||||||
"label": "Brightness"
|
|
||||||
},
|
|
||||||
"buttons-grid": {
|
|
||||||
"actions": [
|
|
||||||
{
|
|
||||||
"label": "WiFi",
|
|
||||||
"command": "nm-connection-editor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Bluetooth",
|
|
||||||
"command": "blueman-manager"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
@define-color bg rgba(10, 10, 10, 0.85);
|
|
||||||
@define-color border #333333;
|
|
||||||
@define-color text #FFFFFF;
|
|
||||||
@define-color focus #00E5FF;
|
|
||||||
@define-color urgent #FF0033;
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: "Noto Sans", sans-serif;
|
|
||||||
border-radius: 0px; /* Sharp corners */
|
|
||||||
background-clip: padding-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.control-center {
|
|
||||||
background: @bg;
|
|
||||||
border-left: 2px solid @border;
|
|
||||||
color: @text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.floating-notifications .notification {
|
|
||||||
background: @bg;
|
|
||||||
border: 2px solid @focus; /* Instantly clear it's a new notification */
|
|
||||||
box-shadow: none;
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background: @border;
|
|
||||||
border: 1px solid @focus;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-title {
|
|
||||||
color: @focus;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 10px;
|
|
||||||
border-bottom: 1px solid @border;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button {
|
|
||||||
background: transparent;
|
|
||||||
border: none;
|
|
||||||
color: @text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button:hover {
|
|
||||||
background: @urgent;
|
|
||||||
}
|
|
||||||
.widget-dnd,
|
|
||||||
.widget-mpris,
|
|
||||||
.widget-volume,
|
|
||||||
.widget-backlight,
|
|
||||||
.widget-buttons-grid {
|
|
||||||
background: transparent;
|
|
||||||
border: 1px solid @border;
|
|
||||||
margin: 8px;
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification-row:focus,
|
|
||||||
.notification-row:hover {
|
|
||||||
background: #111111;
|
|
||||||
border-left: 2px solid @focus;
|
|
||||||
}
|
|
||||||
@@ -69,8 +69,6 @@ bind generic um status-merge
|
|||||||
bind generic - stage-update-line
|
bind generic - stage-update-line
|
||||||
bind generic \ stage-split-chunk
|
bind generic \ stage-split-chunk
|
||||||
|
|
||||||
bind generic Y @sh -c "echo -n %(commit) | wl-copy"
|
|
||||||
|
|
||||||
bind generic c none
|
bind generic c none
|
||||||
bind generic cc !git commit
|
bind generic cc !git commit
|
||||||
bind generic ca !?@git commit --amend --no-edit
|
bind generic ca !?@git commit --amend --no-edit
|
||||||
|
|||||||
+45
-47
@@ -12,13 +12,12 @@ set -g allow-passthrough
|
|||||||
set -g history-limit 100000
|
set -g history-limit 100000
|
||||||
set -g focus-events on
|
set -g focus-events on
|
||||||
|
|
||||||
# Advertise tmux correctly to programs running inside it.
|
# Set the default terminal terminfo
|
||||||
set -g default-terminal "tmux-256color"
|
set -g default-terminal "foot"
|
||||||
set -as terminal-features ',*:RGB'
|
|
||||||
set -as terminal-features ',*:clipboard'
|
|
||||||
|
|
||||||
# Allow image passthrough
|
# True color support (Tc) and undercurl support (Smol)
|
||||||
set -gq allow-passthrough on
|
set -as terminal-overrides ',foot:Tc'
|
||||||
|
set -as terminal-overrides ',foot:Smol'
|
||||||
|
|
||||||
# Start with index 1
|
# Start with index 1
|
||||||
set -g base-index 1
|
set -g base-index 1
|
||||||
@@ -32,8 +31,11 @@ bg_active_window="color252"
|
|||||||
bg_highlight="red"
|
bg_highlight="red"
|
||||||
|
|
||||||
# pane title
|
# pane title
|
||||||
|
ps_pid='#(pgrep -P "#{pane_pid}" | tr "\n" " ")'
|
||||||
|
cmd='#(ps --no-headers -o args $(pgrep -P "#{pane_pid}"))'
|
||||||
|
# cmd='#(ps --no-headers -t #{pane_tty} -o args -O-c | tr "\n" " ")'
|
||||||
setw -g pane-border-status top
|
setw -g pane-border-status top
|
||||||
setw -g pane-border-format " #{pane_current_path} #{=/-40/…:pane_current_command} #{?alternate_on,<Alt Mode> ,}"
|
setw -g pane-border-format " #{pane_current_path} #{=/-20/…:pane_current_command} ${ps_pid}[${cmd}] #{?alternate_on,<Alt Mode> ,}"
|
||||||
set -g pane-border-style "fg=${fg_inactive_pane}"
|
set -g pane-border-style "fg=${fg_inactive_pane}"
|
||||||
set -g pane-active-border-style "fg=${fg_active_pane}"
|
set -g pane-active-border-style "fg=${fg_active_pane}"
|
||||||
|
|
||||||
@@ -60,13 +62,17 @@ set -g set-titles on
|
|||||||
######################
|
######################
|
||||||
### KEYBINDS ###
|
### KEYBINDS ###
|
||||||
######################
|
######################
|
||||||
|
# Config that is very close to a i3 window manager's keybinding.
|
||||||
|
|
||||||
|
# Set new prefix
|
||||||
|
# Note : you can press super key by set M.
|
||||||
|
# (tested with tty only)
|
||||||
set -g prefix M-a
|
set -g prefix M-a
|
||||||
|
bind M-a send-prefix
|
||||||
|
|
||||||
# First remove *all* keybindings
|
# First remove *all* keybindings
|
||||||
unbind -a
|
unbind -a
|
||||||
|
|
||||||
bind M-a send-prefix
|
|
||||||
|
|
||||||
# Basic bindings
|
# Basic bindings
|
||||||
bind ? list-keys
|
bind ? list-keys
|
||||||
bind d detach-client
|
bind d detach-client
|
||||||
@@ -74,21 +80,18 @@ bind D choose-client
|
|||||||
bind : command-prompt
|
bind : command-prompt
|
||||||
bind '~' show-messages
|
bind '~' show-messages
|
||||||
|
|
||||||
# Fix Home and End keys
|
|
||||||
bind-key -n Home send-keys "\033[H"
|
|
||||||
bind-key -n End send-keys "\033[F"
|
|
||||||
|
|
||||||
# Copy mode
|
# Copy mode
|
||||||
bind c copy-mode
|
bind c copy-mode
|
||||||
|
|
||||||
|
# clipboard control
|
||||||
bind p paste-buffer
|
bind p paste-buffer
|
||||||
bind -T copy-mode-vi v send-keys -X begin-selection
|
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||||
bind -T copy-mode-vi y send-keys -X copy-selection
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
|
||||||
bind -T copy-mode-vi Enter send-keys -X copy-selection-and-cancel
|
|
||||||
bind -T copy-mode-vi V send-keys -X select-line
|
|
||||||
bind -T copy-mode-vi Escape send-keys -X clear-selection
|
|
||||||
bind -T copy-mode-vi q send-keys -X cancel
|
|
||||||
bind -T copy-mode-vi Y send-keys -X copy-end-of-line
|
|
||||||
bind -T copy-mode-vi r send-keys -X rectangle-toggle
|
bind -T copy-mode-vi r send-keys -X rectangle-toggle
|
||||||
|
bind -T copy-mode-vi Escape send-keys -X cancel
|
||||||
|
bind -T copy-mode-vi q send-keys -X clear-selection
|
||||||
|
bind -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection primary -filter | xclip -selection clipboard"
|
||||||
|
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection primary -filter | xclip -selection clipboard"
|
||||||
|
|
||||||
# Rename window
|
# Rename window
|
||||||
bind , command-prompt "rename-window %%"
|
bind , command-prompt "rename-window %%"
|
||||||
@@ -99,10 +102,6 @@ bind t clock-mode
|
|||||||
|
|
||||||
# Show pane numbers
|
# Show pane numbers
|
||||||
bind i display-panes
|
bind i display-panes
|
||||||
ps_pid='#(pgrep -P "#{pane_pid}" | tr "\n" " ")'
|
|
||||||
cmd='#(ps --no-headers -o args $(pgrep -P "#{pane_pid}"))'
|
|
||||||
bind P display-message -d 100000 "${cmd} FOLDER:#{pane_current_path} CMD:#{=/-20/…:pane_current_command} PID:${ps_pid}"
|
|
||||||
|
|
||||||
|
|
||||||
# Config Reloads
|
# Config Reloads
|
||||||
bind r source-file ~/.config/tmux/tmux.conf \; refresh-client \; display-message "Config reloaded"
|
bind r source-file ~/.config/tmux/tmux.conf \; refresh-client \; display-message "Config reloaded"
|
||||||
@@ -118,8 +117,6 @@ bind v split-window -h -c "#{pane_current_path}"
|
|||||||
bind s split-window -v -c "#{pane_current_path}"
|
bind s split-window -v -c "#{pane_current_path}"
|
||||||
bind V split-window -fh -c "#{pane_current_path}"
|
bind V split-window -fh -c "#{pane_current_path}"
|
||||||
bind S split-window -fv -c "#{pane_current_path}"
|
bind S split-window -fv -c "#{pane_current_path}"
|
||||||
bind x split-window -fh bash
|
|
||||||
|
|
||||||
|
|
||||||
# Change layouts
|
# Change layouts
|
||||||
bind o rotate-window
|
bind o rotate-window
|
||||||
@@ -139,17 +136,16 @@ bind w choose-tree
|
|||||||
|
|
||||||
# Change current pane to next window
|
# Change current pane to next window
|
||||||
bind ` break-pane
|
bind ` break-pane
|
||||||
# Change current pane to specific window (join if exists, break if it doesn't)
|
bind 1 if 'tmux join-pane -t :1 -h' '' 'new-window -d -t :1; join-pane -t :1'
|
||||||
bind 1 if-shell 'tmux join-pane -t :1 -h' '' 'break-pane -t :1'
|
bind 2 if 'tmux join-pane -t :2 -h' '' 'new-window -d -t :2; join-pane -t :2'
|
||||||
bind 2 if-shell 'tmux join-pane -t :2 -h' '' 'break-pane -t :2'
|
bind 3 if 'tmux join-pane -t :3 -h' '' 'new-window -d -t :3; join-pane -t :3'
|
||||||
bind 3 if-shell 'tmux join-pane -t :3 -h' '' 'break-pane -t :3'
|
bind 4 if 'tmux join-pane -t :4 -h' '' 'new-window -d -t :4; join-pane -t :4'
|
||||||
bind 4 if-shell 'tmux join-pane -t :4 -h' '' 'break-pane -t :4'
|
bind 5 if 'tmux join-pane -t :5 -h' '' 'new-window -d -t :5; join-pane -t :5'
|
||||||
bind 5 if-shell 'tmux join-pane -t :5 -h' '' 'break-pane -t :5'
|
bind 6 if 'tmux join-pane -t :6 -h' '' 'new-window -d -t :6; join-pane -t :6'
|
||||||
bind 6 if-shell 'tmux join-pane -t :6 -h' '' 'break-pane -t :6'
|
bind 7 if 'tmux join-pane -t :7 -h' '' 'new-window -d -t :7; join-pane -t :7'
|
||||||
bind 7 if-shell 'tmux join-pane -t :7 -h' '' 'break-pane -t :7'
|
bind 8 if 'tmux join-pane -t :8 -h' '' 'new-window -d -t :8; join-pane -t :8'
|
||||||
bind 8 if-shell 'tmux join-pane -t :8 -h' '' 'break-pane -t :8'
|
bind 9 if 'tmux join-pane -t :9 -h' '' 'new-window -d -t :9; join-pane -t :9'
|
||||||
bind 9 if-shell 'tmux join-pane -t :9 -h' '' 'break-pane -t :9'
|
bind 0 if 'tmux join-pane -t :10 -h' '' 'new-window -d -t :10; join-pane -t :10 -h'
|
||||||
bind 0 if-shell 'tmux join-pane -t :10 -h' '' 'break-pane -t :10'
|
|
||||||
|
|
||||||
# move windows
|
# move windows
|
||||||
bind m command-prompt -p "move window to:" "move-window -t '%%'"
|
bind m command-prompt -p "move window to:" "move-window -t '%%'"
|
||||||
@@ -189,26 +185,28 @@ bind b send-keys -R \; clear-history \; send-keys Enter
|
|||||||
# various plugins
|
# various plugins
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||||
|
|
||||||
|
|
||||||
######################
|
######################
|
||||||
### PANE CONTROL ###
|
### PANE CONTROL ###
|
||||||
######################
|
######################
|
||||||
|
|
||||||
set -g @plugin 'smart-splits-nvim/backend-tmux'
|
set -g @plugin 'mrjones2014/smart-splits.nvim'
|
||||||
|
|
||||||
set -g @smart-splits_at_edge 'wrap'
|
# Optional configurations with their default values if omitted:
|
||||||
set -g @smart-splits_resize_step_size '3'
|
|
||||||
|
|
||||||
set -g @smart-splits_move_left_key 'M-h'
|
set -g @smart-splits_no_wrap '' # to disable wrapping. (any value disables wrapping)
|
||||||
set -g @smart-splits_move_down_key 'M-j'
|
|
||||||
set -g @smart-splits_move_up_key 'M-k'
|
|
||||||
set -g @smart-splits_move_right_key 'M-l'
|
|
||||||
|
|
||||||
set -g @smart-splits_resize_left_key 'C-h'
|
set -g @smart-splits_move_left_key 'M-h' # key-mapping for navigation.
|
||||||
set -g @smart-splits_resize_down_key 'C-j'
|
set -g @smart-splits_move_down_key 'M-j' # --"--
|
||||||
set -g @smart-splits_resize_up_key 'C-k'
|
set -g @smart-splits_move_up_key 'M-k' # --"--
|
||||||
set -g @smart-splits_resize_right_key 'C-l'
|
set -g @smart-splits_move_right_key 'M-l' # --"--
|
||||||
|
|
||||||
|
set -g @smart-splits_resize_left_key 'C-h' # key-mapping for resizing.
|
||||||
|
set -g @smart-splits_resize_down_key 'C-j' # --"--
|
||||||
|
set -g @smart-splits_resize_up_key 'C-k' # --"--
|
||||||
|
set -g @smart-splits_resize_right_key 'C-l' # --"--
|
||||||
|
|
||||||
set -g @smart-splits_resize_step_size '3' # change the step-size for resizing.
|
set -g @smart-splits_resize_step_size '3' # change the step-size for resizing.
|
||||||
|
|
||||||
|
|||||||
+10
-29
@@ -60,7 +60,7 @@
|
|||||||
"format-ok": "Systemd ✓",
|
"format-ok": "Systemd ✓",
|
||||||
"system": true, // Monitor failed systemwide units.
|
"system": true, // Monitor failed systemwide units.
|
||||||
"user": true, // Ignore failed user units.
|
"user": true, // Ignore failed user units.
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 250x45 systemctl-tui'"
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 isd'"
|
||||||
},
|
},
|
||||||
|
|
||||||
// Configuration - modules-right
|
// Configuration - modules-right
|
||||||
@@ -82,19 +82,20 @@
|
|||||||
"warning": 70,
|
"warning": 70,
|
||||||
"critical": 90,
|
"critical": 90,
|
||||||
},
|
},
|
||||||
"on-click": "footclient --app-id floating_shell --window-size-chars 250x150 -e btop"
|
"on-click": "footclient --app-id floating_shell --window-size-chars 120x45 -e btop"
|
||||||
},
|
},
|
||||||
|
|
||||||
"temperature": {
|
"custom/cputemp": {
|
||||||
"critical-threshold": 80,
|
"exec": "sensors | grep 'CPU:' | awk '{print substr($2,2); }'",
|
||||||
"format": " {temperatureC}°C",
|
"format": " {}",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x100 -e watch sensors'"
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 watch sensors'",
|
||||||
|
"interval": 1
|
||||||
},
|
},
|
||||||
|
|
||||||
"memory": {
|
"memory": {
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"format": "{:>3}%",
|
"format": "{:>3}%",
|
||||||
"on-click": "footclient --app-id floating_shell --window-size-chars 250x150 -e btop",
|
"on-click": "footclient --app-id floating_shell --window-size-chars 100x100 -e btop",
|
||||||
"states": {
|
"states": {
|
||||||
"warning": 70,
|
"warning": 70,
|
||||||
"critical": 90
|
"critical": 90
|
||||||
@@ -106,7 +107,7 @@
|
|||||||
"interval": 30,
|
"interval": 30,
|
||||||
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
||||||
"unit": "GB",
|
"unit": "GB",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 250x45 gdu -d'"
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /'"
|
||||||
},
|
},
|
||||||
|
|
||||||
"backlight": {
|
"backlight": {
|
||||||
@@ -132,6 +133,7 @@
|
|||||||
},
|
},
|
||||||
"on-click": "pavucontrol",
|
"on-click": "pavucontrol",
|
||||||
"tooltip-format": "{icon} {volume}% {format_source}",
|
"tooltip-format": "{icon} {volume}% {format_source}",
|
||||||
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x12 pulsemixer'",
|
||||||
"on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
"on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||||
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%",
|
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%",
|
||||||
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%"
|
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%"
|
||||||
@@ -149,27 +151,6 @@
|
|||||||
"format-icons": ["", "", "", "", ""]
|
"format-icons": ["", "", "", "", ""]
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/notification": {
|
|
||||||
"tooltip": true,
|
|
||||||
"format": "<span size='16pt'>{icon}</span>",
|
|
||||||
"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
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
"clock": {
|
||||||
"format": " {:%H:%M}",
|
"format": " {:%H:%M}",
|
||||||
"format-alt": " {:%OI:%M %p}",
|
"format-alt": " {:%OI:%M %p}",
|
||||||
|
|||||||
+93
-75
@@ -1,50 +1,60 @@
|
|||||||
|
/* =============================================================================
|
||||||
|
*
|
||||||
|
* Waybar configuration
|
||||||
|
*
|
||||||
|
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
|
||||||
|
*
|
||||||
|
* =========================================================================== */
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Keyframes & Colors
|
* Keyframes
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
@define-color highlight #00E5FF;
|
|
||||||
@define-color base1 #0A0A0A;
|
@define-color highlight #685878 ;
|
||||||
@define-color text #FFFFFF;
|
@define-color base1 #19191e ;
|
||||||
@define-color urgent #FF0033;
|
|
||||||
@define-color dim #333333;
|
|
||||||
|
|
||||||
@keyframes blink-warning {
|
@keyframes blink-warning {
|
||||||
70% {
|
70% {
|
||||||
color: @text;
|
color: white;
|
||||||
}
|
}
|
||||||
to {
|
|
||||||
color: @text;
|
to {
|
||||||
background-color: orange;
|
color: white;
|
||||||
}
|
background-color: orange;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes blink-critical {
|
@keyframes blink-critical {
|
||||||
70% {
|
70% {
|
||||||
color: @text;
|
color: white;
|
||||||
}
|
}
|
||||||
to {
|
|
||||||
color: @text;
|
to {
|
||||||
background-color: @urgent;
|
color: white;
|
||||||
}
|
background-color: red;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Base styles
|
* Base styles
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Reset all styles */
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
margin: 1px;
|
margin: 1px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The whole bar */
|
||||||
#waybar {
|
#waybar {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: @text;
|
color: #e3e3ea;
|
||||||
background-color: @base1;
|
background-color: @base1;
|
||||||
font-family: JetBrainsMono;
|
font-family: JetBrainsMono;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
border-bottom: 2px solid @dim;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Every modules */
|
/* Every modules */
|
||||||
@@ -59,72 +69,80 @@
|
|||||||
#battery,
|
#battery,
|
||||||
#clock,
|
#clock,
|
||||||
#tray {
|
#tray {
|
||||||
padding: 0.5rem 0.6rem;
|
padding:0.5rem 0.6rem;
|
||||||
margin: 1px 0px;
|
margin: 1px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Module styles
|
* Module styles
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#custom-launcher {
|
||||||
|
margin-left:15px;
|
||||||
|
margin-right:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
font-size:13px;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces button {
|
||||||
border-radius: 0px;
|
border-radius: 5px;
|
||||||
color: @text;
|
color: #eceff4;
|
||||||
padding: 1px 6px;
|
padding: 1px 6px;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
border-bottom: 2px solid transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.focused {
|
#workspaces button.focused {
|
||||||
border-bottom: 2px solid @highlight;
|
border: 1px solid #d8dee9;
|
||||||
color: @highlight;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.urgent {
|
#workspaces button.urgent {
|
||||||
border-color: @urgent;
|
border-color: #c9545d;
|
||||||
color: @urgent;
|
color: #c9545d;
|
||||||
}
|
}
|
||||||
|
|
||||||
#mode {
|
#mode {
|
||||||
background: @highlight;
|
background: @highlight;
|
||||||
color: #000000;
|
border-bottom: 3px transparent;
|
||||||
font-weight: bold;
|
color:white;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
padding: 7px;
|
padding: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#network.disconnected {
|
#network.disconnected {
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu.warning {
|
#cpu.warning {
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu.critical {
|
#cpu.critical {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory {
|
#memory {
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory.warning {
|
#memory.warning {
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory.critical {
|
#memory.critical {
|
||||||
color: red;
|
color: red;
|
||||||
animation-name: blink-critical;
|
animation-name: blink-critical;
|
||||||
animation-duration: 2s;
|
animation-duration: 2s;
|
||||||
padding-left: 5px;
|
padding-left:5px;
|
||||||
padding-right: 5px;
|
padding-right:5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#backlight.icon {
|
#backlight.icon {
|
||||||
@@ -134,35 +152,35 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio.muted {
|
#pulseaudio.muted {
|
||||||
color: @highlight;
|
color: @highlight;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery {
|
#battery {
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.warning {
|
#battery.warning {
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical {
|
#battery.critical {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.warning.discharging {
|
#battery.warning.discharging {
|
||||||
animation-name: blink-warning;
|
animation-name: blink-warning;
|
||||||
animation-duration: 3s;
|
animation-duration: 3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical.discharging {
|
#battery.critical.discharging {
|
||||||
animation-name: blink-critical;
|
animation-name: blink-critical;
|
||||||
animation-duration: 2s;
|
animation-duration: 2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-power {
|
#custom-power {
|
||||||
margin-left: 15px;
|
margin-left:15px;
|
||||||
margin-right: 15px;
|
margin-right:15px;
|
||||||
font-size: 15px;
|
font-size:15px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
[screencast]
|
[screencast]
|
||||||
chooser_type = dmenu
|
chooser_type = dmenu
|
||||||
chooser_cmd = fuzzel --dmenu
|
chooser_cmd = fuzzel --dmenu
|
||||||
|
output_name=DP-1
|
||||||
max_fps=30
|
max_fps=30
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
partial alphanumeric_keys
|
|
||||||
xkb_symbols "basic" {
|
|
||||||
include "us(basic)"
|
|
||||||
name[Group1]= "US Custom";
|
|
||||||
key <MENU> { [ Super_L ] };
|
|
||||||
};
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
partial alphanumeric_keys
|
|
||||||
xkb_symbols "basic" {
|
|
||||||
include "us(basic)"
|
|
||||||
name[Group1]= "US Custom Norwegian";
|
|
||||||
|
|
||||||
key <MENU> { [ Super_L ] };
|
|
||||||
key <AD01> { [ q, Q, aring, Aring ] };
|
|
||||||
key <AD11> { [ bracketleft, braceleft, aring, Aring ] };
|
|
||||||
key <AD02> { [ w, W, ae, AE ] };
|
|
||||||
key <AC11> { [apostrophe, quotedbl, ae, AE ] };
|
|
||||||
key <AD05> { [ t, T, oslash, Oslash ] };
|
|
||||||
key <AC10> { [ semicolon, colon, oslash, Oslash ] };
|
|
||||||
key <AC03> { [ d, D, eacute, Eacute ] };
|
|
||||||
|
|
||||||
include "level3(ralt_switch)"
|
|
||||||
};
|
|
||||||
+11
-39
@@ -1,56 +1,28 @@
|
|||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = "E"
|
on = "q"
|
||||||
run = "shell 'exiftool %s | less' --block --confirm"
|
run = "close"
|
||||||
desc = "View file metadata with Exiftool"
|
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = "q"
|
|
||||||
run = "close"
|
|
||||||
desc = "Close tab"
|
desc = "Close tab"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = "l"
|
on = "l"
|
||||||
run = "plugin smart-enter"
|
run = "plugin smart-enter"
|
||||||
desc = "Enter the child directory, or open the file"
|
desc = "Enter the child directory, or open the file"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = [ "c", "m" ]
|
on = [ "c", "m" ]
|
||||||
run = "plugin chmod"
|
run = "plugin chmod"
|
||||||
desc = "Chmod on selected files"
|
desc = "Chmod on selected files"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = "F"
|
on = "F"
|
||||||
run = "plugin smart-filter"
|
run = "plugin smart-filter"
|
||||||
desc = "Smart filter"
|
desc = "Smart filter"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = "M"
|
on = "M"
|
||||||
run = "plugin mount"
|
run = "plugin mount"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
[[mgr.prepend_keymap]]
|
||||||
on = "T"
|
on = "T"
|
||||||
run = "plugin toggle-pane max-preview"
|
run = "plugin toggle-pane max-preview"
|
||||||
desc = "Maximize or restore the preview pane"
|
desc = "Maximize or restore the preview pane"
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = "C"
|
|
||||||
run = "plugin ouch"
|
|
||||||
desc = "Compress with ouch"
|
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = [ "c", "a" ]
|
|
||||||
run = 'shell --block -- catai -T %s | nvim -R -c "set bt=nofile ft=xml" -'
|
|
||||||
desc = "catai: Dump selected files/folders into Neovim"
|
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = [ "c", "x" ]
|
|
||||||
run = """\
|
|
||||||
shell --block -- zsh -c \"args=(); for p in \\\"\\$@\\\"; do args+=(-x \\\"\\$p\\\"); done; catai -T \
|
|
||||||
\\\"\\${args[@]}\\\" | nvim -R -c \\\"set bt=nofile ft=xml\\\" -\" -- %s\
|
|
||||||
"""
|
|
||||||
desc = "catai: Dump current dir EXCEPT selected items"
|
|
||||||
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = [ "c", "d" ]
|
|
||||||
run = 'shell --block -- catai -T -d | nvim -R -c "set bt=nofile ft=xml" -'
|
|
||||||
desc = "catai: Dump git dirty files into Neovim"
|
|
||||||
|
|||||||
+17
-112
@@ -12,143 +12,48 @@ max_height = 1500
|
|||||||
|
|
||||||
[open]
|
[open]
|
||||||
prepend_rules = [
|
prepend_rules = [
|
||||||
# Directories
|
{ name = "*.csv", use = "text" },
|
||||||
{ mime = "inode/directory", use = [ "thunar", "pcmanfm", "open" ] },
|
|
||||||
|
|
||||||
# Text & Code
|
|
||||||
{ url = "*.csv", use = "text" },
|
|
||||||
{ url = "*.md", use = [ "glow", "nvim", "bat", "open" ] },
|
|
||||||
{ url = "*.json", use = [ "jq", "nvim", "bat", "open" ] },
|
|
||||||
{ mime = "text/*", use = [ "nvim", "bat", "open" ] },
|
|
||||||
{ mime = "inode/x-empty", use = [ "nvim", "open" ] },
|
|
||||||
|
|
||||||
# PDF & Documents
|
|
||||||
{ mime = "application/pdf", use = [ "zathura", "sioyek", "okular", "xournalpp", "chrome", "firefox", "open" ] },
|
|
||||||
{ mime = "application/vnd.openxmlformats-officedocument.*", use = [ "libreoffice", "calligra", "open" ] },
|
|
||||||
{ mime = "application/vnd.oasis.opendocument.*", use = [ "libreoffice", "calligra", "open" ] },
|
|
||||||
|
|
||||||
# Images
|
|
||||||
{ mime = "image/heic", use = [ "swappy", "krita", "open" ] },
|
|
||||||
{ mime = "image/*", use = [ "qimgv", "swappy", "krita", "open" ] },
|
|
||||||
|
|
||||||
# Video & Audio
|
|
||||||
{ mime = "video/*", use = [ "mpv", "vlc", "open" ] },
|
|
||||||
{ mime = "audio/*", use = [ "quodlibet", "mpv", "vlc", "open" ] },
|
|
||||||
|
|
||||||
# Archives
|
|
||||||
{ mime = "application/zip", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
{ mime = "application/x-tar", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
{ mime = "application/gzip", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
{ mime = "application/x-bzip*", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
{ mime = "application/x-7z-compressed", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
{ mime = "application/x-rar", use = [ "ouch", "file-roller", "open" ] },
|
|
||||||
|
|
||||||
# Web pages
|
|
||||||
{ mime = "text/html", use = [ "qutebrowser", "firefox", "chrome", "w3m", "open" ] },
|
|
||||||
|
|
||||||
# JSON files
|
|
||||||
# Certificates
|
|
||||||
{ url = "*.{crt,pem,cer,der}", use = [ "cert", "nvim", "bat", "open" ] },
|
|
||||||
|
|
||||||
# Catch-all for any file (allows Exiftool on everything as a fallback)
|
|
||||||
{ url = "*", use = [ "exiftool", "open" ] },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[opener]
|
[opener]
|
||||||
# --- Text / Code (Blocking Terminal Apps) ---
|
|
||||||
text = [
|
text = [
|
||||||
{ run = "bat %s", block = true, desc = "bat" },
|
{ run = "bat $@", block = true, desc = "bat" },
|
||||||
{ run = "nvim %s", block = true, desc = "nvim" },
|
{ run = "nvim $@", block = true, desc = "nvim" },
|
||||||
]
|
]
|
||||||
nvim = [ { run = "nvim %s", block = true, desc = "Neovim" } ]
|
|
||||||
bat = [ { run = "bat %s", block = true, desc = "Bat" } ]
|
|
||||||
glow = [ { run = "glow --pager %s", block = true, desc = "Glow" } ]
|
|
||||||
jq = [ { run = "jq -C . %s | less -R", block = true, desc = "jq viewer" } ]
|
|
||||||
cert = [ { run = "openssl x509 -text -noout -in %s | less", block = true, desc = "View Cert (openssl)" } ]
|
|
||||||
|
|
||||||
# --- PDFs (Orphaned GUI Apps) ---
|
|
||||||
zathura = [ { run = "zathura %s", orphan = true, desc = "Zathura" } ]
|
|
||||||
sioyek = [ { run = "sioyek %s", orphan = true, desc = "Sioyek" } ]
|
|
||||||
okular = [ { run = "okular %s", orphan = true, desc = "Okular" } ]
|
|
||||||
xournalpp = [ { run = "xournalpp %s", orphan = true, desc = "Xournal++" } ]
|
|
||||||
|
|
||||||
# --- Browsers (Orphaned GUI Apps) ---
|
|
||||||
chrome = [ { run = "google-chrome-stable %s", orphan = true, desc = "Chrome" } ]
|
|
||||||
firefox = [ { run = "firefox %s", orphan = true, desc = "Firefox" } ]
|
|
||||||
qutebrowser = [ { run = "qutebrowser %s", orphan = true, desc = "Qutebrowser" } ]
|
|
||||||
w3m = [ { run = "w3m %s", orphan = true, desc = "w3m" } ]
|
|
||||||
|
|
||||||
# --- Media: Video / Audio (Orphaned GUI Apps) ---
|
|
||||||
mpv = [ { run = "mpv %s", orphan = true, desc = "MPV" } ]
|
|
||||||
vlc = [ { run = "vlc %s", orphan = true, desc = "VLC" } ]
|
|
||||||
quodlibet = [ { run = "quodlibet %s", orphan = true, desc = "quod libet" } ]
|
|
||||||
|
|
||||||
# --- Images (Orphaned GUI Apps) ---
|
|
||||||
qimgv = [ { run = "qimgv %s", orphan = true, desc = "qimgv" } ]
|
|
||||||
swappy = [ { run = "swappy -f %s", orphan = true, desc = "swappy" } ]
|
|
||||||
krita = [ { run = "krita %s", orphan = true, desc = "krita" } ]
|
|
||||||
|
|
||||||
# --- Office Documents (Orphaned GUI Apps) ---
|
|
||||||
libreoffice = [ { run = "libreoffice %s", orphan = true, desc = "LibreOffice" } ]
|
|
||||||
calligra = [ { run = "calligrawords %s", orphan = true, desc = "Calligra" } ]
|
|
||||||
|
|
||||||
# --- Archives ---
|
|
||||||
ouch = [ { run = "ouch d -y %s", desc = "Extract here with ouch" } ]
|
|
||||||
file-roller = [ { run = "file-roller %s", orphan = true, desc = "File Roller" } ]
|
|
||||||
|
|
||||||
# --- Directories (Orphaned GUI Apps) ---
|
|
||||||
thunar = [ { run = "thunar %s", orphan = true, desc = "Thunar" } ]
|
|
||||||
pcmanfm = [ { run = "pcmanfm %s", orphan = true, desc = "PCManFM" } ]
|
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
cursor_blink = true
|
cursor_blink = true
|
||||||
|
|
||||||
[[plugin.append_previewers]]
|
|
||||||
url = "*"
|
|
||||||
run = "file-extra-metadata"
|
|
||||||
|
|
||||||
[[plugin.prepend_fetchers]]
|
[[plugin.prepend_fetchers]]
|
||||||
group = "git"
|
id = "git"
|
||||||
url = "*"
|
name = "*"
|
||||||
run = "git"
|
run = "git"
|
||||||
|
|
||||||
[[plugin.prepend_fetchers]]
|
[[plugin.prepend_fetchers]]
|
||||||
group = "git"
|
id = "git"
|
||||||
url = "*/"
|
name = "*/"
|
||||||
run = "git"
|
run = "git"
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
[[plugin.prepend_previewers]]
|
||||||
mime = "application/{*zip,tar,bzip2,7z*,rar,xz,zstd,java-archive}"
|
name = "*.tar*"
|
||||||
run = "ouch"
|
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
|
||||||
url = "*/"
|
|
||||||
run = "eza-preview"
|
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
|
||||||
url = "*.tar*"
|
|
||||||
run = 'piper --format=url -- tar tf "$1"'
|
run = 'piper --format=url -- tar tf "$1"'
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
[[plugin.prepend_previewers]]
|
||||||
url = "*.csv"
|
name = "*.csv"
|
||||||
run = 'piper -- bat -p --color=always "$1"'
|
run = 'piper -- bat -p --color=always "$1"'
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
[[plugin.prepend_previewers]]
|
||||||
url = "*.md"
|
name = "*.md"
|
||||||
run = 'piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"'
|
run = 'piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"'
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
[[plugin.prepend_previewers]]
|
||||||
url = "*.parquet"
|
name = "*/"
|
||||||
run = "parquet-preview"
|
run = 'piper -- eza -TL=3 --color=always --icons=always --group-directories-first --no-quotes "$1"'
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
[[plugin.append_previewers]]
|
||||||
url = "*.parq"
|
name = "*"
|
||||||
run = "parquet-preview"
|
run = 'file-extra-metadata'
|
||||||
|
|
||||||
[[plugin.prepend_previewers]]
|
|
||||||
url = "*.pq"
|
|
||||||
run = "parquet-preview"
|
|
||||||
|
|
||||||
[[plugin.prepend_spotters]]
|
[[plugin.prepend_spotters]]
|
||||||
url = "*"
|
name = "*"
|
||||||
run = "file-extra-metadata"
|
run = 'file-extra-metadata'
|
||||||
|
|||||||
+2
-13
@@ -3,7 +3,7 @@ export SYSTEMD_EDITOR=nvim
|
|||||||
export EDITOR=nvim
|
export EDITOR=nvim
|
||||||
export VISUAL=nvim
|
export VISUAL=nvim
|
||||||
export PAGER="bat --style=header,rule,snip"
|
export PAGER="bat --style=header,rule,snip"
|
||||||
export PATH=~/.local/bin:${KREW_ROOT:-$HOME/.krew}/bin:$PATH
|
export PATH=~/.local/bin:$PATH
|
||||||
export BROWSER=/usr/bin/qutebrowser
|
export BROWSER=/usr/bin/qutebrowser
|
||||||
export HISTFILE=~/.config/zsh/history
|
export HISTFILE=~/.config/zsh/history
|
||||||
export HISTSIZE=200000
|
export HISTSIZE=200000
|
||||||
@@ -13,17 +13,6 @@ export SAVEHIST=200000
|
|||||||
alias ls='ls --color=auto -Ah'
|
alias ls='ls --color=auto -Ah'
|
||||||
alias ..='cd ..'
|
alias ..='cd ..'
|
||||||
alias ...='cd ../..'
|
alias ...='cd ../..'
|
||||||
catai() {
|
|
||||||
if [[ " $* " == *" -i "* || " $* " == *" -y "* ]]; then
|
|
||||||
local cmd
|
|
||||||
cmd="$(command catai --print-cmd "$@")" && [[ -n "$cmd" ]] && print -z "$cmd"
|
|
||||||
else
|
|
||||||
command catai "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
alias cataid='catai -d'
|
|
||||||
alias cataiy='catai -y'
|
|
||||||
alias sioyek="QT_QPA_PLATFORM=xcb sioyek"
|
|
||||||
|
|
||||||
# --- basic keybinds ---
|
# --- basic keybinds ---
|
||||||
bindkey '^[[Z' reverse-menu-complete # shift-tab
|
bindkey '^[[Z' reverse-menu-complete # shift-tab
|
||||||
@@ -47,7 +36,7 @@ autoload -Uz compinit
|
|||||||
compinit -d "~/.config/zsh/zcompdump"
|
compinit -d "~/.config/zsh/zcompdump"
|
||||||
zstyle ':completion:*' menu select
|
zstyle ':completion:*' menu select
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|[._-]=** r:|=**'
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|[._-]=** r:|=**'
|
||||||
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
zstyle ':completion:*' list-colors ''
|
||||||
if command -v kubectl >/dev/null 2>&1; then
|
if command -v kubectl >/dev/null 2>&1; then
|
||||||
source <(kubectl completion zsh)
|
source <(kubectl completion zsh)
|
||||||
fi
|
fi
|
||||||
|
|||||||
+25
-15
@@ -1,7 +1,7 @@
|
|||||||
[core]
|
[core]
|
||||||
filemode = false
|
filemode = false
|
||||||
pager = delta
|
pager = delta --diff-so-fancy
|
||||||
autocrlf = input
|
autorcrlf = true
|
||||||
editor = nvim
|
editor = nvim
|
||||||
[user]
|
[user]
|
||||||
name = Henrik Bakken
|
name = Henrik Bakken
|
||||||
@@ -13,10 +13,8 @@
|
|||||||
required = true
|
required = true
|
||||||
[interactive]
|
[interactive]
|
||||||
diffFilter = delta --color-only
|
diffFilter = delta --color-only
|
||||||
|
; [merge]
|
||||||
[merge]
|
; conflictstyle = diff3
|
||||||
conflictstyle = zdiff3
|
|
||||||
|
|
||||||
[delta]
|
[delta]
|
||||||
navigate = true
|
navigate = true
|
||||||
light = false
|
light = false
|
||||||
@@ -31,14 +29,16 @@
|
|||||||
plus-non-emph-style = bold green
|
plus-non-emph-style = bold green
|
||||||
plus-emph-style = bold reverse green
|
plus-emph-style = bold reverse green
|
||||||
[delta "interactive"]
|
[delta "interactive"]
|
||||||
keep-plus-minus-markers = false
|
keep-plus-minus-markers = false[delta "decorations"]
|
||||||
[delta "decorations"]
|
|
||||||
commit-decoration-style = bold yellow box ul
|
commit-decoration-style = bold yellow box ul
|
||||||
file-style = bold yellow ul
|
file-style = bold yellow ul
|
||||||
file-decoration-style = none
|
file-decoration-style = none
|
||||||
hunk-header-decoration-style = cyan box ul
|
hunk-header-decoration-style = cyan box ul
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
defaultBranch = main
|
||||||
|
|
||||||
|
# better defaults
|
||||||
|
# https://blog.gitbutler.com/how-git-core-devs-configure-git/
|
||||||
[column]
|
[column]
|
||||||
ui = auto
|
ui = auto
|
||||||
[branch]
|
[branch]
|
||||||
@@ -57,8 +57,6 @@
|
|||||||
prune = true
|
prune = true
|
||||||
pruneTags = true
|
pruneTags = true
|
||||||
all = true
|
all = true
|
||||||
[pull]
|
|
||||||
rebase = true
|
|
||||||
[help]
|
[help]
|
||||||
autocorrect = prompt
|
autocorrect = prompt
|
||||||
[rebase]
|
[rebase]
|
||||||
@@ -66,12 +64,24 @@
|
|||||||
autoStash = true
|
autoStash = true
|
||||||
updateRefs = true
|
updateRefs = true
|
||||||
|
|
||||||
[rerere]
|
# Improved colors for the highlighted bits
|
||||||
enabled = true
|
# https://github.com/so-fancy/diff-so-fancy
|
||||||
autoupdate = true
|
|
||||||
[color]
|
[color]
|
||||||
ui = true
|
ui = true
|
||||||
|
[color "diff-highlight"]
|
||||||
|
oldNormal = red bold
|
||||||
|
oldHighlight = red bold 52
|
||||||
|
newNormal = green bold
|
||||||
|
newHighlight = green bold 22
|
||||||
|
[color "diff"]
|
||||||
|
meta = 11
|
||||||
|
frag = magenta bold
|
||||||
|
func = 146 bold
|
||||||
|
commit = yellow bold
|
||||||
|
old = red bold
|
||||||
|
new = green bold
|
||||||
|
whitespace = red reverse
|
||||||
[safe]
|
[safe]
|
||||||
directory = /tmp
|
directory = /tmp
|
||||||
[credential]
|
[credential]
|
||||||
helper = /usr/lib/git-core/git-credential-libsecret
|
helper = store
|
||||||
|
|||||||
@@ -1,352 +0,0 @@
|
|||||||
#!/usr/bin/env python3.14
|
|
||||||
"""
|
|
||||||
catai: Collect project tree & files in XML tags for LLM context.
|
|
||||||
|
|
||||||
Requires Python >= 3.14 (PEP 649/749 deferred annotations, PEP 695 type statements).
|
|
||||||
"""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import shlex
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import tempfile
|
|
||||||
from collections.abc import Iterable, Sequence
|
|
||||||
from dataclasses import dataclass
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
type GlobList = list[str]
|
|
||||||
type PathList = list[str]
|
|
||||||
|
|
||||||
DEFAULT_IGNORES: tuple[str, ...] = (
|
|
||||||
"!.git/*",
|
|
||||||
"!.env*",
|
|
||||||
"!*lock*",
|
|
||||||
"!*.lock",
|
|
||||||
"!*.min.*",
|
|
||||||
)
|
|
||||||
|
|
||||||
EXAMPLES = """
|
|
||||||
Examples:
|
|
||||||
catai # Dump entire current repo
|
|
||||||
catai src/ # Dump everything inside src/
|
|
||||||
catai src -x legacy # Everything in src/ except src/legacy/
|
|
||||||
catai src -x '*.test.ts' -x dist # Exclude multiple patterns
|
|
||||||
catai src '!legacy' '!*.spec.js' # Exclude using '!' shorthand
|
|
||||||
catai -T src/main.rs # Single file without <project_tree>
|
|
||||||
catai -i src -x vendor # Pick files in fzf
|
|
||||||
catai -y # Pick files/folders in Yazi
|
|
||||||
catai -d # Only git-modified & untracked files
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(slots=True, frozen=True)
|
|
||||||
class Config:
|
|
||||||
paths: PathList
|
|
||||||
rg_globs: GlobList
|
|
||||||
dirty: bool
|
|
||||||
no_tree: bool
|
|
||||||
interactive: bool
|
|
||||||
yazi: bool
|
|
||||||
print_cmd: bool
|
|
||||||
|
|
||||||
|
|
||||||
def expand_exclude(pattern: str) -> GlobList:
|
|
||||||
"""Expand a user exclusion pattern into ripgrep glob flags."""
|
|
||||||
clean = pattern.lstrip("!").rstrip("/")
|
|
||||||
if not clean:
|
|
||||||
return []
|
|
||||||
# Normalize absolute paths or leading './' so ripgrep globs match properly
|
|
||||||
try:
|
|
||||||
p = Path(clean)
|
|
||||||
if p.is_absolute():
|
|
||||||
clean = str(p.relative_to(Path.cwd()))
|
|
||||||
elif clean.startswith("./"):
|
|
||||||
clean = clean[2:]
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
return [
|
|
||||||
f"--glob=!{clean}",
|
|
||||||
f"--glob=!{clean}/**",
|
|
||||||
f"--glob=!**/{clean}",
|
|
||||||
f"--glob=!**/{clean}/**",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args(argv: Sequence[str] | None = None) -> Config:
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
prog="catai",
|
|
||||||
description="Collect project tree and files in XML tags for LLM context.",
|
|
||||||
epilog=EXAMPLES,
|
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"targets",
|
|
||||||
nargs="*",
|
|
||||||
help="Files, directories, or '!exclude' globs",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-x",
|
|
||||||
"--exclude",
|
|
||||||
action="append",
|
|
||||||
default=[],
|
|
||||||
metavar="PATTERN",
|
|
||||||
help="Exclude folder or file glob (repeatable)",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-d",
|
|
||||||
"--dirty",
|
|
||||||
action="store_true",
|
|
||||||
help="Only git modified & untracked files",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-T",
|
|
||||||
"--no-tree",
|
|
||||||
action="store_true",
|
|
||||||
help="Skip <project_tree> header",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-i",
|
|
||||||
"--interactive",
|
|
||||||
action="store_true",
|
|
||||||
help="Interactive fzf file picker",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-y",
|
|
||||||
"--yazi",
|
|
||||||
action="store_true",
|
|
||||||
help="Interactive Yazi file/folder chooser",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--print-cmd",
|
|
||||||
action="store_true",
|
|
||||||
help="Print selected command instead of executing (used by zsh print -z)",
|
|
||||||
)
|
|
||||||
|
|
||||||
ns = parser.parse_args(argv)
|
|
||||||
|
|
||||||
rg_globs: GlobList = [f"--glob={g}" for g in DEFAULT_IGNORES]
|
|
||||||
for ex in ns.exclude:
|
|
||||||
rg_globs.extend(expand_exclude(ex))
|
|
||||||
|
|
||||||
paths: PathList = []
|
|
||||||
for target in ns.targets:
|
|
||||||
match target:
|
|
||||||
case s if s.startswith("!"):
|
|
||||||
rg_globs.extend(expand_exclude(s[1:]))
|
|
||||||
case s:
|
|
||||||
paths.append(s)
|
|
||||||
|
|
||||||
return Config(
|
|
||||||
paths=paths,
|
|
||||||
rg_globs=rg_globs,
|
|
||||||
dirty=ns.dirty,
|
|
||||||
no_tree=ns.no_tree,
|
|
||||||
interactive=ns.interactive,
|
|
||||||
yazi=ns.yazi,
|
|
||||||
print_cmd=ns.print_cmd,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def run_lines(cmd: Sequence[str]) -> list[str]:
|
|
||||||
"""Run a command and return non-empty stdout lines."""
|
|
||||||
res = subprocess.run(cmd, capture_output=True, text=True, check=False)
|
|
||||||
return [line for line in res.stdout.splitlines() if line]
|
|
||||||
|
|
||||||
|
|
||||||
def render_tree(file_paths: Iterable[str]) -> str:
|
|
||||||
"""Pure-Python directory tree renderer (no external 'tree' binary required)."""
|
|
||||||
type TreeDict = dict[str, TreeDict]
|
|
||||||
root: TreeDict = {}
|
|
||||||
|
|
||||||
for raw_path in sorted(file_paths):
|
|
||||||
parts = Path(raw_path).parts
|
|
||||||
curr = root
|
|
||||||
for part in parts:
|
|
||||||
if part in (".", ""):
|
|
||||||
continue
|
|
||||||
curr = curr.setdefault(part, {})
|
|
||||||
|
|
||||||
lines: list[str] = ["."]
|
|
||||||
|
|
||||||
def walk(node: TreeDict, prefix: str = "") -> None:
|
|
||||||
items = list(node.items())
|
|
||||||
for idx, (name, children) in enumerate(items):
|
|
||||||
is_last = idx == len(items) - 1
|
|
||||||
connector = "└── " if is_last else "├── "
|
|
||||||
lines.append(f"{prefix}{connector}{name}")
|
|
||||||
if children:
|
|
||||||
extension = " " if is_last else "│ "
|
|
||||||
walk(children, prefix + extension)
|
|
||||||
|
|
||||||
walk(root)
|
|
||||||
return "\n".join(lines)
|
|
||||||
|
|
||||||
|
|
||||||
def pick_with_fzf(cfg: Config) -> PathList:
|
|
||||||
rg_cmd = [
|
|
||||||
"rg",
|
|
||||||
"--files",
|
|
||||||
"--hidden",
|
|
||||||
"--sort",
|
|
||||||
"path",
|
|
||||||
*cfg.rg_globs,
|
|
||||||
"--",
|
|
||||||
*cfg.paths,
|
|
||||||
]
|
|
||||||
all_files = run_lines(rg_cmd)
|
|
||||||
if not all_files:
|
|
||||||
return []
|
|
||||||
|
|
||||||
preview = "bat --color=always {} 2>/dev/null || cat {}"
|
|
||||||
proc = subprocess.run(
|
|
||||||
["fzf", "-m", "--preview", preview],
|
|
||||||
input="\n".join(all_files),
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
text=True,
|
|
||||||
check=False,
|
|
||||||
)
|
|
||||||
return [line for line in proc.stdout.splitlines() if line]
|
|
||||||
|
|
||||||
|
|
||||||
def pick_with_yazi(cfg: Config) -> PathList:
|
|
||||||
with tempfile.NamedTemporaryFile(prefix="yazi-chooser.", delete=False) as tmp:
|
|
||||||
tmp_path = Path(tmp.name)
|
|
||||||
|
|
||||||
try:
|
|
||||||
subprocess.run(["yazi", f"--chooser-file={tmp_path}", *cfg.paths], check=False)
|
|
||||||
if not tmp_path.exists() or tmp_path.stat().st_size == 0:
|
|
||||||
return []
|
|
||||||
raw_picked = [
|
|
||||||
line for line in tmp_path.read_text(encoding="utf-8").splitlines() if line
|
|
||||||
]
|
|
||||||
cwd = Path.cwd()
|
|
||||||
rel_picked: PathList = []
|
|
||||||
for p in raw_picked:
|
|
||||||
path_obj = Path(p)
|
|
||||||
try:
|
|
||||||
rel_picked.append(str(path_obj.relative_to(cwd)))
|
|
||||||
except ValueError:
|
|
||||||
rel_picked.append(str(path_obj))
|
|
||||||
return rel_picked
|
|
||||||
finally:
|
|
||||||
tmp_path.unlink(missing_ok=True)
|
|
||||||
|
|
||||||
|
|
||||||
def collect_files(cfg: Config, target_paths: PathList) -> tuple[PathList, PathList]:
|
|
||||||
"""Return (tree_files, matched_non_empty_text_files)."""
|
|
||||||
cwd = Path.cwd().resolve()
|
|
||||||
rel_targets: PathList = []
|
|
||||||
for p in target_paths:
|
|
||||||
resolved = Path(p).resolve()
|
|
||||||
try:
|
|
||||||
rel = str(resolved.relative_to(cwd))
|
|
||||||
rel_targets.append("." if rel == "" else rel)
|
|
||||||
except ValueError:
|
|
||||||
rel_targets.append(os.path.relpath(resolved, cwd))
|
|
||||||
|
|
||||||
if cfg.dirty:
|
|
||||||
dirty_cmd = [
|
|
||||||
"git",
|
|
||||||
"ls-files",
|
|
||||||
"-m",
|
|
||||||
"-o",
|
|
||||||
"--exclude-standard",
|
|
||||||
"--",
|
|
||||||
*rel_targets,
|
|
||||||
]
|
|
||||||
candidates = run_lines(dirty_cmd)
|
|
||||||
if not candidates:
|
|
||||||
return [], []
|
|
||||||
else:
|
|
||||||
candidates = rel_targets
|
|
||||||
|
|
||||||
# Non-empty, non-binary files via ripgrep '^'
|
|
||||||
rg_content_cmd = [
|
|
||||||
"rg",
|
|
||||||
"-l",
|
|
||||||
"--hidden",
|
|
||||||
"--sort",
|
|
||||||
"path",
|
|
||||||
*cfg.rg_globs,
|
|
||||||
"^",
|
|
||||||
"--",
|
|
||||||
*candidates,
|
|
||||||
]
|
|
||||||
matched_files = run_lines(rg_content_cmd)
|
|
||||||
|
|
||||||
# Single-file edge case: `rg -l '^' single_file.txt` prints the filename,
|
|
||||||
# Ensure it is always included if non-empty
|
|
||||||
if cfg.no_tree or not matched_files:
|
|
||||||
return [], matched_files
|
|
||||||
|
|
||||||
rg_tree_cmd = [
|
|
||||||
"rg",
|
|
||||||
"--files",
|
|
||||||
"--hidden",
|
|
||||||
"--sort",
|
|
||||||
"path",
|
|
||||||
*cfg.rg_globs,
|
|
||||||
"--",
|
|
||||||
*rel_targets,
|
|
||||||
]
|
|
||||||
tree_files = run_lines(rg_tree_cmd)
|
|
||||||
return tree_files, matched_files
|
|
||||||
|
|
||||||
|
|
||||||
def dump_output(tree_files: PathList, files: PathList, show_tree: bool) -> None:
|
|
||||||
out = sys.stdout
|
|
||||||
if show_tree and tree_files:
|
|
||||||
out.write("<project_tree>\n")
|
|
||||||
out.write(render_tree(tree_files))
|
|
||||||
out.write("\n</project_tree>\n\n")
|
|
||||||
|
|
||||||
for filepath in files:
|
|
||||||
path = Path(filepath)
|
|
||||||
out.write(f'<file path="{filepath}">\n')
|
|
||||||
out.flush()
|
|
||||||
try:
|
|
||||||
with path.open("rb") as f:
|
|
||||||
shutil.copyfileobj(f, sys.stdout.buffer)
|
|
||||||
# Ensure trailing newline before closing tag
|
|
||||||
if path.stat().st_size > 0:
|
|
||||||
with path.open("rb") as f:
|
|
||||||
f.seek(-1, os.SEEK_END)
|
|
||||||
if f.read(1) != b"\n":
|
|
||||||
out.write("\n")
|
|
||||||
except OSError as exc:
|
|
||||||
sys.stderr.write(f"Error reading {filepath}: {exc}\n")
|
|
||||||
out.write("</file>\n\n")
|
|
||||||
|
|
||||||
|
|
||||||
def main() -> int:
|
|
||||||
cfg = parse_args()
|
|
||||||
|
|
||||||
# Handle interactive pickers (-i / -y)
|
|
||||||
if cfg.interactive or cfg.yazi:
|
|
||||||
picked = pick_with_yazi(cfg) if cfg.yazi else pick_with_fzf(cfg)
|
|
||||||
if not picked:
|
|
||||||
return 1
|
|
||||||
if cfg.print_cmd:
|
|
||||||
print(f"catai {shlex.join(picked)}")
|
|
||||||
return 0
|
|
||||||
tree_files, files = collect_files(cfg, picked)
|
|
||||||
else:
|
|
||||||
tree_files, files = collect_files(cfg, cfg.paths)
|
|
||||||
|
|
||||||
if not files:
|
|
||||||
msg = (
|
|
||||||
"No dirty or untracked files found."
|
|
||||||
if cfg.dirty
|
|
||||||
else "No matching text files found."
|
|
||||||
)
|
|
||||||
sys.stderr.write(f"{msg}\n")
|
|
||||||
return 1
|
|
||||||
|
|
||||||
dump_output(tree_files, files, show_tree=not cfg.no_tree)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
raise SystemExit(main())
|
|
||||||
@@ -15,18 +15,18 @@
|
|||||||
"interval": 30,
|
"interval": 30,
|
||||||
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
||||||
"unit": "GB",
|
"unit": "GB",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 gdu -d'"
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
|
||||||
},
|
},
|
||||||
"custom/nvidia": {
|
"custom/nvidia": {
|
||||||
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
|
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
|
||||||
"format": " {}",
|
"format": " {}",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 watch nvidia-smi'",
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
|
||||||
"interval": 1
|
"interval": 1
|
||||||
},
|
},
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
"idle_inhibitor",
|
"idle_inhibitor",
|
||||||
"cpu",
|
"cpu",
|
||||||
"temperature",
|
"custom/cputemp",
|
||||||
"memory",
|
"memory",
|
||||||
"custom/nvidia",
|
"custom/nvidia",
|
||||||
"disk#root",
|
"disk#root",
|
||||||
@@ -36,7 +36,6 @@
|
|||||||
"battery",
|
"battery",
|
||||||
"clock",
|
"clock",
|
||||||
"tray",
|
"tray",
|
||||||
"custom/notification",
|
"custom/power"
|
||||||
"custom/power",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,26 @@
|
|||||||
# input
|
# input
|
||||||
# input type:tablet_tool map_to_region 2560 0 2560 1440
|
input type:tablet_tool map_to_region 2560 0 2560 1440
|
||||||
|
|
||||||
# Monitor definition
|
# output
|
||||||
set $main_monitor "BNQ BenQ RD280UG EM95T00073087"
|
exec create_output HEADLESS-1
|
||||||
|
output DP-1 resolution 5120x1440 position 0 0
|
||||||
|
output HEADLESS-1 resolution 2560x1440 position 5120 0
|
||||||
|
bindsym $mod+x output create HEADLESS-1
|
||||||
|
bindsym $mod+Shift+x output HEADLESS-1 unplug
|
||||||
|
|
||||||
# Output configuration
|
workspace 1 output DP-1
|
||||||
output $main_monitor mode 3840x2560@119.991Hz scale 1.25
|
workspace 2 output DP-1
|
||||||
|
workspace 3 output DP-1
|
||||||
# Workspace assignments
|
workspace 4 output DP-1
|
||||||
workspace 1 output $main_monitor
|
workspace 5 output DP-1
|
||||||
workspace 2 output $main_monitor
|
workspace 6 output DP-1
|
||||||
workspace 3 output $main_monitor
|
workspace 7 output DP-1
|
||||||
workspace 4 output $main_monitor
|
workspace 8 output DP-1
|
||||||
workspace 5 output $main_monitor
|
workspace 9 output DP-1
|
||||||
workspace 6 output $main_monitor
|
workspace 10 output DP-1
|
||||||
workspace 7 output $main_monitor
|
workspace INS output HEADLESS-1
|
||||||
workspace 8 output $main_monitor
|
workspace DEL output HEADLESS-1
|
||||||
workspace 9 output $main_monitor
|
workspace HOM output HEADLESS-1
|
||||||
workspace 10 output $main_monitor
|
workspace END output HEADLESS-1
|
||||||
|
workspace PUp output HEADLESS-1
|
||||||
|
workspace PDn output HEADLESS-1
|
||||||
|
|||||||
@@ -15,18 +15,18 @@
|
|||||||
"interval": 30,
|
"interval": 30,
|
||||||
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
|
||||||
"unit": "GB",
|
"unit": "GB",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 gdu -d'"
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
|
||||||
},
|
},
|
||||||
"custom/nvidia": {
|
"custom/nvidia": {
|
||||||
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
|
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
|
||||||
"format": " {}",
|
"format": " {}",
|
||||||
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 watch nvidia-smi'",
|
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
|
||||||
"interval": 1
|
"interval": 1
|
||||||
},
|
},
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
"idle_inhibitor",
|
"idle_inhibitor",
|
||||||
"cpu",
|
"cpu",
|
||||||
"temperature",
|
"custom/cputemp",
|
||||||
"memory",
|
"memory",
|
||||||
"custom/nvidia",
|
"custom/nvidia",
|
||||||
"disk#root",
|
"disk#root",
|
||||||
@@ -36,7 +36,6 @@
|
|||||||
"battery",
|
"battery",
|
||||||
"clock",
|
"clock",
|
||||||
"tray",
|
"tray",
|
||||||
"custom/notification",
|
"custom/power"
|
||||||
"custom/power",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
output * resolution 5120x1440
|
output DP-1 resolution 5120x1440
|
||||||
exec "regreet; swaymsg exit"
|
exec "regreet; swaymsg exit"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"modules-right": [
|
"modules-right": [
|
||||||
"idle_inhibitor",
|
"idle_inhibitor",
|
||||||
"cpu",
|
"cpu",
|
||||||
"temperature",
|
"custom/cputemp",
|
||||||
"memory",
|
"memory",
|
||||||
"disk#root",
|
"disk#root",
|
||||||
"backlight",
|
"backlight",
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
"battery",
|
"battery",
|
||||||
"clock",
|
"clock",
|
||||||
"tray",
|
"tray",
|
||||||
"custom/notification",
|
"custom/power"
|
||||||
"custom/power",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
output * resolution 2736x1824 scale 1.6
|
output eDP-1 resolution 2736x1824 scale 1.6
|
||||||
exec "regreet; swaymsg exit"
|
exec "regreet; swaymsg exit"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"modules-right": [
|
"modules-right": [
|
||||||
"idle_inhibitor",
|
"idle_inhibitor",
|
||||||
"cpu",
|
"cpu",
|
||||||
"temperature",
|
"custom/cputemp",
|
||||||
"memory",
|
"memory",
|
||||||
"disk#root",
|
"disk#root",
|
||||||
"backlight",
|
"backlight",
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
"battery",
|
"battery",
|
||||||
"clock",
|
"clock",
|
||||||
"tray",
|
"tray",
|
||||||
"custom/notification",
|
"custom/power"
|
||||||
"custom/power",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
output * resolution 2496x1664 scale 1.6
|
output eDP-1 resolution 2496x1664 scale 1.6
|
||||||
exec "regreet; swaymsg exit"
|
exec "regreet; swaymsg exit"
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
# ]
|
# ]
|
||||||
# ///
|
# ///
|
||||||
# TODO
|
# TODO
|
||||||
|
# fix btop colors
|
||||||
# pre-luks remote ssh
|
# pre-luks remote ssh
|
||||||
# add ufw setup
|
# add ufw setup
|
||||||
# - sudo ufw allow 22/tcp comment "ssh"
|
# - sudo ufw allow 22/tcp comment "ssh"
|
||||||
@@ -14,7 +15,6 @@
|
|||||||
# - ... etc
|
# - ... etc
|
||||||
# - sudo enable ufw
|
# - sudo enable ufw
|
||||||
from difflib import unified_diff
|
from difflib import unified_diff
|
||||||
from getpass import getuser
|
|
||||||
from os.path import lexists
|
from os.path import lexists
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
@@ -22,15 +22,14 @@ from subprocess import run
|
|||||||
from urllib.request import urlretrieve
|
from urllib.request import urlretrieve
|
||||||
|
|
||||||
HOSTNAME = open("/etc/hostname").read().strip()
|
HOSTNAME = open("/etc/hostname").read().strip()
|
||||||
HOME_TGT = Path.home()
|
HOME_TGT = Path("~").expanduser()
|
||||||
ROOT_TGT = Path("/")
|
ROOT_TGT = Path("/")
|
||||||
DOTFILES = Path(__file__).resolve().parent
|
DOTFILES = HOME_TGT / "dotfiles"
|
||||||
HOME_SRC = DOTFILES / "HOME"
|
HOME_SRC = DOTFILES / "HOME"
|
||||||
ROOT_SRC = DOTFILES / "ROOT"
|
ROOT_SRC = DOTFILES / "ROOT"
|
||||||
CFG_TGT = HOME_TGT / ".config"
|
CFG_TGT = HOME_TGT / ".config"
|
||||||
CFG_SRC = DOTFILES / "CONFIG"
|
CFG_SRC = DOTFILES / "CONFIG"
|
||||||
CUSTOM_SRC = DOTFILES / f"custom-{HOSTNAME}"
|
CUSTOM_SRC = DOTFILES / f"custom-{HOSTNAME}"
|
||||||
USERNAME = getuser()
|
|
||||||
installmap = dict(
|
installmap = dict(
|
||||||
fonts=(
|
fonts=(
|
||||||
"noto-fonts-emoji",
|
"noto-fonts-emoji",
|
||||||
@@ -52,12 +51,12 @@ installmap = dict(
|
|||||||
tmux=("tmux", "urlscan"),
|
tmux=("tmux", "urlscan"),
|
||||||
editors=(
|
editors=(
|
||||||
"neovim",
|
"neovim",
|
||||||
|
"helix",
|
||||||
"ripgrep",
|
"ripgrep",
|
||||||
"npm", # required for nvim plugins
|
"npm", # required for nvim plugins
|
||||||
"go", # required for vim-hexokinase build
|
"go", # required for vim-hexokinase build
|
||||||
"tree-sitter-cli", # required for nvim treesitter
|
|
||||||
),
|
),
|
||||||
utils=("uv", "gdu", "unzip", "jq", "bluetui"),
|
utils=("uv", "ncdu", "unzip", "jq", "bluetui"),
|
||||||
gittools=(
|
gittools=(
|
||||||
"tig",
|
"tig",
|
||||||
"diff-so-fancy",
|
"diff-so-fancy",
|
||||||
@@ -66,8 +65,6 @@ installmap = dict(
|
|||||||
"git-lfs",
|
"git-lfs",
|
||||||
"lazygit",
|
"lazygit",
|
||||||
"bat",
|
"bat",
|
||||||
"gnome-keyring", # for git credentials
|
|
||||||
"seahorse", # keyring ui
|
|
||||||
),
|
),
|
||||||
readers=(
|
readers=(
|
||||||
"sioyek",
|
"sioyek",
|
||||||
@@ -90,19 +87,19 @@ installmap = dict(
|
|||||||
"v4l-utils",
|
"v4l-utils",
|
||||||
# photos
|
# photos
|
||||||
"qimgv",
|
"qimgv",
|
||||||
"kimageformats5", # heif support
|
"digikam",
|
||||||
# music
|
# music
|
||||||
"quodlibet",
|
"quodlibet",
|
||||||
"gst-plugins-good", # required deb
|
"gst-plugins-good", # required deb
|
||||||
# audio
|
# audio
|
||||||
"pamixer",
|
"pamixer",
|
||||||
|
"noisetorch",
|
||||||
),
|
),
|
||||||
filebrowsers=(
|
filebrowsers=(
|
||||||
"yazi",
|
"yazi",
|
||||||
"ranger",
|
"ranger",
|
||||||
"pcmanfm",
|
"pcmanfm",
|
||||||
"thunar",
|
"thunar",
|
||||||
"ouch",
|
|
||||||
"gparted",
|
"gparted",
|
||||||
"sshfs",
|
"sshfs",
|
||||||
"file-roller",
|
"file-roller",
|
||||||
@@ -115,32 +112,35 @@ installmap = dict(
|
|||||||
"qutebrowser",
|
"qutebrowser",
|
||||||
"firefox",
|
"firefox",
|
||||||
"google-chrome",
|
"google-chrome",
|
||||||
|
"microsoft-edge-stable-bin",
|
||||||
"w3m",
|
"w3m",
|
||||||
"python-adblock", # for qutebrowser ad blocker
|
"python-adblock", # for qutebrowser ad blocker
|
||||||
"python-tldextract",
|
"python-tldextract",
|
||||||
"bitwarden-cli", # for qutebrowser autofill
|
"bitwarden-cli", # for qutebrowser autofill
|
||||||
),
|
),
|
||||||
chat=("discord", "gurk"),
|
chat=("discordo-git", "gurk"),
|
||||||
emailcalrss=(
|
emailcalrss=(
|
||||||
"khard", # contacts
|
"khard", # contacts
|
||||||
"khal", # calendar
|
"khal", # calendar
|
||||||
"aerc", # email
|
"aerc", # email
|
||||||
"eilmeldung", # rss reader
|
"newsboat", # rss reader
|
||||||
"vdirsyncer", # sync calendar+contacts
|
"vdirsyncer", # sync calendar+contacts
|
||||||
"pandoc", # md2html for aerc
|
"pandoc", # md2html for aerc
|
||||||
"pass", # password manager for aerc
|
"pass", # password manager for aerc and newsboat
|
||||||
"w3m", # terminal browser for aerc
|
"w3m", # terminal browser for aerc and newsboat
|
||||||
|
"urlscan", # url finder for newsboat
|
||||||
"python-aiohttp-oauthlib", # for google vdirsyncer
|
"python-aiohttp-oauthlib", # for google vdirsyncer
|
||||||
),
|
),
|
||||||
monitors=(
|
monitors=(
|
||||||
"htop", # hardware
|
"htop", # hardware
|
||||||
"btop", # hardware
|
"btop", # hardware
|
||||||
"nvtop", # gpu
|
"nvtop", # gpu
|
||||||
"systemctl-tui", # systemd
|
"lazyjournal", # journald
|
||||||
|
"isd", # systemd
|
||||||
"bandwhich", # network
|
"bandwhich", # network
|
||||||
"sysstat",
|
"sysstat",
|
||||||
),
|
),
|
||||||
apps=("keepassxc", "bitwarden", "qalculate-gtk", "discord"),
|
apps=("keepassxc", "bitwarden", "qalculate-gtk", "vesktop"),
|
||||||
sway=(
|
sway=(
|
||||||
"xdg-terminal-exec",
|
"xdg-terminal-exec",
|
||||||
# visuals
|
# visuals
|
||||||
@@ -211,7 +211,7 @@ def helper_maybe_copy(
|
|||||||
src = src_folder.expanduser() / sub
|
src = src_folder.expanduser() / sub
|
||||||
tgt = tgt_folder.expanduser() / sub
|
tgt = tgt_folder.expanduser() / sub
|
||||||
assert src.exists()
|
assert src.exists()
|
||||||
tgt.parent.mkdir(exist_ok=True, parents=True)
|
tgt.parent.mkdir(exist_ok=True)
|
||||||
if lexists(tgt):
|
if lexists(tgt):
|
||||||
if not overwrite:
|
if not overwrite:
|
||||||
if diff := compare(src, tgt):
|
if diff := compare(src, tgt):
|
||||||
@@ -238,7 +238,7 @@ def helper_clone_foldercontents(
|
|||||||
) -> None:
|
) -> None:
|
||||||
src_folder = src_parent.expanduser() / folder
|
src_folder = src_parent.expanduser() / folder
|
||||||
tgt_folder = tgt_parent.expanduser() / folder
|
tgt_folder = tgt_parent.expanduser() / folder
|
||||||
tgt_folder.mkdir(exist_ok=True, parents=True)
|
tgt_folder.mkdir(exist_ok=True)
|
||||||
assert src_folder.is_dir()
|
assert src_folder.is_dir()
|
||||||
assert tgt_folder.is_dir() or tgt_folder.is_symlink()
|
assert tgt_folder.is_dir() or tgt_folder.is_symlink()
|
||||||
for src in src_folder.iterdir():
|
for src in src_folder.iterdir():
|
||||||
@@ -265,7 +265,7 @@ def helper_install(*pkgs: str, reinstall: bool) -> None:
|
|||||||
|
|
||||||
def install_fonts(reinstall: bool) -> None:
|
def install_fonts(reinstall: bool) -> None:
|
||||||
tgt = Path("~/.local/share/fonts/Akkurat-Mono.otf").expanduser()
|
tgt = Path("~/.local/share/fonts/Akkurat-Mono.otf").expanduser()
|
||||||
tgt.parent.mkdir(exist_ok=True, parents=True)
|
tgt.parent.mkdir(exist_ok=True)
|
||||||
urlretrieve(
|
urlretrieve(
|
||||||
"https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf",
|
"https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf",
|
||||||
tgt,
|
tgt,
|
||||||
@@ -280,7 +280,6 @@ def install_zsh(overwrite: bool, reinstall: bool) -> None:
|
|||||||
run("chsh -s /usr/bin/zsh".split())
|
run("chsh -s /usr/bin/zsh".split())
|
||||||
helper_maybe_copy(CFG_SRC, CFG_TGT, "starship.toml", overwrite, symlink=True)
|
helper_maybe_copy(CFG_SRC, CFG_TGT, "starship.toml", overwrite, symlink=True)
|
||||||
helper_maybe_copy(HOME_SRC, HOME_TGT, ".zshenv", overwrite, symlink=True)
|
helper_maybe_copy(HOME_SRC, HOME_TGT, ".zshenv", overwrite, symlink=True)
|
||||||
helper_maybe_copy(HOME_SRC, HOME_TGT, ".local/bin/catai", overwrite, symlink=True)
|
|
||||||
|
|
||||||
|
|
||||||
def install_tmux(overwrite: bool, reinstall: bool) -> None:
|
def install_tmux(overwrite: bool, reinstall: bool) -> None:
|
||||||
@@ -299,6 +298,7 @@ def install_tmux(overwrite: bool, reinstall: bool) -> None:
|
|||||||
def install_editors(overwrite: bool, reinstall: bool) -> None:
|
def install_editors(overwrite: bool, reinstall: bool) -> None:
|
||||||
helper_install(*installmap["editors"], reinstall=reinstall)
|
helper_install(*installmap["editors"], reinstall=reinstall)
|
||||||
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "nvim", overwrite)
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "nvim", overwrite)
|
||||||
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "helix", overwrite)
|
||||||
|
|
||||||
|
|
||||||
def install_gittools(overwrite: bool, reinstall: bool) -> None:
|
def install_gittools(overwrite: bool, reinstall: bool) -> None:
|
||||||
@@ -330,9 +330,7 @@ def install_filebrowsers(overwrite: bool, reinstall: bool) -> None:
|
|||||||
"yazi-rs/plugins:smart-enter",
|
"yazi-rs/plugins:smart-enter",
|
||||||
"yazi-rs/plugins:smart-filter",
|
"yazi-rs/plugins:smart-filter",
|
||||||
"yazi-rs/plugins:toggle-pane",
|
"yazi-rs/plugins:toggle-pane",
|
||||||
"ahkohd/eza-preview",
|
|
||||||
"boydaihungst/file-extra-metadata",
|
"boydaihungst/file-extra-metadata",
|
||||||
"ya pkg add ndtoan96/ouch",
|
|
||||||
]:
|
]:
|
||||||
run(f"ya pkg add {plugin}".split())
|
run(f"ya pkg add {plugin}".split())
|
||||||
tgt = ".local/share/applications/userapp-file-roller.desktop"
|
tgt = ".local/share/applications/userapp-file-roller.desktop"
|
||||||
@@ -348,6 +346,7 @@ def install_netbrowsers(overwrite: bool, reinstall: bool) -> None:
|
|||||||
|
|
||||||
def install_chat(overwrite: bool, reinstall: bool) -> None:
|
def install_chat(overwrite: bool, reinstall: bool) -> None:
|
||||||
helper_install(*installmap["chat"], reinstall=reinstall)
|
helper_install(*installmap["chat"], reinstall=reinstall)
|
||||||
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "discordo", overwrite)
|
||||||
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "gurk", overwrite)
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "gurk", overwrite)
|
||||||
|
|
||||||
|
|
||||||
@@ -358,12 +357,13 @@ def install_monitors(overwrite: bool, reinstall: bool) -> None:
|
|||||||
|
|
||||||
def install_emailcalrss(overwrite: bool, reinstall: bool) -> None:
|
def install_emailcalrss(overwrite: bool, reinstall: bool) -> None:
|
||||||
helper_install(*installmap["emailcalrss"], reinstall=reinstall)
|
helper_install(*installmap["emailcalrss"], reinstall=reinstall)
|
||||||
for tgt in ["vdirsyncer", "khard", "khal", "aerc"]:
|
for tgt in ["vdirsyncer", "khard", "khal", "aerc", "newsboat"]:
|
||||||
helper_clone_foldercontents(CFG_SRC, CFG_TGT, tgt, overwrite)
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, tgt, overwrite)
|
||||||
tgt = ".local/share/applications/userapp-khalimport.desktop"
|
tgt = ".local/share/applications/userapp-khalimport.desktop"
|
||||||
helper_maybe_copy(HOME_SRC, HOME_TGT, tgt, overwrite, symlink=True)
|
helper_maybe_copy(HOME_SRC, HOME_TGT, tgt, overwrite, symlink=True)
|
||||||
run("systemctl enable --user --now vdirsyncer.timer".split())
|
run("systemctl enable --user --now vdirsyncer.timer".split())
|
||||||
run(f"chmod 600 {CFG_TGT / 'aerc/accounts.conf'}".split())
|
run(f"chmod 600 {CFG_TGT / 'aerc/accounts.conf'}".split())
|
||||||
|
(HOME_TGT / ".cache/newsboat").mkdir(exist_ok=True)
|
||||||
(HOME_TGT / "Calendars").mkdir(exist_ok=True)
|
(HOME_TGT / "Calendars").mkdir(exist_ok=True)
|
||||||
(HOME_TGT / "Contacts").mkdir(exist_ok=True)
|
(HOME_TGT / "Contacts").mkdir(exist_ok=True)
|
||||||
|
|
||||||
@@ -399,18 +399,15 @@ def install_sway(overwrite: bool, reinstall: bool) -> None:
|
|||||||
"waybar",
|
"waybar",
|
||||||
"gtklock",
|
"gtklock",
|
||||||
"gtk-3.0",
|
"gtk-3.0",
|
||||||
"swaync",
|
"mako",
|
||||||
"fuzzel",
|
"fuzzel",
|
||||||
"nwg-drawer",
|
"nwg-drawer",
|
||||||
"xdg-desktop-portal-wlr",
|
"xdg-desktop-portal-wlr",
|
||||||
"foot",
|
"foot",
|
||||||
"xkb/symbols",
|
|
||||||
]:
|
]:
|
||||||
helper_clone_foldercontents(CFG_SRC, CFG_TGT, sub, overwrite)
|
helper_clone_foldercontents(CFG_SRC, CFG_TGT, sub, overwrite)
|
||||||
helper_maybe_copy(CFG_SRC, CFG_TGT, "xdg-terminals.list", overwrite, symlink=True)
|
helper_maybe_copy(CFG_SRC, CFG_TGT, "xdg-terminals.list", overwrite, symlink=True)
|
||||||
helper_maybe_copy(CFG_SRC, CFG_TGT, "mimeapps.list", overwrite, symlink=True)
|
helper_maybe_copy(CFG_SRC, CFG_TGT, "mimeapps.list", overwrite, symlink=True)
|
||||||
# swaync configs
|
|
||||||
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "swaync", overwrite)
|
|
||||||
# custom sway configs
|
# custom sway configs
|
||||||
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "sway", overwrite)
|
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "sway", overwrite)
|
||||||
# custom waybar configs
|
# custom waybar configs
|
||||||
@@ -433,7 +430,7 @@ def configure_pytools(overwrite: bool) -> None:
|
|||||||
|
|
||||||
def install_virtwin(overwrite: bool, reinstall: bool) -> None:
|
def install_virtwin(overwrite: bool, reinstall: bool) -> None:
|
||||||
helper_install(*installmap["virtwin"], reinstall=reinstall)
|
helper_install(*installmap["virtwin"], reinstall=reinstall)
|
||||||
run(["sudo", "usermod", "-aG", "libvirt", USERNAME])
|
run("sudo usermod -aG libvirt $USER".split())
|
||||||
run("sudo virsh net-start default".split())
|
run("sudo virsh net-start default".split())
|
||||||
run("sudo virsh net-autostart default".split())
|
run("sudo virsh net-autostart default".split())
|
||||||
run("systemctl enable --now libvirtd".split())
|
run("systemctl enable --now libvirtd".split())
|
||||||
|
|||||||
Reference in New Issue
Block a user