Compare commits
153 Commits
Author | SHA1 | Date | |
---|---|---|---|
leo | 4b4d93888c | ||
leo | ceadc655e9 | ||
leo | 58faa34b40 | ||
leo | 2d2739bcb4 | ||
leo | 34d05a85e5 | ||
leo | 56a026f30e | ||
leo | 4d6864be38 | ||
leo | d88defb99d | ||
leo | 08168e0280 | ||
leo | 239f712d46 | ||
leo | 9cbb4384b4 | ||
leo | 7bd669651d | ||
leo | 7942455826 | ||
leo | c9e3d83c50 | ||
leo | 08ee327386 | ||
leo | beeff9db75 | ||
leo | bb607f63da | ||
leo | 2160982392 | ||
leo | 01199bc2e3 | ||
leo | cb4a9460f2 | ||
leo | f75864e9d2 | ||
leo | c8bb94806d | ||
leo | c4438e063b | ||
leo | cf59413aa4 | ||
leo | f243609f9e | ||
leo | ef8db72aa5 | ||
leo | f8fe1631ee | ||
leo | 974de9c42d | ||
leo | 472736536b | ||
leo | 6e67a79d7a | ||
leo | 559358be68 | ||
leo | 9efd6e07c6 | ||
leo | a70339c2dd | ||
leo | 272bd71852 | ||
leo | 9eb0683c3d | ||
leo | 8e439628f2 | ||
leo | 9b4c159326 | ||
leo | ade23c134a | ||
leo | 0cbded6e9c | ||
leo | 80b5c05352 | ||
leo | 6bcedda326 | ||
leo | 08fbf762f2 | ||
leo | 7ca0677fdd | ||
leo | a7dcd20900 | ||
leo | 50f0c113af | ||
leo | e1f0f5518d | ||
leo | 7737f3b183 | ||
leo | 4ebd5fdb21 | ||
leo | eccfdcc51a | ||
leo | 85560cb395 | ||
leo | a33b816aed | ||
leo | 2dbafcd2ed | ||
leo | ab5130f76c | ||
leo | b82a8ba935 | ||
leo | cfe6aed022 | ||
leo | 0cdfc8eef6 | ||
leo | e358aecba1 | ||
leo | 46f25dcda0 | ||
leo | 3d7b7f0923 | ||
leo | 9cca2e6958 | ||
leo | 6e06f5773f | ||
leo | fc186ba2de | ||
leo | 633b9cf790 | ||
leo | fa62ef1353 | ||
leo | 19932cbfa6 | ||
leo | 14d749995a | ||
leo | f6d776c8d9 | ||
leo | d00c1c4d3e | ||
leo | f1bd07eec6 | ||
leo | d887e7d72d | ||
leo | b2e1d48617 | ||
leo | 6b17e02256 | ||
leo | f35d7df90d | ||
leo | aa53d06408 | ||
leo | 4e27f9ba4f | ||
leo | f4f95c450b | ||
leo | 46479405ab | ||
leo | 30be3d8f24 | ||
leo | 5b1b5da4e5 | ||
leo | 1ad88ff9c1 | ||
leo | d607ed7589 | ||
leo | fc66504ecb | ||
leo | 3f72dfa5cd | ||
leo | abdb84e0fb | ||
leo | cd5bfda9a5 | ||
leo | aea1e9fbbe | ||
leo | d5090f75af | ||
leo | e56344111c | ||
leo | e1813e16c5 | ||
leo | b083ce65d4 | ||
leo | 3676b88491 | ||
leo | 0f6ddbdf43 | ||
leo | 47830cff8d | ||
leo | a2b688410f | ||
leo | b45d28b5b5 | ||
leo | 27507e96c5 | ||
leo | 9b1c911136 | ||
leo | c70827bb4f | ||
leo | 0ab1af4419 | ||
leo | 65e1aa8715 | ||
leo | ec0abecb6b | ||
leo | dc37295ce7 | ||
leo | 71e74f11bf | ||
leo | e271b3a1a1 | ||
leo | e27a0cfffa | ||
leo | 93eef90016 | ||
leo | 5872f852de | ||
leo | 773436b048 | ||
leo | fcec9cc75b | ||
leo | fe595a9d63 | ||
leo | 9c04375e5c | ||
leo | 08fce47afe | ||
leo | 2f4ee35d95 | ||
leo | f5e3ecf0e2 | ||
leo | 7f356a610f | ||
leo | 7a6e909c77 | ||
leo | 69f671a88d | ||
leo | 2147b6163c | ||
leo | 390d01582a | ||
leo | dc3b40850f | ||
leo | 33ef25d385 | ||
leo | 52fff734cf | ||
leo | 67481ba57a | ||
leo | c294c6ecd0 | ||
leo | a4c03c3d9a | ||
leo | 7c0345c13a | ||
leo | b7859d2d9a | ||
leo | fa275bb486 | ||
leo | 6d570db708 | ||
leo | d794c009bd | ||
leo | 0d6ef1aca8 | ||
leo | a7b29a206c | ||
leo | 830b52b75f | ||
leo | 443c1f5179 | ||
leo | 848dc1ad32 | ||
leo | aa557d061b | ||
leo | e1d8cd05f1 | ||
leo | 2f558e06ca | ||
leo | bc7c268c16 | ||
leo | 8790dade9c | ||
leo | d4eb047518 | ||
leo | f95e448736 | ||
leo | b0765cc656 | ||
leo | 10d9d58655 | ||
leo | a97819dd0a | ||
leo | ad68783c42 | ||
leo | a62afa4a98 | ||
leo | 546d14cbe1 | ||
leo | faa7f4ceea | ||
leo | 02196ebb22 | ||
leo | 3bc263f3b3 | ||
leo | 4cb1486f94 | ||
leo | 6a838dfd07 |
|
@ -1,7 +1,8 @@
|
|||
[build]
|
||||
jobs = 2 # number of parallel jobs, defaults to # of CPUs
|
||||
rustc = ".cargo/bin/rustc" # the rust compiler tool
|
||||
rustc-wrapper = ".cargo/bin/sccache" # enable sccache
|
||||
#rustc = ".cargo/bin/rustc" # the rust compiler tool
|
||||
# rustc-wrapper = "/usr/sbin/sccache" # enable sccache
|
||||
rustc-wrapper = "sccache" # enable sccache
|
||||
|
||||
[future-incompat-report]
|
||||
frequency = 'always' # when to display a notification about a future incompat report
|
||||
|
|
|
@ -7,7 +7,12 @@
|
|||
# with mutt's printf-like syntax.
|
||||
#
|
||||
# Default: %D %-17.17n %Z %s
|
||||
index-format=%D %-17.17n %Z %s
|
||||
# index-format=%D %-17.17n %Z %s
|
||||
index-columns = date<*,name<17,flags>4,subject<*
|
||||
column-subject = {{.ThreadPrefix}}{{.Subject}}
|
||||
column-date = {{.DateAutoFormat .Date.Local}}
|
||||
column-name = {{index (.From | names) 0}}
|
||||
column-flags = {{.Flags | join ""}}
|
||||
|
||||
#
|
||||
# See time.Time#Format at https://godoc.org/time#Time.Format
|
||||
|
@ -51,7 +56,9 @@ pinned-tab-marker='`'
|
|||
# Describes the format string to use for the directory list
|
||||
#
|
||||
# Default: %n %>r
|
||||
dirlist-format=%n %>r
|
||||
# dirlist-format=%n %>r
|
||||
dirlist-left = {{.Folder}}
|
||||
dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
|
||||
|
||||
# List of space-separated criteria to sort the messages by, see *sort*
|
||||
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
|
||||
|
@ -177,7 +184,8 @@ image/*=catimg -w $(tput cols) -
|
|||
|
||||
#
|
||||
# Executed when a new email arrives in the selected folder
|
||||
new-email=exec notify-send "aerc: you have a new email"
|
||||
# new-email=exec notify-send "aerc: you have a new email"
|
||||
mail-received = notify-send "aerc: you have a new email"
|
||||
|
||||
[templates]
|
||||
# Templates are used to populate email bodies automatically.
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
#
|
||||
# aerc main configuration
|
||||
|
||||
[ui]
|
||||
#
|
||||
# Describes the format for each row in a mailbox view. This field is compatible
|
||||
# with mutt's printf-like syntax.
|
||||
#
|
||||
# Default: %D %-17.17n %Z %s
|
||||
# index-format=%D %-17.17n %Z %s
|
||||
index-columns = date<*,name<17,flags>4,subject<*
|
||||
column-subject = {{.ThreadPrefix}}{{.Subject}}
|
||||
column-date = {{.DateAutoFormat .Date.Local}}
|
||||
column-name = {{index (.From | names) 0}}
|
||||
column-flags = {{.Flags | join ""}}
|
||||
|
||||
#
|
||||
# See time.Time#Format at https://godoc.org/time#Time.Format
|
||||
#
|
||||
# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
|
||||
timestamp-format=2006-01-02 03:04 PM
|
||||
|
||||
#
|
||||
# Width of the sidebar, including the border.
|
||||
#
|
||||
# Default: 20
|
||||
sidebar-width=20
|
||||
|
||||
#
|
||||
# Message to display when viewing an empty folder.
|
||||
#
|
||||
# Default: (no messages)
|
||||
empty-message=(no messages)
|
||||
|
||||
# Message to display when no folders exists or are all filtered
|
||||
#
|
||||
# Default: (no folders)
|
||||
empty-dirlist=(no folders)
|
||||
|
||||
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
|
||||
#
|
||||
# Default: false
|
||||
mouse-enabled=false
|
||||
|
||||
#
|
||||
# Ring the bell when new messages are received
|
||||
#
|
||||
# Default: true
|
||||
new-message-bell=true
|
||||
|
||||
# Marker to show before a pinned tab's name.
|
||||
#
|
||||
# Default: `
|
||||
pinned-tab-marker='`'
|
||||
|
||||
# Describes the format string to use for the directory list
|
||||
#
|
||||
# Default: %n %>r
|
||||
# dirlist-format=%n %>r
|
||||
dirlist-left = {{.Folder}}
|
||||
dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
|
||||
|
||||
# List of space-separated criteria to sort the messages by, see *sort*
|
||||
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
|
||||
# reverses that criterion.
|
||||
#
|
||||
# Example: "from -r date"
|
||||
#
|
||||
# Default: ""
|
||||
sort=
|
||||
|
||||
# Moves to next message when the current message is deleted
|
||||
#
|
||||
# Default: true
|
||||
next-message-on-delete=true
|
||||
|
||||
# The directories where the stylesets are stored. It takes a colon-separated
|
||||
# list of directories.
|
||||
#
|
||||
# default: /usr/local/share/aerc/stylesets/
|
||||
stylesets-dirs=/usr/share/aerc/stylesets/
|
||||
|
||||
# Sets the styleset to use for the aerc ui elements.
|
||||
#
|
||||
# Default: default
|
||||
# styleset-name=default
|
||||
styleset-name=dracula
|
||||
|
||||
[viewer]
|
||||
#
|
||||
# Specifies the pager to use when displaying emails. Note that some filters
|
||||
# may add ANSI codes to add color to rendered emails, so you may want to use a
|
||||
# pager which supports ANSI codes.
|
||||
#
|
||||
# Default: less -R
|
||||
pager=less -R
|
||||
|
||||
#
|
||||
# If an email offers several versions (multipart), you can configure which
|
||||
# mimetype to prefer. For example, this can be used to prefer plaintext over
|
||||
# html emails.
|
||||
#
|
||||
# Default: text/plain,text/html
|
||||
alternatives=text/plain,text/html
|
||||
|
||||
#
|
||||
# Default setting to determine whether to show full headers or only parsed
|
||||
# ones in message viewer.
|
||||
#
|
||||
# Default: false
|
||||
show-headers=false
|
||||
|
||||
#
|
||||
# Layout of headers when viewing a message. To display multiple headers in the
|
||||
# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
|
||||
# none of their specified headers are present in the message.
|
||||
#
|
||||
# Default: From|To,Cc|Bcc,Date,Subject
|
||||
header-layout=From|To,Cc|Bcc,Date,Subject
|
||||
|
||||
# Whether to always show the mimetype of an email, even when it is just a single part
|
||||
#
|
||||
# Default: false
|
||||
always-show-mime=false
|
||||
|
||||
# How long to wait after the last input before auto-completion is triggered.
|
||||
#
|
||||
# Default: 250ms
|
||||
completion-delay=250ms
|
||||
|
||||
#
|
||||
# Global switch for completion popovers
|
||||
#
|
||||
# Default: true
|
||||
completion-popovers=true
|
||||
|
||||
[compose]
|
||||
#
|
||||
# Specifies the command to run the editor with. It will be shown in an embedded
|
||||
# terminal, though it may also launch a graphical window if the environment
|
||||
# supports it. Defaults to $EDITOR, or vi.
|
||||
editor=
|
||||
|
||||
#
|
||||
# Default header fields to display when composing a message. To display
|
||||
# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
|
||||
#
|
||||
# Default: To|From,Subject
|
||||
header-layout=To|From,Subject,Cc|Bcc
|
||||
|
||||
#
|
||||
# Specifies the command to be used to tab-complete email addresses. Any
|
||||
# occurrence of "%s" in the address-book-cmd will be replaced with what the
|
||||
# user has typed so far.
|
||||
#
|
||||
# The command must output the completions to standard output, one completion
|
||||
# per line. Each line must be tab-delimited, with an email address occurring as
|
||||
# the first field. Only the email address field is required. The second field,
|
||||
# if present, will be treated as the contact name. Additional fields are
|
||||
# ignored.
|
||||
address-book-cmd=
|
||||
|
||||
[filters]
|
||||
#
|
||||
# Filters allow you to pipe an email body through a shell command to render
|
||||
# certain emails differently, e.g. highlighting them with ANSI escape codes.
|
||||
#
|
||||
# The first filter which matches the email's mimetype will be used, so order
|
||||
# them from most to least specific.
|
||||
#
|
||||
# You can also match on non-mimetypes, by prefixing with the header to match
|
||||
# against (non-case-sensitive) and a comma, e.g. subject,text will match a
|
||||
# subject which contains "text". Use header,~regex to match against a regex.
|
||||
# subject,~^\[PATCH=awk -f /usr/share/aerc/filters/hldiff
|
||||
subject,~^\[PATCH=awk -f /usr/libexec/aerc/filters/hldiff
|
||||
#text/html=/usr/local/share/aerc/filters/html
|
||||
text/html=/usr/libexec/aerc/filters/html
|
||||
text/*=awk -f /usr/libexec/aerc/filters/plaintext
|
||||
image/*=catimg -w $(tput cols) -
|
||||
|
||||
[triggers]
|
||||
#
|
||||
# Triggers specify commands to execute when certain events occur.
|
||||
#
|
||||
# Example:
|
||||
# new-email=exec notify-send "New email from %n" "%s"
|
||||
|
||||
#
|
||||
# Executed when a new email arrives in the selected folder
|
||||
# new-email=exec notify-send "aerc: you have a new email"
|
||||
mail-received = notify-send "aerc: you have a new email"
|
||||
|
||||
[templates]
|
||||
# Templates are used to populate email bodies automatically.
|
||||
#
|
||||
|
||||
# The directories where the templates are stored. It takes a colon-separated
|
||||
# list of directories.
|
||||
#
|
||||
# default: /usr/local/share/aerc/templates/
|
||||
template-dirs=/usr/share/aerc/templates/
|
||||
|
||||
# The template to be used for quoted replies.
|
||||
#
|
||||
# default: quoted_reply
|
||||
quoted-reply=quoted_reply
|
||||
|
||||
# The template to be used for forward as body.
|
||||
#
|
||||
# default: forward_as_body
|
||||
forwards=forward_as_body
|
|
@ -0,0 +1,3 @@
|
|||
--theme=Dracula
|
||||
--style="numbers,changes,header"
|
||||
--italic-text=always
|
|
@ -0,0 +1,2 @@
|
|||
surtur ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBtG6NCgdLHX4ztpfvYNRaslKWZcl6KdTc1DehVH4kAL
|
||||
leo ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKwshTdBgLzwY4d8N7VainZCngH88OwvPGhZ6bm87rBO
|
|
@ -1,8 +1,9 @@
|
|||
[user]
|
||||
name = surtur
|
||||
email = a_mirre@utb.cz
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[gpg]
|
||||
format = ssh
|
||||
[gpg "ssh"]
|
||||
allowedSignersFile = ~/.config/git/allowed_signers
|
||||
[oh-my-zsh]
|
||||
hide-status = 1
|
||||
[cola]
|
||||
|
|
|
@ -0,0 +1,158 @@
|
|||
# based on https://github.com/LGUG2Z/helix-vim
|
||||
theme = "base16_default"
|
||||
|
||||
[editor]
|
||||
line-number = "relative"
|
||||
[editor.lsp]
|
||||
display-messages = true
|
||||
[editor.cursor-shape]
|
||||
insert = "bar"
|
||||
normal = "block"
|
||||
[editor.whitespace]
|
||||
# render.space,tab,newline
|
||||
render = "all"
|
||||
[editor.whitespace.characters]
|
||||
space = "·"
|
||||
nbsp = "⍽"
|
||||
# tab = "→"
|
||||
tab = ">"
|
||||
newline = "¬"
|
||||
# Tabs will look like "→···" (depending on tab width)
|
||||
# tabpad = "·"
|
||||
tabpad = "-"
|
||||
|
||||
[keys.normal]
|
||||
# Quick iteration on config changes
|
||||
C-o = ":config-open"
|
||||
C-r = ":config-reload"
|
||||
|
||||
# Some nice Helix stuff
|
||||
C-h = "select_prev_sibling"
|
||||
C-j = "shrink_selection"
|
||||
C-k = "expand_selection"
|
||||
C-l = "select_next_sibling"
|
||||
|
||||
# Upstream's preference
|
||||
# o = ["open_below", "normal_mode"]
|
||||
# O = ["open_above", "normal_mode"]
|
||||
|
||||
# Muscle memory
|
||||
"{" = ["goto_prev_paragraph", "collapse_selection"]
|
||||
"}" = ["goto_next_paragraph", "collapse_selection"]
|
||||
0 = "goto_line_start"
|
||||
"$" = "goto_line_end"
|
||||
"^" = "goto_first_nonwhitespace"
|
||||
G = "goto_file_end"
|
||||
"%" = "match_brackets"
|
||||
V = ["select_mode", "extend_to_line_bounds"]
|
||||
C = ["extend_to_line_end", "yank_main_selection_to_clipboard", "delete_selection", "insert_mode"]
|
||||
D = ["extend_to_line_end", "yank_main_selection_to_clipboard", "delete_selection"]
|
||||
S = "surround_add" # Would be nice to be able to do something after this but it isn't chainable
|
||||
|
||||
# Clipboards over registers ye ye
|
||||
x = "delete_selection"
|
||||
p = ["paste_clipboard_after", "collapse_selection"]
|
||||
P = ["paste_clipboard_before", "collapse_selection"]
|
||||
# Would be nice to add ya and yi, but the surround commands can't be chained
|
||||
Y = ["extend_to_line_end", "yank_main_selection_to_clipboard", "collapse_selection"]
|
||||
|
||||
# Uncanny valley stuff, this makes w and b behave as they do Vim
|
||||
w = ["move_next_word_start", "move_char_right", "collapse_selection"]
|
||||
W = ["move_next_long_word_start", "move_char_right", "collapse_selection"]
|
||||
e = ["move_next_word_end", "collapse_selection"]
|
||||
E = ["move_next_long_word_end", "collapse_selection"]
|
||||
b = ["move_prev_word_start", "collapse_selection"]
|
||||
B = ["move_prev_long_word_start", "collapse_selection"]
|
||||
|
||||
# If you want to keep the selection-while-moving behaviour of Helix, this two lines will help a lot,
|
||||
# especially if you find having text remain selected while you have switched to insert or append mode
|
||||
#
|
||||
# There is no real difference if you have overridden the commands bound to 'w', 'e' and 'b' like above
|
||||
# But if you really want to get familiar with the Helix way of selecting-while-moving, comment the
|
||||
# bindings for 'w', 'e', and 'b' out and leave the bindings for 'i' and 'a' active below. A world of difference!
|
||||
i = ["insert_mode", "collapse_selection"]
|
||||
a = ["append_mode", "collapse_selection"]
|
||||
|
||||
# Undoing the 'd' + motion commands restores the selection which is annoying
|
||||
u = ["undo", "collapse_selection"]
|
||||
|
||||
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
|
||||
esc = ["collapse_selection", "keep_primary_selection"]
|
||||
|
||||
# Search for word under cursor
|
||||
"*" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_next"]
|
||||
"#" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_prev"]
|
||||
|
||||
# Extend and select commands that expect a manual input can't be chained
|
||||
# I've kept d[X] commands here because it's better to at least have the stuff you want to delete
|
||||
# selected so that it's just a keystroke away to delete
|
||||
[keys.normal.d]
|
||||
d = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection"]
|
||||
t = ["extend_till_char"]
|
||||
s = ["surround_delete"]
|
||||
i = ["select_textobject_inner"]
|
||||
a = ["select_textobject_around"]
|
||||
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
|
||||
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
|
||||
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
|
||||
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
|
||||
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"]
|
||||
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "delete_selection"]
|
||||
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "delete_selection"]
|
||||
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] }
|
||||
|
||||
[keys.normal.y]
|
||||
y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "normal_mode", "collapse_selection"]
|
||||
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"]
|
||||
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] }
|
||||
|
||||
[keys.normal.Z]
|
||||
Z = ":write-quit"
|
||||
|
||||
[keys.insert]
|
||||
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
|
||||
esc = ["collapse_selection", "normal_mode"]
|
||||
|
||||
[keys.select]
|
||||
# Muscle memory
|
||||
"{" = ["extend_to_line_bounds", "goto_prev_paragraph"]
|
||||
"}" = ["extend_to_line_bounds", "goto_next_paragraph"]
|
||||
0 = "goto_line_start"
|
||||
"$" = "goto_line_end"
|
||||
"^" = "goto_first_nonwhitespace"
|
||||
G = "goto_file_end"
|
||||
D = ["extend_to_line_bounds", "delete_selection", "normal_mode"]
|
||||
C = ["goto_line_start", "extend_to_line_bounds", "change_selection"]
|
||||
"%" = "match_brackets"
|
||||
S = "surround_add" # Basically 99% of what I use vim-surround for
|
||||
u = ["switch_to_lowercase", "collapse_selection", "normal_mode"]
|
||||
U = ["switch_to_uppercase", "collapse_selection", "normal_mode"]
|
||||
|
||||
# Visual-mode specific muscle memory
|
||||
i = "select_textobject_inner"
|
||||
a = "select_textobject_around"
|
||||
|
||||
# Some extra binds to allow us to insert/append in select mode because it's nice with multiple cursors
|
||||
tab = ["insert_mode", "collapse_selection"] # tab is read by most terminal editors as "C-i"
|
||||
C-a = ["append_mode", "collapse_selection"]
|
||||
|
||||
# Make selecting lines in visual mode behave sensibly
|
||||
k = ["extend_line_up", "extend_to_line_bounds"]
|
||||
j = ["extend_line_down", "extend_to_line_bounds"]
|
||||
|
||||
# Clipboards over registers ye ye
|
||||
d = ["yank_main_selection_to_clipboard", "delete_selection"]
|
||||
x = ["yank_main_selection_to_clipboard", "delete_selection"]
|
||||
y = ["yank_main_selection_to_clipboard", "normal_mode", "flip_selections", "collapse_selection"]
|
||||
Y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "goto_line_start", "collapse_selection", "normal_mode"]
|
||||
p = "replace_selections_with_clipboard" # No life without this
|
||||
P = "paste_clipboard_before"
|
||||
|
||||
# Escape the madness! No more fighting with the cursor! Or with multiple cursors!
|
||||
esc = ["collapse_selection", "keep_primary_selection", "normal_mode"]
|
|
@ -25,6 +25,26 @@
|
|||
# output "Dell Inc. DELL U2412M YPPY077L1JXS" disable
|
||||
#}
|
||||
|
||||
#profile bigscreen-sammy {
|
||||
# output eDP-1 enable mode 1920x1080 position 0,0
|
||||
# output "Samsung Electric Company LU28R55 HNMW101193" mode 2560x1440 enable position 1920,0
|
||||
#}
|
||||
|
||||
#profile bigscreen-sammy4k-clamshell {
|
||||
# output eDP-1 disable
|
||||
# output "Samsung Electric Company LU28R55 HNMW101193" mode 3840x2160 enable position 0,0
|
||||
#}
|
||||
|
||||
profile bigscreen-sammy-clamshell {
|
||||
output eDP-1 disable
|
||||
output "Samsung Electric Company LU28R55 HNMW101193" mode 2560x1440 enable position 0,0
|
||||
}
|
||||
|
||||
profile bigscreen1 {
|
||||
output eDP-1 disable
|
||||
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 enable position 0,0 scale .94
|
||||
}
|
||||
|
||||
profile bigscreen {
|
||||
output eDP-1 disable
|
||||
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 enable position 0,0 scale .94
|
||||
|
@ -32,8 +52,14 @@ profile bigscreen {
|
|||
# output eDP-1 enable mode 1920x1080 position 0,0 scale 1
|
||||
}
|
||||
|
||||
# profile bigscreen2-clamshell {
|
||||
# output eDP-1 disable
|
||||
# output "Dell Inc. DELL U2412M YPPY077L1JXS" mode 1920x1200 enable position 0,0 scale .94
|
||||
# # output eDP-1 enable mode 1920x1080 position 0,0 scale 1
|
||||
# }
|
||||
|
||||
profile single-no-clamshell {
|
||||
output eDP-1 enable position 0,0
|
||||
output eDP-1 enable mode 1920x1080 position 0,0
|
||||
output "Dell Inc. DELL U2412M Y1H5T27N1EVL" mode 1920x1200 disable
|
||||
output "Dell Inc. DELL U2412M YPPY077L1JXS" disable
|
||||
}
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
## name: Dracula
|
||||
## author: Keegan Carruthers-Smith
|
||||
## license: MIT
|
||||
## upstream: https://raw.githubusercontent.com/dracula/kitty/master/dracula.conf
|
||||
|
||||
foreground #f8f8f2
|
||||
background #282a36
|
||||
selection_foreground #ffffff
|
||||
selection_background #44475a
|
||||
url_color #8be9fd
|
||||
color0 #21222c
|
||||
color8 #6272a4
|
||||
color1 #ff5555
|
||||
color9 #ff6e6e
|
||||
color2 #50fa7b
|
||||
color10 #69ff94
|
||||
color3 #f1fa8c
|
||||
color11 #ffffa5
|
||||
color4 #bd93f9
|
||||
color12 #d6acff
|
||||
color5 #ff79c6
|
||||
color13 #ff92df
|
||||
color6 #8be9fd
|
||||
color14 #a4ffff
|
||||
color7 #f8f8f2
|
||||
color15 #ffffff
|
||||
cursor #f8f8f2
|
||||
cursor_text_color background
|
||||
active_tab_foreground #282a36
|
||||
# active_tab_background #f8f8f2
|
||||
active_tab_background #ab86e0
|
||||
# inactive_tab_foreground #282a36
|
||||
# inactive_tab_background #6272a4
|
||||
# alt
|
||||
# inactive_tab_background #2c2f3a
|
||||
# alt2
|
||||
# inactive_tab_foreground #6272a4
|
||||
inactive_tab_foreground #a0cff7
|
||||
# inactive_tab_background #2b2b2b
|
||||
inactive_tab_background #282a36
|
||||
tab_bar_background #282a36
|
||||
mark1_foreground #282a36
|
|
@ -6,10 +6,10 @@
|
|||
#: individual font faces and even specify special fonts for particular
|
||||
#: characters.
|
||||
|
||||
font_family FiraCode-Retina
|
||||
bold_font FiraCode-Bold
|
||||
italic_font CascadiaCodePL-SemiBoldItalic
|
||||
bold_italic_font CascadiaCodePL-BoldItalic
|
||||
font_family FiraCodeNFM-Ret
|
||||
bold_font FiraCodeNFM-Bold
|
||||
italic_font CascadiaCodeItalic_350wght
|
||||
bold_italic_font CascadiaCodeItalic_700wght
|
||||
# italic_font JetBrainsMono-MediumItalic
|
||||
# bold_italic_font JetBrainsMono-BoldItalic
|
||||
|
||||
|
@ -79,6 +79,7 @@ modify_font cell_width 100%
|
|||
# file: https://github.com/ryanoasis/nerd-fonts/blob/master/src/glyphs/Symbols-2048-em Nerd Font Complete.ttf
|
||||
###########################################################
|
||||
|
||||
### ## 2022-11-19 @leo: the path above is no longer available, use distro pkg (for archlinux)
|
||||
# "Nerd Fonts - Pomicons"
|
||||
symbol_map U+E000-U+E00D Symbols Nerd Font
|
||||
|
||||
|
@ -143,11 +144,11 @@ disable_ligatures never
|
|||
#: map alt+3 disable_ligatures_in tab cursor
|
||||
|
||||
# cv29: {}, cv31 ()
|
||||
font_features FiraCode-Bold +zero +ss07 +cv31
|
||||
font_features FiraCode-Light +zero +ss07 +cv31
|
||||
font_features FiraCode-Medium +zero +ss07 +cv31
|
||||
font_features FiraCode-Regular +zero +ss07 +cv31
|
||||
font_features FiraCode-Retina +zero +ss07 +cv31
|
||||
font_features FiraCodeNFM-Bold +zero +ss07 +cv31
|
||||
font_features FiraCodeNFM-Light +zero +ss07 +cv31
|
||||
font_features FiraCodeNFM-Med +zero +ss07 +cv31
|
||||
font_features FiraCodeNFM-Reg +zero +ss07 +cv31
|
||||
font_features FiraCodeNFM-Ret +zero +ss07 +cv31
|
||||
font_features JetBrainsMono-Italic +liga +calt +ss04 +ss05
|
||||
font_features JetBrainsMono-BoldItalic +liga +calt +ss04 +ss05
|
||||
font_features JetBrainsMono-MediumItalic +liga +calt +ss04 +ss05
|
||||
|
@ -1171,7 +1172,7 @@ map kitty_mod+page_down scroll_page_down
|
|||
map kitty_mod+home scroll_home
|
||||
map kitty_mod+end scroll_end
|
||||
map kitty_mod+h show_scrollback
|
||||
map kitty_mod+b launch --stdin-source=@screen_scrollback --type=overlay vim -R +":set nomod noma nolist colorcolumn=" -
|
||||
map kitty_mod+o launch --stdin-source=@screen_scrollback --type=overlay vim -R +":set nomod noma nolist colorcolumn=" -
|
||||
|
||||
#: You can pipe the contents of the current screen + history buffer as
|
||||
#: STDIN to an arbitrary program using the ``launch`` function. For
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
"theme" = "c0r73x"
|
||||
|
||||
# Default theme {
|
||||
"theme.default.static_bar" = false
|
||||
"theme.default.default_indicator" = "♦ "
|
||||
"theme.default.bar_style.bg" = "░"
|
||||
"theme.default.bar_style.fg" = "█"
|
||||
"theme.default.bar_style.indicator" = "█"
|
||||
"theme.default.bar_style.top" = "▁"
|
||||
"theme.default.bar_style.bottom" = "▔"
|
||||
"theme.default.bar_low.front" = 2
|
||||
"theme.default.bar_low.back" = 0
|
||||
"theme.default.bar_mid.front" = 3
|
||||
"theme.default.bar_mid.back" = 0
|
||||
"theme.default.bar_high.front" = 1
|
||||
"theme.default.bar_high.back" = 0
|
||||
"theme.default.volume_low" = 2
|
||||
"theme.default.volume_mid" = 3
|
||||
"theme.default.volume_high" = 1
|
||||
"theme.default.volume_peak" = 1
|
||||
"theme.default.volume_indicator" = -1
|
||||
"theme.default.selected" = 2
|
||||
"theme.default.default" = -1
|
||||
"theme.default.border" = -1
|
||||
"theme.default.dropdown.selected_text" = 0
|
||||
"theme.default.dropdown.selected" = 2
|
||||
"theme.default.dropdown.unselected" = -1
|
||||
# }
|
||||
# c0r73x theme {
|
||||
"theme.c0r73x.static_bar" = false
|
||||
"theme.c0r73x.default_indicator" = "♦ "
|
||||
"theme.c0r73x.bar_style.bg" = "■"
|
||||
"theme.c0r73x.bar_style.fg" = "■"
|
||||
"theme.c0r73x.bar_style.indicator" = "■"
|
||||
"theme.c0r73x.bar_style.top" = ""
|
||||
"theme.c0r73x.bar_style.bottom" = ""
|
||||
"theme.c0r73x.bar_low.front" = 0
|
||||
"theme.c0r73x.bar_low.back" = -1
|
||||
"theme.c0r73x.bar_mid.front" = 0
|
||||
"theme.c0r73x.bar_mid.back" = -1
|
||||
"theme.c0r73x.bar_high.front" = 0
|
||||
"theme.c0r73x.bar_high.back" = -1
|
||||
"theme.c0r73x.volume_low" = 6
|
||||
"theme.c0r73x.volume_mid" = 6
|
||||
"theme.c0r73x.volume_high" = 6
|
||||
"theme.c0r73x.volume_peak" = 1
|
||||
"theme.c0r73x.volume_indicator" = 15
|
||||
"theme.c0r73x.selected" = 6
|
||||
"theme.c0r73x.default" = -1
|
||||
"theme.c0r73x.border" = -1
|
||||
"theme.c0r73x.dropdown.selected_text" = 0
|
||||
"theme.c0r73x.dropdown.selected" = 6
|
||||
"theme.c0r73x.dropdown.unselected" = -1
|
||||
# }
|
||||
# Keybinds {
|
||||
"keycode.9" = "switch" # tab
|
||||
"keycode.13" = "select" # enter
|
||||
"keycode.27" = "quit" # escape
|
||||
"keycode.99" = "dropdown" # c
|
||||
"keycode.113" = "quit" # q
|
||||
"keycode.109" = "mute" # m
|
||||
"keycode.100" = "set_default" # d
|
||||
"keycode.108" = "volume_up" # l
|
||||
"keycode.104" = "volume_down" # h
|
||||
"keycode.261" = "volume_up" # arrow right
|
||||
"keycode.260" = "volume_down" # arrow left
|
||||
"keycode.107" = "move_up" # k
|
||||
"keycode.106" = "move_down" # j
|
||||
"keycode.259" = "move_up" # arrow up
|
||||
"keycode.258" = "move_down" # arrow down
|
||||
"keycode.338" = "page_up" # page up
|
||||
"keycode.339" = "page_down" # page down
|
||||
"keycode.76" = "tab_next" # L
|
||||
"keycode.72" = "tab_prev" # H
|
||||
"keycode.265" = "tab_playback" # f1
|
||||
"keycode.266" = "tab_recording" # f2
|
||||
"keycode.267" = "tab_output" # f3
|
||||
"keycode.268" = "tab_input" # f4
|
||||
"keycode.269" = "tab_config" # f5
|
||||
"keycode.f.80" = "tab_playback" # f1 VT100
|
||||
"keycode.f.81" = "tab_recording" # f2 VT100
|
||||
"keycode.f.82" = "tab_output" # f3 VT100
|
||||
"keycode.f.83" = "tab_input" # f4 VT100
|
||||
"keycode.f.84" = "tab_config" # f5 VT100
|
||||
"keycode.71" = "move_last" # G
|
||||
"keycode.103" = "move_first" # g
|
||||
# "keycode.48" = "set_volume_100" # 0
|
||||
"keycode.48" = "set_volume_0" # 0
|
||||
"keycode.49" = "set_volume_10" # 1
|
||||
"keycode.50" = "set_volume_20" # 2
|
||||
"keycode.51" = "set_volume_30" # 3
|
||||
"keycode.52" = "set_volume_40" # 4
|
||||
"keycode.53" = "set_volume_50" # 5
|
||||
"keycode.54" = "set_volume_60" # 6
|
||||
"keycode.55" = "set_volume_70" # 7
|
||||
"keycode.56" = "set_volume_80" # 8
|
||||
"keycode.57" = "set_volume_90" # 9
|
||||
# }
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
pkgs = import <personal> { };
|
||||
# pkgs = import <personal> {};
|
||||
pkgs = import <nixpkgs> {};
|
||||
|
||||
# https://nixos.org/manual/nixpkgs/stable/#sec-declarative-package-management
|
||||
# https://github.com/g-w1/nix-configs/blob/main/home.nix
|
||||
|
@ -30,13 +31,13 @@
|
|||
|
||||
nerdfonts
|
||||
];
|
||||
pathsToLink = [ "/share" "/bin" "/etc" ];
|
||||
pathsToLink = ["/share" "/bin" "/etc"];
|
||||
};
|
||||
};
|
||||
|
||||
nix.distributedBuilds = true;
|
||||
# useful when the builder has a faster internet connection than yours
|
||||
nix.extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
nix.distributedBuilds = true;
|
||||
# useful when the builder has a faster internet connection than yours
|
||||
nix.extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -0,0 +1,526 @@
|
|||
" not necessary, as vim will turn this on by default, when .vimrc is found
|
||||
" set nocompatible
|
||||
|
||||
set encoding=utf-8 " important for powerline besides others
|
||||
scriptencoding=utf8
|
||||
|
||||
filetype off "required
|
||||
|
||||
augroup install_vim_plug
|
||||
autocmd!
|
||||
if empty(glob('~/.local/share/nvim/site/autoload/plug.vim'))
|
||||
silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs
|
||||
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
||||
endif
|
||||
augroup END
|
||||
|
||||
augroup plug_auto_install
|
||||
autocmd!
|
||||
" Run PlugInstall if there are missing plugins
|
||||
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
|
||||
\| PlugInstall --sync | source $MYVIMRC
|
||||
\| endif
|
||||
augroup END
|
||||
|
||||
|
||||
call plug#begin()
|
||||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
Plug 'ryanoasis/vim-devicons'
|
||||
|
||||
Plug 'dracula/vim'
|
||||
Plug 'axvr/photon.vim'
|
||||
|
||||
Plug 'ncm2/ncm2'
|
||||
Plug 'SirVer/ultisnips'
|
||||
Plug 'honza/vim-snippets'
|
||||
|
||||
Plug 'ctrlpvim/ctrlp.vim'
|
||||
Plug 'mhinz/vim-startify'
|
||||
|
||||
Plug 'preservim/nerdcommenter'
|
||||
Plug 'airblade/vim-gitgutter'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'tpope/vim-surround'
|
||||
Plug 'tpope/vim-repeat'
|
||||
|
||||
" https://github.com/neovim/nvim-lspconfig
|
||||
Plug 'neovim/nvim-lspconfig'
|
||||
Plug 'kabouzeid/nvim-lspinstall'
|
||||
|
||||
"Plug 'zchee/nvim-go', { 'do': 'make'}
|
||||
Plug 'fatih/vim-go', { 'for': ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl'], 'do': ':GoInstallBinaries' }
|
||||
Plug 'themaxmarchuk/tailwindcss-colors.nvim'
|
||||
Plug 'brenoprata10/nvim-highlight-colors'
|
||||
|
||||
Plug 'majutsushi/tagbar'
|
||||
Plug 'NoahTheDuke/vim-just', { 'for': ['just'] }
|
||||
Plug 'fladson/vim-kitty', { 'for': ['kitty'] }
|
||||
call plug#end()
|
||||
|
||||
|
||||
" airline config
|
||||
" turn on vimscript 9 support
|
||||
let g:airline_experimental = 1
|
||||
|
||||
let g:airline_powerline_fonts = 1
|
||||
let g:airline_highlighting_cache = 1
|
||||
" violet, wombat, deus
|
||||
let g:airline_theme = 'minimalist'
|
||||
let g:airline#extensions#tabline#enabled = 1
|
||||
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
|
||||
" show tab number instead of number of splits
|
||||
let g:airline#extensions#tabline#tab_nr_type = 1
|
||||
|
||||
let g:airline_mode_map = {
|
||||
\ '__' : '-',
|
||||
\ 'c' : 'C',
|
||||
\ 'i' : 'I',
|
||||
\ 'ic' : 'I-C',
|
||||
\ 'ix' : 'I-X',
|
||||
\ 'n' : 'N',
|
||||
\ 'multi' : 'M',
|
||||
\ 'ni' : 'N',
|
||||
\ 'no' : 'N',
|
||||
\ 'R' : 'R',
|
||||
\ 'Rv' : 'R',
|
||||
\ 's' : 'S',
|
||||
\ 'S' : 'S',
|
||||
\ '' : 'S',
|
||||
\ 't' : 'T',
|
||||
\ 'v' : 'V',
|
||||
\ 'V' : 'V-L',
|
||||
\ '' : 'V-B',
|
||||
\ }
|
||||
|
||||
" skip displaying fileformat output if the output matches a configured string.
|
||||
let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]'
|
||||
|
||||
" certain number of spaces are allowed after tabs, but not in between.
|
||||
" this algorithm works well for /** */ style comments in a tab-indented file.
|
||||
let g:airline#extensions#whitespace#mixed_indent_algo = 1
|
||||
|
||||
" turn off the warning section entirely.
|
||||
let g:airline_section_warning = ''
|
||||
|
||||
let g:airline_skip_empty_sections = 1
|
||||
|
||||
" separator symbols
|
||||
let g:airline_left_sep = ''
|
||||
let g:airline_right_sep = ''
|
||||
let g:airline_left_alt_sep = ''
|
||||
let g:airline_right_alt_sep = ''
|
||||
|
||||
if !exists('g:airline_symbols')
|
||||
let g:airline_symbols = {}
|
||||
endif
|
||||
|
||||
let g:airline_symbols.branch = ''
|
||||
let g:airline_symbols.colnr = '℅:'
|
||||
let g:airline_symbols.readonly = ''
|
||||
let g:airline_symbols.nx='∄'
|
||||
|
||||
" ale integration
|
||||
let g:airline#extensions#ale#enabled = 1
|
||||
" nrrwrgn integration
|
||||
let g:airline#extensions#nrrwrgn#enabled = 1
|
||||
" vcs integration
|
||||
let g:airline#extensions#branch#enabled = 0
|
||||
" show summary of changed hunks (gitgutter and/or vim-signify)
|
||||
let g:airline#extensions#hunks#enabled = 1
|
||||
" tabline integration
|
||||
let g:airline#extensions#tabline#enabled = 1
|
||||
let g:airline#extensions#ctrlp#enabled = 1
|
||||
let g:airline#extensions#taboo#enabled = 0
|
||||
let g:airline#extensions#battery#enabled = 0
|
||||
let g:airline#extensions#bookmark#enabled = 0
|
||||
let g:airline#extensions#flog#enabled = 0
|
||||
let g:airline#extensions#bufferline#enabled = 0
|
||||
let g:airline#extensions#capslock#enabled = 0
|
||||
let g:airline#extensions#coc#enabled = 0
|
||||
" syntastic integration
|
||||
let g:airline#extensions#syntastic#enabled = 0
|
||||
" vim-csv
|
||||
let g:airline#extensions#csv#enabled = 0
|
||||
let g:airline#extensions#ctrlspace#enabled = 0
|
||||
" Built-in extension to displays cursor in different colors depending on the
|
||||
" current mode (only works in terminals iTerm, AppleTerm and xterm)
|
||||
" * this fixes the issue of airline changing terminal cursor colour in kitty+fedora35/fedora36
|
||||
let g:airline#extensions#cursormode#enabled = 0
|
||||
|
||||
|
||||
if has('patch-8.1.1880')
|
||||
" set completeopt=longest,menuone,popuphidden
|
||||
set completeopt=longest,menuone,popup
|
||||
" Highlight the completion documentation popup background/foreground the same as
|
||||
" the completion menu itself, for better readability with highlighted
|
||||
" documentation.
|
||||
set completepopup=highlight:Pmenu,border:off
|
||||
else
|
||||
set completeopt=longest,menuone,preview
|
||||
" Set desired preview window height for viewing documentation.
|
||||
set previewheight=5
|
||||
endif
|
||||
|
||||
|
||||
" colo dracula
|
||||
colo photon
|
||||
set autochdir
|
||||
set number relativenumber
|
||||
set smartcase
|
||||
set splitbelow splitright
|
||||
set lazyredraw
|
||||
set ttyfast
|
||||
set listchars=trail:•,tab:>-,nbsp:☣,eol:¬,extends:❯,precedes:❮
|
||||
set nolist " show/hide tabs and EOL chars (hidden characters)
|
||||
" don't indent wrapped lines
|
||||
set nobreakindent
|
||||
|
||||
set confirm " ask confirmation like save before quit.
|
||||
set wildmenu " Tab completion menu when using command mode
|
||||
" https://bitbucket.org/sjl/dotfiles/src/tip/vim/vimrc#cl-153
|
||||
set wildignore+=.hg,.git,.svn " Version control
|
||||
set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files
|
||||
set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg " binary images
|
||||
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files
|
||||
set wildignore+=*.dwo " DWARF debug object files
|
||||
set wildignore+=*.spl " compiled spelling word lists
|
||||
set wildignore+=*.pyc " Python byte code
|
||||
set wildignore+=node_modules/**
|
||||
set wildmode=longest:longest,full
|
||||
|
||||
set colorcolumn=80
|
||||
filetype plugin indent on
|
||||
set hlsearch incsearch
|
||||
augroup filetypes
|
||||
autocmd!
|
||||
au BufRead,BufNewFile *.tmpl setlocal filetype=gohtmltmpl
|
||||
au FileType gohtmltmpl setlocal ff=unix ts=2 shiftwidth=2 sts=2 noexpandtab
|
||||
augroup END
|
||||
|
||||
|
||||
" --------
|
||||
" plugin configurations
|
||||
" --------
|
||||
|
||||
let g:gitgutter_terminal_reports_focus=0
|
||||
let g:gitgutter_async = 1
|
||||
let g:gitgutter_sign_column_always = 1
|
||||
let g:gitgutter_sign_allow_clobber=0
|
||||
let g:gitgutter_set_sign_backgrounds = 0
|
||||
let g:gitgutter_preview_win_floating = 1
|
||||
set foldtext=gitgutter#fold#foldtext()
|
||||
nmap ghs <Plug>(GitGutterStageHunk)
|
||||
nmap ghu <Plug>(GitGutterUndoHunk)
|
||||
nnoremap <leader>d :GitGutterLineHighlightsToggle<cr>
|
||||
|
||||
|
||||
|
||||
" nerdcommenter
|
||||
noremap <silent><c-/> :call nerdcommenter#Comment(0,"toggle")<cr>
|
||||
" Add spaces after comment delimiters by default
|
||||
let g:NERDSpaceDelims = 1
|
||||
" Allow commenting and inverting empty lines (useful when commenting a region)
|
||||
let g:NERDCommentEmptyLines = 1
|
||||
" Enable trimming of trailing whitespace when uncommenting
|
||||
let g:NERDTrimTrailingWhitespace = 1
|
||||
" Add your own custom formats or override the defaults
|
||||
let g:NERDCustomDelimiters = {
|
||||
\ 'vim': { 'left': '"','right': '' },
|
||||
\ 'c': {'left': '/**','right': '*/' },
|
||||
\ 'dhall': {'left': '-- | ', 'right': '' },
|
||||
\ 'zsh': { 'left': '#','right': ''},
|
||||
\ 'sysctl': {'left': '#', 'right': ''},
|
||||
\ 'systemd': {'left': ';', 'right': ''},
|
||||
\}
|
||||
" let g:NERDTreeGitStatusWithFlags = 1
|
||||
|
||||
|
||||
" netrw
|
||||
let g:netrw_banner = 0
|
||||
let g:netrw_keepdir = 0
|
||||
" prefer tree-style listing
|
||||
let g:netrw_liststyle = 3
|
||||
" let g:netrw_liststyle = 1
|
||||
let g:netrw_sort_options = 'i'
|
||||
" open files in a new horizontal split
|
||||
let g:netrw_browse_split = 1
|
||||
|
||||
|
||||
" ctrlp
|
||||
" Setup some default ignores
|
||||
let g:ctrlp_custom_ignore = {
|
||||
\ 'dir':'\v[\/](\.(git\/(branches|hooks|info|logs|modules|objects|rebase-merge|refs)|hg|svn)|\_site)$',
|
||||
\ 'file':'\v\.(exe|so|dll|class|png|jpg|jpeg)|(\.(git\/(description|index|packed-refs|COMMIT_EDITMSG|HEAD|FETCH_HEAD|ORIG_HEAD|REBASE_HEAD)))$',
|
||||
\}
|
||||
|
||||
" Use the nearest .git directory as the cwd
|
||||
" This makes a lot of sense if you are working on a project that is in version
|
||||
" control. It also supports works with .svn, .hg, .bzr.
|
||||
" let g:ctrlp_working_path_mode = 'r'
|
||||
let g:ctrlp_working_path_mode = 'raw'
|
||||
let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp'
|
||||
|
||||
" The Silver Searcher
|
||||
if executable('ag')
|
||||
" use ag instead of grep.
|
||||
set grepprg=ag\ --nogroup\ --nocolor
|
||||
|
||||
" use ag in CtrlP
|
||||
let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
|
||||
" ag is fast enough that CtrlP doesn't need to cache
|
||||
let g:ctrlp_use_caching = 0
|
||||
endif
|
||||
|
||||
nnoremap <c-p> :CtrlP<cr><cr>
|
||||
nnoremap <leader>s <Plug>(ctrlp)
|
||||
|
||||
let g:ctrlp_show_hidden = 1
|
||||
" Use a leader instead of the actual named binding
|
||||
nmap <leader>p <Plug>(ctrlp)
|
||||
|
||||
" ctrlp buffers
|
||||
" Easy bindings for its various modes
|
||||
nmap <leader>bb :CtrlPBuffer<cr>
|
||||
nmap <leader>bm :CtrlPMixed<cr>
|
||||
nmap <leader>bs :CtrlPMRU<cr>
|
||||
|
||||
" buffers
|
||||
nmap <leader>T :enew<cr>
|
||||
nmap <leader>bq :bp <BAR> bd #<cr>
|
||||
nmap <leader>gd :bd<cr>
|
||||
map gn :bn<cr>
|
||||
map gp :bp<cr>
|
||||
|
||||
command! W execute 'w' | edit!
|
||||
command! WW execute 'silent w !sudo tee % >/dev/null' | edit!
|
||||
|
||||
" always show full path on <c-g>
|
||||
nnoremap <c-g> 1<c-g>
|
||||
" open a terminal in $PWD
|
||||
nnoremap <silent> <leader>tt :terminal<cr>
|
||||
" terminal normal mode
|
||||
tnoremap <F1> <C-W>N
|
||||
" toggle showing whitespace
|
||||
noremap <F5> :set list!<cr>
|
||||
nnoremap <F8> :TagbarToggle<cr>
|
||||
" [bro]wse [ol]d files
|
||||
nnoremap <leader>r :bro ol<cr>
|
||||
|
||||
" tab switching
|
||||
nnoremap <silent><f6> gT
|
||||
nnoremap <silent><f7> gt
|
||||
|
||||
" resize windows
|
||||
map - <C-W>-
|
||||
map + <C-W>+
|
||||
|
||||
" vmap to stay in Visual Mode after shifting > and <
|
||||
vmap < <gv
|
||||
vmap > >gv
|
||||
|
||||
|
||||
"------------------------------------
|
||||
" vim-go.vim
|
||||
"------------------------------------
|
||||
" use gopls
|
||||
let g:go_def_mode='gopls'
|
||||
let g:go_info_mode='gopls'
|
||||
" Status line types/signatures.
|
||||
let g:go_auto_type_info = 1
|
||||
|
||||
let g:go_highlight_types = 1
|
||||
let g:go_highlight_functions = 1
|
||||
let g:go_highlight_methods = 1
|
||||
let g:go_highlight_structs = 1
|
||||
let g:go_highlight_interfaces = 1
|
||||
let g:go_highlight_operators = 1
|
||||
let g:go_highlight_build_constraints = 1
|
||||
let g:go_highlight_extra_types = 1
|
||||
" if sluggish
|
||||
" let g:go_highlight_structs = 0
|
||||
" let g:go_highlight_interfaces = 0
|
||||
" let g:go_highlight_operators = 0
|
||||
" let g:go_list_type = 'quickfix'
|
||||
let g:go_list_type = ''
|
||||
" let g:go_version_warning = 0
|
||||
let g:go_fmt_fail_silently = 0
|
||||
" auto formatting and importing
|
||||
let g:go_fmt_command = 'gopls'
|
||||
let g:go_fmt_autosave = 1
|
||||
" go install mvdan.cc/gofumpt@latest
|
||||
let g:go_gopls_gofumpt = 1
|
||||
" let g:go_gopls_options = ['-remote=auto']
|
||||
let g:go_gopls_options = ['-remote=unix;/tmp/.gopls-daemon.sock']
|
||||
" let lsp handle connecting to gopls
|
||||
let g:go_gopls_enabled = 1
|
||||
" let g:go_doc_popup_window = 0
|
||||
let g:go_doc_popup_window = 1
|
||||
let g:go_fillstruct_mode = 'gopls'
|
||||
let g:go_term_reuse = 1
|
||||
let g:go_term_enabled = 1
|
||||
let g:go_doc_balloon = 1
|
||||
|
||||
|
||||
augroup vimgo
|
||||
au!
|
||||
au FileType go nmap <leader>gb <Plug>(go-build)
|
||||
au FileType go nmap <leader>b <Plug>(go-build)
|
||||
au FileType go nmap <leader>gr <Plug>(go-run)
|
||||
au FileType go nmap <leader>gt <Plug>(go-test)
|
||||
au FileType go nmap <leader>gs <Plug>(go-implements)
|
||||
au FileType go nmap <leader>gi <Plug>(go-info)
|
||||
au FileType go nmap <leader>ge <Plug>(go-rename)
|
||||
au FileType go nmap <leader>gd <Plug>(go-doc)
|
||||
" Navigation commands
|
||||
au FileType go nmap <leader>ds <Plug>(go-def-split)
|
||||
au FileType go nmap <leader>dv <Plug>(go-def-vertical)
|
||||
" Alternate commands
|
||||
au FileType go nmap <leader>hae <Plug>(go-alternate-edit)
|
||||
au FileType go nmap <leader>vae <Plug>(go-alternate-vertical)
|
||||
" Use new vim 8.2 popup windows for Go Doc
|
||||
augroup END
|
||||
|
||||
" go_tags
|
||||
"------------------------------------
|
||||
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'gotags.vimrc.vim'
|
||||
|
||||
|
||||
" when quitting a file, save the cursor position
|
||||
augroup save_cursor_position
|
||||
if &filetype !~# 'commit\|rebase'
|
||||
autocmd!
|
||||
" also automatically open any folds the cursor might land on.
|
||||
autocmd BufReadPost * silent! normal! g`" zv
|
||||
endif
|
||||
augroup END
|
||||
|
||||
|
||||
set hidden
|
||||
set conceallevel=0
|
||||
set mouse=a
|
||||
set nogdefault
|
||||
|
||||
let g:vim_json_conceal = 0
|
||||
let g:markdown_syntax_conceal = 0
|
||||
|
||||
set timeoutlen=200
|
||||
set notimeout ttimeout ttimeoutlen=10
|
||||
set undofile
|
||||
set undodir=~/.vim/nvimundo//
|
||||
set undolevels=2000
|
||||
set undoreload=10001
|
||||
if !isdirectory(expand(&undodir))
|
||||
call mkdir(expand(&undodir), 'p')
|
||||
endif
|
||||
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
set directory=~/.vim/swp//
|
||||
if !isdirectory(expand(&directory))
|
||||
call mkdir(expand(&directory), 'p')
|
||||
endif
|
||||
|
||||
set title
|
||||
set showcmd
|
||||
set showmatch
|
||||
set updatetime=250
|
||||
set noscrollbind
|
||||
set noerrorbells
|
||||
set laststatus=2 " show status bar
|
||||
set report=1 " Always report number of lines changed by ex commands
|
||||
set termguicolors
|
||||
set t_Co=256
|
||||
set guifont=Fira\ Code\ weight=450\ 12
|
||||
|
||||
let g:netrw_beval = 1
|
||||
set t_vb=
|
||||
|
||||
" cursorline optimizations
|
||||
set cursorlineopt=number
|
||||
" 0 automatic selection
|
||||
" 1 old engine
|
||||
" 2 NFA engine
|
||||
" set regexpengine=1
|
||||
set regexpengine=0
|
||||
" set redrawtime=500
|
||||
" set synmaxcol=128
|
||||
syntax sync minlines=256
|
||||
|
||||
" use +/clipboard as default register
|
||||
set clipboard=unnamed,unnamedplus
|
||||
|
||||
" but since it's needed for direnv, we have to enable it.
|
||||
set exrc
|
||||
set secure
|
||||
|
||||
" https://sw.kovidgoyal.net/kitty/faq/#using-a-color-theme-with-a-background-color-does-not-work-well-in-vim
|
||||
" work around vim's background colour erase:
|
||||
"
|
||||
" vim hardcodes background color erase even if the terminfo file does
|
||||
" not contain bce (not to mention that libvte based terminals
|
||||
" incorrectly contain bce in their terminfo files). This causes
|
||||
" incorrect background rendering when using a color theme with a
|
||||
" background color.
|
||||
let &t_ut=''
|
||||
|
||||
" compensate for lack of theme italics
|
||||
for s in ['Comment', 'markdownItalic', 'Boolean']
|
||||
execute 'hi ' s ' cterm=italic'
|
||||
endfor
|
||||
hi CursorLineNR cterm=bold
|
||||
|
||||
lua <<EOF
|
||||
require('nvim-highlight-colors').setup {enable_tailwind = true}
|
||||
|
||||
require'lspconfig'.gopls.setup{
|
||||
filetypes = {"go", "gomod", "gowork", "gotmpl", "gohtmltmpl"}
|
||||
}
|
||||
require'lspconfig'.vimls.setup{}
|
||||
require'lspconfig'.tailwindcss.setup{
|
||||
filetypes = { "aspnetcorerazor", "astro", "astro-markdown", "blade", "clojure", "django-html", "htmldjango", "edge", "eelixir", "elixir", "ejs", "erb", "eruby", "gohtml", "gohtmltmpl", "gotmpl", "haml", "handlebars", "hbs", "html", "html-eex", "heex", "jade", "leaf", "liquid", "markdown", "mdx", "mustache", "njk", "nunjucks", "php", "razor", "slim", "twig", "css", "less", "postcss", "sass", "scss", "stylus", "sugarss", "javascript", "javascriptreact", "reason", "rescript", "typescript", "typescriptreact", "vue", "svelte" }
|
||||
}
|
||||
require'lspconfig'.html.setup{}
|
||||
|
||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
||||
|
||||
-- Use LspAttach autocommand to only map the following keys
|
||||
-- after the language server attaches to the current buffer
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
||||
callback = function(ev)
|
||||
-- Enable completion triggered by <c-x><c-o>
|
||||
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||
|
||||
-- Buffer local mappings.
|
||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||
local opts = { buffer = ev.buf }
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
|
||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
|
||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
||||
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
|
||||
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
|
||||
vim.keymap.set('n', '<leader>wl', function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, opts)
|
||||
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
|
||||
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
|
||||
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
|
||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
||||
vim.keymap.set('n', '<leader>f', function()
|
||||
vim.lsp.buf.format { async = true }
|
||||
end, opts)
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- https://dev.to/vonheikemen/neovim-using-vim-plug-in-lua-3oom
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
" vim: ft=vim ff=unix expandtab ts=2 sw=2
|
|
@ -49,6 +49,8 @@ c.qt.force_platform = 'wayland'
|
|||
# Type: Bool
|
||||
c.auto_save.session = False
|
||||
|
||||
c.session.lazy_restore = True
|
||||
|
||||
# Automatically start playing `<video>` elements.
|
||||
# Type: Bool
|
||||
c.content.autoplay = False
|
||||
|
@ -223,7 +225,7 @@ c.content.pdfjs = False
|
|||
|
||||
# List of user stylesheet filenames to use.
|
||||
# Type: List of File, or File
|
||||
c.content.user_stylesheets = 'stylesheets/user.css'
|
||||
c.content.user_stylesheets = ['stylesheets/user.css']
|
||||
|
||||
# Enable WebGL.
|
||||
# Type: Bool
|
||||
|
@ -365,15 +367,22 @@ c.fonts.default_size = '16px'
|
|||
# Font used for the context menu. If set to null, the Qt default is
|
||||
# used.
|
||||
# Type: Font
|
||||
c.fonts.contextmenu = 'FiraCode'
|
||||
c.fonts.contextmenu = 'default_size FiraCode Nerd Font'
|
||||
|
||||
c.fonts.tabs.selected = 'FiraCode'
|
||||
c.fonts.statusbar = 'default_size FiraCode Nerd Font'
|
||||
|
||||
c.fonts.web.family.standard = 'FiraCode'
|
||||
c.fonts.tabs.selected = 'default_size FiraCode Nerd Font'
|
||||
|
||||
c.fonts.web.family.fixed = 'FiraCode'
|
||||
c.fonts.tabs.unselected = 'default_size FiraCode Nerd Font'
|
||||
|
||||
c.fonts.web.family.sans_serif = 'FiraCode'
|
||||
c.fonts.web.family.standard = 'FiraCode Nerd Font'
|
||||
|
||||
# c.fonts.web.family.fixed = 'Fira Code'
|
||||
c.fonts.web.family.fixed = 'default_fixed FiraCode Nerd Font'
|
||||
|
||||
c.fonts.web.family.sans_serif = 'FiraCode Nerd Font'
|
||||
|
||||
c.fonts.default_family = 'FiraCode Nerd Font'
|
||||
|
||||
# Default font size (in pixels) for regular text.
|
||||
# Type: Int
|
||||
|
@ -387,6 +396,9 @@ c.fonts.web.size.default_fixed = 20
|
|||
# Type: Int
|
||||
c.fonts.web.size.minimum = 15
|
||||
|
||||
c.url.default_page = 'https://searxng.dotya.ml/'
|
||||
c.url.start_pages = ['https://searxng.dotya.ml/']
|
||||
|
||||
# Bindings for normal mode
|
||||
config.bind(';#', 'hint code userscript code_select.py')
|
||||
config.bind(';D', 'spawn --userscript dark_mode.user ;; greasemonkey-reload')
|
||||
|
|
|
@ -27,7 +27,7 @@ inline = 'nuaerc() {cd ~/utils/sr.ht/\~rjarry/aerc || exit 1; git pull --all --p
|
|||
[plugins.nuwlsunset]
|
||||
inline = 'nuwlsunset() {cd ~/utils/sr.ht/wlsunset || exit 1; git pull --all; mkdir -pv build; meson build -Dprefix=~/.local --reconfigure && ninja -C build && ninja -C build install}'
|
||||
[plugins.nuswaylock-effects]
|
||||
inline = 'nuswaylock-effects() {cd ~/utils/swaylock-effects || exit 1; git pull --all --prune && meson -Dprefix=/usr/local --reconfigure build && ninja -C build && sudo ninja -C build install}'
|
||||
inline = 'nuswaylock-effects() {cd ~/src/github.com/jirutka-swaylock-effects || ((mkdir -pv ~/src/github.com && git clone https://github.com/jirutka/swaylock-effects ~/src/github.com/jirutka-swaylock-effects) || (echo failed to enter project dir)) && cd ~/src/github.com/jirutka-swaylock-effects; git pull --all --prune && (meson -Dprefix=/usr build; meson setup -Dprefix=/usr --reconfigure build) && ninja -C build && sudo ninja -C build install}'
|
||||
[plugins.nuhashcat]
|
||||
inline = 'nuhashcat() {cd ~/utils/hashcat || exit 1; git pull --all --prune; make clean && sudo make install}'
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ format = """
|
|||
$all\
|
||||
$line_break\
|
||||
$time\
|
||||
$os\
|
||||
$status\
|
||||
$character
|
||||
"""
|
||||
|
@ -20,7 +21,7 @@ disabled = true
|
|||
|
||||
[character]
|
||||
success_symbol = "[➜](bold green)"
|
||||
error_symbol = "[](bold #ee4e4e)" # the non-nerdfont default is 🔥
|
||||
error_symbol = "[](bold #ee4e4e)" # the non-nerdfont default is 🔥
|
||||
vimcmd_symbol = "[N](bold green)"
|
||||
|
||||
[battery]
|
||||
|
@ -39,7 +40,7 @@ format = "[$symbol($version)]($style) "
|
|||
|
||||
[cmake]
|
||||
disabled = false
|
||||
symbol= "喝" # the non-nerdfont default is △
|
||||
symbol= "△ " # the non-nerdfont default is △
|
||||
style = "blue"
|
||||
format = "[$symbol]($style)"
|
||||
|
||||
|
@ -93,8 +94,8 @@ disabled = true
|
|||
disabled = true
|
||||
|
||||
[gcloud]
|
||||
disabled = false
|
||||
symbol = "🇬️☁️ "
|
||||
disabled = true
|
||||
symbol = ""
|
||||
format = '[$symbol$active \(@$domain\)]($style) '
|
||||
|
||||
[git_branch]
|
||||
|
@ -115,11 +116,17 @@ behind = "⇣${count} "
|
|||
deleted = "[•](bold red)"
|
||||
untracked = "[⚶](bold cyan)"
|
||||
stashed = "[≡](bold yellow)"
|
||||
staged = "[+](bold green)"
|
||||
staged = "[$count+](bold green)"
|
||||
modified = "[∆](bold green)"
|
||||
renamed = "[⥁](bold purple)"
|
||||
conflicted = "[⥯](bold red)"
|
||||
format = "[($conflicted$stashed$modified$staged$renamed$deleted($untracked)$ahead_behind )]($style)"
|
||||
# renamed = "[↻](bold purple) "
|
||||
renamed = "[⥁](bold purple)" # needs noto-fonts-extra
|
||||
# renamed = "[](bold purple)"
|
||||
# conflicted = "[↕\\($count\\)](bold red)"
|
||||
# conflicted = "[$count⇅](dimmed bold red)"
|
||||
# conflicted = "[$count⇵](bold bright-purple) "
|
||||
# conflicted = "[$count](bold bright-purple) "
|
||||
conflicted = "[$count⥯](bold bright-purple) "
|
||||
format = "[(($conflicted)$stashed$modified$staged$renamed$deleted($untracked)$ahead_behind )]($style)"
|
||||
|
||||
[golang]
|
||||
symbol = " " # the non-nerdfont default is 🐹
|
||||
|
@ -144,6 +151,15 @@ symbol = " " # the non-nerdfont alternative used previously was ⬢
|
|||
style = "green"
|
||||
format = "[$symbol](bold $style)"
|
||||
|
||||
# available from version 1.12.0
|
||||
[os]
|
||||
disabled = true
|
||||
format = '[$symbol]($style)'
|
||||
|
||||
[os.symbols]
|
||||
Arch = " "
|
||||
Fedora = " "
|
||||
|
||||
[package]
|
||||
disabled = false
|
||||
symbol = "⬢ "
|
||||
|
@ -195,7 +211,7 @@ map_symbol = false
|
|||
pipestatus = true
|
||||
pipestatus_separator = '[| ]($style)'
|
||||
pipestatus_format = '[($style)$pipestatus]($style)'
|
||||
symbol = "\\(╯°□°)╯︵ ┻━┻"
|
||||
symbol = "\\(╯°□°╯ ┻━┻"
|
||||
# pure unicode version
|
||||
# format = "(bg:$stylefg:#4169e1)[$symbol $status](bg:$style)(fg:$style) "
|
||||
# certain symbols of the following rely on nerdfonts
|
||||
|
@ -205,7 +221,7 @@ format = "[](fg:$style)[$symbol ](bg:$style)[\ue0b8 $status $common_meaning$s
|
|||
|
||||
|
||||
[terraform]
|
||||
format = "[ﰉ ($workspace )]($style)" # alternatively use 💨 for symbol
|
||||
format = "[ ($workspace )]($style)" # alternatively use 💨 for symbol
|
||||
|
||||
[time]
|
||||
disabled = true
|
||||
|
@ -223,6 +239,7 @@ format = "[$symbol]($style) "
|
|||
|
||||
[zig]
|
||||
disabled = false
|
||||
symbol = " "
|
||||
format = "[$symbol]($style)"
|
||||
|
||||
[custom.hare]
|
||||
|
|
|
@ -7,23 +7,25 @@ set
|
|||
$up k
|
||||
$right l
|
||||
$lock exec swaylock -f
|
||||
$lockt exec ~/utils/bin/sway-locker -t
|
||||
$lockt exec sway-locker -t
|
||||
$chromium_flags --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy --js-flags=--jitless
|
||||
$keyring "/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh"
|
||||
$term KITTY_ENABLE_WAYLAND=1 kitty -1 # qterminal alacritty
|
||||
$menu wofi --show drun --allow-markup swaymsg exec --
|
||||
$nutermmenu kitty --class 'launcher' bash -c 'compgen -c | sort -u | fzf | xargs -r kitty'
|
||||
$bemenu bemenu-run --fork -l 5 -n -p "▶" --fn 'FiraCode Retina 17' | xargs swaymsg exec
|
||||
$bemenu bemenu-run --fork -l 5 -n -p "⇒" --fn 'Fira Code Retina 17' | xargs swaymsg exec
|
||||
$dashpls nwggrid
|
||||
# after hm stateVersion bump to 23.05, albert doesn't seem to support explicit wayland.
|
||||
$albert QT_QPA_PLATFORM=xcb albert show
|
||||
# $bg "~/Pictures/apod/2019-January-2-The-Orion-Nebula-in-Infrared-from-WISE.jpg fit #000000"
|
||||
# $bg "~/Pictures/apod/2020-April-29-The-Ion-Tail-of-New-Comet-SWAN.jpg fit #000000"
|
||||
$bg "~/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg"
|
||||
$bg2 "~/Pictures/apod/2019-October-20-Pluto-at-Night.jpg"
|
||||
$gtk_theme "Dracula"
|
||||
$gtk_font_name "CascadiaCodePL ExtraLight"
|
||||
$gtk_font_size "10.4"
|
||||
$gtk_theme "Yaru-purple-dark"
|
||||
$gtk_font "Cascadia Code PL Light 10.4"
|
||||
$mono_font "FiraCode Nerd Font weight=450 11"
|
||||
$icon_theme "Flat-Remix-Blue-Dark"
|
||||
$theme "Dracula"
|
||||
$wmtheme "Dracula"
|
||||
$gtk_cursor_theme "Adwaita"
|
||||
$laptop_screen "eDP-1"
|
||||
$ext_screen "Dell Inc. DELL U2412M Y1H5T27N1EVL"
|
||||
|
@ -49,7 +51,7 @@ smart_gaps inverse_outer
|
|||
gaps outer 8
|
||||
gaps inner 5
|
||||
|
||||
font pango:FiraCode Retina 14px
|
||||
font pango:FiraCode Retina weight=700 14px
|
||||
|
||||
exec_always --no-startup-id
|
||||
{
|
||||
|
@ -59,38 +61,43 @@ exec_always --no-startup-id
|
|||
gsettings set org.gnome.desktop.interface gtk-theme '$gtk_theme'
|
||||
gsettings set org.gnome.desktop.interface icon-theme '$icon_theme'
|
||||
gsettings set org.gnome.desktop.interface cursor-theme '$gtk_cursor_theme'
|
||||
gsettings set org.gnome.desktop.interface font-name '$gtk_font_name $gtk_font_size'
|
||||
gsettings set org.gnome.desktop.interface font-name '$gtk_font'
|
||||
gsettings set org.gnome.desktop.interface monospace-font-name '$mono_font'
|
||||
gsettings set org.gnome.desktop.wm.preferences button-layout 'icon:close'
|
||||
gsettings set org.gnome.desktop.wm.preferences theme '$theme'
|
||||
gsettings set org.gnome.desktop.wm.preferences theme '$wmtheme'
|
||||
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
|
||||
# run this prior to first run:
|
||||
# glib-compile-schemas /usr/share/glib-2.0/schemas
|
||||
# glib-compile-schemas ~/.local/share/glib-2.0/schemas/
|
||||
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal kitty
|
||||
|
||||
pgrep -u $(id -u) kanshi && pkill kanshi
|
||||
# pgrep -u $(id -u) kanshi && pkill kanshi
|
||||
pgrep -u $(id -u) ibus-daemon && pkill ibus-daemon
|
||||
ibus-daemon -dxrt auto
|
||||
### Needed for xdg-desktop-portal-kde
|
||||
### Needed for xdg-desktop-portal-*.
|
||||
### also, current `id` needs to be a part of the dbus group on Arch as of late.
|
||||
dbus-update-activation-environment --systemd --all
|
||||
/usr/lib/xdg-desktop-portal --replace
|
||||
pgrep -u $(id -u) kdeconnect-indi && pkill kdeconnect-indi
|
||||
/usr/lib/xdg-desktop-portal-wlr --replace
|
||||
pgrep -u $(id -u) mako && pkill mako
|
||||
pgrep -u $(id -u) fusuma && pkill fusuma
|
||||
pgrep -u $(id -u) swayrd && pkill swayrd
|
||||
pgrep -u $(id -u) autotiling && pkill autotiling
|
||||
pgrep -u $(id -u) batsignal && pkill batsignal
|
||||
pgrep -u $(id -u) swayidle && pkill swayidle
|
||||
# pgrep -u $(id -u) kdeconnect-indi && pkill kdeconnect-indi
|
||||
# pgrep -u $(id -u) autotiling && pkill autotiling
|
||||
|
||||
kdeconnect-indicator
|
||||
# kdeconnect-indicator
|
||||
mako
|
||||
XDG_SESSION_TYPE=x11 XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
|
||||
env RUST_BACKTRACE=1 ~/.cargo/bin/swayrd > /tmp/swayrd.log 2>&1
|
||||
kanshi
|
||||
autotiling
|
||||
XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
|
||||
env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
|
||||
# kanshi
|
||||
# autotiling
|
||||
batsignal '-d -w 25 -c 15 -d 10'
|
||||
swayidle -w \
|
||||
timeout 545 'pgrep -u $(id -u) swaylock || notify-send -t 15000 -u critical -i "Idle timeout" "Screen is locking soon"' \
|
||||
timeout 600 "$lock" \
|
||||
timeout 610 'swaymsg "output * dpms off"' \
|
||||
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"' \
|
||||
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"' \
|
||||
before-sleep "pgrep -u $(id -u) swaylock || $lockt"
|
||||
}
|
||||
|
||||
|
@ -102,30 +109,30 @@ exec --no-startup-id {
|
|||
dbus-update-activation-environment DISPLAY XAUTHORITY
|
||||
ibus-daemon -dxrt auto
|
||||
$keyring
|
||||
### Needed for xdg-desktop-portal-kde
|
||||
### Needed for xdg-desktop-portal-*.
|
||||
### also, current `id` needs to be a part of the dbus group on Arch as of late.
|
||||
dbus-update-activation-environment --systemd --all
|
||||
/usr/lib/xdg-desktop-portal --replace
|
||||
pgrep -u $(id -u) kdeconnect-indi || kdeconnect-indicator
|
||||
/usr/lib/xdg-desktop-portal-wlr --replace
|
||||
# pgrep -u $(id -u) kdeconnect-indi || kdeconnect-indicator
|
||||
pgrep -u $(id -u) mako || mako
|
||||
# XDG_SESSION_TYPE=x11 XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
|
||||
pgrep -u $(id -u) fusuma || fusuma -d -c ~/.config/fusuma/config-wl.yml
|
||||
env RUST_BACKTRACE=1 ~/.cargo/bin/swayrd > /tmp/swayrd.log 2>&1
|
||||
pgrep -u $(id -u) kansi || kanshi
|
||||
pgrep -u $(id -u) autotiling || autotiling
|
||||
pgrep -u $(id -u) fusuma || XDG_CURRENT_DESKTOP=gnome fusuma -d -c ~/.config/fusuma/config-wl.yml
|
||||
env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
|
||||
# pgrep -u $(id -u) kanshi || kanshi
|
||||
# pgrep -u $(id -u) autotiling || autotiling
|
||||
pgrep -u $(id -u) batsignal || batsignal '-d -w 25 -c 15 -d 10'
|
||||
pgrep -u $(id -u) swayidle || swayidle -w \
|
||||
timeout 545 'pgrep -u $(id -u) swaylock || notify-send -t 15000 -u critical -i "Idle timeout" "Screen is locking soon"' \
|
||||
timeout 600 "$lock" \
|
||||
timeout 610 'swaymsg "output * dpms off"' \
|
||||
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"' \
|
||||
timeout 15 'pgrep -u $(id -u) swaylock && swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"' \
|
||||
before-sleep "pgrep -u $(id -u) swaylock || $lockt"
|
||||
}
|
||||
|
||||
bindsym ctrl+alt+l exec --no-startup-id $lock
|
||||
bindsym $mod+grave exec $lock
|
||||
bindswitch --reload --locked lid:on exec --no-startup-id $(swaymsg output $laptop_screen disable && /usr/local/bin/kanshictl reload)
|
||||
bindswitch --reload --locked lid:off exec --no-startup-id $(swaymsg output $laptop_screen enable && /usr/local/bin/kanshictl reload)
|
||||
bindswitch --reload --locked lid:on exec --no-startup-id swaymsg output $laptop_screen disable && kanshictl reload
|
||||
bindswitch --reload --locked lid:off exec --no-startup-id swaymsg output $laptop_screen enable && kanshictl reload
|
||||
|
||||
exec --no-startup-id swaymsg focus output $pri
|
||||
output "*" bg $bg fill #000000
|
||||
|
@ -158,8 +165,9 @@ bindsym
|
|||
$mod+t exec $term
|
||||
$mod+ctrl+Shift+t exec qterminal
|
||||
$mod+Shift+q kill
|
||||
alt+F1 exec $menu
|
||||
alt+Shift+F1 exec $dashpls
|
||||
alt+Shift+F1 exec $menu
|
||||
alt+F1 exec $albert
|
||||
# alt+Shift+F1 exec $dashpls
|
||||
alt+F2 exec $bemenu
|
||||
alt+F3 exec ulauncher-toggle
|
||||
alt+Shift+F2 exec $nutermmenu
|
||||
|
@ -189,7 +197,25 @@ input 1133:16522:Logitech_MX_Keys
|
|||
repeat_rate 55
|
||||
}
|
||||
|
||||
input 1102:4619:DLL07A7:01_044E:120B
|
||||
# wired
|
||||
input 1452:592:Keychron_Keychron_K2 {
|
||||
xkb_layout gb,sk
|
||||
xkb_options grp:win_space_toggle,compose:ralt
|
||||
xkb_variant ",qwerty"
|
||||
repeat_delay 280
|
||||
repeat_rate 55
|
||||
}
|
||||
|
||||
# wireless
|
||||
input 1452:592:Keychron_K2 {
|
||||
xkb_layout gb,sk
|
||||
xkb_options grp:win_space_toggle,compose:ralt
|
||||
xkb_variant ",qwerty"
|
||||
repeat_delay 280
|
||||
repeat_rate 55
|
||||
}
|
||||
|
||||
input 2:7:SynPS/2_Synaptics_TouchPad
|
||||
{
|
||||
# touchpad
|
||||
accel_profile adaptive
|
||||
|
@ -223,6 +249,7 @@ for_window [window_role="bubble"] floating enable
|
|||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [window_role="Preferences"] floating enable
|
||||
for_window [window_type="dialog"] floating enable
|
||||
for_window [window_role="dialog"] floating enable
|
||||
for_window [window_type="menu"] floating enable
|
||||
for_window [window_role="About"] floating enable
|
||||
for_window [instance="Farge"] floating enable
|
||||
|
@ -263,6 +290,11 @@ for_window [class="Firefox"] border pixel 2 inhibit_idle fullscreen
|
|||
for_window [class="vlc"] border pixel 2 inhibit_idle visible fullscreen
|
||||
for_window [app_id="vlc"] border pixel 2 inhibit_idle visible fullscreen
|
||||
for_window [title=".*VLC*."] border pixel 2 inhibit_idle visible fullscreen
|
||||
|
||||
# prevent sleep if any app is fullscreen.
|
||||
for_window [class=".*"] inhibit_idle fullscreen
|
||||
for_window [app_id=".*"] inhibit_idle fullscreen
|
||||
|
||||
for_window [app_id="org.gnome.Nautilus"] border pixel 1
|
||||
for_window [app_id="dolphin"] border pixel 1
|
||||
for_window [app_id="kitty"] border pixel 2
|
||||
|
@ -306,14 +338,15 @@ bindsym
|
|||
$mod+Ctrl+Shift+w exec MOZ_USE_XINPUT2=1 MOZ_ENABLE_WAYLAND=1 systemctl --user start ff_nn
|
||||
$mod+Shift+g exec MOZ_USE_XINPUT2=1 MOZ_ENABLE_WAYLAND=1 firefox --private-window
|
||||
$mod+Shift+v exec ferdi --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy
|
||||
$mod+Shift+a exec chromium-freeworld --incognito $chromium_flags
|
||||
$mod+Shift+a exec chromium --incognito $chromium_flags
|
||||
--locked $mod+Escape exec systemctl suspend -i
|
||||
$mod+Shift+o exec kitty bash -c 'powerprofilesctl set power-saver; powerprofilesctl|grep "*"; sleep 1'
|
||||
$mod+Shift+p exec kitty bash -c 'powerprofilesctl set performance; powerprofilesctl|grep "*"; sleep 1'
|
||||
--locked $mod+ctrl+Shift+s exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 0'
|
||||
--locked $mod+ctrl+Shift+d exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 1'
|
||||
--locked $mod+ctrl+Shift+f exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 2'
|
||||
--locked $mod+ctrl+Shift+b exec kitty bash -c 'sudo dell-bios-fan-control 1; powerprofilesctl set balanced; powerprofilesctl|grep "*"'
|
||||
# relevant for dell machines..
|
||||
# --locked $mod+ctrl+Shift+s exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 0'
|
||||
# --locked $mod+ctrl+Shift+d exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 1'
|
||||
# --locked $mod+ctrl+Shift+f exec kitty bash -c 'sudo dell-bios-fan-control 0;sudo i8kfan 0 2'
|
||||
# --locked $mod+ctrl+Shift+b exec kitty bash -c 'sudo dell-bios-fan-control 1; powerprofilesctl set balanced; powerprofilesctl|grep "*"'
|
||||
$mod+Ctrl+r exec alacritty --class ranger -e ranger
|
||||
# colour picker / eyedropper
|
||||
$mod+Shift+Alt+f exec farge --notify
|
||||
|
@ -577,6 +610,8 @@ mode "$mode_sys" {
|
|||
# return to default mode
|
||||
Return mode "default"
|
||||
Escape mode "default"
|
||||
Ctrl+c mode "default"
|
||||
q mode "default"
|
||||
$mod+Shift+e mode "default"
|
||||
}
|
||||
}
|
||||
|
@ -593,8 +628,8 @@ bindsym
|
|||
--locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||
--locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle;exec notify-send -t3600 'audio muted'
|
||||
--locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle;exec notify-send -t 3600 'mic mute toggle'
|
||||
--locked XF86MonBrightnessUp exec light -A 5
|
||||
--locked XF86MonBrightnessDown exec light -U 5
|
||||
--locked XF86MonBrightnessUp exec brightnessctl s +5%
|
||||
--locked XF86MonBrightnessDown exec brightnessctl s 5%-
|
||||
--locked $mod+Ctrl+p exec playerctl play-pause
|
||||
--locked $mod+Ctrl+n exec playerctl next
|
||||
--locked $mod+Ctrl+Shift+n exec playerctl previous
|
||||
|
@ -607,4 +642,4 @@ bindsym
|
|||
include /etc/sway/config.d/*
|
||||
include ~/.config/sway/config.d/*
|
||||
# Export environment to systemd and start services.
|
||||
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
|
||||
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"
|
||||
|
|
|
@ -4,7 +4,7 @@ CLUTTER_BACKEND=wayland
|
|||
|
||||
EDITOR='vim'
|
||||
TERM='xterm-256color'
|
||||
kee="surtur"
|
||||
kee="$HOST"
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT=1 # why do I always have to take care of this myself...
|
||||
|
||||
ANDROID_SDK_ROOT="$HOME/utils/Android/Sdk"
|
||||
|
@ -28,7 +28,8 @@ KITTY_ENABLE_WAYLAND=1
|
|||
BEMENU_BACKEND=wayland
|
||||
SDL_VIDEODRIVER=wayland
|
||||
NO_AT_BRIDGE=1
|
||||
LIBVA_DRIVER_NAME="i965"
|
||||
; LIBVA_DRIVER_NAME="i965"
|
||||
TDESKTOP_USE_PORTAL=1
|
||||
XDG_SESSION_TYPE=wayland
|
||||
XDG_CURRENT_DESKTOP=sway
|
||||
export WLRRENDERER=vulkan
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
daemonize
|
||||
screenshots
|
||||
# when https://github.com/jirutka/swaylock-effects (a7691b8) is compiled from
|
||||
# source, the issue with the red screen of death
|
||||
# (https://github.com/swaywm/sway/issues/7046) doesn't happen anymore and using
|
||||
# an image in conjunction with screenshot becomes unnecessary (again).
|
||||
#image=$HOME/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg
|
||||
clock
|
||||
indicator-idle-visible
|
||||
show-failed-attempts
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# vim: ft=config
|
||||
|
||||
daemonize
|
||||
screenshots
|
||||
# when https://github.com/jirutka/swaylock-effects (a7691b8) is compiled from
|
||||
# source, the issue with the red screen of death
|
||||
# (https://github.com/swaywm/sway/issues/7046) doesn't happen anymore and using
|
||||
# an image in conjunction with screenshot becomes unnecessary (again).
|
||||
#image=$HOME/Pictures/apod/2020-August-11-Churning-Clouds-on-Jupiter.jpg
|
||||
clock
|
||||
indicator-idle-visible
|
||||
show-failed-attempts
|
||||
indicator-radius=150
|
||||
indicator-thickness=7
|
||||
effect-blur=7x5
|
||||
effect-vignette=0.5:0.5
|
||||
ring-color=451e75
|
||||
key-hl-color=a01b83
|
||||
line-color=00000000
|
||||
inside-color=00000088
|
||||
separator-color=00000000
|
||||
fade-in=0.1337
|
||||
grace=5
|
||||
grace-no-mouse
|
||||
grace-no-touch
|
|
@ -1,17 +0,0 @@
|
|||
# ~/.config/systemd/user/waybar.service or /etc/systemd/user/waybar.service
|
||||
[Unit]
|
||||
Description=Highly customizable Wayland bar for Sway and Wlroots based compositors.
|
||||
Documentation=https://github.com/Alexays/Waybar/wiki/
|
||||
#PartOf=graphical-session.target
|
||||
PartOf=sway-session.target
|
||||
After=sway-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/waybar
|
||||
# Upstreamed in https://github.com/Alexays/Waybar/pull/1036
|
||||
ExecReload=kill -SIGUSR2 $MAINPID
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
||||
[Install]
|
||||
WantedBy=sway-session.target
|
|
@ -1,2 +0,0 @@
|
|||
[Service]
|
||||
Environment=PATH=%h/bin:/usr/local/bin:/usr/bin
|
|
@ -171,5 +171,8 @@ autocmd DocLoad ^https://github.com/tridactyl/tridactyl/issues/new$ issue
|
|||
autocmd TriStart .* source_quiet
|
||||
autocmd TabEnter .* unfocus
|
||||
|
||||
" colo
|
||||
colours shydactyl
|
||||
|
||||
" For syntax highlighting see https://github.com/tridactyl/vim-tridactyl
|
||||
" vim: set filetype=vim.tridactyl
|
||||
|
|
|
@ -3,33 +3,52 @@
|
|||
"position": "top",
|
||||
"height": 28,
|
||||
|
||||
"modules-left": ["sway/workspaces", "sway/mode"],
|
||||
"modules-left": ["sway/workspaces", "sway/mode", "custom/playerctl"],
|
||||
"modules-center": ["sway/window"],
|
||||
"modules-right": ["tray", "pulseaudio", "network", "network#wireguard", "temperature", "custom/storage", "memory", "cpu", "backlight", "sway/language", "battery", "clock#date", "clock#time"],
|
||||
"modules-right": ["tray", "pulseaudio", "network", "network#wireguard", "temperature", "custom/storage", "memory", "cpu", "backlight", "keyboard-state", "sway/language", "battery", "clock#date", "clock#time"],
|
||||
"sway/workspaces": {
|
||||
"all-outputs": false,
|
||||
"format": "{name}",
|
||||
"disable-scroll": true,
|
||||
"disable-markup" : false
|
||||
"all-outputs": false,
|
||||
"format": "{name}",
|
||||
"disable-scroll": true,
|
||||
"disable-markup" : false
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>", // Icon: expand-arrows-alt
|
||||
"tooltip": false
|
||||
"format": "<span style=\"italic\">{}</span>", // Icon: expand-arrows-alt
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/playerctl": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"max-length": 40,
|
||||
"exec": "$HOME/.local/bin/playerctl.sh 2> /dev/null",
|
||||
"on-click": "playerctl play-pause",
|
||||
"on-right-click": "sys-notif media",
|
||||
"on-scroll-up": "playerctl position 3+",
|
||||
"on-scroll-down": "playerctl position 3-"
|
||||
},
|
||||
"sway/window": {
|
||||
"max-length": 120,
|
||||
"tooltip": false
|
||||
"max-length": 120,
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#time": {
|
||||
"interval": 1,
|
||||
"format": "{:%H:%M:%S %z}",
|
||||
"tooltip": false
|
||||
"interval": 1,
|
||||
"format": "{:%H:%M:%S %z} ",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#date": {
|
||||
"interval": 10,
|
||||
"format": " {:%a %d %b} ",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||
"interval": 10,
|
||||
"format": " {:%a %d %b} ",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||
},
|
||||
"sway/language": {
|
||||
"format": "{short}",
|
||||
|
@ -42,7 +61,7 @@
|
|||
"warning": 70,
|
||||
"critical": 90
|
||||
},
|
||||
"on-click": "exec alacritty -e ytop"
|
||||
"on-click": "exec alacritty -e btop"
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
|
@ -52,6 +71,22 @@
|
|||
"critical": 90
|
||||
}
|
||||
},
|
||||
"custom/storage": {
|
||||
"format": "{percentage}%",
|
||||
"format-alt": "{}",
|
||||
"format-alt-click": "click",
|
||||
"return-type": "json",
|
||||
"interval": 60,
|
||||
"exec": "~/.config/waybar/modules/storage.sh"
|
||||
},
|
||||
"temperature": {
|
||||
"thermal-zone": 1,
|
||||
"hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
"format-critical": "<span foreground='#ff5c57'>{icon}</span>{temperatureC}°C",
|
||||
"format": "{icon}{temperatureC}°C",
|
||||
"format-icons": ["", ""]
|
||||
},
|
||||
"backlight": {
|
||||
"interval": 10,
|
||||
"device": "acpi_video1",
|
||||
|
@ -59,32 +94,32 @@
|
|||
"format-icons": ["☁️", "🌥️", "⛅", "☀️"]
|
||||
},
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"format-charging": "~{capacity}%",
|
||||
"format-plugged": "🔌{capacity}%",
|
||||
"interval": 30,
|
||||
"states": {
|
||||
"good": 85,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"tooltip": false
|
||||
"format": "{capacity}%{icon}",
|
||||
"format-alt": "{time}{icon}",
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"format-charging": "~{capacity}%",
|
||||
"format-plugged": "🔌{capacity}%",
|
||||
"interval": 30,
|
||||
"states": {
|
||||
"good": 85,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"tooltip": true
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "{icon}{essid} ({signalStrength}%)",
|
||||
"format-ethernet": "{icon}<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}",
|
||||
"format-linked": "<span foreground='#ffbf00'>{ifname}</span> (No IP)",
|
||||
"format-icons": {
|
||||
"wifi": [""],
|
||||
"ethernet": ["🖧"],
|
||||
"disconnected": ["disconnected"]
|
||||
},
|
||||
"on-click": "nm-connection-editor",
|
||||
"on-click-right": "exec kitty nmtui",
|
||||
"rotate": true,
|
||||
"tooltip": false
|
||||
"format-wifi": "{icon}{essid}({signalStrength}%)",
|
||||
"format-ethernet": "{icon}<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}",
|
||||
"format-linked": "<span foreground='#ffbf00'>{ifname}</span> (No IP)",
|
||||
"format-icons": {
|
||||
"wifi": [""],
|
||||
"ethernet": [""],
|
||||
"disconnected": ["disconnected"]
|
||||
},
|
||||
"on-click": "nm-connection-editor",
|
||||
"on-click-right": "exec kitty nmtui",
|
||||
"rotate": true,
|
||||
"tooltip": false
|
||||
},
|
||||
"network#wireguard": {
|
||||
"interface": "*wg*",
|
||||
|
@ -96,45 +131,31 @@
|
|||
"format-alt": "<span foreground='#929292'>{ifname}:</span>{ipaddr}/{cidr}🐉",
|
||||
"tooltip": false
|
||||
},
|
||||
"temperature": {
|
||||
"format": "<span foreground='#929292'></span>{temperatureC}°C",
|
||||
"thermal-zone": 2,
|
||||
"critical-threshold": 53,
|
||||
"format-critical": "<span foreground='#ff5c57'></span>{temperatureC}°C",
|
||||
"interval": 10
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon}{volume}% {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": "🔇 {icon} {format_source}",
|
||||
"format-muted": "✖ {format_source}",
|
||||
"format-source": "🎙{volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"speaker": "💻",
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"scroll-step": 1,
|
||||
"on-click": "pavucontrol",
|
||||
"on-click-right": "blueman-manager",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/storage": {
|
||||
"format": "{percentage}%",
|
||||
"format-alt": "{}",
|
||||
"format-alt-click": "click",
|
||||
"return-type": "json",
|
||||
"interval": 60,
|
||||
"exec": "~/.config/waybar/modules/storage.sh"
|
||||
"format": "{icon}{volume}% {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
// "format-muted": "✖ {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"speaker": "💻",
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"scroll-step": 1,
|
||||
"on-click": "kitty ncpamixer",
|
||||
"on-click-right": "blueman-manager",
|
||||
"tooltip": false
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 18
|
||||
"icon-size": 18
|
||||
},
|
||||
// vim: ft=json ff=unix noexpandtab
|
||||
// vim: ft=json.waybar ff=unix noexpandtab
|
||||
}
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
#waybar {
|
||||
background: #282a36;
|
||||
color: white;
|
||||
font-family: FiraCode Retina, Noto Sans, sans-serif;
|
||||
font-family: FiraCode Nerd Font, FiraCode Retina, Noto Sans, sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
font-size: 11.4px;
|
||||
}
|
||||
|
||||
|
||||
|
@ -65,12 +65,14 @@ window#waybar.solo {
|
|||
color: #c9545d;
|
||||
}
|
||||
|
||||
#mode, #battery, #cpu, #memory, #pulseaudio, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail {
|
||||
#mode, #battery, #cpu, #memory, #pulseaudio, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail, #temperature {
|
||||
margin: 0px 5px 0px 5px;
|
||||
min-width: 30px;
|
||||
}
|
||||
|
||||
#language {
|
||||
margin: 0px 5px;
|
||||
padding: 0 0px;
|
||||
min-width: 30px;
|
||||
}
|
||||
|
||||
|
@ -126,7 +128,7 @@ window#waybar.solo {
|
|||
}
|
||||
|
||||
#temperature {
|
||||
margin: 0 3px ;
|
||||
margin: 0 5px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
|
@ -139,7 +141,7 @@ window#waybar.solo {
|
|||
background-color: #282a36;
|
||||
}
|
||||
#custom-storage {
|
||||
margin: 0 0 0 7px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
#memory {
|
||||
margin: 0 5px;
|
||||
|
@ -169,6 +171,32 @@ window#waybar.solo {
|
|||
margin: 0 5px;
|
||||
min-width: 30px;
|
||||
}
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
background: #282a36;
|
||||
color: white;
|
||||
/* background: #97e1ad; */
|
||||
/* color: #000000; */
|
||||
padding: 0 0px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
" vim-python
|
||||
augroup vimrc-python
|
||||
autocmd!
|
||||
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79
|
||||
\ formatoptions+=croq softtabstop=4
|
||||
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
|
||||
augroup END
|
||||
|
||||
" jedi-vim
|
||||
let g:jedi#popup_on_dot = 0
|
||||
let g:jedi#goto_assignments_command = '<leader>g'
|
||||
let g:jedi#goto_definitions_command = '<leader>d'
|
||||
let g:jedi#documentation_command = 'K'
|
||||
let g:jedi#usages_command = '<leader>n'
|
||||
let g:jedi#rename_command = '<leader>r'
|
||||
let g:jedi#show_call_signatures = '0'
|
||||
let g:jedi#completions_command = '<C-Space>'
|
||||
let g:jedi#smart_auto_mappings = 0
|
||||
|
||||
" ale
|
||||
:call extend(g:ale_linters, {
|
||||
\'python': ['flake8'], })
|
||||
|
||||
" vim-airline
|
||||
let g:airline#extensions#virtualenv#enabled = 1
|
||||
|
||||
" Syntax highlight
|
||||
let python_highlight_all = 1
|
268
.vim/vimrc
268
.vim/vimrc
|
@ -3,6 +3,7 @@
|
|||
" not necessary, as vim will turn this on by default, when .vimrc is found
|
||||
" set nocompatible
|
||||
|
||||
set encoding=utf-8 " important for powerline besides others
|
||||
scriptencoding=utf8
|
||||
|
||||
filetype off "required
|
||||
|
@ -46,6 +47,7 @@ Plug 'axvr/photon.vim'
|
|||
Plug 'Lokaltog/vim-monotone'
|
||||
Plug 'https://git.sr.ht/~romainl/vim-bruin'
|
||||
Plug 'fxn/vim-monochrome'
|
||||
Plug 'folke/tokyonight.nvim'
|
||||
|
||||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
|
@ -76,6 +78,10 @@ Plug 'tpope/vim-jdaddy', { 'for': 'json' }
|
|||
Plug 'tpope/vim-ragtag', { 'for': ['html', 'xhtml', 'wml', 'xml', 'xslt', 'xsd', 'jsp', 'php', 'aspperl', 'aspvbs', 'cf', 'mason', 'htmldjango', 'eruby'] }
|
||||
Plug 'bazelbuild/vim-ft-bzl', { 'for': ['starlark', 'bzl'] }
|
||||
Plug 'z0mbix/vim-shfmt', { 'for': ['sh', 'bash'] }
|
||||
" post install (yarn install | npm install) then load plugin only for editing supported files
|
||||
Plug 'prettier/vim-prettier', {
|
||||
\ 'do': 'npm install --frozen-lockfile',
|
||||
\ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'vue', 'svelte', 'yaml', 'html', 'gohtmltmpl'] }
|
||||
|
||||
" Plug 'gorodinskiy/vim-coloresque'| " coloured background for colour names/codes
|
||||
" Plug 'lpinilla/vim-codepainter'| " text highlighting
|
||||
|
@ -118,6 +124,7 @@ Plug 'https://git.sr.ht/~sircmpwn/hare.vim', { 'for': 'hare' }
|
|||
Plug 'ziglang/zig.vim', { 'for': 'zig' }
|
||||
Plug 'ollykel/v-vim', { 'for': 'v' }
|
||||
Plug 'bfrg/vim-cpp-modern', { 'for': ['cpp', 'cmake'] }
|
||||
Plug 'vmchale/dhall-vim', { 'for': 'dhall' }
|
||||
Plug 'isobit/vim-caddyfile', { 'for': 'caddyfile' }
|
||||
Plug 'chikamichi/mediawiki.vim', { 'for': 'wiki' }
|
||||
Plug 's3rvac/vim-syntax-redminewiki', { 'for': 'redminewiki' }
|
||||
|
@ -190,7 +197,7 @@ let g:airline#extensions#ale#enabled = 1
|
|||
" nrrwrgn integration
|
||||
let g:airline#extensions#nrrwrgn#enabled = 1
|
||||
" vcs integration
|
||||
let g:airline#extensions#branch#enabled = 1
|
||||
let g:airline#extensions#branch#enabled = 0
|
||||
" show summary of changed hunks (gitgutter and/or vim-signify)
|
||||
let g:airline#extensions#hunks#enabled = 1
|
||||
" tabline integration
|
||||
|
@ -274,8 +281,8 @@ let g:ale_echo_cursor = 1
|
|||
let g:ale_echo_msg_error_str = 'E'
|
||||
let g:ale_echo_msg_warning_str = 'W'
|
||||
let g:ale_echo_msg_info_str = 'I'
|
||||
let g:ale_sign_error = '❌'
|
||||
let g:ale_sign_warning = ''
|
||||
let g:ale_sign_error = '✗'
|
||||
let g:ale_sign_warning = ''
|
||||
let g:ale_sign_info = ''
|
||||
" let g:ale_echo_msg_format = '%s'
|
||||
let g:ale_echo_msg_format = '(%severity%): [%linter%] %s'
|
||||
|
@ -289,29 +296,36 @@ let g:ale_list_window_size = 7
|
|||
let g:ale_lint_on_enter = 1
|
||||
" Do not run ale upon changes to the file.
|
||||
" let g:ale_lint_on_text_changed = 'never'
|
||||
" lint in normal and insert mode.
|
||||
let g:ale_lint_on_text_changed = 'always'
|
||||
" only lint in normal mode.
|
||||
" let g:ale_lint_on_text_changed = 'normal'
|
||||
" Run ale after leaving insert mode.
|
||||
let g:ale_lint_on_insert_leave = 1
|
||||
let g:ale_lint_on_filetype_changed = 1
|
||||
let g:ale_lint_on_save = 1
|
||||
let g:ale_lint_delay = 300| " the default being 200
|
||||
|
||||
let g:ale_linters = {
|
||||
\ 'go': ['gofumpt', 'govet', 'gofmt', 'golangci-lint', 'gopls'],
|
||||
\ 'gohtmltmpl': ['gofumpt', 'govet', 'gofmt', 'golangci-lint', 'gopls'],
|
||||
\ 'dockerfile': ['hadolint'],
|
||||
\ 'c': ['clang-format', 'clangd', 'clangtidy', 'cppcheck', 'cquery', 'flawfinder'],
|
||||
\ 'cpp': ['clang-format', 'g++', 'clang', 'clangd', 'clangtidy', 'cppcheck', 'flawfinder'],
|
||||
\ 'cs': ['OmniSharp'],
|
||||
\ 'hare': ['hare', 'vimls', 'vim-lsp'],
|
||||
\ 'lua': ['vimls'],
|
||||
\ 'nix': ['rnix_lsp', 'statix', 'nixpkgs-fmt', 'vimls'],
|
||||
\ 'css': ['vim-lsp'],
|
||||
\ 'hare': ['hare', 'vim-lsp'],
|
||||
\ 'lua': ['vim-lsp'],
|
||||
\ 'nix': ['rnix_lsp', 'statix', 'nixpkgs-fmt', 'vim-lsp'],
|
||||
\ 'python': ['vim-lsp', 'pylint', 'yapf', 'isort'],
|
||||
\ 'rust': ['analyzer', 'cargo', 'rls', 'vimls'],
|
||||
\ 'sh': ['shellcheck', 'shfmt', 'shell', 'vimls'],
|
||||
\ 'bash': ['shellcheck', 'shfmt', 'shell', 'vimls'],
|
||||
\ 'systemd': ['systemd_analyze', 'systemdlint'],
|
||||
\ 'vim': ['vint', 'vimls', 'vim-lsp'],
|
||||
\ 'tex': ['chktex', 'vimls'],
|
||||
\ 'rust': ['analyzer', 'cargo', 'rls', 'vim-lsp'],
|
||||
\ 'sh': ['shellcheck', 'shfmt', 'shell', 'vim-lsp'],
|
||||
\ 'bash': ['shellcheck', 'shfmt', 'shell', 'vim-lsp'],
|
||||
\ 'systemd': ['systemd_analyze', 'systemdlint', 'vim-lsp'],
|
||||
\ 'vim': ['vint', 'vim-lsp'],
|
||||
\ 'tex': ['chktex'],
|
||||
\ 'tf': ['vimls', 'vim-lsp', 'tflint', 'terraform', 'tfsec', 'checkov'],
|
||||
\ 'terraform': ['vimls', 'vim-lsp', 'tflint', 'terraform', 'tfsec', 'checkov'],
|
||||
\ 'terraform': ['vim-lsp', 'tflint', 'terraform', 'terraform_ls', 'terraform_lsp', 'tfsec', 'checkov'],
|
||||
\ 'yaml': ['yaml-language-server', 'spectral', 'swaglint','yamllint'],
|
||||
\ 'zsh': ['shellcheck', 'shell', 'vimls'],
|
||||
\ }
|
||||
|
@ -366,8 +380,8 @@ let g:clang_format#auto_format=0
|
|||
let g:clang_format#detect_style_file=1
|
||||
augroup clang_format
|
||||
autocmd!
|
||||
autocmd FileType c,cpp,proto nnoremap <buffer><Leader>cf :<C-u>ClangFormat<cr>
|
||||
autocmd FileType c,cpp,proto vnoremap <buffer><Leader>cf :ClangFormat<cr>
|
||||
autocmd FileType c,cpp,proto nnoremap <buffer><leader>cf :<C-u>ClangFormat<cr>
|
||||
autocmd FileType c,cpp,proto vnoremap <buffer><leader>cf :ClangFormat<cr>
|
||||
|
||||
function! Formatonsave()
|
||||
" alternative function to clang-format#auto_format param
|
||||
|
@ -403,7 +417,7 @@ let g:vimtex_quickfix_enabled = 0
|
|||
|
||||
" nerdcommenter
|
||||
" _ stands for forward slash (/)
|
||||
noremap <silent><c-_> :call nerdcommenter#Comment(0,"toggle")<CR>
|
||||
noremap <silent><c-_> :call nerdcommenter#Comment(0,"toggle")<cr>
|
||||
" Add spaces after comment delimiters by default
|
||||
let g:NERDSpaceDelims = 1
|
||||
" Allow commenting and inverting empty lines (useful when commenting a region)
|
||||
|
@ -415,7 +429,9 @@ let g:NERDTrimTrailingWhitespace = 1
|
|||
" Add your own custom formats or override the defaults
|
||||
let g:NERDCustomDelimiters = {
|
||||
\ 'vim': { 'left': '"','right': '' },
|
||||
\ 'bib': { 'left': '\%','right': '' },
|
||||
\ 'c': {'left': '/**','right': '*/' },
|
||||
\ 'dhall': {'left': '-- | ', 'right': '' },
|
||||
\ 'zsh': { 'left': '#','right': ''},
|
||||
\ 'sysctl': {'left': '#', 'right': ''},
|
||||
\ 'systemd': {'left': ';', 'right': ''},
|
||||
|
@ -526,16 +542,21 @@ let g:ansible_attribute_highlight='ob'
|
|||
|
||||
|
||||
let g:terraform_align=1
|
||||
let g:terraform_fold_sections=1
|
||||
let g:terraform_fold_sections=0
|
||||
let g:terraform_fmt_on_save=1
|
||||
|
||||
|
||||
" autopairs
|
||||
let g:AutoPairsMapBS = 1
|
||||
let g:AutoPairsMapBSIn = 1
|
||||
let g:AutoPairsMapBSAfter = 1
|
||||
" ignore next char - default binding is <c-p><c-e>
|
||||
" sometimes issues with expanding {}
|
||||
let g:AutoPairsMultilineClose = 0
|
||||
let g:AutoPairsFlyMode = 0
|
||||
let g:AutoPairsFlyMode = 0 "jump back with <c-p><c-b>
|
||||
" disable jumpy cursor - centers screen when in lower 1/3.
|
||||
let g:AutoPairsMapCR = 0
|
||||
" inoremap <CR> <esc>:call autopairs#AutoPairsReturn()<cr>i
|
||||
" inoremap <cr> <esc>:call autopairs#AutoPairsReturn()<cr>i
|
||||
" let g:AutoPairsFlyModeBlacklist =
|
||||
" let g:AutoPairsShortcutToggle = '<c-h>'
|
||||
let b:AutoPairsShortcutToggle = ''
|
||||
|
@ -563,13 +584,25 @@ let g:ctrlp_custom_ignore = {
|
|||
" control. It also supports works with .svn, .hg, .bzr.
|
||||
" let g:ctrlp_working_path_mode = 'r'
|
||||
let g:ctrlp_working_path_mode = 'raw'
|
||||
let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp'
|
||||
|
||||
nnoremap '<c-p>' :<CtrlP><cr>
|
||||
" The Silver Searcher
|
||||
if executable('ag')
|
||||
" use ag instead of grep.
|
||||
set grepprg=ag\ --nogroup\ --nocolor
|
||||
|
||||
" use ag in CtrlP
|
||||
let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
|
||||
" ag is fast enough that CtrlP doesn't need to cache
|
||||
let g:ctrlp_use_caching = 0
|
||||
endif
|
||||
|
||||
nnoremap <c-p> :CtrlP<cr><cr>
|
||||
nnoremap <leader>s <Plug>(ctrlp)
|
||||
|
||||
let g:ctrlp_map = '<c-p>'
|
||||
let g:ctrlp_show_hidden = 1
|
||||
" Use a leader instead of the actual named binding
|
||||
nmap <leader>p :CtrlP<cr>
|
||||
nmap <leader>p <Plug>(ctrlp)
|
||||
|
||||
" ctrlp buffers
|
||||
" Easy bindings for its various modes
|
||||
|
@ -608,24 +641,26 @@ command! WW execute 'silent w !sudo tee % >/dev/null' | edit!
|
|||
command! -nargs=* Make write | make! <args> | cwindow
|
||||
command Note execute 'e ~/Sync/notes/' . strftime('%y-%m-%d-%H:%M:%S') . '.md'
|
||||
command NoteLocal execute 'e ./' . strftime('%y-%m-%d-%H:%M:%S') . '.md'
|
||||
" easy session saving.
|
||||
command! Xs :mks! | :xa "save the session, save modified files, and exit
|
||||
|
||||
" always show full path on <c-g>
|
||||
nnoremap <c-g> 1<c-g>
|
||||
" open a terminal in $PWD
|
||||
nnoremap <silent> <Leader>tt :terminal<CR>
|
||||
nnoremap <silent> <leader>tt :terminal<cr>
|
||||
" terminal normal mode
|
||||
tnoremap <F1> <C-W>N
|
||||
" toggle showing whitespace
|
||||
noremap <F5> :set list!<CR>
|
||||
noremap <F5> :set list!<cr>
|
||||
" make shortcut
|
||||
nnoremap <F4> :term ++hidden ++open make<cr>
|
||||
nnoremap <leader><F4> :term ++open make<cr>
|
||||
nnoremap <F8> :TagbarToggle<CR>
|
||||
nnoremap <F8> :TagbarToggle<cr>
|
||||
|
||||
vmap gb :<C-U>!git blame % -L<C-R>=line("'<") <CR>,<C-R>=line("'>") <CR><CR>
|
||||
nnoremap gb :!git blame %<CR>
|
||||
vmap gb :<C-U>!git blame % -L<C-R>=line("'<") <cr>,<C-R>=line("'>") <cr><cr>
|
||||
nnoremap gb :!git blame %<cr>
|
||||
" ll provided by vimtex
|
||||
" nnoremap <silent> <Leader>kk :w! !pdflatex -shell-escape -interaction=nonstopmode ./*.tex<CR><CR>
|
||||
" nnoremap <silent> <leader>kk :w! !pdflatex -shell-escape -interaction=nonstopmode ./*.tex<cr><cr>
|
||||
function! Pdfpls()
|
||||
echom 'compiling ur tex goodness!'
|
||||
" w!
|
||||
|
@ -664,13 +699,13 @@ endfunction
|
|||
nnoremap <silent><leader>lb :call PdfBibLuapls()<cr><esc>
|
||||
|
||||
|
||||
nnoremap <Leader>l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"<CR><CR>
|
||||
nnoremap <leader>l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"<cr><cr>
|
||||
|
||||
|
||||
" ALE bindings
|
||||
nmap <silent> <C-k> :ALEPreviousWrap<cr>
|
||||
nmap <silent> <C-j> :ALENextWrap<cr>
|
||||
nnoremap <Leader>a :ALEDetail<cr>
|
||||
nnoremap <leader>a :ALEDetail<cr>
|
||||
nnoremap <c-LeftMouse> :ALEGoToDefinition<cr>
|
||||
|
||||
|
||||
|
@ -693,8 +728,8 @@ vmap < <gv
|
|||
vmap > >gv
|
||||
|
||||
" moving visual blocks
|
||||
vnoremap J :m '>+1<CR>gv=gv
|
||||
vnoremap K :m '<-2<CR>gv=gv
|
||||
" vnoremap J :m '>+1<cr>gv=gv
|
||||
" vnoremap K :m '<-2<cr>gv=gv
|
||||
|
||||
|
||||
"------------------------------------
|
||||
|
@ -731,9 +766,11 @@ let g:go_gopls_options = ['-remote=unix;/tmp/.gopls-daemon.sock']
|
|||
" let lsp handle connecting to gopls
|
||||
let g:go_gopls_enabled = 1
|
||||
" let g:go_doc_popup_window = 0
|
||||
let g:go_doc_popup_window = 1
|
||||
let g:go_fillstruct_mode = 'gopls'
|
||||
let g:go_term_reuse = 1
|
||||
let g:go_term_enabled = 1
|
||||
let g:go_doc_balloon = 1
|
||||
|
||||
|
||||
augroup vimgo
|
||||
|
@ -742,16 +779,16 @@ augroup vimgo
|
|||
au FileType go nmap <leader>b <Plug>(go-build)
|
||||
au FileType go nmap <leader>gr <Plug>(go-run)
|
||||
au FileType go nmap <leader>gt <Plug>(go-test)
|
||||
au FileType go nmap <Leader>gs <Plug>(go-implements)
|
||||
au FileType go nmap <Leader>gi <Plug>(go-info)
|
||||
au FileType go nmap <Leader>ge <Plug>(go-rename)
|
||||
au FileType go nmap <Leader>gd <Plug>(go-doc)
|
||||
au FileType go nmap <leader>gs <Plug>(go-implements)
|
||||
au FileType go nmap <leader>gi <Plug>(go-info)
|
||||
au FileType go nmap <leader>ge <Plug>(go-rename)
|
||||
au FileType go nmap <leader>gd <Plug>(go-doc)
|
||||
" Navigation commands
|
||||
au FileType go nmap <Leader>ds <Plug>(go-def-split)
|
||||
au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
|
||||
au FileType go nmap <leader>ds <Plug>(go-def-split)
|
||||
au FileType go nmap <leader>dv <Plug>(go-def-vertical)
|
||||
" Alternate commands
|
||||
au FileType go nmap <Leader>ae <Plug>(go-alternate-edit)
|
||||
au FileType go nmap <Leader>av <Plug>(go-alternate-vertical)
|
||||
au FileType go nmap <leader>hae <Plug>(go-alternate-edit)
|
||||
au FileType go nmap <leader>vae <Plug>(go-alternate-vertical)
|
||||
" Use new vim 8.2 popup windows for Go Doc
|
||||
augroup END
|
||||
|
||||
|
@ -760,52 +797,31 @@ augroup END
|
|||
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'gotags.vimrc.vim'
|
||||
|
||||
|
||||
""" dhall
|
||||
let g:dhall_format=1
|
||||
|
||||
|
||||
""" python
|
||||
" vim-python
|
||||
augroup vimrc-python
|
||||
autocmd!
|
||||
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79
|
||||
\ formatoptions+=croq softtabstop=4
|
||||
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
|
||||
augroup END
|
||||
|
||||
" jedi-vim
|
||||
let g:jedi#popup_on_dot = 0
|
||||
let g:jedi#goto_assignments_command = '<leader>g'
|
||||
let g:jedi#goto_definitions_command = '<leader>d'
|
||||
let g:jedi#documentation_command = 'K'
|
||||
let g:jedi#usages_command = '<leader>n'
|
||||
let g:jedi#rename_command = '<leader>r'
|
||||
let g:jedi#show_call_signatures = '0'
|
||||
let g:jedi#completions_command = '<C-Space>'
|
||||
let g:jedi#smart_auto_mappings = 0
|
||||
|
||||
" ale
|
||||
:call extend(g:ale_linters, {
|
||||
\'python': ['flake8'], })
|
||||
|
||||
" vim-airline
|
||||
let g:airline#extensions#virtualenv#enabled = 1
|
||||
|
||||
" Syntax highlight
|
||||
let python_highlight_all = 1
|
||||
exec 'source ' . escape(expand('~/.vim'),' ') . '/' . 'python.vimrc.vim'
|
||||
|
||||
|
||||
" partially superseded by jasonccox/vim-wayland-clipboard (for "+)
|
||||
" still keeping the "* mappings
|
||||
" ------ wayland copy and pasting
|
||||
let s:env = toupper(substitute(system('uname'), '\n', '', ''))
|
||||
if s:env =~# 'LINUX' && executable('wl-copy')
|
||||
xnoremap <silent>"+y y:call system("wl-copy", @")<cr>
|
||||
xnoremap <silent>"*y y:call system("wl-copy", @")<cr>
|
||||
" xnoremap <silent>"+y y:call system("wl-copy", @")<cr>
|
||||
xnoremap <silent>"*y y:silent call system("wl-copy", @")<cr>
|
||||
endif
|
||||
if s:env =~# 'LINUX' && executable('wl-paste')
|
||||
nnoremap <silent>"+p :let @"=substitute(system("wl-paste --no-newline"), '<C-v><C-m>', '', 'g')<cr>p
|
||||
" nnoremap <silent>"+p :let @"=substitute(system("wl-paste --no-newline"), '<C-v><C-m>', '', 'g')<cr>p
|
||||
nnoremap "*p :let @"=substitute(system("wl-paste --no-newline --primary"), '<C-v><C-m>', '', 'g')<cr>p
|
||||
endif
|
||||
|
||||
|
||||
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
|
||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<left>"
|
||||
inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"
|
||||
inoremap <expr> <cr> pumvisible() ? "\<C-Y>" : "\<cr>"
|
||||
|
||||
" ------ autocmd ------
|
||||
|
||||
|
@ -878,9 +894,9 @@ augroup filetypes
|
|||
au FileType xml setlocal shiftwidth=4 tabstop=4
|
||||
au FileType html setlocal shiftwidth=4 tabstop=4
|
||||
|
||||
au BufNewFile,BufRead *.js
|
||||
\ setlocal shiftwidth=4 tabstop=4 softtabstop=4 expandtab autoindent
|
||||
\ fileformat=unix filetype=js
|
||||
au BufNewFile,BufRead,BufEnter *.js
|
||||
\ setlocal shiftwidth=2 tabstop=2 softtabstop=2 backspace=2 expandtab autoindent
|
||||
\ fileformat=unix filetype=javascript
|
||||
|
||||
au BufNewFile,BufRead,BufEnter *.md
|
||||
\ setlocal textwidth=79 foldmethod=manual filetype=markdown
|
||||
|
@ -910,6 +926,14 @@ augroup filetypes
|
|||
\ set tabstop=4 shiftwidth=4 softtabstop=4 noexpandtab autoindent
|
||||
\ textwidth=79 fileformat=unix omnifunc=lsp#complete
|
||||
" \ textwidth=79 fileformat=unix
|
||||
au FileType terraform
|
||||
\ set fileformat=unix omnifunc=lsp#complete
|
||||
au FileType css
|
||||
\ set fileformat=unix omnifunc=lsp#complete
|
||||
au FileType gohtmltmpl setlocal
|
||||
\ fileformat=unix tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab
|
||||
au FileType just setlocal
|
||||
\ fileformat=unix tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab
|
||||
|
||||
|
||||
au FileType tex setlocal tabstop=2
|
||||
|
@ -922,6 +946,10 @@ augroup filetypes
|
|||
\ setlocal ft=bib tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab autoindent
|
||||
\ fileformat=unix conceallevel=0
|
||||
|
||||
au FileType bib
|
||||
\ setlocal tabstop=2 shiftwidth=2 softtabstop=2 noexpandtab autoindent
|
||||
\ fileformat=unix conceallevel=0
|
||||
|
||||
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0#
|
||||
\ indentkeys-=<:> foldmethod=indent nofoldenable
|
||||
|
||||
|
@ -1000,25 +1028,50 @@ if executable('zls')
|
|||
augroup END
|
||||
endif
|
||||
" terraform language server
|
||||
if executable('terraform-ls')
|
||||
if executable('terraform-lsp')
|
||||
augroup lsp_tf
|
||||
autocmd!
|
||||
au User lsp_setup call lsp#register_server({
|
||||
\ 'name': 'terraform-ls',
|
||||
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-ls']},
|
||||
\ 'name': 'terraform-lsp',
|
||||
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-lsp']},
|
||||
\ 'allowlist': ['terraform'],
|
||||
\ })
|
||||
" \ 'cmd': {server_info->[&shell, &shellcmdflag, 'terraform-ls', 'serve']},
|
||||
augroup END
|
||||
endif
|
||||
" tailwind ls
|
||||
if executable('tailwindcss-language-server')
|
||||
augroup lsp_twls
|
||||
autocmd!
|
||||
au User lsp_setup call lsp#register_server({
|
||||
\ 'name': 'tailwindcss-language-server',
|
||||
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'tailwindcss-language-server']},
|
||||
\ 'allowlist': ['css', 'html', 'gohtmltmpl'],
|
||||
\ })
|
||||
augroup END
|
||||
endif
|
||||
if executable('pyls')
|
||||
" this has some untold deps (on archlinux): haskell-some haskell-lsp1.4 haskell-lsp-types1.4
|
||||
if executable('dhall-lsp-server')
|
||||
augroup lsp_dhall
|
||||
autocmd!
|
||||
au User lsp_setup call lsp#register_server({
|
||||
\ 'name': 'dhall-lsp-server',
|
||||
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'dhall-lsp-server']},
|
||||
\ 'allowlist': ['dhall'],
|
||||
\ })
|
||||
augroup END
|
||||
endif
|
||||
if executable('pylsp')
|
||||
" pip install python-language-server
|
||||
" or python-lsp-black from the AUR
|
||||
augroup lsp_py
|
||||
autocmd!
|
||||
autocmd User lsp_setup call lsp#register_server({
|
||||
\ 'name': 'pyls',
|
||||
\ 'cmd': {server_info->['pyls']},
|
||||
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'pylsp']},
|
||||
\ 'allowlist': ['python'],
|
||||
\ })
|
||||
" \ 'cmd': {server_info->['pyls']},
|
||||
augroup END
|
||||
endif
|
||||
if executable('omnisharp')
|
||||
|
@ -1082,14 +1135,14 @@ augroup omnisharp_commands
|
|||
|
||||
" The following commands are contextual, based on the cursor position.
|
||||
autocmd FileType cs nmap <silent> <buffer> gd <Plug>(omnisharp_go_to_definition)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osfu <Plug>(omnisharp_find_usages)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osfi <Plug>(omnisharp_find_implementations)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>ospd <Plug>(omnisharp_preview_definition)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>ospi <Plug>(omnisharp_preview_implementations)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>ost <Plug>(omnisharp_type_lookup)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osd <Plug>(omnisharp_documentation)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osfs <Plug>(omnisharp_find_symbol)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osfx <Plug>(omnisharp_fix_usings)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osfu <Plug>(omnisharp_find_usages)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osfi <Plug>(omnisharp_find_implementations)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>ospd <Plug>(omnisharp_preview_definition)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>ospi <Plug>(omnisharp_preview_implementations)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>ost <Plug>(omnisharp_type_lookup)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osd <Plug>(omnisharp_documentation)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osfs <Plug>(omnisharp_find_symbol)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osfx <Plug>(omnisharp_fix_usings)
|
||||
autocmd FileType cs nmap <silent> <buffer> <C-\> <Plug>(omnisharp_signature_help)
|
||||
autocmd FileType cs imap <silent> <buffer> <C-\> <Plug>(omnisharp_signature_help)
|
||||
|
||||
|
@ -1097,29 +1150,29 @@ augroup omnisharp_commands
|
|||
autocmd FileType cs nmap <silent> <buffer> [[ <Plug>(omnisharp_navigate_up)
|
||||
autocmd FileType cs nmap <silent> <buffer> ]] <Plug>(omnisharp_navigate_down)
|
||||
" Find all code errors/warnings for the current solution and populate the quickfix window
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osgcc <Plug>(omnisharp_global_code_check)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osgcc <Plug>(omnisharp_global_code_check)
|
||||
" Contextual code actions (uses fzf, vim-clap, CtrlP or unite.vim selector when available)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osca <Plug>(omnisharp_code_actions)
|
||||
autocmd FileType cs xmap <silent> <buffer> <Leader>osca <Plug>(omnisharp_code_actions)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osca <Plug>(omnisharp_code_actions)
|
||||
autocmd FileType cs xmap <silent> <buffer> <leader>osca <Plug>(omnisharp_code_actions)
|
||||
" Repeat the last code action performed (does not use a selector)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>os. <Plug>(omnisharp_code_action_repeat)
|
||||
autocmd FileType cs xmap <silent> <buffer> <Leader>os. <Plug>(omnisharp_code_action_repeat)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>os. <Plug>(omnisharp_code_action_repeat)
|
||||
autocmd FileType cs xmap <silent> <buffer> <leader>os. <Plug>(omnisharp_code_action_repeat)
|
||||
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>os= <Plug>(omnisharp_code_format)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>os= <Plug>(omnisharp_code_format)
|
||||
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osnm <Plug>(omnisharp_rename)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osnm <Plug>(omnisharp_rename)
|
||||
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osre <Plug>(omnisharp_restart_server)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>osst <Plug>(omnisharp_start_server)
|
||||
autocmd FileType cs nmap <silent> <buffer> <Leader>ossp <Plug>(omnisharp_stop_server)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osre <Plug>(omnisharp_restart_server)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>osst <Plug>(omnisharp_start_server)
|
||||
autocmd FileType cs nmap <silent> <buffer> <leader>ossp <Plug>(omnisharp_stop_server)
|
||||
augroup END
|
||||
endif
|
||||
|
||||
|
||||
" ------ adv maps ------
|
||||
|
||||
" strip trailing whitespace, ss (strip space)
|
||||
nnoremap <silent> <Leader>ss
|
||||
" strip trailing whitespace, xs (strip space)
|
||||
nnoremap <silent> <leader>xs
|
||||
\ :let b:_p = getpos(".") <Bar>
|
||||
\ let b:_s = (@/ != '') ? @/ : '' <Bar>
|
||||
\ %s/\s\+$//e <Bar>
|
||||
|
@ -1127,7 +1180,7 @@ nnoremap <silent> <Leader>ss
|
|||
\ nohlsearch <Bar>
|
||||
\ unlet b:_s <Bar>
|
||||
\ call setpos('.', b:_p) <Bar>
|
||||
\ unlet b:_p <CR>
|
||||
\ unlet b:_p <cr>
|
||||
|
||||
match Todo /\s\+$/
|
||||
|
||||
|
@ -1211,7 +1264,6 @@ set viminfo='100,"100,:20,% " '=marks for x files, "=registers for x f
|
|||
|
||||
set foldmethod=manual " manual folding
|
||||
|
||||
set encoding=utf-8 " important for powerline besides others
|
||||
set fileencoding=utf-8 " set encoding for newly saved files
|
||||
set noscrollbind
|
||||
set cmdheight=2 " lines under {status,air}line
|
||||
|
@ -1220,6 +1272,8 @@ set updatetime=250
|
|||
|
||||
if (has('termguicolors'))
|
||||
set termguicolors
|
||||
else
|
||||
set t_Co=256
|
||||
endif
|
||||
" let there be light
|
||||
" set background=light
|
||||
|
@ -1371,7 +1425,6 @@ endif
|
|||
|
||||
set laststatus=2 " show status bar
|
||||
set report=1 " Always report number of lines changed by ex commands
|
||||
set t_Co=256
|
||||
set guifont=Fira\ Code\ weight=450\ 12
|
||||
|
||||
set ballooneval " vim8+ popups
|
||||
|
@ -1405,6 +1458,9 @@ set clipboard=unnamed,unnamedplus
|
|||
set exrc
|
||||
set secure
|
||||
|
||||
" nicer scrolling when long lines are wrapped.
|
||||
set smoothscroll
|
||||
|
||||
|
||||
" Append modeline before first line in buffer.
|
||||
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX
|
||||
|
@ -1415,7 +1471,7 @@ function! AppendModeline()
|
|||
let l:modeline = substitute(&commentstring, '%s', l:modeline, '')
|
||||
call append (line('^'), l:modeline)
|
||||
endfunction
|
||||
nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
|
||||
nnoremap <silent> <leader>ml :call AppendModeline()<cr>
|
||||
|
||||
|
||||
function! AskQuit (msg, proposed_action)
|
||||
|
@ -1506,9 +1562,9 @@ augroup autoReloadVimRC
|
|||
augroup END
|
||||
|
||||
" reload config
|
||||
nnoremap <Leader>ve :e $MYVIMRC<CR>
|
||||
nnoremap <leader>ve :e $MYVIMRC<cr>
|
||||
" reload config and call refresh fn
|
||||
nnoremap <Leader>vr :source $MYVIMRC<CR>call RefreshUI()<CR>
|
||||
nnoremap <leader>vr :source $MYVIMRC<cr>call RefreshUI()<cr>
|
||||
|
||||
let base16colorspace=256
|
||||
|
||||
|
|
20
.zprofile
20
.zprofile
|
@ -24,7 +24,7 @@ add_to_path "$HOME/.local/share/JetBrains/Toolbox/bin"
|
|||
|
||||
export EDITOR='vim'
|
||||
export TERM='xterm-256color'
|
||||
export kee="surtur"
|
||||
export kee="$HOST"
|
||||
export SSH_KEY_PATH="$HOME/.ssh/$kee"
|
||||
|
||||
if [ ! -S ~/.ssh/ssh_auth_sock ]; then
|
||||
|
@ -70,17 +70,25 @@ if [[ -z $DISPLAY ]]; then
|
|||
export NO_AT_BRIDGE=1
|
||||
export TDESKTOP_USE_PORTAL=1
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export LIBVA_DRIVER_NAME="i965"
|
||||
if [[ "${HOSTNAME}" == "surtur" ]]; then
|
||||
export LIBVA_DRIVER_NAME="i965"
|
||||
fi
|
||||
|
||||
. ~/.zsh/bemenu-dracula/bemenu-dracula
|
||||
test -f ~/.zsh/bemenu-dracula/bemenu-dracula && . ~/.zsh/bemenu-dracula/bemenu-dracula
|
||||
|
||||
if [[ $(tty) == /dev/tty1 ]]; then
|
||||
# if [[ $(tty) == /dev/tty1 ]]; then
|
||||
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
|
||||
export GTK_IM_MODULE=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export SAL_USE_VCLPLUGIN=gtk3 # for libreoffice
|
||||
export XDG_CURRENT_DESKTOP=sway
|
||||
exec systemd-cat --identifier=sway sway > $XDG_RUNTIME_DIR/sway.log 2>&1
|
||||
elif [[ $(tty) == /dev/tty2 ]]; then
|
||||
# needs vulkan libs.
|
||||
export WLRRENDERER=vulkan
|
||||
# systemd-cat --identifier=sway sway >> $XDG_RUNTIME_DIR/sway.log 2>&1
|
||||
# systemd-cat --identifier=sway sway >> /var/tmp/sway.log 2>&1
|
||||
sway -d -V >> /var/tmp/sway.log 2>&1
|
||||
elif [ "${XDG_VTNR}" -eq 2 ]; then
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
exec systemd-cat --identifier=gnome-session gnome
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
alias ls='exa -al --group --group-directories-first'
|
||||
alias ls='exa -al --group --group-directories-first --time-style=full-iso --git --colour-scale'
|
||||
alias grubup='sudo grub2-mkconfig -o /boot/grub2/grub.cfg'
|
||||
alias am='sudo -i'
|
||||
alias mv='mv -i'
|
||||
|
@ -15,8 +15,8 @@
|
|||
#alias reth='sudo ethtool -r enp0s25' # ; ip link set enp0s25 down; ip link set enp0s25 up '
|
||||
#alias rwlan='ip link set wlp3s0 down; ip link set wlp3s0 up'
|
||||
alias wget='wget -c' # allows to restore progress after interruption
|
||||
alias vimrc='vim ~/.vimrc'
|
||||
alias zshconfig="vim ~/.zshrc"
|
||||
alias vimrc='vim ~/src/dotfiles/.vim/vimrc'
|
||||
alias zshconfig="vim ~/src/dotfiles/.zshrc"
|
||||
alias zshist="vim ~/.zsh_history"
|
||||
alias alltheconfigs='alltheconfigs.sh'
|
||||
alias agentssh="ssh-add ~/.ssh/$kee" # add development key on demand
|
||||
|
@ -27,11 +27,11 @@
|
|||
alias tmpdir='nutmp=$(mktemp -d);cd "$nutmp";unset nutmp'
|
||||
alias wolm='wol d4:3d:7e:53:c2:b1'
|
||||
alias ta='tmux a -t0'
|
||||
alias dc='docker-compose'
|
||||
# alias dc='docker-compose'
|
||||
alias tmux='TERM=xterm-256color tmux'
|
||||
alias urlencode='python2 -c "import urllib, sys; print urllib.quote_plus( sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1], \"\")"'
|
||||
alias urldecode='python2 -c "import urllib, sys; print urllib.unquote_plus(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1])"'
|
||||
alias obs="QT_QPA_PLATFORM=xcb obs"
|
||||
# alias obs="QT_QPA_PLATFORM=xcb obs"
|
||||
alias diff="diff -Naru --color"
|
||||
alias ip='ip -color'
|
||||
alias nmcs='nmcli conn show'
|
||||
|
@ -40,10 +40,16 @@
|
|||
alias gitagain='GIT_COMMITTER_DATE="$(git show -s --format=%ci HEAD)" git commit -v --amend'
|
||||
[ -z "$IN_NIX_SHELL" ] && {
|
||||
if command -v nixGLIntel &> /dev/null; then
|
||||
alias gor='nixGLIntel go run'
|
||||
# alias gor='nixGLIntel go run'
|
||||
fi
|
||||
}
|
||||
alias signal-desktop='signal-desktop --use-tray-icon --enable-features=UseOzonePlatform --ozone-platform=wayland'
|
||||
alias dotfiles='cd ~/utils/dotfiles'
|
||||
alias dotfiles='cd ~/src/dotfiles' # on leo
|
||||
alias -g VV=' |& vim -'
|
||||
alias -g LL=' |& less'
|
||||
# alias podman='sudo podman' # rootful podman for ZFS
|
||||
# nix home-manager switch
|
||||
alias -g nhms='home-manager switch --no-out-link -b backup --flake ~/src/dotfiles#$HOST'
|
||||
alias hx='helix'
|
||||
alias allkeyz="ssh-add ~/.ssh/$HOSTNAME ~/.ssh/gitsign"
|
||||
alias clbin="curl --data-binary @- https://paste.rs/"
|
||||
|
|
|
@ -48,9 +48,14 @@ delete-branches() {
|
|||
|
||||
fzf-open() {
|
||||
local output
|
||||
local old_opts="$FZF_DEFAULT_OPTS"
|
||||
FZF_DEFAULT_OPTS+=" --preview 'exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}' --bind '?:preview:bat --style=numbers --color=always --line-range :200 {}'"
|
||||
output=$(fzf </dev/tty)
|
||||
vim --not-a-term ${output}
|
||||
if [ ! -z "$output" ]; then
|
||||
vim --not-a-term ${output}
|
||||
fi
|
||||
zle reset-prompt
|
||||
export FZF_DEFAULT_OPTS="$old_opts"
|
||||
}
|
||||
|
||||
zle -N fzf-open
|
||||
|
|
17
.zshenv
17
.zshenv
|
@ -3,6 +3,10 @@
|
|||
export GOPATH="$HOME/go"
|
||||
export GOBIN="$GOPATH/bin"
|
||||
|
||||
# prerequisite: install gke-gcloud-auth-plugin
|
||||
# ref: https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
|
||||
export USE_GKE_GCLOUD_AUTH_PLUGIN=True
|
||||
|
||||
export ANDROID_SDK_ROOT="$HOME/utils/Android/Sdk"
|
||||
export ANDROID_SDK_PATH=$ANDROID_SDK_ROOT
|
||||
export ANDROID_NDK_PATH=$ANDROID_SDK_ROOT/ndk-bundle
|
||||
|
@ -12,12 +16,21 @@ export AndroidNdkPath=$ANDROID_NDK_PATH
|
|||
|
||||
export CCACHE_NODISABLE="true"
|
||||
|
||||
# https://github.com/nix-community/home-manager/issues/4019
|
||||
export SKIP_SANITY_CHECKS=1
|
||||
# https://github.com/NixOS/nix/issues/2033
|
||||
# https://discourse.nixos.org/t/where-is-nix-path-supposed-to-be-set/16434/8
|
||||
export NIX_PATH=$HOME/.nix-defexpr/channels:/nix/var/nix/profiles/per-user/vis/channels${NIX_PATH:+:$NIX_PATH}
|
||||
export NIX_PATH=$HOME/.nix-defexpr/channels:/nix/var/nix/profiles/per-user/$USER/channels${NIX_PATH:+:$NIX_PATH}
|
||||
|
||||
[ -z "$IN_NIX_SHELL" ] && export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
|
||||
|
||||
export PYTHONPATH="$HOME/.nix-profile/lib/python3.11/site-packages"
|
||||
export BEMENU_OPTS="--tb '#6272a4' --tf '#f8f8f2' --fb '#282a36' --ff '#f8f8f2'
|
||||
--nb '#282a36' --nf '#6272a4' --hb '#44475a' --hf '#50fa7b' --sb '#44475a'
|
||||
--sf '#50fa7b' --scb '#282a36' --scf '#ff79c6' -n -p '⇒' --fork -l 5
|
||||
--fn 'Fira Code Retina 17'"
|
||||
|
||||
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
|
||||
|
||||
add_to_path() {
|
||||
local p=$1
|
||||
|
@ -26,7 +39,7 @@ add_to_path() {
|
|||
fi
|
||||
}
|
||||
|
||||
add_to_path "/usr/lib64/ccache"
|
||||
add_to_path "/usr/lib64/ccache/bin"
|
||||
add_to_path "$ANDROID_SDK_ROOT/platform-tools"
|
||||
add_to_path "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"
|
||||
add_to_path "$ANDROID_SDK_ROOT/tools"
|
||||
|
|
27
.zshrc
27
.zshrc
|
@ -63,12 +63,18 @@
|
|||
# stamp shown in the history command output.
|
||||
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
HIST_STAMPS="dd.mm.yyyy"
|
||||
HISTSIZE=10000000
|
||||
SAVEHIST=10000000
|
||||
setopt extended_history # write the history file in the ":start:elapsed;command" format
|
||||
setopt share_history
|
||||
setopt hist_expire_dups_first # expire duplicate entries first when trimming history
|
||||
setopt hist_ignore_dups
|
||||
setopt hist_ignore_all_dups
|
||||
setopt hist_save_no_dups
|
||||
setopt hist_ignore_space
|
||||
HISTCONTROL=ignoredups:erasedups
|
||||
setopt hist_reduce_blanks # remove superfluous blanks before recording entry
|
||||
setopt hist_verify # don't execute immediately after expansion
|
||||
# HISTCONTROL=ignoredups:erasedups
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
@ -118,12 +124,22 @@
|
|||
# Options to fzf command
|
||||
export FZF_COMPLETION_OPTS='+c -x'
|
||||
export FZF_DEFAULT_OPTS="--height=60% --inline-info --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4"
|
||||
export FZF_CTRL_T_OPTS="--preview 'bat --style=numbers --color=always --line-range :200 {}'"
|
||||
export FZF_CTRL_T_OPTS="--preview 'exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}' --bind '?:preview:bat --style=numbers --color=always --line-range :200 {}'"
|
||||
export FZF_ALT_C_OPTS="--preview 'exa -al --group --group-directories-first --colour-scale --icons --git --time-style=full-iso {}' --bind '?:preview:exa -al --group --group-directories-first --colour-scale --list-dirs --icons --git --time-style=full-iso {}'"
|
||||
|
||||
# if [[ "$(hostnamectl hostname)" == "leo" ]]; then
|
||||
if [[ "$(hostname -s)" == "leo" ]]; then
|
||||
local fzf_bindings="/usr/share/fzf/key-bindings.zsh"
|
||||
else
|
||||
local fzf_bindings="/usr/share/fzf/shell/key-bindings.zsh"
|
||||
fi
|
||||
zvm_after_init_commands+=("[ -f $fzf_bindings ] && source $fzf_bindings")
|
||||
unset fzf_bindings
|
||||
|
||||
zvm_after_init_commands+=('[ -f /usr/share/fzf/shell/key-bindings.zsh ] && source /usr/share/fzf/shell/key-bindings.zsh')
|
||||
|
||||
# User configuration
|
||||
source ~/.dotenv
|
||||
source ${XDG_RUNTIME_DIR}/secrets/envs
|
||||
source ~/.zsh/aliases.zsh
|
||||
source ~/.zsh/functions.zsh
|
||||
|
||||
|
@ -148,11 +164,14 @@
|
|||
export QT_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
export kee="surtur"
|
||||
# export kee=${kee:-$(hostnamectl --static)}
|
||||
export kee=${kee:-$(hostname -s)}
|
||||
SSH_KEY_PATH="$HOME/.ssh/$kee"
|
||||
|
||||
eval $(TERM=xterm-kitty dircolors)
|
||||
|
||||
# export DOCKER_HOST=unix:///run/podman/podman.sock
|
||||
# rootless
|
||||
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# source: https://gitlab.com/xPMo/dotfiles.cli/-/blob/dots/.local/lib/waybar/playerctl.sh
|
||||
|
||||
exec 2>"$XDG_RUNTIME_DIR/waybar-playerctl.log"
|
||||
IFS=$'\n\t'
|
||||
|
||||
while true; do
|
||||
|
||||
while read -r playing position length name artist title arturl hpos hlen; do
|
||||
# remove leaders
|
||||
playing=${playing:1} position=${position:1} length=${length:1} name=${name:1}
|
||||
artist=${artist:1} title=${title:1} arturl=${arturl:1} hpos=${hpos:1} hlen=${hlen:1}
|
||||
|
||||
# build line
|
||||
line="${artist:+$artist ${title:+- }}${title:+$title }${hpos:+$hpos${hlen:+|}}$hlen"
|
||||
|
||||
# json escaping
|
||||
line="${line//\"/\\\"}"
|
||||
((percentage = length ? (100 * (position % length)) / length : 0))
|
||||
case $playing in
|
||||
⏸️ | Paused) text='<span foreground=\"#cccc00\" size=\"smaller\">'"$line"'</span>' ;;
|
||||
▶️ | Playing) text="<small>$line</small>" ;;
|
||||
*) text='<span foreground=\"#073642\">⏹</span>' ;;
|
||||
esac
|
||||
|
||||
# integrations for other services (nwg-wrapper)
|
||||
if [[ $title != "$ptitle" || $artist != "$partist" || $parturl != "$arturl" ]]; then
|
||||
typeset -p playing length name artist title arturl >"$XDG_RUNTIME_DIR/waybar-playerctl.info"
|
||||
pkill -8 nwg-wrapper
|
||||
ptitle=$title partist=$artist parturl=$arturl
|
||||
fi
|
||||
|
||||
# exit if print fails
|
||||
printf '{"text":"%s","tooltip":"%s","class":"%s","percentage":%s}\n' \
|
||||
"$text" "$playing $name | $line" "$percentage" "$percentage" || break 2
|
||||
|
||||
done < <(
|
||||
# requires playerctl>=2.0
|
||||
# Add non-space character ":" before each parameter to prevent 'read' from skipping over them
|
||||
playerctl --follow metadata --player playerctld --format \
|
||||
$':{{emoji(status)}}\t:{{position}}\t:{{mpris:length}}\t:{{playerName}}\t:{{markup_escape(artist)}}\t:{{markup_escape(title)}}\t:{{mpris:artUrl}}\t:{{duration(position)}}\t:{{duration(mpris:length)}}' &
|
||||
echo $! >"$XDG_RUNTIME_DIR/waybar-playerctl.pid"
|
||||
)
|
||||
|
||||
# no current players
|
||||
# exit if print fails
|
||||
echo '<span foreground=#dc322f>⏹</span>' || break
|
||||
sleep 15
|
||||
|
||||
done
|
||||
|
||||
kill "$(<"$XDG_RUNTIME_DIR/waybar-playerctl.pid")"
|
|
@ -3,7 +3,8 @@
|
|||
# Screen Sharing with OBS Studio on Fedora and Sway
|
||||
# ref: https://github.com/hw0lff/screen-share-sway
|
||||
|
||||
grep -q "alias obs" ~/.zshrc || echo 'alias obs="QT_QPA_PLATFORM=xcb obs"' >> ~/.zshrc
|
||||
# no need with obs's wayland support now.
|
||||
# grep -q "alias obs" ~/.zshrc || echo 'alias obs="QT_QPA_PLATFORM=xcb obs"' >> ~/.zshrc
|
||||
|
||||
V4L2_VERSION="0.12.5"
|
||||
U="$HOME/utils"
|
||||
|
|
|
@ -6,9 +6,9 @@ isrunning=1
|
|||
player=`ps -u $USER | grep -Ec "(rhythmbox|totem|mpv|vlc|*mplayer)"`
|
||||
|
||||
if [ "$player" -ge "$isrunning" ]; then
|
||||
if [ "$1" == "-t" || "$1" == "-f" ]; then
|
||||
if [ "$1" == "-t" ] || [ "$1" == "-f" ]; then
|
||||
dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
|
||||
fi
|
||||
fi
|
||||
|
||||
swaylock -C ~/.config/swaylock/config -f
|
||||
swaylock -f -C ~/.config/swaylock/config --grace 0 && sleep 0.1
|
||||
|
|
|
@ -12,6 +12,6 @@ revert() {
|
|||
}
|
||||
trap revert HUP INT TERM
|
||||
swayidle -w timeout 5 'swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"' &
|
||||
resume 'swaymsg "output * power on"' &
|
||||
swaylock -C ~/.config/swaylock/config
|
||||
revert
|
||||
|
|
42
flake.lock
42
flake.lock
|
@ -3,11 +3,11 @@
|
|||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650374568,
|
||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -20,15 +20,14 @@
|
|||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"utils": "utils"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1661573386,
|
||||
"narHash": "sha256-pBEg8iY00Af/SAtU2dlmOAv+2x7kScaGlFRDjNoVJO8=",
|
||||
"lastModified": 1687444533,
|
||||
"narHash": "sha256-9IdCN7s7Dr1uKt0uRoYT15cpOjN1qYHpTRPKRHCMc3o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "d89bdff445eadff03fe414e9c30486bc8166b72b",
|
||||
"rev": "6c78ba7932567331fb8ebabf34a143b998bb5f23",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -44,11 +43,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1662769985,
|
||||
"narHash": "sha256-zGk10O4osXxf1n9RafSMpPBsEibAGzx4OL4MLmlodB4=",
|
||||
"lastModified": 1669234151,
|
||||
"narHash": "sha256-TwT87E3m2TZLgwYJESlype14HxUOrRGojPM5C2akrMg=",
|
||||
"owner": "jordanisaacs",
|
||||
"repo": "homeage",
|
||||
"rev": "dd98c460175a0781ad0b51f4392de97c5454a5c4",
|
||||
"rev": "02bfe4ca06962d222e522fff0240c93946b20278",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -59,11 +58,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1661541451,
|
||||
"narHash": "sha256-LALyT63vpo1sftSmHAbbrj+emfCOo93Jv4xVOIcmnl0=",
|
||||
"lastModified": 1686960236,
|
||||
"narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "38e16b192af13ff6cffc8a35a25f390f1e96b585",
|
||||
"rev": "04af42f3b31dba0ef742d254456dc4c14eedac86",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -80,21 +79,6 @@
|
|||
"homeage": "homeage",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
14
flake.nix
14
flake.nix
|
@ -44,5 +44,19 @@
|
|||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
};
|
||||
|
||||
homeConfigurations.leo = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
|
||||
# Specify your home configuration modules here, for example,
|
||||
# the path to your home.nix.
|
||||
modules = [
|
||||
./home-leo.nix
|
||||
homeage.homeManagerModules.homeage
|
||||
];
|
||||
|
||||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,726 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
homeage,
|
||||
...
|
||||
}: let
|
||||
hostName = "leo";
|
||||
swayTgt = "sway-session.target";
|
||||
in {
|
||||
home.username = "$USER";
|
||||
home.sessionVariables.HOSTNAME = "${hostName}";
|
||||
home.homeDirectory = "/home/$USER";
|
||||
home.stateVersion = "23.05";
|
||||
|
||||
#home.activation = {
|
||||
# checkBemenuDraculaInZshDir = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
# $DRY_RUN_CMD test -d .zsh/bemenu-dracula || echo "TODO: link bemenu-dracula to .zsh"
|
||||
# '';
|
||||
#};
|
||||
|
||||
homeage = {
|
||||
# Absolute path to identity (created not through home-manager)
|
||||
identityPaths = [
|
||||
"~/.ssh/theEd"
|
||||
];
|
||||
|
||||
# "activation" if system doesn't support systemd
|
||||
#installationType = "activation";
|
||||
installationType = "systemd";
|
||||
|
||||
file."sops-age-keys.txt" = {
|
||||
# Path to encrypted file tracked by the git repository
|
||||
source = ./secrets/sops-keys.age;
|
||||
# can be "copies" or "symlink"
|
||||
symlinks = [".config/sops/age/keys.txt"];
|
||||
};
|
||||
|
||||
file."envs" = {
|
||||
source = ./secrets/envs.age;
|
||||
};
|
||||
|
||||
# infra secrets.
|
||||
file."infra-backend" = {
|
||||
source = ./secrets/infra-backend.age;
|
||||
};
|
||||
file."infra-vars" = {
|
||||
source = ./secrets/infra-vars.age;
|
||||
};
|
||||
};
|
||||
|
||||
# build a configuration and switch:
|
||||
# ➜ home-manager switch --no-out-link -b backup --flake ~/src/dotfiles#$USER
|
||||
|
||||
# instead, install with:
|
||||
# nix profile install --priority 0 home-manager
|
||||
# hit the issue described here, waiting until resolved:
|
||||
# https://github.com/nix-community/home-manager/issues/2848
|
||||
programs.home-manager.enable = false;
|
||||
programs.home-manager.path = "$HOME/src/dotfiles";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
exa
|
||||
ripgrep
|
||||
starship
|
||||
wget
|
||||
zstd
|
||||
zip
|
||||
unzip
|
||||
xxd
|
||||
b3sum
|
||||
sheldon
|
||||
btop
|
||||
zellij
|
||||
cargo-watch
|
||||
httpie
|
||||
github-cli
|
||||
nodejs
|
||||
nodePackages.npm
|
||||
oci-cli
|
||||
|
||||
nautilus-open-any-terminal
|
||||
|
||||
dhall
|
||||
clang-tools
|
||||
ansible-lint
|
||||
python311Packages.python-lsp-server
|
||||
python311Packages.pynvim
|
||||
python311Packages.i3ipc
|
||||
python311Packages.xlib
|
||||
python311Packages.adblock
|
||||
|
||||
zathura
|
||||
autotiling
|
||||
bemenu
|
||||
swayr
|
||||
kanshi
|
||||
waybar
|
||||
albert
|
||||
];
|
||||
|
||||
imports = [
|
||||
./nix/programs.nix
|
||||
];
|
||||
|
||||
services = {
|
||||
kdeconnect.enable = true;
|
||||
kdeconnect.indicator = true;
|
||||
};
|
||||
|
||||
systemd.user.services = {
|
||||
kanshi = {
|
||||
Unit = {
|
||||
Description = "Dynamic output configuration for Wayland compositors";
|
||||
# Documentation = "man:kanshi(1)";
|
||||
Documentation = "https://sr.ht/~emersion/kanshi";
|
||||
# Requires = config.services.kanshi.systemdTarget;
|
||||
# PartOf = config.services.kanshi.systemdTarget;
|
||||
# After = config.services.kanshi.systemdTarget;
|
||||
# BindsTo = "sway-session.target";
|
||||
BindsTo = config.services.kanshi.systemdTarget;
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
# ExecStart = "/usr/sbin/kanshi";
|
||||
ExecStart = "${config.services.kanshi.package}/bin/kanshi";
|
||||
Restart = "always";
|
||||
};
|
||||
|
||||
Install = {WantedBy = [config.services.kanshi.systemdTarget];};
|
||||
};
|
||||
|
||||
waybar = {
|
||||
Unit = {
|
||||
Description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
|
||||
Documentation = "https://github.com/Alexays/Waybar/wiki/";
|
||||
PartOf = swayTgt;
|
||||
After = swayTgt;
|
||||
};
|
||||
|
||||
Service = {
|
||||
ExecStart = "${pkgs.waybar}/bin/waybar";
|
||||
ExecReload = "kill -SIGUSR2 $MAINPID";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "3s";
|
||||
};
|
||||
|
||||
Install = {WantedBy = [swayTgt];};
|
||||
};
|
||||
|
||||
autotiling = {
|
||||
Unit = {
|
||||
Description = "Script for sway and i3 to automatically switch the horizontal / vertical window split orientation";
|
||||
Documentation = "https://github.com/nwg-piotr/autotiling";
|
||||
BindsTo = swayTgt;
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.autotiling}/bin/autotiling";
|
||||
Restart = "always";
|
||||
};
|
||||
|
||||
Install = {WantedBy = [swayTgt];};
|
||||
};
|
||||
|
||||
albert = {
|
||||
Unit = {
|
||||
Description = "A C++/Qt based desktop agnostic keyboard launcher that helps you to accomplish your workflows in a breeze";
|
||||
Documentation = "https://albertlauncher.github.io/";
|
||||
BindsTo = swayTgt;
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
# after hm stateVersion bump to 23.05, albert doesn't seem to support explicit wayland.
|
||||
Environment = "QT_QPA_PLATFORM=xcb";
|
||||
ExecStart = "${pkgs.albert}/bin/albert";
|
||||
Restart = "always";
|
||||
RestartSec = "3s";
|
||||
};
|
||||
|
||||
Install = {WantedBy = [swayTgt];};
|
||||
};
|
||||
};
|
||||
|
||||
home.file = {
|
||||
".config/kitty/kitty.conf" = {
|
||||
source = .config/kitty/kitty.conf;
|
||||
};
|
||||
|
||||
".vimrc" = {
|
||||
source = ./.vim/vimrc;
|
||||
};
|
||||
".vim/deoplete.vimrc.vim" = {
|
||||
source = ./.vim/deoplete.vimrc.vim;
|
||||
};
|
||||
".vim/gotags.vimrc.vim" = {
|
||||
source = ./.vim/gotags.vimrc.vim;
|
||||
};
|
||||
".vim/python.vimrc.vim" = {
|
||||
source = ./.vim/python.vimrc.vim;
|
||||
};
|
||||
|
||||
".config/helix/config.toml" = {
|
||||
source = ./.config/helix/config.toml;
|
||||
};
|
||||
".config/nvim/init.vim" = {
|
||||
source = ./.config/nvim/init.vim;
|
||||
};
|
||||
|
||||
".config/sway/config" = {
|
||||
source = ./.config/sway/config;
|
||||
};
|
||||
".config/sway/env" = {
|
||||
source = ./.config/sway/env;
|
||||
};
|
||||
".config/waybar/config" = {
|
||||
source = ./.config/waybar/config;
|
||||
};
|
||||
".config/waybar/style.css" = {
|
||||
source = ./.config/waybar/style.css;
|
||||
};
|
||||
".config/waybar/modules/storage.sh" = {
|
||||
source = ./.config/waybar/modules/storage.sh;
|
||||
};
|
||||
".config/kanshi/config" = {
|
||||
source = ./.config/kanshi/config;
|
||||
};
|
||||
".config/mako/config" = {
|
||||
source = ./.config/mako/config;
|
||||
};
|
||||
".local/bin/swws.py" = {
|
||||
source = ./bin/swws.py;
|
||||
};
|
||||
".local/bin/sway-locker" = {
|
||||
source = ./bin/sway-locker;
|
||||
};
|
||||
|
||||
".config/fusuma/config-wl.yml" = {
|
||||
source = ./.config/fusuma/config-wl.yml;
|
||||
};
|
||||
".config/fusuma/config.yml" = {
|
||||
source = ./.config/fusuma/config.yml;
|
||||
};
|
||||
|
||||
".config/git/config-common" = {
|
||||
source = ./.config/git/config;
|
||||
};
|
||||
# host-specific gitconfig.
|
||||
".config/git/config.${hostName}" = {
|
||||
text = ''
|
||||
[user]
|
||||
name = ${hostName}
|
||||
email = wanderer@dotya.ml
|
||||
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKwshTdBgLzwY4d8N7VainZCngH88OwvPGhZ6bm87rBO
|
||||
'';
|
||||
};
|
||||
".config/git/config" = {
|
||||
text = ''
|
||||
[include]
|
||||
path = ~/.config/git/config-common
|
||||
[include]
|
||||
path = ~/.config/git/config.${hostName}
|
||||
'';
|
||||
};
|
||||
".config/git/allowed_signers" = {
|
||||
source = ./.config/git/allowed_signers;
|
||||
};
|
||||
|
||||
# begin zsh-related.
|
||||
".zshrc" = {
|
||||
source = ./.zshrc;
|
||||
};
|
||||
".zshenv" = {
|
||||
source = ./.zshenv;
|
||||
};
|
||||
".zprofile" = {
|
||||
source = ./.zprofile;
|
||||
};
|
||||
".zsh" = {
|
||||
source = ./.zsh;
|
||||
recursive = true;
|
||||
};
|
||||
".zsh/bemenu-dracula" = {
|
||||
source = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "bemenu";
|
||||
rev = "9b1165b3d97e3b2a74c6ce220781b78d8a11febf";
|
||||
sha256 = "sha256-TwfkEZ1aTkHur+jCqRsaqvzOw6qpH0L4pvYqkx7iCDk=";
|
||||
};
|
||||
};
|
||||
# end zsh-related.
|
||||
|
||||
".cargo/config.toml" = {
|
||||
source = .cargo/config.toml;
|
||||
};
|
||||
|
||||
".npmrc" = {
|
||||
text = ''
|
||||
prefix=''${HOME}/.npm-packages
|
||||
audit=false
|
||||
fund=false
|
||||
'';
|
||||
};
|
||||
|
||||
".config/swaylock/config" = {
|
||||
source = .config/swaylock/config.${hostName};
|
||||
};
|
||||
".config/tridactyl/tridactylrc" = {
|
||||
source = .config/tridactyl/tridactylrc;
|
||||
};
|
||||
|
||||
".config/bat/config" = {
|
||||
source = .config/bat/config;
|
||||
};
|
||||
|
||||
".ncpamixer.conf" = {
|
||||
source = .config/ncpamixer.conf;
|
||||
};
|
||||
|
||||
".gdbinit" = {
|
||||
text = ''
|
||||
set auto-load safe-path /nix/store
|
||||
set history save on
|
||||
set history size 10000
|
||||
set history remove-duplicates 100
|
||||
set history filename ~/.gdb_history
|
||||
'';
|
||||
};
|
||||
|
||||
".local/bin/fuzzypassage" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
PREFIX="''${PASSAGE_DIR:-$HOME/.passage/store}"
|
||||
FZF_DEFAULT_OPTS=""
|
||||
name="$(find "$PREFIX" -type f -name '*.age' | \
|
||||
sed -e "s|$PREFIX/||" -e 's|\.age$||' | \
|
||||
fzf --height 40% --reverse --no-multi)"
|
||||
passage "''${@}" "$name"
|
||||
'';
|
||||
};
|
||||
|
||||
".local/bin/battery.sh" = {
|
||||
source = bin/battery.sh;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/localbsync" = {
|
||||
source = bin/localbsync;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/mgp" = {
|
||||
source = bin/mgp;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/parec-wr" = {
|
||||
source = bin/parec-wr;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/pscbg" = {
|
||||
source = bin/pscbg;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/qst_up" = {
|
||||
source = bin/qst_up;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/v4l2pls" = {
|
||||
source = bin/v4l2pls;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/winprint.sh" = {
|
||||
source = bin/winprint.sh;
|
||||
executable = true;
|
||||
};
|
||||
|
||||
".local/bin/authenticator.sh" = {
|
||||
text = ''
|
||||
#!/bin/sh
|
||||
|
||||
# adopted from https://wiki.archlinux.org/index.php/Google_Authenticator
|
||||
# This is the path to the Google Authenticator app file. It's typically located
|
||||
# in /data under Android. Copy it to your PC in a safe location and specify the
|
||||
# path to it here.
|
||||
#DB="/path/to/com.google.android.apps.authenticator/databases/databases"
|
||||
DB="$1"
|
||||
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
printf "authenticator\n"
|
||||
printf "usage: authenticator <path/to/org.authenticator/databases/databases>\n"
|
||||
printf "\tThis is the path to the Authenticator app owned SQLite db file.\n"
|
||||
printf "\tCopy it to your PC to a safe location and specify the path to it here.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# On most Android systems with sufficient user access, the Google Authenticator
|
||||
# database can be copied off the device and accessed directly, as it is an
|
||||
# sqlite3 database. This shell script will read a Google Authenticator database
|
||||
# and generate live codes for each key found:
|
||||
|
||||
|
||||
sqlite3 "$DB" 'SELECT email,secret FROM accounts;' | while read A
|
||||
do
|
||||
NAME=`echo "$A" | cut -d '|' -f 1`
|
||||
KEY=`echo "$A" | cut -d '|' -f 2`
|
||||
CODE=`oathtool --totp -b "$KEY"`
|
||||
echo -e "\e[1;32m$CODE\e[0m - \e[1;33m$NAME\e[0m"
|
||||
done
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/createarchive.sh" = {
|
||||
text = ''
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
printf "createarchive\n"
|
||||
printf "usage: createarchive <folder to be archived>\n"
|
||||
printf "warning: the archive will be moved to "backups" directory (`echo $dest`)\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# what this does in short: tar, compress, timestamp, shred the tar, mv .xz to pwd and display it
|
||||
logdate="$(date +%Y%m%dT%H%M%S)"
|
||||
basedir="$1"
|
||||
tmpdir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXX")
|
||||
#/run/user/$(id -u) tmpfs 0700 perms
|
||||
f="`cd $basedir; pwd | tr '/' ' ' | sed 's/^.* / /' | cut -c2-`" > /dev/null
|
||||
g="$logdate-$f.tar"
|
||||
dest=~/MEGA/Private/backups
|
||||
|
||||
doathing() {
|
||||
cd $basedir/..
|
||||
tar cfv "$tmpdir/$g" "$f" && \
|
||||
xz -vzk9e "$tmpdir/$g" -S .xz && \
|
||||
rsync -avP "$tmpdir/$g.xz" "$dest" && \
|
||||
shred -zuv "$tmpdir/$g" "$tmpdir/$g.xz" && \
|
||||
printf "\n"
|
||||
ls -latr "$dest/$g.xz"
|
||||
}
|
||||
|
||||
if [ ! -d $1 ]; then
|
||||
echo "$1 is not a directory"
|
||||
exit 1
|
||||
else
|
||||
echo `pwd`
|
||||
echo "$f"
|
||||
echo "$1"
|
||||
|
||||
doathing
|
||||
trap "rm -rfv $tmpdir" 0 1 3 15
|
||||
exit $?
|
||||
fi
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
".config/qutebrowser/userscripts/localhost" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export BEMENU_OPTS="--tb '#6272a4' --tf '#f8f8f2' --fb '#282a36' --ff '#f8f8f2'
|
||||
--nb '#282a36' --nf '#6272a4' --hb '#44475a' --hf '#50fa7b' --sb '#44475a' --sf
|
||||
'#50fa7b' --scb '#282a36' --scf '#ff79c6' -p 'localhost:<port> ▶' --fork -l 5
|
||||
--fn 'FiraCode Retina 17'"
|
||||
|
||||
if [[ $1 -eq 'list' ]] && [[ -z $QUTE_COUNT ]];
|
||||
then
|
||||
PORTS="$(ss -nltp | tail -n +2 | awk '{print $4}' | awk -F: '{print $2}')"
|
||||
QUTE_COUNT=$(echo "$PORTS" | bemenu -n )
|
||||
fi
|
||||
|
||||
# echo open -t localhost:''${QUTE_COUNT:-8080} > $QUTE_FIFO
|
||||
[ -n "$QUTE_COUNT" ] && echo open -t localhost:"''${QUTE_COUNT}" > $QUTE_FIFO
|
||||
'';
|
||||
};
|
||||
".config/qutebrowser/userscripts/speak" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!/bin/bash
|
||||
export IFS=$'\n'
|
||||
pkill -f qute_speak || {
|
||||
~/.local/bin/gtts-cli "$QUTE_SELECTED_TEXT" | mpv --no-video --speed=1.26 -
|
||||
# ~/.local/bin/gtts-cli "$QUTE_SELECTED_TEXT" > /tmp/qute_speak.mp3
|
||||
# mpv /tmp/qute_speak.mp3
|
||||
}
|
||||
'';
|
||||
};
|
||||
".config/qutebrowser/userscripts/dark_mode.user" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!/bin/zsh
|
||||
|
||||
# on a new system cp DR.js DarkReader.user.js
|
||||
darkreader_file="$HOME/.config/qutebrowser/greasemonkey/DarkReader.user.js"
|
||||
enabled="^//DarkReader.disable();"
|
||||
darkreader_enabled="$(grep -q -e "$enabled" $darkreader_file; echo $?)"
|
||||
# echo $darkreader_enabled
|
||||
|
||||
if [[ "$(echo $darkreader_enabled)" == "1" ]]; then
|
||||
# enable DarkReader by commenting out the line that disables it.
|
||||
sed -i --follow-symlink 's/DarkReader.disable()/\/\/DarkReader.disable()/' "$darkreader_file"
|
||||
else
|
||||
# disable DarkReader
|
||||
sed -i --follow-symlink 's/\/\/DarkReader.disable()/DarkReader.disable()/' "$darkreader_file"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
".config/qutebrowser/greasemonkey/DR.js" = {
|
||||
text = ''
|
||||
// ==UserScript==
|
||||
// @name Dark Reader (Unofficial)
|
||||
// @icon https://darkreader.org/images/darkreader-icon-256x256.png
|
||||
// @namespace DarkReader
|
||||
// @description Inverts the brightness of pages to reduce eye strain
|
||||
// @version 4.9.52
|
||||
// @author https://github.com/darkreader/darkreader#contributors
|
||||
// @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader
|
||||
// @run-at document-end
|
||||
// @grant none
|
||||
// @exclude https://git.dotya.ml*
|
||||
// @exclude https://dotya.ml*
|
||||
// @exclude https://status.dotya.ml*
|
||||
// @exclude https://searxng.dotya.ml*
|
||||
// @exclude https://grafana.dotya.ml*
|
||||
// @exclude https://github.com*
|
||||
// @exclude https://dnswatch.com*
|
||||
// @exclude https://docs.immudb.io*
|
||||
// @exclude https://woodpecker-ci.org*
|
||||
// @exclude https://duckduckgo.com*
|
||||
// @exclude https://www.redit.com*
|
||||
// @exclude https://codeberg.org*
|
||||
// @include http*
|
||||
// @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js
|
||||
// @noframes
|
||||
// ==/UserScript==
|
||||
|
||||
DarkReader.enable({
|
||||
brightness: 105,
|
||||
contrast: 105,
|
||||
sepia: 0
|
||||
});
|
||||
DarkReader.disable();
|
||||
'';
|
||||
};
|
||||
".config/qutebrowser/userscripts/code_select.py" = {
|
||||
executable = true;
|
||||
source = .local/share/qutebrowser/userscripts/code_select.py;
|
||||
};
|
||||
".config/qutebrowser/userscripts/getbib" = {
|
||||
executable = true;
|
||||
source = .local/share/qutebrowser/userscripts/getbib;
|
||||
};
|
||||
".config/qutebrowser/userscripts/qute-gemini" = {
|
||||
executable = true;
|
||||
source = .local/share/qutebrowser/userscripts/qute-gemini;
|
||||
};
|
||||
".config/qutebrowser/userscripts/qute-gemini-tab" = {
|
||||
executable = true;
|
||||
source = .local/share/qutebrowser/userscripts/qute-gemini;
|
||||
};
|
||||
".config/qutebrowser/config.py" = {
|
||||
source = .config/qutebrowser/config.py;
|
||||
};
|
||||
|
||||
".local/bin/workqb" = {
|
||||
text = ''
|
||||
#!/bin/zsh
|
||||
|
||||
qutebrowser \
|
||||
--restore work \
|
||||
--config ~/.config/qutebrowser/config.py \
|
||||
--basedir ~/.config/qutebrowser-work \
|
||||
&
|
||||
disown
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
|
||||
# ref: https://go.dev/blog/pprof
|
||||
".local/bin/xtime" = {
|
||||
text = ''
|
||||
#!/bin/sh
|
||||
/usr/bin/time -f '%Uu %Ss %er %MkB %C' "$@"
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
|
||||
".local/bin/xdp-screen-cast" = {
|
||||
text = ''
|
||||
#!/usr/bin/python3
|
||||
|
||||
# ref: https://gitlab.gnome.org/-/snippets/19
|
||||
|
||||
import re
|
||||
import signal
|
||||
import dbus
|
||||
from gi.repository import GLib
|
||||
from dbus.mainloop.glib import DBusGMainLoop
|
||||
|
||||
import gi
|
||||
gi.require_version('Gst', '1.0')
|
||||
from gi.repository import GObject, Gst
|
||||
|
||||
DBusGMainLoop(set_as_default=True)
|
||||
Gst.init(None)
|
||||
|
||||
loop = GLib.MainLoop()
|
||||
|
||||
bus = dbus.SessionBus()
|
||||
request_iface = 'org.freedesktop.portal.Request'
|
||||
screen_cast_iface = 'org.freedesktop.portal.ScreenCast'
|
||||
|
||||
pipeline = None
|
||||
|
||||
def terminate():
|
||||
if pipeline is not None:
|
||||
self.player.set_state(Gst.State.NULL)
|
||||
loop.quit()
|
||||
|
||||
request_token_counter = 0
|
||||
session_token_counter = 0
|
||||
sender_name = re.sub(r'\.', r'_', bus.get_unique_name()[1:])
|
||||
|
||||
def new_request_path():
|
||||
global request_token_counter
|
||||
request_token_counter = request_token_counter + 1
|
||||
token = 'u%d'%request_token_counter
|
||||
path = '/org/freedesktop/portal/desktop/request/%s/%s'%(sender_name, token)
|
||||
return (path, token)
|
||||
|
||||
def new_session_path():
|
||||
global session_token_counter
|
||||
session_token_counter = session_token_counter + 1
|
||||
token = 'u%d'%session_token_counter
|
||||
path = '/org/freedesktop/portal/desktop/session/%s/%s'%(sender_name, token)
|
||||
return (path, token)
|
||||
|
||||
def screen_cast_call(method, callback, *args, options={}):
|
||||
(request_path, request_token) = new_request_path()
|
||||
bus.add_signal_receiver(callback,
|
||||
'Response',
|
||||
request_iface,
|
||||
'org.freedesktop.portal.Desktop',
|
||||
request_path)
|
||||
options['handle_token'] = request_token
|
||||
method(*(args + (options, )),
|
||||
dbus_interface=screen_cast_iface)
|
||||
|
||||
def on_gst_message(bus, message):
|
||||
type = message.type
|
||||
if type == Gst.MessageType.EOS or type == Gst.MessageType.ERROR:
|
||||
terminate()
|
||||
|
||||
def play_pipewire_stream(node_id):
|
||||
empty_dict = dbus.Dictionary(signature="sv")
|
||||
fd_object = portal.OpenPipeWireRemote(session, empty_dict,
|
||||
dbus_interface=screen_cast_iface)
|
||||
fd = fd_object.take()
|
||||
pipeline = Gst.parse_launch('pipewiresrc fd=%d path=%u ! videoconvert ! xvimagesink'%(fd, node_id))
|
||||
pipeline.set_state(Gst.State.PLAYING)
|
||||
pipeline.get_bus().connect('message', on_gst_message)
|
||||
|
||||
def on_start_response(response, results):
|
||||
if response != 0:
|
||||
print("Failed to start: %s"%response)
|
||||
terminate()
|
||||
return
|
||||
|
||||
print("streams:")
|
||||
for (node_id, stream_properties) in results['streams']:
|
||||
print("stream {}".format(node_id))
|
||||
play_pipewire_stream(node_id)
|
||||
|
||||
def on_select_sources_response(response, results):
|
||||
if response != 0:
|
||||
print("Failed to select sources: %d"%response)
|
||||
terminate()
|
||||
return
|
||||
|
||||
print("sources selected")
|
||||
global session
|
||||
screen_cast_call(portal.Start, on_start_response,
|
||||
session, ''')
|
||||
|
||||
def on_create_session_response(response, results):
|
||||
if response != 0:
|
||||
print("Failed to create session: %d"%response)
|
||||
terminate()
|
||||
return
|
||||
|
||||
global session
|
||||
session = results['session_handle']
|
||||
print("session %s created"%session)
|
||||
|
||||
screen_cast_call(portal.SelectSources, on_select_sources_response,
|
||||
session,
|
||||
options={ 'multiple': False,
|
||||
'types': dbus.UInt32(1|2) })
|
||||
|
||||
portal = bus.get_object('org.freedesktop.portal.Desktop',
|
||||
'/org/freedesktop/portal/desktop')
|
||||
|
||||
(session_path, session_token) = new_session_path()
|
||||
screen_cast_call(portal.CreateSession, on_create_session_response,
|
||||
options={ 'session_handle_token': session_token })
|
||||
|
||||
try:
|
||||
loop.run()
|
||||
except KeyboardInterrupt:
|
||||
terminate()
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/playerctl.sh" = {
|
||||
source = ./bin/playerctl.sh;
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
|
||||
xdg = (import ./nix/modules/xdg.nix) {inherit pkgs config hostName;};
|
||||
}
|
9
home.nix
9
home.nix
|
@ -313,5 +313,14 @@
|
|||
'';
|
||||
executable = true;
|
||||
};
|
||||
|
||||
# ref: https://go.dev/blog/pprof
|
||||
".local/bin/xtime" = {
|
||||
text = ''
|
||||
#!/bin/sh
|
||||
/usr/bin/time -f '%Uu %Ss %er %MkB %C' "$@"
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
hostName,
|
||||
...
|
||||
}: {
|
||||
configFile."kitty/config.d" = {
|
||||
source = ./../../.config/kitty/config.d;
|
||||
};
|
||||
configFile."kitty/current-theme.conf" = {
|
||||
source = ./../../.config/kitty/current-theme.conf;
|
||||
};
|
||||
|
||||
configFile."aerc/aerc.conf" = {
|
||||
# source = ./../../.config/aerc/aerc.conf;
|
||||
source = ./../../.config/aerc/aerc.conf.${hostName};
|
||||
};
|
||||
configFile."aerc/binds.conf" = {
|
||||
source = ./../../.config/aerc/binds.conf;
|
||||
};
|
||||
|
||||
configFile."sway/config.d" = {
|
||||
source = ./../../.config/sway/config.d;
|
||||
};
|
||||
|
||||
configFile."mako/dracula-mako" = {
|
||||
source = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "mako";
|
||||
rev = "80caf30d59f8017e306519ca33609be75a86ebaf";
|
||||
sha256 = "sha256-qoQODX2435xfH9G6xOVFXitKy/75MaDU+tiQ/EsjRV4=";
|
||||
};
|
||||
};
|
||||
|
||||
configFile."sheldon/plugins.toml" = {
|
||||
source = ./../../.config/sheldon/plugins.toml;
|
||||
};
|
||||
|
||||
configFile."starship.toml" = {
|
||||
source = ./../../.config/starship.toml;
|
||||
};
|
||||
|
||||
configFile."zathura/zathurarc" = {
|
||||
source = ./../../.config/zathura/zathurarc;
|
||||
};
|
||||
configFile."zathura/dracula-zathura" = {
|
||||
source = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "zathura";
|
||||
rev = "b597b1537aa125e8829bef2cc57a0b0c6a6b35a1";
|
||||
sha256 = "sha256-g6vxwPw0Q9QFJBc3d4R3ZsHnnEvU5o1f4DSuyLeN5XQ=";
|
||||
};
|
||||
};
|
||||
|
||||
configFile."qutebrowser/dracula" = {
|
||||
source = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "qutebrowser-dracula-theme";
|
||||
rev = "ba5bd6589c4bb8ab35aaaaf7111906732f9764ef";
|
||||
sha256 = "sha256-av6laQezAOrBt6P+F2eHWFqAnTEENfDrvzEfhn2dDNY=";
|
||||
};
|
||||
};
|
||||
configFile."qutebrowser/stylesheets" = {
|
||||
source = ./../../.config/qutebrowser/stylesheets;
|
||||
};
|
||||
configFile."qutebrowser-work/config/stylesheets" = {
|
||||
source = ./../../.config/qutebrowser/stylesheets;
|
||||
};
|
||||
|
||||
configFile."ccache/ccache.conf" = {
|
||||
source = ./../../.config/ccache/ccache.conf;
|
||||
};
|
||||
|
||||
configFile."go/env" = {
|
||||
source = ./../../.config/go/env;
|
||||
};
|
||||
|
||||
configFile."glow/glow.yml" = {
|
||||
source = ./../../.config/glow/glow.yml;
|
||||
};
|
||||
|
||||
configFile."gtk-4.0/settings.ini" = {
|
||||
source = ./../../.config/gtk-4.0/settings.ini;
|
||||
};
|
||||
configFile."gtk-4.0/gtk.css" = {
|
||||
source = ./../../.config/gtk-4.0/gtk.css;
|
||||
};
|
||||
|
||||
configFile."environment.d/sway-session.conf" = {
|
||||
source = ./../../.config/environment.d/sway-session.conf;
|
||||
};
|
||||
}
|
|
@ -4,7 +4,8 @@
|
|||
...
|
||||
}: {
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
# TODO: integrate the full toml config.
|
||||
enable = false;
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
editor = {
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
}
|
||||
{url = "https://torresjrjr.com/archive/index.xml";}
|
||||
{url = "https://gitea-open-letter.coding.social/updates/atom.xml";}
|
||||
{url = "https://ianhowson.com/rss.xml";}
|
||||
{url = "https://www.kalzumeus.com/feed.xml";}
|
||||
{url = "https://senan.xyz/feed.xml";}
|
||||
{url = "https://www.paritybit.ca/feed.xml";}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGzJL8/M+tTejrAPoomHKtlYk8lINBLHaH+p4SLt3sBG
|
||||
age15959gprm59azjflvpj97yt0lj6dj4d2yv0nd6u9jp32lzwp3de7qzhf85y
|
|
@ -0,0 +1,19 @@
|
|||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSBvSUtX
|
||||
b2FkTXgwQ3IxeThvNC9lOERXOVNjbEtNRjVIY0tyMXBQalByMFR3CmhOMlRoS09q
|
||||
UzJvTWpBTVUwMEFkT29tTEx5UGQzUml3bUtxOXNmdUd5R2MKLT4gWDI1NTE5IGFm
|
||||
dDZZVWRYbHlIY2NjbUtmNU80Rno4R0lTdSt5b3g3a1hXVG00eGJXMk0KeFVGZWtm
|
||||
VU1uenJaZU9CbFpBSFdSYnFYYWNpRTFRbkRKdDVqUVVLdktzdwotLS0gU1BvOGpl
|
||||
d01Meks4VnRkVlRjRjRsdXV4eG1aUjlkcUJIQ3Z2aG85bmJxWQqm0MSO0q9WZyS+
|
||||
FFOOTm7RDZp6jF2GSmLnTV+RCx2Cmt+pGb96qqBdHj6LwqZjL6PjhxbLkPBy5aO8
|
||||
MQfHSukMcKiGeHYw+go35z4ZbB2u98N1R9YzxKLrVLhr1rJXfuL0Hs9YILAZ2c73
|
||||
mPk57KA04ni6USxbdmoetWScnppUUis/59elYSVabYC0+KXE0pTPqBOFlB8uIei/
|
||||
15ZeudfVgGZwijGzAZF6xLHXbx+P4BDZypQA8YPgcPbp4GCpFb+n1c4DuZxAGS2g
|
||||
OlfCTOHl81vubPiqemQ+VS/GGahxdzjhXs2TRqRdHgPSMwidzIjEtjx4r+xhgCoG
|
||||
WrK+0v7zyUU6G3ykhbttto2LMxWPS98K9pP1iWGr4J1+UykQiG/GyWoZYa5UwmHN
|
||||
Km06kEHC51tZ8GwF/ALZWk80+Wubc35dYLZNfb0R6FG3Lvel3Su0ZhosvKlTTrnP
|
||||
U9ituCCy8+XwLXGb5t2oioGUxA/QSBdzcGFGSqOLQG5OtikR/Kl3np3MITpXpwLB
|
||||
uGxeAed0/DAGjMfen8eGlGPXIM2RWshvsXvtBoKfkkaSgW3r0eV+JENefP0Ls3P5
|
||||
SezfBwEymwZwGTgD2PH41T6k3bJNfdNPaTrivd66fnNyTevpQf2LshDAotm7dqWM
|
||||
FNArctQ6406/wrS5Fn79ibEV8hEgQRawrbA=
|
||||
-----END AGE ENCRYPTED FILE-----
|
|
@ -0,0 +1,12 @@
|
|||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSBzb3dt
|
||||
M2prVGp6dlArbk1wT1VrK05ZcDJXTmgyM0JITmFHblpLcTRpSzNNCjU1Y1BvOXZS
|
||||
NTJEVDFWeENSSWZZWG1rRTlKZHJHYTA1MXpiUDliTkpWbWMKLT4gWDI1NTE5IFgz
|
||||
V3A1WEtXVWcybEh5NFFOMS9iZS9hVXJHTVV3bDE1MmE0c2Z5UVRFVXcKT3p3cmRX
|
||||
VlZLdnBmZG53aDJqOWJrc0M5cE5qVWxRbWJMU2hLSVdtYmNpWQotLS0gYzIzbmVW
|
||||
Wi9IM256TFJMWkFzckc3K0RqdHYrcHlNOVhlc2F3b3hYQitvZwrCioyrYO/hFHDT
|
||||
AAiwVCvCCYiNYhKtuEOFqPjnOEeK7c+3lJVP+ZLJifL45TMF1fwl5cVG1r7ToQk1
|
||||
giJGDtwffkAYtYBa8GkqsEwAvbTiJa0DGmM9MSrTzLFXHS/hhtfl0E4Otwn7rH+z
|
||||
n5QQBnpJVaoU/WvIt0DoT6rDYYtgsOFegR9Wgui066pFB3YXBkLiuS7afZCryPSG
|
||||
JmDpxoaQReYpV/8orMVHrqdSKK5F8ekBg2rK2QKVNlniqj/qLswBqPSL/xutXoy1
|
||||
-----END AGE ENCRYPTED FILE-----
|
|
@ -0,0 +1,18 @@
|
|||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDZUei9UUSA2N0dq
|
||||
a0tYQXFxOFdOOHVCS1lidVZXMi82ZkkzMWhxUEJUbFA1c0xuUWtFCjdodG9UZjhB
|
||||
ODRvYUFMb2VkWHhtY0c2RnRESWdUMGpnUUN6d2k4SkdjRkkKLT4gWDI1NTE5IEha
|
||||
N0cwaCtXcVZLc1FSZlJ4MWcwTUhER2wrQTRlYzJvcFg5d0IyMFc0RFkKVjRxLzhv
|
||||
aEY2UU9LR1NzSXBZY24vbTA0eWRuWFJZL20zZjVvNm95bE5uMAotLS0gVjJuMXZE
|
||||
NFFMbmVOZ1BES3NoWUgrZHB1MkRrekxUNHlmYnArVklUdy9TNAp/vbvBms9YsBL5
|
||||
ADv+iNlNBo3zZrhmuveERJsKJwLnUYF8nOquVpPGnyp+NSHm7ekSEYznS8ip5OIb
|
||||
ieg2EtSVYkY/tRSZKcFWsGJVqd2TKyhwIxfZA9Q5r/Bx4j4zAdUdBdYzwS7czs+J
|
||||
CL+mrsBYAkoyJGR0Vhz8ha2JRoTY8uV3ydQfFw93vyB4XH2KmqI1KiUvGYP+TjqX
|
||||
FLLC8xcVWkJ4+NARDjwWEf7g2p5P8FmHEDYRSA2QkeUdgL69lCZ9WgStZiQKQnWi
|
||||
nRjnhSAkc78Tal8EWNkTlGeEu3D3d6QsycEvmQCHci/iIxUd2bMpKAJ+Ve+8inzh
|
||||
RuHEAb9dm3ioigWn1jtJo0ALhs7d0xyXYtP5s+6TSOj6UXtdDH4et+cNAWHx7uLk
|
||||
MRIS7b12e3UhNvW+4+3DtsDBWYpak8cDCrfT2jsGQnPOyRiGoSKdFprNeMBq7olN
|
||||
OfvRYuPlHdlU8N19gxyBEZT9BXAIdkx4gq6hvuslolHfx36pnof3If9T2x0PjeQf
|
||||
oA+OqXCzPkvKAYzxke/9DYKQMAkVsON3ehT2uds5AClPnDpeCYwG4FefjrMtxTOF
|
||||
XS5BC8gksUvkKgZ7F6Y07tA2VwrWmPhYtv4=
|
||||
-----END AGE ENCRYPTED FILE-----
|
Loading…
Reference in New Issue