diff --git a/user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.kvconfig b/config/Kvantum/GruvboxMaterial/GruvboxMaterial.kvconfig
similarity index 60%
rename from user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.kvconfig
rename to config/Kvantum/GruvboxMaterial/GruvboxMaterial.kvconfig
index 87cb82f5e..ffefe504a 100644
--- a/user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.kvconfig
+++ b/config/Kvantum/GruvboxMaterial/GruvboxMaterial.kvconfig
@@ -1,6 +1,6 @@
[%General]
-author=sachnr, based on KvAdapta
-comment=Gruvbox Dark theme with brown highlights
+author=ShelockH0, based on Graphite Dark by Vince Liuice and Gruvbox GTK by Fausto Korpsvart
+comment=An uncomplicated, warm and aesthetic gruvbox theme inspired by Gruvbox GTK Theme by Fausto Korpsvart
x11drag=menubar_and_primary_toolbar
alt_mnemonic=true
left_tabs=true
@@ -11,17 +11,19 @@ toolbar_item_spacing=0
toolbar_interior_spacing=2
spread_progressbar=true
composite=true
-menu_shadow_depth=5
+menu_shadow_depth=6
+spread_menuitems=false
tooltip_shadow_depth=2
-splitter_width=4
-scroll_width=9
+splitter_width=1
+scroll_width=14
scroll_arrows=false
scroll_min_extent=60
slider_width=2
-slider_handle_width=22
+slider_handle_width=23
slider_handle_length=22
+tickless_slider_handle_size=22
center_toolbar_handle=true
-check_size=14
+check_size=16
textless_progressbar=false
progressbar_thickness=2
menubar_mouse_tracking=true
@@ -37,7 +39,7 @@ merge_menubar_with_toolbar=true
small_icon_size=16
large_icon_size=32
button_icon_size=16
-toolbar_icon_size=22
+toolbar_icon_size=16
combo_as_lineedit=true
animate_states=true
button_contents_shift=false
@@ -46,105 +48,145 @@ hide_combo_checkboxes=true
combo_focus_rect=false
groupbox_top_label=true
inline_spin_indicators=true
-joined_inactive_tabs=true
+joined_inactive_tabs=false
layout_spacing=6
layout_margin=9
scrollbar_in_view=true
transient_scrollbar=true
transient_groove=false
submenu_overlap=0
-tooltip_delay=-1
+tooltip_delay=0
tree_branch_line=true
no_window_pattern=false
opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam
reduce_window_opacity=0
respect_DE=true
-scrollable_menu=false
-submenu_delay=250
+scrollable_menu=true
+submenu_delay=150
+no_inactiveness=false
+reduce_menu_opacity=0
+click_behavior=0
+contrast=1.00
+dialog_button_layout=0
+intensity=1.00
+saturation=1.00
+shadowless_popup=false
+drag_from_buttons=false
+menu_blur_radius=0
+tooltip_blur_radius=0
[GeneralColors]
-window.color=#232323
-base.color=#282828
+window.color=#1D2021
+base.color=#1D2021
alt.base.color=#282828
-button.color=#2e2e2e
+button.color=#1D2021
light.color=#504945
-mid.light.color=#3f3f3f
-dark.color=#1d2021
-mid.color=##202324
-highlight.color=#665c54cc
-inactive.highlight.color=#665c54bb
-text.color=#ebdbb2
-window.text.color=#ebdbb2
-button.text.color=#ebdbb2
-disabled.text.color=#a89984
-tooltip.text.color=#fbf1c7
-highlight.text.color=#3c3836
-link.color=#b8bb26
-link.visited.color=#98971a
-progress.indicator.text.color=#fbf1c7
+mid.light.color=#3C3836
+dark.color=#141617
+mid.color=#282828
+highlight.color=#89B482
+inactive.highlight.color=#32361A
+text.color=#ddc7a1
+window.text.color=#ddc7a1
+button.text.color=#ddc7a1
+disabled.text.color=#ddc7a17F
+tooltip.text.color=#D4BE98
+highlight.text.color=#000000C3
+link.color=#7daea3
+link.visited.color=#d3869b
+progress.indicator.text.color=#ddc7a1
[Hacks]
transparent_ktitle_label=true
-transparent_dolphin_view=false
+transparent_dolphin_view=true
transparent_pcmanfm_sidepane=true
-blur_translucent=false
+blur_translucent=true
transparent_menutitle=true
-respect_darkness=false
+respect_darkness=true
kcapacitybar_as_progressbar=true
force_size_grip=true
iconless_pushbutton=true
iconless_menu=false
-disabled_icon_opacity=70
-lxqtmainmenu_iconsize=22
+disabled_icon_opacity=100
+lxqtmainmenu_iconsize=16
normal_default_pushbutton=true
single_top_toolbar=true
tint_on_mouseover=0
-transparent_pcmanfm_view=false
+transparent_pcmanfm_view=true
no_selection_tint=true
transparent_arrow_button=true
+middle_click_scroll=false
+opaque_colors=false
+kinetic_scrolling=false
+scroll_jump_workaround=false
+centered_forms=false
+noninteger_translucency=false
+style_vertical_toolbars=false
+blur_only_active_window=true
+
+[BaseWidget]
+interior=true
+indicator.size=12
+frame=true
+frame.top=0
+frame.bottom=0
+frame.left=0
+frame.right=0
+frame.expansion=0
+text.margin=true
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=0
+text.margin.right=0
+text.bold=false
+text.shadow=0
[PanelButtonCommand]
frame=true
frame.element=button
-frame.top=4
-frame.bottom=4
-frame.left=4
-frame.right=4
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
interior=true
interior.element=button
indicator.size=8
-text.normal.color=#ebdbb2
-text.focus.color=#3c3836
-text.press.color=#ebdbb2
-text.toggle.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#3C3836
text.shadow=0
-text.margin=1
+text.margin=4
text.iconspacing=4
indicator.element=arrow
-text.margin.top=2
-text.margin.bottom=4
-text.margin.left=2
-text.margin.right=2
-min_width=+0.3font
-min_height=+0.3font
-frame.expansion=14
+frame.expansion=0
[PanelButtonTool]
inherits=PanelButtonCommand
-text.normal.color=#ebdbb2
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#3C3836
text.bold=false
indicator.element=arrow
indicator.size=0
+frame.expansion=0
[ToolbarButton]
+frame=true
frame.element=tbutton
interior.element=tbutton
+frame.top=16
+frame.bottom=16
+frame.left=16
+frame.right=16
indicator.element=tarrow
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
-text.press.color=#fbf1c7
-text.toggle.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
text.bold=false
+frame.expansion=32
[Dock]
inherits=PanelButtonCommand
@@ -154,14 +196,14 @@ frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
-text.normal.color=#ebdbb2
+text.normal.color=#ddc7a1
[DockTitle]
inherits=PanelButtonCommand
frame=false
interior=false
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
text.bold=false
[IndicatorSpinBox]
@@ -174,7 +216,7 @@ frame.left=2
frame.right=2
indicator.element=spin
indicator.size=8
-text.normal.color=#ebdbb2
+text.normal.color=#ddc7a1
text.margin.top=2
text.margin.bottom=2
text.margin.left=2
@@ -184,8 +226,8 @@ text.margin.right=2
inherits=PanelButtonCommand
frame=false
interior.element=radio
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
min_width=+0.3font
min_height=+0.3font
@@ -193,8 +235,8 @@ min_height=+0.3font
inherits=PanelButtonCommand
frame=false
interior.element=checkbox
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
min_width=+0.3font
min_height=+0.3font
@@ -202,11 +244,11 @@ min_height=+0.3font
inherits=PanelButtonCommand
frame=true
frame.element=focus
-frame.top=1
-frame.bottom=1
-frame.left=1
-frame.right=1
-frame.patternsize=20
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+frame.patternsize=14
[GenericFrame]
inherits=PanelButtonCommand
@@ -214,25 +256,27 @@ frame=true
interior=false
frame.element=common
interior.element=common
-frame.top=3
-frame.bottom=3
-frame.left=3
-frame.right=3
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
[LineEdit]
inherits=PanelButtonCommand
frame.element=lineedit
interior.element=lineedit
-interior=false
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
text.margin.top=2
text.margin.bottom=2
text.margin.left=2
text.margin.right=2
-frame.expansion=0
+
+[ToolbarLineEdit]
+frame.element=lineedit
+interior.element=lineedit
[DropDownButton]
inherits=PanelButtonCommand
@@ -244,26 +288,28 @@ indicator.size=8
[ToolboxTab]
inherits=PanelButtonCommand
-text.normal.color=#ebdbb2
-text.press.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.press.color=#ddc7a1
+text.focus.color=#ddc7a1
[Tab]
inherits=PanelButtonCommand
interior.element=tab
text.margin.left=8
text.margin.right=8
-text.margin.top=2
-text.margin.bottom=2
+text.margin.top=0
+text.margin.bottom=0
frame.element=tab
indicator.element=tab
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
-text.normal.color=#ebdbb2
-text.focus.color=#ebdbb2
-text.toggle.color=#ebdbb2
+indicator.size=22
+frame.top=8
+frame.bottom=8
+frame.left=8
+frame.right=8
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
frame.expansion=0
text.bold=false
@@ -271,10 +317,10 @@ text.bold=false
inherits=PanelButtonCommand
frame.element=tabframe
interior.element=tabframe
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
[TreeExpander]
inherits=PanelButtonCommand
@@ -285,14 +331,14 @@ indicator.element=tree
inherits=PanelButtonCommand
interior.element=header
frame.element=header
-frame.top=1
+frame.top=0
frame.bottom=1
frame.left=1
frame.right=1
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
-text.press.color=#fbf1c7
-text.toggle.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
frame.expansion=0
[SizeGrip]
@@ -303,19 +349,22 @@ inherits=PanelButtonCommand
indicator.element=toolbar
indicator.size=5
text.margin=0
-interior.element=menubar
-frame.element=menubar
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
-frame.left=0
-frame.right=0
-frame.top=0
-frame.bottom=4
+interior.element=toolbar
+frame.element=toolbar
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
+frame.left=3
+frame.right=3
+frame.top=3
+frame.bottom=3
frame.expansion=0
[Slider]
inherits=PanelButtonCommand
frame.element=slider
+focusFrame=true
interior.element=slider
frame.top=3
frame.bottom=3
@@ -332,10 +381,10 @@ inherits=PanelButtonCommand
frame.element=progress
interior.element=progress
text.margin=0
-text.normal.color=#ebdbb2
-text.focus.color=#ebdbb2
-text.press.color=#ebdbb2
-text.toggle.color=#cfd8dc
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
text.bold=false
frame.expansion=8
@@ -350,18 +399,18 @@ inherits=PanelButtonCommand
text.margin=0
frame.element=itemview
interior.element=itemview
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
-text.margin.top=2
-text.margin.bottom=2
-text.margin.left=4
-text.margin.right=4
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
-text.press.color=#fbf1c7
-text.toggle.color=#fbf1c7
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=8
+text.margin.right=8
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#3C3836
+text.toggle.color=#ffffff
min_width=+0.3font
min_height=+0.3font
frame.expansion=0
@@ -370,23 +419,38 @@ frame.expansion=0
indicator.size=48
[Scrollbar]
-inherits=PanelButtonCommand
-indicator.element=arrow
-indicator.size=8
+inherits=BaseWidget
+
+[ScrollbarGroove]
+inherits=BaseWidget
+interior=false
+frame.element=scrollbargroove
+frame.left=7
+frame.right=7
+frame.top=7
+frame.bottom=7
[ScrollbarSlider]
inherits=PanelButtonCommand
-interior.element=scrollbarslider
-interior=true
-frame=false
-indicator.element=grip
-indicator.size=13
-frame.expansion=48
-
-[ScrollbarGroove]
-inherits=PanelButtonCommand
+frame.element=scrollbarslider
interior=false
-frame=false
+frame.left=7
+frame.right=7
+frame.top=7
+frame.bottom=7
+
+[Menu]
+inherits=PanelButtonCommand
+frame.top=10
+frame.bottom=10
+frame.left=10
+frame.right=10
+frame.element=menu
+interior.element=menu
+text.normal.color=#ddc7a1
+text.shadow=false
+frame.expansion=0
+text.bold=false
[MenuItem]
inherits=PanelButtonCommand
@@ -394,19 +458,17 @@ frame=true
frame.element=menuitem
interior.element=menuitem
indicator.element=menuitem
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
-text.margin.top=1
-text.margin.bottom=1
-text.margin.left=4
-text.margin.right=4
-frame.top=0
-frame.bottom=0
-frame.left=0
-frame.right=0
+text.normal.color=#ddc7a1
+text.focus.color=#3C3836
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=6
+text.margin.right=6
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
text.bold=false
-min_width=+0.3font
-min_height=+0.3font
frame.expansion=0
[MenuBar]
@@ -414,7 +476,10 @@ inherits=PanelButtonCommand
frame.element=menubar
interior.element=menubar
frame.bottom=0
-text.normal.color=#ebdbb2
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
frame.expansion=0
text.bold=false
@@ -431,8 +496,10 @@ text.margin.left=4
text.margin.right=4
text.margin.top=0
text.margin.bottom=0
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
text.bold=false
min_width=+0.3font
min_height=+0.3font
@@ -448,8 +515,8 @@ text.margin.right=2
interior.element=titlebar
indicator.size=16
indicator.element=mdi
-text.normal.color=#d5c4a1
-text.focus.color=#ebdbb2
+text.normal.color=#D4BE98
+text.focus.color=#ddc7a1
text.bold=false
text.italic=true
frame.expansion=0
@@ -458,64 +525,50 @@ frame.expansion=0
inherits=PanelButtonCommand
frame.element=combo
interior.element=combo
-interior=false
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
text.margin.top=2
text.margin.bottom=2
text.margin.left=2
text.margin.right=2
-text.focus.color=#fbf1c7
-text.press.color=#ebdbb2
-text.toggle.color=#fbf1c7
-frame.expansion=0
-
-[Menu]
-inherits=PanelButtonCommand
-frame.top=1
-frame.bottom=1
-frame.left=1
-frame.right=1
-frame.element=menu
-interior.element=menu
-text.normal.color=#ebdbb2
-text.shadow=false
-frame.expansion=0
+text.focus.color=#ddc7a1
+text.press.color=#ddc7a1
+text.toggle.color=#ddc7a1
[GroupBox]
inherits=GenericFrame
frame=false
text.shadow=0
text.margin=0
-text.normal.color=#ebdbb2
-text.focus.color=#fbf1c7
+text.normal.color=#ddc7a1
+text.focus.color=#ddc7a1
text.bold=false
frame.expansion=0
[TabBarFrame]
inherits=GenericFrame
-frame=true
+frame=false
frame.element=tabBarFrame
interior=false
-frame.top=2
-frame.bottom=2
-frame.left=2
-frame.right=2
+frame.top=0
+frame.bottom=0
+frame.left=0
+frame.right=0
[ToolTip]
inherits=GenericFrame
-frame.top=3
-frame.bottom=3
-frame.left=3
-frame.right=3
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
interior=true
text.shadow=0
text.margin=0
interior.element=tooltip
frame.element=tooltip
-frame.expansion=0
+frame.expansion=6
[StatusBar]
inherits=GenericFrame
@@ -525,3 +578,7 @@ interior=false
[Window]
interior=true
interior.element=window
+frame=true
+frame.element=window
+frame.bottom=10
+frame.top=10
diff --git a/config/Kvantum/GruvboxMaterial/GruvboxMaterial.svg b/config/Kvantum/GruvboxMaterial/GruvboxMaterial.svg
new file mode 100644
index 000000000..71d87119c
--- /dev/null
+++ b/config/Kvantum/GruvboxMaterial/GruvboxMaterial.svg
@@ -0,0 +1,6696 @@
+
+
diff --git a/config/Kvantum/kvantum.kvconfig b/config/Kvantum/kvantum.kvconfig
new file mode 100644
index 000000000..63ebaf3d6
--- /dev/null
+++ b/config/Kvantum/kvantum.kvconfig
@@ -0,0 +1,2 @@
+[General]
+theme=GruvboxMaterial
diff --git a/user/.config/btop/btop.conf b/config/btop/btop.conf
similarity index 100%
rename from user/.config/btop/btop.conf
rename to config/btop/btop.conf
diff --git a/user/.config/fish/config.fish b/config/fish/config.fish
similarity index 76%
rename from user/.config/fish/config.fish
rename to config/fish/config.fish
index 05d9ed961..6d5a06746 100644
--- a/user/.config/fish/config.fish
+++ b/config/fish/config.fish
@@ -9,16 +9,17 @@
# First line removes the path; second line sets it. Without the first line,
# your path gets massive and fish becomes very slow.
set -e fish_user_paths
-set -U fish_user_paths $HOME/.local/bin /var/lib/flatpak/exports/bin/ $fish_user_paths
+set -U fish_user_paths $HOME/.bin $HOME/.local/bin $HOME/.go/bin $HOME/.cargo/bin $HOME/.local/lib/flutter/bin $HOME/Applications $HOME/.local/share/JetBrains/Toolbox/scripts $HOME/.config/vifm/scripts /var/lib/flatpak/exports/bin/ $fish_user_paths
### EXPORT ###
set fish_greeting # Supresses fish's intro message
set TERM "xterm-256color" # Sets the terminal type
set EDITOR "$HOME/.local/bin/lvim"
-set VISUAL "$HOME/.local/bin/neovide"
+set VISUAL "wezterm start --class neovim $HOME/.local/bin/lvim"
+set GOPATH "$HOME/.go"
### SET BAT AS MANPAGER
-set -x PAGER "bat -p"
+#set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
### SET EITHER DEFAULT EMACS MODE OR VI MODE ###
function fish_user_key_bindings
@@ -34,7 +35,6 @@ set fish_color_command brcyan
set fish_color_error '#fb4934'
set fish_color_param brcyan
-
### FUNCTIONS ###
# Functions needed for !! and !$
function __history_previous_command
@@ -115,6 +115,12 @@ end
function take --argument number
head -$number
end
+
+# unlock ssh keys
+function unlock
+ ssh-add "$HOME/.ssh/$argv[1]"
+end
+
### END OF FUNCTIONS ###
### ALIASES ###
@@ -125,11 +131,17 @@ alias .3='cd ../../..'
alias .4='cd ../../../..'
alias .5='cd ../../../../..'
-# emacs as vim
-alias vim="$HOME/.local/bin/lvim"
+# use lunarvim or neovim for vim if present.
+if test -x "$HOME/.local/bin/lvim"
+ alias vim "$HOME/.local/bin/lvim"
+else if test -x (command -v nvim)
+ alias vim "nvim"
+end
# bat as cat
-alias cat='bat'
+if test -x (command -v bat)
+ alias cat "bat"
+end
# Changing "ls" to "eza"
alias ls='eza -al --color=always --group-directories-first' # my preferred listing
@@ -139,11 +151,12 @@ alias lt='eza -aT --color=always --group-directories-first' # tree listing
alias l.='eza -a | egrep "^\."'
# package management
-alias pkg-update='sudo xbps-install -Suv && xcheckrestart'
-alias pkg-install='sudo xbps-install -S'
-alias pkg-remove='sudo xbps-remove -R'
-alias pkg-search='sudo xbps-query -R'
-alias pkg-clean='sudo xbps-remove -Oo'
+alias pkg-update="paru -Syu"
+alias pkg-install="paru -S"
+alias pkg-remove="paru -Rcns"
+alias pkg-remove-sec="paru -R"
+alias pkg-search="paru -Ss"
+alias pkg-clean="paru -Scc && paru -Rns (pacman -Qtdq)"
# Colorize grep output (good for log files)
alias grep='grep --color=auto'
@@ -151,8 +164,9 @@ alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
# file management
-alias fm="vifm"
-alias flm="vifm"
+alias fm="$HOME/.config/vifm/scripts/vifmrun"
+alias flm="$HOME/.config/vifm/scripts/vifmrun"
+alias vifm="$HOME/.config/vifm/scripts/vifmrun"
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -vI'
@@ -182,22 +196,23 @@ alias psmem='ps auxf | sort -nr -k 4'
alias pscpu='ps auxf | sort -nr -k 3'
# git
-alias addup='git add -u'
-alias addall='git add .'
-alias branch='git branch'
-alias checkout='git checkout'
-alias clone='git clone'
-alias commit='git commit -m'
-alias fetch='git fetch'
-alias pull='git pull origin'
-alias push='git push origin'
-alias tag='git tag'
-alias newtag='git tag -a'
+alias git-adu='git add -u'
+alias git-adl='git add .'
+alias git-brn='git branch'
+alias git-chk='git checkout'
+alias git-cln='git clone'
+alias git-cmt='git commit -m'
+alias git-fth='git fetch'
+alias git-pll='git pull origin'
+alias git-psh='git push origin'
+alias git-sts='git status'
+alias git-tag='git tag'
+alias git-ntg='git tag -a'
# power management
-alias po='loginctl poweroff'
-alias sp='loginctl suspend'
-alias rb='loginctl reboot'
+alias po='systemctl poweroff'
+alias sp='systemctl suspend'
+alias rb='systemctl reboot'
# youtube-
alias yta-aac="yt-dlp --extract-audio --audio-format aac "
@@ -209,10 +224,10 @@ alias yta-opus="yt-dlp --extract-audio --audio-format opus "
alias yta-vorbis="yt-dlp --extract-audio --audio-format vorbis "
alias yta-wav="yt-dlp --extract-audio --audio-format wav "
alias ytv-best="yt-dlp -f bestvideo+bestaudio "
-alias yt='ytfzf -ftsl'
-alias youtube='ytfzf -ftsl'
-alias ytm='ytfzf -mtsl'
-alias youtube-music='ytfzf -mtsl'
+alias yt='ytfzf -ftslT kitty'
+alias youtube='ytfzf -ftslT kitty'
+alias ytm='ytfzf -mtslT kitty'
+alias youtube-music='ytfzf -mtslT kitty'
# network and bluetooth
alias netstats='nmcli dev'
@@ -225,3 +240,4 @@ alias blt='bluetoothctl'
### SETTING THE STARSHIP PROMPT ###
starship init fish | source
+zoxide init fish | source
diff --git a/config/foot/foot.ini b/config/foot/foot.ini
new file mode 100644
index 000000000..f6c826311
--- /dev/null
+++ b/config/foot/foot.ini
@@ -0,0 +1,212 @@
+# -*- conf -*-
+
+shell=fish
+# term=foot (or xterm-256color if built with -Dterminfo=disabled)
+# login-shell=no
+
+# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
+# title=foot
+# locked-title=no
+
+font=Mononoki Nerd Font:size=14
+# font-bold=
+# font-italic=
+# font-bold-italic=
+# font-size-adjustment=0.5
+# line-height=
+# letter-spacing=0
+# horizontal-letter-offset=0
+# vertical-letter-offset=0
+# underline-offset=
+# underline-thickness=
+# box-drawings-uses-font-glyphs=no
+# dpi-aware=no
+
+# initial-window-size-pixels=700x500 # Or,
+initial-window-size-chars=140x35
+# initial-window-mode=windowed
+pad=10x10 # optionally append 'center'
+# resize-by-cells=yes
+# resize-delay-ms=100
+
+# bold-text-in-bright=no
+# word-delimiters=,│`|:"'()[]{}<>
+# selection-target=primary
+# workers=
+# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux)
+# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD)
+
+[environment]
+# name=value
+
+[bell]
+# urgent=no
+# notify=no
+# visual=no
+# command=
+# command-focused=no
+
+[desktop-notifications]
+# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body}
+# command-action-argument=--action ${action-name}=${action-label}
+# close=""
+# inhibit-when-focused=yes
+
+
+[scrollback]
+lines=10000
+# multiplier=3.0
+# indicator-position=relative
+# indicator-format=""
+
+[url]
+launch=xdg-open ${url}
+# label-letters=sadfjklewcmpgh
+# osc8-underline=url-mode
+# protocols=http, https, ftp, ftps, file, gemini, gopher
+# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
+
+[cursor]
+style=underline
+# color=
+blink=yes
+# blink-rate=500
+# beam-thickness=1.5
+# underline-thickness=
+
+[mouse]
+# hide-when-typing=no
+# alternate-scroll-mode=yes
+
+[touch]
+# long-press-delay=400
+
+[colors]
+alpha=0.95
+
+background=1d2021
+foreground=fbf1c7
+regular0=282828
+regular1=cc241d
+regular2=98971a
+regular3=d79921
+regular4=458588
+regular5=b16286
+regular6=689d6a
+regular7=a89984
+bright0=928374
+bright1=fb4934
+bright2=b8bb26
+bright3=fabd2f
+bright4=83a598
+bright5=d3869b
+bright6=8ec07c
+bright7=ebdbb2
+
+[csd]
+# preferred=server
+# size=26
+# font=
+# color=
+# hide-when-maximized=no
+# double-click-to-maximize=yes
+# border-width=0
+# border-color=
+# button-width=26
+# button-color=
+# button-minimize-color=
+# button-maximize-color=
+# button-close-color=
+
+[key-bindings]
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+# clipboard-copy=Control+Shift+c XF86Copy
+# clipboard-paste=Control+Shift+v XF86Paste
+# primary-paste=Shift+Insert
+# search-start=Control+Shift+r
+# font-increase=Control+plus Control+equal Control+KP_Add
+# font-decrease=Control+minus Control+KP_Subtract
+# font-reset=Control+0 Control+KP_0
+# spawn-terminal=Control+Shift+n
+# minimize=none
+# maximize=none
+# fullscreen=none
+# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-selected=[xargs -r firefox] none
+# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard
+# show-urls-launch=Control+Shift+o
+# show-urls-copy=none
+# show-urls-persistent=none
+# prompt-prev=Control+Shift+z
+# prompt-next=Control+Shift+x
+# unicode-input=Control+Shift+u
+# noop=none
+
+[search-bindings]
+# cancel=Control+g Control+c Escape
+# commit=Return
+# find-prev=Control+r
+# find-next=Control+s
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete
+# delete-next-word=Mod1+d Control+Delete
+# extend-char=Shift+Right
+# extend-to-word-boundary=Control+w Control+Shift+Right
+# extend-to-next-whitespace=Control+Shift+w
+# extend-line-down=Shift+Down
+# extend-backward-char=Shift+Left
+# extend-backward-to-word-boundary=Control+Shift+Left
+# extend-backward-to-next-whitespace=none
+# extend-line-up=Shift+Up
+# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
+# primary-paste=Shift+Insert
+# unicode-input=none
+# quit=none
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+
+[url-bindings]
+# cancel=Control+g Control+c Control+d Escape
+# toggle-url-visible=t
+
+[text-bindings]
+# \x03=Mod4+c # Map Super+c -> Ctrl+c
+
+[mouse-bindings]
+# scrollback-up-mouse=BTN_WHEEL_BACK
+# scrollback-down-mouse=BTN_WHEEL_FORWARD
+# font-increase=Control+BTN_WHEEL_BACK
+# font-decrease=Control+BTN_WHEEL_FORWARD
+# selection-override-modifiers=Shift
+# primary-paste=BTN_MIDDLE
+# select-begin=BTN_LEFT
+# select-begin-block=Control+BTN_LEFT
+# select-extend=BTN_RIGHT
+# select-extend-character-wise=Control+BTN_RIGHT
+# select-word=BTN_LEFT-2
+# select-word-whitespace=Control+BTN_LEFT-2
+# select-quote = BTN_LEFT-3
+# select-row=BTN_LEFT-4
+
+# vim: ft=dosini
diff --git a/user/.config/fuzzel/fuzzel.ini b/config/fuzzel/fuzzel.ini
similarity index 93%
rename from user/.config/fuzzel/fuzzel.ini
rename to config/fuzzel/fuzzel.ini
index f77ce9f01..277905314 100644
--- a/user/.config/fuzzel/fuzzel.ini
+++ b/config/fuzzel/fuzzel.ini
@@ -1,21 +1,22 @@
-font=Mononoki Nerd Font:size=09
+font=Mononoki Nerd Font:size=14
+dpi-aware=no
prompt=" "
-icon-theme=gruvbox-dark-icons-gtk
+icon-theme=Papirus-Dark
icons-enabled=yes
password-character=*
fuzzy=yes
-terminal=wezterm start
+terminal=foot
lines=20
width=70
inner-pad=12
vertical-pad=24
horizontal-pad=32
-layer= top
+layer=top
exit-on-keyboard-focus-loss=yes
[colors]
background=1d2021ff
-text=ebdbb2ff
+text=fbf1c7ff
match=8ec07cff
selection-match=1d2021ff
selection=cc241dff
diff --git a/user/.local/bin/rs_blue b/config/fuzzel/scripts/rs_blue
similarity index 100%
rename from user/.local/bin/rs_blue
rename to config/fuzzel/scripts/rs_blue
diff --git a/config/fuzzel/scripts/rs_clip b/config/fuzzel/scripts/rs_clip
new file mode 100755
index 000000000..5044463d2
--- /dev/null
+++ b/config/fuzzel/scripts/rs_clip
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+# rs_clip - A simple clipboard menu script for rofi/dmenu/wofi/fuzzel
+# Author: Clay Gomera (Drake)
+# Dependencies: {rofi || dmenu || wofi // fuzzel}, cliphist, wl-clipboard (wl-copy)
+
+########################
+# Function Definitions #
+########################
+
+# Check for missing dependencies
+check_dependencies() {
+ local run_launcher_found=false
+ for launcher in rofi dmenu wofi fuzzel; do
+ if command -v "$launcher" &> /dev/null; then
+ run_launcher_found=true
+ break
+ fi
+ done
+
+ if [ "$run_launcher_found" = false ]; then
+ echo "Missing dependency: one of rofi, dmenu, wofi or fuzzel is required."
+ exit 1
+ fi
+
+ local missing_deps=()
+ for dep in cliphist wl-copy; do
+ if ! command -v "$dep" &> /dev/null; then
+ missing_deps+=("$dep")
+ fi
+ done
+
+ if [ ${#missing_deps[@]} -ne 0 ]; then
+ echo "Missing dependencies: ${missing_deps[*]}"
+ exit 1
+ fi
+}
+
+####################
+# Main Script Flow #
+####################
+
+# Check for dependencies
+check_dependencies
+
+# Pass clipboard data into the menu
+cliphist list | $RUNNER -l 10 -p "[ Clipboard] " | cliphist decode | wl-copy
diff --git a/user/.local/bin/rs_emoji b/config/fuzzel/scripts/rs_emoji
similarity index 98%
rename from user/.local/bin/rs_emoji
rename to config/fuzzel/scripts/rs_emoji
index 58048718d..aa3b31167 100755
--- a/user/.local/bin/rs_emoji
+++ b/config/fuzzel/scripts/rs_emoji
@@ -1,5 +1,55 @@
-#!/bin/bash
-sed '1,/^### DATA ###$/d' $0 | $RUNNER -l 10 -i -p "[ Select Emoji] " | cut -d ' ' -f 1 | tr -d '\n' | wl-copy
+#!/usr/bin/env bash
+
+# rs_emoji - A simple emoji picker menu script for rofi/dmenu/wofi/fuzzel
+# Author: Clay Gomera (Drake)
+# Dependencies: {rofi || dmenu || wofi || fuzzel}, wl-clipboard (wl-copy)
+
+########################
+# Function Definitions #
+########################
+
+# Check for missing dependencies
+check_dependencies() {
+ local run_launcher_found=false
+ for launcher in rofi dmenu wofi fuzzel; do
+ if command -v "$launcher" &> /dev/null; then
+ run_launcher_found=true
+ break
+ fi
+ done
+
+ if [ "$run_launcher_found" = false ]; then
+ echo "Missing dependency: one of rofi, dmenu, wofi or fuzzel is required."
+ exit 1
+ fi
+
+ local missing_deps=()
+ for dep in wl-copy; do
+ if ! command -v "$dep" &> /dev/null; then
+ missing_deps+=("$dep")
+ fi
+ done
+
+ if [ ${#missing_deps[@]} -ne 0 ]; then
+ echo "Missing dependencies: ${missing_deps[*]}"
+ exit 1
+ fi
+}
+
+####################
+# Main Script Flow #
+####################
+
+# Check for dependencies
+check_dependencies
+
+# Pass emoji data into the menu
+sed '1,/^### DATA ###$/d' $0 | $RUNNER -i -p "[ Select Emoji] " | cut -d ' ' -f 1 | tr -d '\n' | wl-copy
+
+##############
+# Emoji Data #
+##############
+
### DATA ###
😀 grinning face face smile happy joy :D grin
😃 grinning face with big eyes face happy joy haha :D :) smile funny
diff --git a/user/.local/bin/rs_power b/config/fuzzel/scripts/rs_power
similarity index 89%
rename from user/.local/bin/rs_power
rename to config/fuzzel/scripts/rs_power
index a16e588bb..08284d126 100755
--- a/user/.local/bin/rs_power
+++ b/config/fuzzel/scripts/rs_power
@@ -47,29 +47,22 @@ fi
prompt1="[ Power Options] "
prompt2="[ Power Profiles - Currently set to: $currentpwr] "
-#####
-## This variable will store the currently active session in tty1
-#####
-ACTIVE_SESSION=$(loginctl list | grep -E "$USER.*tty1" | awk '{print $1}')
-
##########
## main ##
##########
action=$(echo -e "$options" | $RUNNER -l 7 -p "$prompt1") # main menu prompt
case "$action" in
"$option1")
- loginctl kill-session "$ACTIVE_SESSION"
+ loginctl kill-session self
;;
"$option2")
- loginctl reboot
+ systemctl reboot
;;
"$option3")
- loginctl poweroff
+ systemctl poweroff
;;
"$option4")
- swaylock -i "$currwall" &
- sleep 0.1
- loginctl suspend
+ systemctl suspend
;;
"$option5")
swaylock -i "$currwall"
diff --git a/config/fuzzel/scripts/rs_scrot b/config/fuzzel/scripts/rs_scrot
new file mode 100755
index 000000000..5e9df58b8
--- /dev/null
+++ b/config/fuzzel/scripts/rs_scrot
@@ -0,0 +1,321 @@
+#!/usr/bin/env bash
+
+# rs_scrot - A simple screenshot menu script for rofi/dmenu/wofi/fuzzel
+# Author: Clay Gomera (Drake)
+# Dependencies: {rofi || dmenu || wofi || fuzzel}, grim, slurp, jq, wf-recorder, wl-clipboard (wl-copy), libnotify (notify-send)
+
+############################
+# Configuration Parameters #
+############################
+
+# Directory to save screenshots
+SHOTDIR="$XDG_PICTURES_DIR/Screenshots"
+VCAPDIR="$XDG_VIDEOS_DIR/Screencasts" # $MEDIA_DIR refers to a global variable in .xinitrc/.bash_profile
+[ ! -d "$SHOTDIR" ] && [ ! -d "$VCAPDIR" ] && mkdir -p "$SHOTDIR" "$VCAPDIR" || echo
+
+# Get audio devices and descriptions
+audioDevices=$(pactl list sources | grep "Name" | awk '{print $2}')
+audioDescriptions=$(pactl list sources | grep "Description" | cut -d' ' -f2-)
+
+# Create an associative array for mapping pretty names to actual names
+declare -A audioMap
+while IFS= read -r name && IFS= read -r desc <&3; do
+ audioMap["$desc"]="$name"
+done < <(echo "$audioDevices") 3< <(echo "$audioDescriptions")
+
+#####################
+# Main Menu Options #
+#####################
+mainChoice1=" Take an screenshot"
+mainChoice2=" Record the screen"
+mainChoice3=" Exit"
+mainChoices="$mainChoice1\n$mainChoice2\n$mainChoice3"
+
+#############################
+## Screenshot menu choices ##
+#############################
+shotChoice1=" Entire screen"
+shotChoice2=" Entire screen with delay"
+shotChoice3=" Select region"
+shotChoice4=" Active window"
+shotChoice5=" Exit"
+shotChoices="$shotChoice1\n$shotChoice2\n$shotChoice3\n$shotChoice4\n$shotChoice5"
+
+#############################
+## Screencast menu choices ##
+#############################
+vidChoice1=" Record the screen"
+vidChoice2=" Record region"
+vidChoice3=" Record the screen with audio"
+vidChoice4=" Stop recording"
+vidChoice5=" Exit"
+vidChoices="$vidChoice1\n$vidChoice2\n$vidChoice3\n$vidChoice4\n$vidChoice5"
+
+###################
+# Submenu Options #
+###################
+subShotChoice1=" Copy to clipboard"
+subShotChoice2=" Save to $XDG_PICTURES_DIR"
+subShotChoice3=" Exit"
+subShotChoices="$subShotChoice1\n$subShotChoice2\n$subShotChoice3"
+
+####################################
+# Screenshot Delay Submenu Options #
+####################################
+delayChoice1=" 3 sec delay"
+delayChoice2=" 5 sec delay"
+delayChoice3=" 10 sec delay"
+delayChoice4=" Exit"
+delayChoices="$delayChoice1\n$delayChoice2\n$delayChoice3\n$delayChoice4"
+
+########################
+# Function Definitions #
+########################
+
+# Check for missing dependencies
+CheckDependencies() {
+ local run_launcher_found=false
+ for launcher in rofi dmenu wofi fuzzel; do
+ if command -v "$launcher" &> /dev/null; then
+ run_launcher_found=true
+ break
+ fi
+ done
+
+ if [ "$run_launcher_found" = false ]; then
+ echo "Missing dependency: one of rofi, dmenu, wofi or fuzzel is required."
+ exit 1
+ fi
+
+ local missing_deps=()
+ for dep in grim slurp jq wl-copy notify-send wf-recorder; do
+ if ! command -v "$dep" &> /dev/null; then
+ missing_deps+=("$dep")
+ fi
+ done
+
+ if [ ${#missing_deps[@]} -ne 0 ]; then
+ echo "Missing dependencies: ${missing_deps[*]}"
+ exit 1
+ fi
+}
+
+# Prompt user for screenshot action
+ShotActionPrompt() {
+ shotActionCases=$(echo -e "$subShotChoices" | $RUNNER -l 3 -i -p "[ What do you want to do with this screenshot?] ")
+}
+
+# Prompt user for screenshot delay
+DelayPrompt() {
+ delayActionsCases=$(echo -e "$delayChoices" | $RUNNER -l 4 -i -p "[ Select Delay] ")
+}
+
+# Take a full screen screenshot without delay
+ShotScreen() {
+ ShotActionPrompt
+ case "$shotActionCases" in
+ "$subShotChoice1")
+ sleep 0.5 && grim - | wl-copy && notify-send "Screenshot copied to clipboard"
+ ;;
+ "$subShotChoice2")
+ sleep 0.5 && grim "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ *)
+ exit 0
+ ;;
+ esac
+}
+
+# Take a full screen screenshot with delay
+ShotScreenDelay() {
+ ShotActionPrompt
+ if [ "$shotActionCases" = "$subShotChoice1" ]; then
+ DelayPrompt
+ case $delayActionsCases in
+ "$delayChoice1")
+ sleep 3 && grim - | wl-copy && notify-send "Screenshot saved to clipboard"
+ ;;
+ "$delayChoice2")
+ sleep 5 && grim - | wl-copy && notify-send "Screenshot saved to clipboard"
+ ;;
+ "$delayChoice3")
+ sleep 10 && grim - | wl-copy && notify-send "Screenshot saved to clipboard"
+ ;;
+ "$delayChoice4")
+ exit 0
+ ;;
+ esac
+ elif [ "$shotActionCases" = "$subShotChoice2" ]; then
+ DelayPrompt
+ case $delayActionsCases in
+ "$delayChoice1")
+ sleep 3 && grim "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ "$delayChoice2")
+ sleep 5 && grim "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ "$delayChoice3")
+ sleep 10 && grim "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ "$delayChoice4")
+ exit 0
+ ;;
+ esac
+ else
+ exit 0
+ fi
+}
+
+# Take a screenshot of a selected area
+ShotArea() {
+ ShotActionPrompt
+ case "$shotActionCases" in
+ "$subShotChoice1")
+ sleep 0.5 && grim -g "$(slurp)" - | wl-copy && notify-send "Screenshot saved to clipboard"
+ ;;
+ "$subShotChoice2")
+ sleep 0.5 && grim -g "$(slurp)" "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ *)
+ exit 0
+ ;;
+ esac
+}
+
+# Take a screenshot of the active window
+ShotWindow() {
+ ShotActionPrompt
+ local focused=$(hyprctl activewindow -j)
+ local geom=$(echo "$focused" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
+ case "$shotActionCases" in
+ "$subShotChoice1")
+ sleep 0.5 && grim -g "$geom" - | wl-copy && notify-send "Screenshot saved to clipboard"
+ ;;
+ "$subShotChoice2")
+ sleep 0.5 && grim -g "$geom" "$SHOTDIR/$(date +%s).png" && notify-send "Screenshot saved to $SHOTDIR"
+ ;;
+ *)
+ exit 0
+ ;;
+ esac
+}
+
+# Record the entire screen
+VidScreen() {
+ for ((i = 3; i >= 1; i--)); do
+ notify-send -t 1000 "Starting in $i seconds"
+ sleep 1
+ done
+ wf-recorder -f "$VCAPDIR/$(date +%s).mp4"
+ notify-send "Screenshot" "Recording saved to $VCAPDIR"
+}
+
+# Record a specific area of the screen
+VidArea() {
+ wf-recorder -g "$(slurp)" -f "$VCAPDIR/$(date +%s).mp4"
+ notify-send "Screenshot" "Recording saved to $VCAPDIR"
+}
+
+# Record the entire screen with audio
+VidScreenAudio() {
+ local chosenPrettyDevice=$(echo -e "$audioDescriptions" | $RUNNER -i -p " Select audio input")
+ local chosenDevice="${audioMap["$chosenPrettyDevice"]}"
+ if [ -n "$chosenDevice" ]; then
+ for ((i = 3; i >= 1; i--)); do
+ notify-send -t 1000 "Starting in $i seconds"
+ sleep 1
+ done
+ wf-recorder --audio="$chosenDevice" -f "$VCAPDIR/$(date +%s).mp4"
+ else
+ exit 1
+ fi
+ notify-send "Screenshot" "Recording saved to $VCAPDIR"
+}
+
+# Stop the video recording
+VidStopRecording() {
+ if pidof wfrecorder; then
+ killall -s SIGINT wf-recorder
+ else
+ notify-send "You are not recording right now"
+ exit 1
+ fi
+}
+
+###################
+# Check arguments #
+###################
+
+# Show help information
+if [ "$1" == '--help' ] || [ "$1" = '-h' ]; then
+ echo "rs_scrot"
+ echo "USAGE: rs_scrot [OPTION]"
+ echo -e "(no option)\tshow the screenshot menu"
+ echo -e "-s, --stop\tstop recording"
+ echo -e "-h, --help\tthis screen"
+ exit 1
+fi
+
+# stop recording with -s or --stop arguments
+if [ "$1" = '--stop' ] || [ "$1" = '-s' ]; then
+ VidStopRecording
+ exit 1
+fi
+
+####################
+# Main Script Flow #
+####################
+
+# Check for dependencies
+CheckDependencies
+
+# Display main menu and execute selected option
+mainCase=$(echo -e "$mainChoices" | $RUNNER -l 3 -i -p "[ Screenshot/Screencast Utility] ")
+if [ -z "$mainCase" ]; then
+ exit 0
+fi
+
+case $mainCase in
+ "$mainChoice1")
+ shotCases=$(echo -e "$shotChoices" | $RUNNER -l 5 -i -p "[ Screenshot Menu] ") # screenshot menu prompt
+ case $shotCases in
+ "$shotChoice1")
+ ShotScreen
+ ;;
+ "$shotChoice2")
+ ShotScreenDelay
+ ;;
+ "$shotChoice3")
+ ShotArea
+ ;;
+ "$shotChoice4")
+ ShotWindow
+ ;;
+ "$shotChoice5")
+ exit 0
+ ;;
+ esac
+ ;;
+ "$mainChoice2")
+ vidCases=$(echo -e "$vidChoices" | $RUNNER -l 5 -i -p "[ Screencast Menu] ")
+ case $vidCases in
+ "$vidChoice1")
+ VidScreen
+ ;;
+ "$vidChoice2")
+ VidArea
+ ;;
+ "$vidChoice3")
+ VidScreenAudio
+ ;;
+ "$vidChoice4")
+ VidStopRecording
+ ;;
+ "$vidChoice5")
+ exit 0
+ esac
+ ;;
+ "$mainChoice3")
+ exit 0
+ ;;
+esac
diff --git a/config/fuzzel/scripts/rs_wall b/config/fuzzel/scripts/rs_wall
new file mode 100755
index 000000000..127c291c1
--- /dev/null
+++ b/config/fuzzel/scripts/rs_wall
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+# rs_wall - A simple screenshot menu script for rofi/dmenu/wofi/fuzzel
+# Author: Clay Gomera (Drake)
+# Dependencies: {rofi || dmenu || wofi || fuzzel}, swaybg
+
+############################
+# Configuration Parameters #
+############################
+walldir="$XDG_PICTURES_DIR/Wallpapers" # wallpapers folder, change it to yours
+
+########################
+# Function Definitions #
+########################
+
+# Check for missing dependencies
+CheckDependencies() {
+ local run_launcher_found=false
+ for launcher in rofi dmenu wofi fuzzel; do
+ if command -v "$launcher" &> /dev/null; then
+ run_launcher_found=true
+ break
+ fi
+ done
+
+ if [ "$run_launcher_found" = false ]; then
+ echo "Missing dependency: one of rofi, dmenu, wofi or fuzzel is required."
+ exit 1
+ fi
+
+ local missing_deps=()
+ for dep in swaybg; do
+ if ! command -v "$dep" &> /dev/null; then
+ missing_deps+=("$dep")
+ fi
+ done
+
+ if [ ${#missing_deps[@]} -ne 0 ]; then
+ echo "Missing dependencies: ${missing_deps[*]}"
+ exit 1
+ fi
+}
+
+####################
+# Main Script Flow #
+####################
+
+# Check for dependencies
+CheckDependencies
+
+cd "$walldir" || exit 1
+wallpaper=$(fd -p "$walldir" | $RUNNER -l 5 -i -p "[ Wallpaper Selector] ")
+if [ -n "$wallpaper" ]; then
+ if [[ "$wallpaper" == *.jpg ]]; then
+ rm -f "$HOME/.config/sway/wallpaper/"*
+ cp "$wallpaper" "$HOME/.config/sway/wallpaper/background.jpg"
+ cp "$wallpaper" "$HOME/.config/sway/wallpaper/locked.jpg"
+ swaymsg output \* bg "$HOME/.config/sway/wallpaper/background.jpg" fill
+ elif [[ "$wallpaper" == *.png ]]; then
+ rm -f "$HOME/.config/sway/wallpaper/"*
+ cp "$wallpaper" "$HOME/.config/sway/wallpaper/background.png"
+ cp "$wallpaper" "$HOME/.config/sway/wallpaper/locked.png"
+ swaymsg output \* bg "$HOME/.config/sway/wallpaper/background.png" fill
+ fi
+else
+ exit 1
+fi
+exit 0
diff --git a/config/fuzzel/scripts/rs_wifi b/config/fuzzel/scripts/rs_wifi
new file mode 100755
index 000000000..41ec3f849
--- /dev/null
+++ b/config/fuzzel/scripts/rs_wifi
@@ -0,0 +1,167 @@
+#!/usr/bin/env bash
+
+# rs_wifi - A simple WiFi menu script for rofi/dmenu/wofi/fuzzel
+# Author: Clay Gomera (Drake)
+# Dependencies: {rofi || dmenu || wofi || fuzzel}, NetworkManager, libnotify (notify-send)
+
+############################
+# Configuration Parameters #
+############################
+
+# Main menu options
+option1=" Turn on WiFi"
+option2=" Turn off WiFi"
+option3=" Disconnect WiFi"
+option4=" Connect WiFi"
+option5=" Setup captive portal"
+option6=" Exit"
+options="$option1\n$option2\n$option3\n$option4\n$option5\n$option6"
+
+# WiFi interface information
+wifi_info=$(nmcli dev | awk '/wifi/ {print $1,$3; exit}')
+read -r wlan constate <<< "$wifi_info"
+
+########################
+# Function Definitions #
+########################
+
+# Check for missing dependencies
+check_dependencies() {
+ local run_launcher_found=false
+ for launcher in rofi dmenu wofi fuzzel; do
+ if command -v "$launcher" &> /dev/null; then
+ run_launcher_found=true
+ break
+ fi
+ done
+
+ if [ "$run_launcher_found" = false ]; then
+ echo "Missing dependency: one of rofi, dmenu, wofi or fuzzel is required."
+ exit 1
+ fi
+
+ local missing_deps=()
+ for dep in nmcli notify-send; do
+ if ! command -v "$dep" &> /dev/null; then
+ missing_deps+=("$dep")
+ fi
+ done
+
+ if [ ${#missing_deps[@]} -ne 0 ]; then
+ echo "Missing dependencies: ${missing_deps[*]}"
+ exit 1
+ fi
+}
+
+# Turn off WiFi
+turnoff() {
+ nmcli radio wifi off
+ if [ $? -eq 0 ]; then
+ notify-send "WiFi has been turned off"
+ else
+ notify-send "Failed to turn off WiFi"
+ fi
+}
+
+# Turn on WiFi
+turnon() {
+ nmcli radio wifi on
+ if [ $? -eq 0 ]; then
+ notify-send "WiFi has been turned on"
+ else
+ notify-send "Failed to turn on WiFi"
+ fi
+}
+
+# Disconnect from WiFi
+disconnect() {
+ if [ "$constate" = "disconnected" ]; then
+ notify-send "WiFi is already disconnected"
+ elif [ "$constate" = "connected" ]; then
+ nmcli device disconnect "$wlan"
+ if [ $? -eq 0 ]; then
+ notify-send "WiFi has been disconnected"
+ else
+ notify-send "Failed to disconnect WiFi"
+ fi
+ else
+ notify-send "Unknown WiFi state"
+ fi
+}
+
+# Connect to a WiFi network
+connect() {
+ notify-send -t 5000 "Scanning networks..."
+ nmcli dev wifi rescan
+ wifinet=$(nmcli -f BSSID,SSID,BARS,SECURITY dev wifi list | sed -n '1!p' | $RUNNER -i -l 10 -p "[ Select a Wifi Network] ");
+ if [ -z "$wifinet" ]; then
+ exit 0
+ fi
+ bssid=$(echo "$wifinet" | awk '{print $1}')
+ ssid=$(echo "$wifinet" | awk '{print $2}')
+}
+
+# Prompt for WiFi password
+password() {
+ if nmcli connection show | awk -v ssid="$ssid" '$1 == ssid {found=1} END {exit !found}'; then
+ pass=""
+ elif nmcli -f BSSID,SECURITY dev wifi list | grep -w "$bssid" | awk '{print $2}' | grep -q -- "--"; then
+ pass=""
+ else
+ pass=$($RUNNER -l 0 --password -p "[Enter Password ] " );
+ if [ -z "$pass" ]; then
+ exit 0
+ fi
+ fi
+}
+
+# Execute WiFi connection
+action() {
+ if [ -n "$pass" ]; then
+ nmcli dev wifi connect "$bssid" password "$pass"
+ else
+ nmcli dev wifi connect "$bssid"
+ fi
+ if [ $? -eq 0 ]; then
+ notify-send "Connected to $ssid"
+ else
+ notify-send "Failed to connect to $ssid"
+ fi
+}
+
+####################
+# Main Script Flow #
+####################
+
+# Check for dependencies
+check_dependencies
+
+cases=$(echo -e "$options" | $RUNNER -i -l 6 -p "[ Wifi Settings] " ) # main menu prompt
+if [ -z "$cases" ]; then
+ exit 0
+fi
+
+case "$cases" in
+ "$option1")
+ turnon
+ ;;
+ "$option2")
+ turnoff
+ ;;
+ "$option3")
+ disconnect
+ ;;
+ "$option4")
+ if connect; then
+ if password; then
+ action
+ fi
+ fi
+ ;;
+ "$option5")
+ ${BROWSER:-xdg-open} http://networkcheck.kde.org
+ ;;
+ "$option6")
+ exit 0
+ ;;
+esac
diff --git a/user/.config/git/config b/config/git/config
similarity index 100%
rename from user/.config/git/config
rename to config/git/config
diff --git a/user/.config/gtk-2.0/gtkrc-2.0 b/config/gtk-2.0/gtkrc-2.0
similarity index 74%
rename from user/.config/gtk-2.0/gtkrc-2.0
rename to config/gtk-2.0/gtkrc-2.0
index baac8dd86..a7c6c15d0 100644
--- a/user/.config/gtk-2.0/gtkrc-2.0
+++ b/config/gtk-2.0/gtkrc-2.0
@@ -1,6 +1,6 @@
-gtk-theme-name="gruvbox-dark-gtk"
-gtk-icon-theme-name="gruvbox-dark-icons-gtk"
-gtk-font-name="Cantarell 10"
+gtk-theme-name="Gruvbox-Dark"
+gtk-icon-theme-name="Papirus-Dark"
+gtk-font-name="Inter 10"
gtk-cursor-theme-name="Simp1e-Gruvbox-Dark"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
diff --git a/user/.config/gtk-3.0/settings.ini b/config/gtk-3.0/settings.ini
similarity index 76%
rename from user/.config/gtk-3.0/settings.ini
rename to config/gtk-3.0/settings.ini
index 22c394419..c0ac43703 100644
--- a/user/.config/gtk-3.0/settings.ini
+++ b/config/gtk-3.0/settings.ini
@@ -1,7 +1,7 @@
[Settings]
-gtk-theme-name=gruvbox-dark-gtk
-gtk-icon-theme-name=gruvbox-dark-icons-gtk
-gtk-font-name=Cantarell 10
+gtk-theme-name=Gruvbox-Dark
+gtk-icon-theme-name=Papirus-Dark
+gtk-font-name=Inter 10
gtk-cursor-theme-name=Simp1e-Gruvbox-Dark
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
diff --git a/config/kanshi/config b/config/kanshi/config
new file mode 100644
index 000000000..a55479bd8
--- /dev/null
+++ b/config/kanshi/config
@@ -0,0 +1,25 @@
+profile triple {
+ exec pgrep wl-mirror && pkill -n wl-mirror
+ output eDP-1 mode 1920x1080 position 3200,0
+ output HDMI-A-2 primary mode 1920x1080@100Hz position 1280,0
+ output DP-1 mode 1280x1024@75Hz position 0,0
+}
+
+profile hdmi {
+ exec pgrep wl-mirror && pkill -n wl-mirror
+ output eDP-1 primary mode 1920x1080 position 0,0
+ output HDMI-A-2 auto position 1920,0
+ exec wl-present mirror eDP-1 --fullscreen-output HDMI-A-2 --fullscreen
+}
+
+profile hdmi-c {
+ exec pgrep wl-mirror && pkill -n wl-mirror
+ output eDP-1 primary mode 1920x1080 position 0,0
+ output DP-1 auto position 1920,0
+ exec wl-present mirror eDP-1 --fullscreen-output DP-1 --fullscreen
+}
+
+profile laptop {
+ exec pgrep wl-mirror && pkill -n wl-mirror
+ output eDP-1 primary mode 1920x1080
+}
diff --git a/config/lvim/config.lua b/config/lvim/config.lua
new file mode 100644
index 000000000..a36fe6b86
--- /dev/null
+++ b/config/lvim/config.lua
@@ -0,0 +1,107 @@
+-- neovide options
+vim.o.guifont = "mononoki Nerd Font:h14"
+vim.g.neovide_no_idle = true
+vim.g.neovide_confirm_quit = true
+vim.g.neovide_input_use_logo = true
+
+vim.g.neovide_cursor_antialiasing = true
+vim.g.neovide_cursor_animate_in_insert_mode = true
+vim.g.neovide_cursor_vfx_mode = "pixiedust"
+vim.g.neovide_cursor_vfx_particle_speed = 20.0
+
+vim.g.neovide_padding_top = 0
+vim.g.neovide_padding_bottom = 0
+vim.g.neovide_padding_right = 0
+vim.g.neovide_padding_left = 0
+
+-- Helper function for transparency formatting
+local alpha = function()
+ return string.format("%x", math.floor(255 * (vim.g.transparency or 0.98)))
+end
+vim.g.neovide_transparency = 0.98
+vim.g.transparency = 0.98
+vim.g.neovide_background_color = "#1d2021" .. alpha()
+
+-- nvim options
+vim.opt.shiftwidth = 4
+vim.opt.tabstop = 4
+vim.opt.relativenumber = true
+vim.cmd('autocmd FileType markdown setlocal nospell')
+vim.opt.wrap = true -- wrap lines
+vim.opt.spell = false
+vim.o.shell = '/usr/bin/fish'
+vim.o.autochdir = true
+vim.cmd('autocmd BufEnter * lcd %:p:h')
+
+-- general
+lvim.use_icons = true
+lvim.log.level = "info"
+
+-- change theme settings
+lvim.colorscheme = "gruvbox"
+lvim.transparent_window = false
+lvim.builtin.alpha.active = true
+lvim.builtin.alpha.mode = "dashboard"
+lvim.builtin.terminal.active = true
+lvim.builtin.nvimtree.setup.view.side = "left"
+lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
+
+lvim.builtin.treesitter.ensure_installed = {
+ "bash",
+ "c",
+ "javascript",
+ "json",
+ "python",
+ "typescript",
+ "tsx",
+ "css",
+ "rust",
+ "java",
+ "yaml",
+ "toml",
+ "sql",
+}
+
+-- additional Plugins
+lvim.plugins = {
+ { "lunarvim/colorschemes" },
+ { "ellisonleao/gruvbox.nvim" },
+ { "tpope/vim-dadbod" },
+ { "kristijanhusak/vim-dadbod-ui" },
+ { "kristijanhusak/vim-dadbod-completion", after = "nvim-cmp" },
+ { "SirVer/ultisnips" },
+ { "mfussenegger/nvim-dap" }
+}
+
+-- configuring colorscheme
+require("gruvbox").setup({
+ undercurl = true,
+ underline = true,
+ bold = false,
+ italic = {
+ strings = true,
+ comments = true,
+ operators = false,
+ folds = true,
+ },
+ strikethrough = true,
+ invert_selection = false,
+ invert_signs = false,
+ invert_tabline = false,
+ invert_intend_guides = false,
+ inverse = true, -- invert background for search, diffs, statuslines and errors
+ contrast = "hard", -- can be "hard", "soft" or empty string
+ palette_overrides = {},
+ overrides = {},
+ dim_inactive = false,
+ transparent_mode = false,
+})
+
+lvim.keys.normal_mode["D"] = ":DBUIToggle"
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = { "sql", "mysql", "plsql" },
+ command = ":lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })",
+})
+
+local cmp = require("cmp")
diff --git a/user/.config/mako/config b/config/mako/config
similarity index 100%
rename from user/.config/mako/config
rename to config/mako/config
diff --git a/config/mimeapps.list b/config/mimeapps.list
new file mode 100644
index 000000000..d6adecf21
--- /dev/null
+++ b/config/mimeapps.list
@@ -0,0 +1,24 @@
+[Default Applications]
+image/=imv.desktop
+video/=mpv.desktop
+audio/=mpv.desktop
+image/jpeg=imv.desktop
+image/png=imv.desktop
+image/gif=imv.desktop
+application/vnd.comicbook+zip=org.pwmt.zathura-cb.desktop
+application/pdf=org.pwmt.zathura-pdf-poppler.desktop
+image/svg+xml=org.inkscape.Inkscape.desktop
+video/x-matroska=mpv.desktop
+video/mp4=mpv.desktop
+image/webp=imv.desktop
+x-scheme-handler/jetbrains=jetbrains-toolbox.desktop
+
+[Added Associations]
+image/jpeg=imv.desktop;
+image/png=imv.desktop;
+image/gif=imv.desktop;
+application/vnd.comicbook+zip=org.pwmt.zathura-cb.desktop;
+application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
+image/svg+xml=org.inkscape.Inkscape.desktop;
+video/x-matroska=mpv.desktop;
+image/webp=imv.desktop;
diff --git a/user/.config/mpv/input.conf b/config/mpv/input.conf
similarity index 100%
rename from user/.config/mpv/input.conf
rename to config/mpv/input.conf
diff --git a/config/mpv/mpv.conf b/config/mpv/mpv.conf
new file mode 100644
index 000000000..83009e44f
--- /dev/null
+++ b/config/mpv/mpv.conf
@@ -0,0 +1,139 @@
+#
+# Example mpv configuration file
+#
+# Warning:
+#
+# The commented example options usually do _not_ set the default values. Call
+# mpv with --list-options to see the default values for most options. There is
+# no builtin or example mpv.conf with all the defaults.
+#
+#
+# Configuration files are read system-wide from /etc/mpv/mpv.conf
+# and per-user from ~/.config/mpv/mpv.conf, where per-user settings override
+# system-wide settings, all of which are overridden by the command line.
+#
+# Configuration file settings and the command line options use the same
+# underlying mechanisms. Most options can be put into the configuration file
+# by dropping the preceding '--'. See the man page for a complete list of
+# options.
+#
+# Lines starting with '#' are comments and are ignored.
+#
+# See the CONFIGURATION FILES section in the man page
+# for a detailed description of the syntax.
+#
+# Profiles should be placed at the bottom of the configuration file to ensure
+# that settings wanted as defaults are not restricted to specific profiles.
+
+##################
+# video settings #
+##################
+
+# Start in fullscreen mode by default.
+#fs=yes
+
+# force starting with centered window
+#geometry=50%:50%
+
+# don't allow a new window to have a size larger than 90% of the screen size
+#autofit-larger=90%x90%
+
+# Do not close the window on exit.
+#keep-open=yes
+
+# Do not wait with showing the video window until it has loaded. (This will
+# resize the window once video is loaded. Also always shows a window with
+# audio.)
+#force-window=immediate
+
+# Disable the On Screen Controller (OSC).
+#osc=no
+
+# Keep the player window on top of all other windows.
+#ontop=yes
+
+# Specify high quality video rendering preset (for --vo=gpu only)
+# Can cause performance problems with some drivers and GPUs.
+#profile=gpu-hq
+
+# Force video to lock on the display's refresh rate, and change video and audio
+# speed to some degree to ensure synchronous playback - can cause problems
+# with some drivers and desktop environments.
+#video-sync=display-resample
+
+# Enable hardware decoding if available. Often, this does not work with all
+# video outputs, but should work well with default settings on most systems.
+# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
+# may or may not help.
+#hwdec=auto
+
+##################
+# audio settings #
+##################
+
+# Specify default audio device. You can list devices with: --audio-device=help
+# The option takes the device string (the stuff between the '...').
+#audio-device=alsa/default
+
+# Do not filter audio to keep pitch when changing playback speed.
+#audio-pitch-correction=no
+
+# Output 5.1 audio natively, and upmix/downmix audio with a different format.
+#audio-channels=5.1
+# Disable any automatic remix, _if_ the audio output accepts the audio format.
+# of the currently played file. See caveats mentioned in the manpage.
+# (The default is "auto-safe", see manpage.)
+#audio-channels=auto
+
+##################
+# other settings #
+##################
+
+# Pretend to be a web browser. Might fix playback with some streaming sites,
+# but also will break with shoutcast streams.
+#user-agent="Mozilla/5.0"
+
+# cache settings
+#
+# Use a large seekable RAM cache even for local input.
+#cache=yes
+#
+# Use extra large RAM cache (needs cache=yes to make it useful).
+#demuxer-max-bytes=500M
+#demuxer-max-back-bytes=100M
+#
+# Disable the behavior that the player will pause if the cache goes below a
+# certain fill size.
+#cache-pause=no
+#
+# Store cache payload on the hard disk instead of in RAM. (This may negatively
+# impact performance unless used for slow input such as network.)
+#cache-dir=~/.cache/
+#cache-on-disk=yes
+
+# Display English subtitles if available.
+#slang=en
+
+# Play Finnish audio if available, fall back to English otherwise.
+#alang=fi,en
+
+# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
+# If the file seems to be valid UTF-8, prefer UTF-8.
+# (You can add '+' in front of the codepage to force it.)
+#sub-codepage=cp1256
+
+# You can also include other configuration files.
+#include=/path/to/the/file/you/want/to/include
+
+############
+# Profiles #
+############
+
+# The options declared as part of profiles override global default settings,
+# but only take effect when the profile is active.
+
+# The following profile can be enabled on the command line with: --profile=eye-cancer
+
+#[eye-cancer]
+#sharpen=5
+loop-file='inf'
diff --git a/config/musikcube/hotkeys.json b/config/musikcube/hotkeys.json
new file mode 100644
index 000000000..914c527c6
--- /dev/null
+++ b/config/musikcube/hotkeys.json
@@ -0,0 +1,68 @@
+{
+ "browse_category_filter": "^F",
+ "browse_playlists_delete": "KEY_DC",
+ "browse_playlists_new": "M-n",
+ "browse_playlists_rename": "M-r",
+ "browse_playlists_save": "M-s",
+ "context_menu": "M-enter",
+ "hotkeys_backup": "M-b",
+ "hotkeys_reset_to_default": "M-r",
+ "key_down": "j",
+ "key_end": "KEY_END",
+ "key_home": "KEY_HOME",
+ "key_left": "h",
+ "key_page_down": "KEY_NPAGE",
+ "key_page_up": "KEY_PPAGE",
+ "key_right": "l",
+ "key_up": "k",
+ "lyrics_retry": "r",
+ "metadata_rescan": "^R",
+ "navigate_console": "`",
+ "navigate_hotkeys": "?",
+ "navigate_jump_to_playing": "x",
+ "navigate_library": "a",
+ "navigate_library_album_artists": "4",
+ "navigate_library_browse": "b",
+ "navigate_library_browse_albums": "2",
+ "navigate_library_browse_artists": "1",
+ "navigate_library_browse_directories": "d",
+ "navigate_library_browse_genres": "3",
+ "navigate_library_choose_category": "6",
+ "navigate_library_filter": "f",
+ "navigate_library_play_queue": "n",
+ "navigate_library_playlists": "5",
+ "navigate_library_tracks": "t",
+ "navigate_lyrics": "^L",
+ "navigate_settings": "s",
+ "play_queue_clear": "X",
+ "play_queue_delete": "KEY_DC",
+ "play_queue_hot_swap": "M-a",
+ "play_queue_move_down": "M-down",
+ "play_queue_move_up": "M-up",
+ "play_queue_playlist_delete": "M-x",
+ "play_queue_playlist_load": "M-l",
+ "play_queue_playlist_rename": "M-r",
+ "play_queue_playlist_save": "M-s",
+ "playback_next": "M-l",
+ "playback_previous": "M-j",
+ "playback_seek_back": "u",
+ "playback_seek_back_proportional": "y",
+ "playback_seek_forward": "o",
+ "playback_seek_forward_proportional": "p",
+ "playback_stop": "^X",
+ "playback_toggle_mute": "m",
+ "playback_toggle_pause": "^P",
+ "playback_toggle_repeat": ".",
+ "playback_toggle_shuffle": ",",
+ "playback_volume_down": "M-k",
+ "playback_volume_up": "M-i",
+ "search_input_toggle_match_type": "M-m",
+ "show_equalizer": "^E",
+ "toggle_visualizer": "v",
+ "track_list_change_sort_order": "M-s",
+ "track_list_next_group": "]",
+ "track_list_play_from_top": "M-P",
+ "track_list_previous_group": "[",
+ "track_list_rate_track": "r",
+ "view_refresh": "KEY_F(5)"
+}
\ No newline at end of file
diff --git a/user/.config/newsboat/config b/config/newsboat/config
similarity index 91%
rename from user/.config/newsboat/config
rename to config/newsboat/config
index 9246557ae..20e375fb6 100644
--- a/user/.config/newsboat/config
+++ b/config/newsboat/config
@@ -48,4 +48,4 @@ highlight article ":.*\\(image\\)$" blue default
highlight article ":.*\\(embedded flash\\)$" magenta default
browser w3m
-macro v set browser "mpv %u" ; open-in-browser ; set browser "elinks %u"
+macro v set browser "mpv --ytdl-format='bestvideo[height<=1080]+bestaudio/best[height<=1080]' %u" ; open-in-browser ; set browser "w3m %u"
diff --git a/config/newsboat/urls b/config/newsboat/urls
new file mode 100644
index 000000000..2d27ca901
--- /dev/null
+++ b/config/newsboat/urls
@@ -0,0 +1,215 @@
+http://static.fsf.org/fsforg/rss/news.xml "~FSF News"
+http://static.fsf.org/fsforg/rss/blogs.xml "~FSF Blogs"
+https://fsfe.org/news/news.en.rss "~FSFE News"
+https://dot.kde.org/rss.xml "~KDE Dot News"
+https://planet.kde.org/global/atom.xml "~Planet KDE"
+https://pointieststick.com/feed/ "~This Week on KDE"
+https://www.kdeblog.com/rss "~KDE Blog"
+https://thisweek.gnome.org/index.xml "~This Week on GNOME"
+https://www.omgubuntu.co.uk/feed "~OMG!Ubuntu"
+https://www.omglinux.com/feed "~OMG!Linux"
+https://blog.thunderbird.net/feed/ "~The Thunderbird Blog"
+https://thelinuxexp.com/feed.xml "~The Linux Experiment"
+https://techhut.tv/feed/ "~TechHut Media"
+https://itsfoss.com/rss/ "~Its FOSS!"
+https://thelinuxcast.org/feed/feed.xml "~The Linux Cast"
+https://9to5linux.com/feed/atom "~9to5Linux"
+https://blog.elementary.io/feed.xml "~elementary OS Blog"
+https://blog.zorin.com/index.xml "~Zorin OS Blog"
+http://blog.linuxmint.com/?feed=rss2 "~Linux Mint Blog"
+https://www.gamingonlinux.com/article_rss.php "~Gaming on linux"
+https://hackaday.com/blog/feed/ "~Hackaday"
+https://www.phoronix.com/rss.php "~Phoronix"
+https://betanews.com/feed "~Betanews Linux"
+http://lxer.com/module/newswire/headlines.rss "~Lxer"
+https://theevilskeleton.gitlab.io/feed.xml "~TheEvilSkeleton"
+https://tutanota.com/blog/feed.xml "~Tutanota Blogs"
+https://techcrunch.com/feed/ "~TechCrunch"
+http://www.techradar.com/rss "~TechRadar"
+https://www.zdnet.com/news/rss.xml "~ZDNET - News"
+https://c3po.website/rss/ "~Blog de C3PO"
+https://thecheis.com/feed/ "~THE_CHEI$"
+http://yro.slashdot.org/yro.rss "~Slashdot: Your Rights Online"
+https://freedom-to-tinker.com/feed/rss/ "~Freedom to Tinker"
+https://act.eff.org/action.atom "~EFF - Action Center"
+https://www.eff.org/rss/updates.xml "~EFF - Updates"
+https://victorhckinthefreeworld.com/feed/ "~Victorhck in the free world"
+https://theprivacydad.com/feed/ "~Welcome to The Privacy Dad's Blog!"
+https://proton.me/blog/feed "~Proton Blog"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC-ErgHYY0_Yjhjz2MN1E1lg "~YT - RETRO Hardware"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC-shHw-IWdyL7Y6JUz_mUMQ "~YT - SORRYLAG"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC0W_BIuwk8D0Bv4THbVZZOQ "~YT - Surveillance Report"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC0woBco6Dgcxt0h8SwyyOmw "~YT - Megaprojects"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC1D3yD4wlPMico0dss264XA "~YT - NileBlue"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC1JTQBa5QxZCpXrFSkMxmPw "~YT - Raycevick"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC1_uAIS3r8Vu6JjXWvastJg "~YT - Mathologer"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC1s1OsWNYDFgbROPV-q5arg "~YT - Michael Horn"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2WHjPDvbE6O328n17ZGcfg "~YT - ForrestKnight"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2avWDLN1EI3r1RZ_dlSxCw "~YT - Integza"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~YT - Luke Smith"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC36xmz34q02JYaZYKrMwXng "~YT - Nate Gentile"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC3Wn3dABlgESm8Bzn8Vamgg "~YT - Sideprojects"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC3jSNmKWYA04R47fDcc1ImA "~YT - InfinitelyGalactic"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC3yaWWA9FF9OBog5U9ml68A "~YT - SavvyNik"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC4qG04RcOZ8J1Ncw5CPqsLA "~YT - Claus Kellerman POV"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC4w1YQAJMWOz4qtxinq55LQ "~YT - Level1Techs"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC52tAgsocr9DgrPec_iw1eg "~YT - Portfolio Courses"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC5I2hjZYiW9gZPVkvzM8_Cw "~YT - Techmoan"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC5KDiSAFxrDWhmysBcNqtMA "~YT - Eric Murphy"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw "~YT - The Linux Experiment"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC5nlKFUNoskvV5XdW6PbgYw "~YT - A Well-Rested Dog"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC6WOxrSKLW8VagrNkfvi6EQ "~YT - THE SQUIDD"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC6biysICWOJ-C3P4Tyeggzg "~YT - Low Level Learning"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC7WDD6yHgzdqijHluCi1z-Q "~YT - The Act Man"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA "~YT - Mental Outlaw"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC7qPftDWPw9XuExpSgfkmJQ "~YT - Nostalgia Nerd"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC8679JjreNLfSCgA-2Fb4kA "~YT - SpineCard"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC8ENHE5xdFSwx71u3fDH5Xw "~YT - ThePrimeagen"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC8bCGC81i_jYlL041-iAFSA "~YT - JWulen"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC8uT9cgJorJPWu7ITLGo9Ww "~YT - The 8-Bit Guy"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA "~YT - Computerphile"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC910yxBmXzGDH_2cx0XE0Xw "~YT - Plano de Juego"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ "~YT - Wendover Productions"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9bORzxOWiewqMXxkmhAwAg "~YT - Gingy"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9eM3jqq5IfxbGHbuRR_jRw "~YT - Sfdx Show"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA "~YT - Warographics"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC9rU_5YnMDUPc0IP8NwZOig "~YT - Elevated Systems"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCAMu6Dso0ENoNm3sKpQsy0g "~YT - Nir Lichtman"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCAiEWppTvoNSHU939xhMb2g "~YT - hoser"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCAiiOTio8Yu69c3XnR7nQBQ "~YT - System Crafters"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCBdwqWmXhupzV5q8TfD-kNQ "~YT - The Critical Gamer"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCBq5p-xOla8xhnrbhu8AIAg "~YT - Tech Over Tea"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCDZsyOkn-WTiTwgAvZSQ_cg "~YT - El Rincón De Giorgio"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCD_SqY872aJSEjh8CcBFB7g "~YT - Userlandia"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCE0H52NoucHL2JkhPdZ1ykA "~YT - Jwlar"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCEEVcDuBRDiwxfXAgQjLGug "~YT - Dreams of Autonomy"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCEFymXY4eFCo_AchSpxwyrg "~YT - MetalJesusRocks"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCEIwxahdLz7bap-VDs9h35A "~YT - Steve Mould"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCEp20NgOZHmgWdbQdHSxgjw "~YT - This Does Not Compute"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCFhXFikryT4aFcLkLw2LBLA "~YT - NileRed"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCFzGNDHEZ5-7d5UXxfHUcRg "~YT - jujalag"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCGE-JpLbibXJg3W_N2hbo8g "~YT - Sethorven"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCGGAYsWFerrs-ZqyXw7fQWg "~YT - Resumidito."
+https://www.youtube.com/feeds/videos.xml?channel_id=UCH5DsMZAgdx5Fkk9wwMNwCA "~YT - The New Oil"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCH_7doiCkWeq0v3ycWE5lDw "~YT - Any Austin"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCH_zBfX_o5GDZwevkh1jl9Q "~YT - Nate Live"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~YT - Veritasium"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCHvDhwNuq-h2hZQRR6BwbLQ "~YT - Tech With Nikola"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCI6pj4e-_6Km-dmLLYpmlaA "~YT - Alejandro Julián"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCIjIAXXsX4YMYeFj-LP42-Q "~YT - Anthony GG"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA "~YT - ElectroBOOM"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCJYJgj7rzsn0vdR7fkgjuIA "~YT - styropyro"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w "~YT - RMC - The Cave"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ "~YT - LGR"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCM1og9pwIfAlg2jEtWh-Z7A "~YT - Sakharu Baguette"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCMbQbVilo-nezMvwf1BZfAA "~YT - CienciaDeSofa"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCMiyV_Ib77XLpzHPQH_q0qQ "~YT - Veronica Explains"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCMnZ3qm76jc3SUi9Z-5OdcA "~YT - Leyendas & Videojuegos"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCNYW2vfGrUE6R5mIJYzkRyQ "~YT - DrossRotzank"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCNnNCBgckxzqIh1Txw5cgSg "~YT - BaityBait"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCNzszbnvQeFzObW0ghk0Ckw "~YT - Dave's Garage"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCODHrzPMGbNv67e84WDZhQQ "~YT - fern"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCONH73CdRXUjlh3-DdLGCPw "~YT - Nicco Loves Linux"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCOxmlaJURX3nq8eLuJPbl3A "~YT - Psivewri"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCP5tjEmvPItGyLhmjdwP7Ww "~YT - RealLifeLore"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCQ-W1KE9EYfdxhL6S4twUNw "~YT - The Cherno"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCQX_MZRCaluNKxkywkLEgfA "~YT - Date un Vlog"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg "~YT - Real Engineering"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCRYeRa2iUMd8An1WTPIP2bw "~YT - aChair Leg"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCRrHl7MO7gcwWguTTqDzBHw "~YT - LoneVaultWanderer"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCS-WzPVpAAli-1IfEG2lN8A "~YT - Michael MJD"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCS0N5baNlQWJCUrhCEo8WlA "~YT - Ben Eater"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCSJPFQdZwrOutnmSFYtbstA "~YT - The Critical Drinker"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCSju5G2aFaWMqn-_0YBtq5A "~YT - Stand-up Maths"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCSp-OaMpsO8K0KkOqyBl7_w "~YT - Let's Get Rusty"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCSuHzQ3GrHSzoBbwrIq3LLA "~YT - Naomi Brockwell TV"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCT35hFvV0j8SR3SBGJChKZQ "~YT - Jota."
+https://www.youtube.com/feeds/videos.xml?channel_id=UCT6LaAC9VckZYJUzutUW3PQ "~YT - Game Sack"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCTrSsPMmZavLbc3Ex7VhjDg "~YT - Brandon Herrera"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCUMwY9iS8oMyWDYIe6_RmoA "~YT - No Boilerplate"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCUyeluBRhGPCW4rPe_UvBZQ "~YT - ThePrimeTime"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCVIcSx0JX1lBXnyezabutrA "~YT - Shawn Wildermuth"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCVk4b-svNJoeytrrlOixebQ "~YT - TheVimeagen"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "~YT - DistroTube"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCW-HHEyt67RhZ6q21n4p2zQ "~YT - Mac84"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCW0gH2G-cMKAEjEkI4YhnPA "~YT - Nerd of the Rings"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCWDGyt5hy6UA6Br-hAar03A "~YT - El Robot de Colón"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCWMV8dD0N3tAM2W6GuNCUCg "~YT - theunrealtarik"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCWQaM7SpSECp9FELz-cHzuQ "~YT - Dreams of Code"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCWcp1Mwm7_bJ-mVoZb8TdkQ "~YT - TuberViejuner"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCWyrVfwRL-2DOkzsqrbjo5Q "~YT - NCommander"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCXp5qAXAmdQ8n3RUZaME1QQ "~YT - ItsYaBoyBrandyBoy"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw "~YT - 3Blue1Brown"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCYVU6rModlGxvJbszCclGGw "~YT - Rob Braxman Tech"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCZ4AMrDcNrfy3X6nsU8-rPg "~YT - Economics Explained"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCZkPWp4MVoIVGLVLYC1Vjlg "~YT - Guille Ghemi"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCa6V1UVOXN4wDm7RDQDoa6g "~YT - El Traductor de Ingeniería"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCaSCt8s_4nfkRglWCvNSDrg "~YT - CodeAesthetic"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCaVPhFg-Ax873wvhbNitsrQ "~YT - El Robot de Platón"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCb0XKayhXq2JdoAHC2nr28Q "~YT - JARM"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCbJEWVgCAO-gyHcQ7U7RPCg "~YT - Axel 1UP"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCbdSYaPD-lr1kW27UJuk8Pw "~YT - QuantumFracture"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCbiGcwDWZjz05njNPrJU7jA "~YT - ExplainingComputers"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCcAy1o8VUCkdowxRYbc0XRw "~YT - Sebi's Random Tech"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCcQWoBTNG__OwfZk9znWgCQ "~YT - The Rusty Bits"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCd4XwUn2Lure2NHHjukoCwA "~YT - Linux For Everyone"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCdB41UXrNAU_J7A7OnU4KSQ "~YT - Japan Gemu"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCdiJKSDwwvy4rMUVc9CgS-g "~YT - DaniboubeTV"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCdp4_l1vPmpN-gDbUwhaRUQ "~YT - Branch Education"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCeCtLnoV0nmE2cBbbftCCiw "~YT - Las reviews de Camilo"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCeHOkFGW-7uAZFvq3BXb8YA "~YT - :3ildcat"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCerEIdrEW-IqwvlH8lTQUJQ "~YT - Tech Tangents"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCf-U0uPVQZtcqXUWa_Hl4Mw "~YT - Into the Shadows"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ "~YT - Chris Titus Tech"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCgNg3vwj3xt7QOrcIDaHdFg "~YT - PolyMatter"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCgdTVe88YVSrOZ9qKumhULQ "~YT - Hardware Haven"
+https://www.youtube.com/feeds/videos.xml?channel_id=UChI0q9a-ZcbZh7dAu_-J-hg "~YT - Upper Echelon"
+https://www.youtube.com/feeds/videos.xml?channel_id=UChIs72whgZI9w6d6FhwGGHA "~YT - Gamers Nexus"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCj8mAcR6Mu1dvaXQ6BdShRQ "~YT - The Masked Man"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCj8orMezFWVcoN-4S545Wtw "~YT - Max Derrat"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w "~YT - Modern Vintage Gamer"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCjSEJkpGbcZhvo0lr-44X_w "~YT - TechHut"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCjgS6Uyg8ok4Jd_lH_MUKgg "~YT - Claus Kellerman"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCjinkxv899vPCJ65BWpmPIA "~YT - Scott's Snippets"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCkK9UDm_ZNrq_rIXCz3xCGA "~YT - Bryan Lunduke"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCl2mFZoRqjw_ELax4Yisf6w "~YT - Louis Rossmann"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCl_dlV_7ofr4qeP1drJQ-qg "~YT - Tantacrul"
+https://www.youtube.com/feeds/videos.xml?channel_id=UClb90NQQcskPUGDIXsQEz5Q "~YT - developedbyed"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "~YT - Brodie Robertson"
+https://www.youtube.com/feeds/videos.xml?channel_id=UClnDI2sdehVm1zm_LmUHsjQ "~YT - Biographics"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCm8EsftbfNzSiRHzc7I59KQ "~YT - Kevin Fang"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCmGSJVG3mCRXVOP4yZrU1Dw "~YT - Johnny Harris"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCmw-QGOHbHA5cDAvwwqUTKQ "~YT - Zaney"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ "~YT - Michael Tunnell"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCnw3aIEiz60S6O3XcztCVkQ "~YT - PatricianTV"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCoL8olX-259lS1N6QPyP4IQ "~YT - Action Retro"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw "~YT - Switched to Linux"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A "~YT - Numberphile"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCpuKDBw8IVIdKWPhiB2VDNQ "~YT - Cinematix"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCpuLiczP2Aqq11Gtf4k_fkw "~YT - Futurasound Productions"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCq8LldVrjqe61KQttZlLW8g "~YT - Patrick God"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCqoGR_EedlhKDVuWNwYWRbg "~YT - Voices of the Past"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCqxM9T6ksiOVKIkb88S2r7Q "~YT - Zac Builds"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCrkPsvLGln62OMZRO6K-llg "~YT - Nick Chapsas"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCs6KfncB4OV6Vug4o_bzijg "~YT - Techlore"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCs7nPQIEba0T3tGOWWsZpJQ "~YT - Like Stories of Old"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCsBjURrPoezykLs9EqgamOA "~YT - Fireship"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCsC--WvN66vZlDoYShzn4sA "~YT - Oxhorn"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg "~YT - Wolfgang's Channel"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCtApDZWXv8fQaxZAk6dxYkw "~YT - Ghostcharm"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCtMVHI3AJD4Qk4hcbZnI9ZQ "~YT - SomeOrdinaryGamers"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCtYKe7-XbaDjpUwcU5x0bLg "~YT - neo"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCtYg149E_wUGVmjGz-TgyNA "~YT - Titus Tech Talk"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCtZX_67hSjOIPu0HTmFi6aw "~YT - Macintosh Librarian"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCvjgXvBlbQiydffZU7m1_aw "~YT - The Coding Train"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCxQKHvKbmSzGMvUrVtJYnUA "~YT - Learn Linux TV"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCxdZ7XCQVMRMipj3gGemQfw "~YT - GNULectures"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCxoz4YfS4M3H3C57FD4jW4Q "~YT - Science Time"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q "~YT - Technology Connections"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCy6pDeDwRFi1kmFekSpMDUA "~YT - La Poción Roja"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCybBViio_TH_uiFFDJuz5tg "~YT - Einzelgänger"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCylGUf9BvQooEFjgdNudoQg "~YT - The Linux Cast"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCz1oFxMrgrQ82-276UCOU9w "~YT - Atlas Pro"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCzGMBzt6UOMoQe_dqOfShZw "~YT - Cultura VJ"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCzR-rom72PHN9Zg7RML9EbA "~YT - PBS Eons"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCzXsTSZDoAPSjfHr8IZM9Ew "~YT - FloatyMonkey"
diff --git a/user/.config/starship.toml b/config/starship.toml
similarity index 100%
rename from user/.config/starship.toml
rename to config/starship.toml
diff --git a/user/.config/sway/config b/config/sway/config
similarity index 100%
rename from user/.config/sway/config
rename to config/sway/config
diff --git a/config/sway/modules/autostart b/config/sway/modules/autostart
new file mode 100644
index 000000000..f2f84531f
--- /dev/null
+++ b/config/sway/modules/autostart
@@ -0,0 +1,23 @@
+exec {
+ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+ dbus-update-activation-environment --systemd --all
+ systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+ /usr/lib/xdg-desktop-portal-wlr
+ kanshi
+ swayidle -w \
+ lock 'swaylock -f -i "$HOME/.config/sway/wallpaper/locked.*"' \
+ timeout 300 'swaylock -f -i "$HOME/.config/sway/wallpaper/locked.*"' \
+ timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
+ before-sleep 'swaylock -f -i "$HOME/.config/sway/wallpaper/locked.*"'
+ wl-paste --type text --watch cliphist store
+ wl-paste --type image --watch cliphist store
+ mako -c ~/.config/mako/config
+ /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+ gnome-keyring-daemon --start --components=secrets
+}
+
+exec_always {
+ pidof kanshi || kill -1 $(pidof kanshi)
+}
+
+bar swaybar_command waybar
diff --git a/user/.config/sway/modules/binds b/config/sway/modules/binds
similarity index 67%
rename from user/.config/sway/modules/binds
rename to config/sway/modules/binds
index 9810d4b66..0e3f5e6f4 100644
--- a/user/.config/sway/modules/binds
+++ b/config/sway/modules/binds
@@ -8,32 +8,32 @@ set $up k
set $right l
# Apps
-set $term wezterm
+set $term foot
set $chat flatpak run org.signal.Signal
set $office flatpak run org.libreoffice.LibreOffice
-set $browser flatpak run org.mozilla.firefox
-set $file thunar
-set $editor $HOME/.local/bin/neovide
-set $music lollypop
-set $ani-cli wezterm start --class ani-cli ani-cli
-set $ytfzf wezterm start --class ytfzf ytfzf -flstT chafa
-set $ytfzf-music wezterm start --class ytfzf-music ytfzf -mlstT chafa
-set $flix-cli wezterm start --class flix-cli flix-cli
-set $audiomixer wezterm start --class audiomixer pulsemixer
-set $monitor wezterm start --class monitor btop
-set $newsboat wezterm start --class newsboat newsboat
+set $browser flatpak run com.brave.Browser
+set $file foot -T yazi -a yazi yazi
+set $editor neovide --neovim-bin $HOME/.local/bin/lvim
+set $music foot -T musikcube -a musikcube musikcube
+set $ani-cli foot -T ani-cli -a ani-cli ani-cli
+set $ytfzf foot -T ytfzf -a ytfzf ytfzf -flst
+set $ytfzf-music foot -T ytfzf-music -a ytfzf-music ytfzf -mlst
+set $flix-cli foot -T flix-cli -a flix-cli flix-cli
+set $audiomixer foot -T audiomixer -a audiomixer pulsemixer
+set $monitor foot -T monitor -a monitor btop
+set $newsboat foot -T newsboat -a newsboat newsboat
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu fuzzel | xargs swaymsg exec --
-set $menu-wifi ~/.local/bin/rs_wifi | xargs swaymsg exec --
-set $menu-power ~/.local/bin/rs_power | xargs swaymsg exec --
-set $menu-emoji ~/.local/bin/rs_emoji | xargs swaymsg exec --
-set $menu-wall ~/.local/bin/rs_wall | xargs swaymsg exec --
-set $menu-scrot ~/.local/bin/rs_scrot | xargs swaymsg exec --
-set $menu-blue ~/.local/bin/rs_blue | xargs swaymsg exec --
-set $menu-clip ~/.local/bin/rs_clip | xargs swaymsg exec --
+set $menu-wifi ~/.config/fuzzel/scripts/rs_wifi | xargs swaymsg exec --
+set $menu-power ~/.config/fuzzel/scripts/rs_power | xargs swaymsg exec --
+set $menu-emoji ~/.config/fuzzel/scripts/rs_emoji | xargs swaymsg exec --
+set $menu-wall ~/.config/fuzzel/scripts/rs_wall | xargs swaymsg exec --
+set $menu-scrot ~/.config/fuzzel/scripts/rs_scrot | xargs swaymsg exec --
+set $menu-blue ~/.config/fuzzel/scripts/rs_blue | xargs swaymsg exec --
+set $menu-clip ~/.config/fuzzel/scripts/rs_clip | xargs swaymsg exec --
# Start a terminal
bindsym $mod+Return exec $term
@@ -41,16 +41,6 @@ bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+q kill
-# Run launcher scripts
-bindsym $mod+Shift+d exec $menu
-bindsym $mod+Shift+q exec $menu-power
-bindsym $mod+Shift+e exec $menu-emoji
-bindsym $mod+Shift+w exec $menu-wall
-bindsym $mod+Shift+s exec $menu-scrot
-bindsym $mod+Shift+b exec $menu-blue
-bindsym $mod+Shift+c exec $menu-clip
-bindsym $mod+Shift+i exec $menu-wifi
-
# XF86 Keys
bindsym XF86AudioRaiseVolume exec pamixer -i 5
bindsym XF86AudioLowerVolume exec pamixer -d 5
@@ -61,7 +51,7 @@ bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86AudioStop exec playerctl stop
-bindsym XF86News exec wezterm start --class newsboat newsboat
+bindsym XF86News exec $newsboat
bindsym XF86MonBrightnessUp exec brightnessctl s 5%+
bindsym XF86MonBrightnessDown exec brightnessctl s 5%-
bindsym XF86Display exec wdisplays
@@ -115,16 +105,16 @@ bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
-bindsym $mod+Shift+1 move container to workspace number 1
-bindsym $mod+Shift+2 move container to workspace number 2
-bindsym $mod+Shift+3 move container to workspace number 3
-bindsym $mod+Shift+4 move container to workspace number 4
-bindsym $mod+Shift+5 move container to workspace number 5
-bindsym $mod+Shift+6 move container to workspace number 6
-bindsym $mod+Shift+7 move container to workspace number 7
-bindsym $mod+Shift+8 move container to workspace number 8
-bindsym $mod+Shift+9 move container to workspace number 9
-bindsym $mod+Shift+0 move container to workspace number 10
+bindsym $mod+Shift+1 [con_id=__focused__] move container to workspace number 1, focus
+bindsym $mod+Shift+2 [con_id=__focused__] move container to workspace number 2, focus
+bindsym $mod+Shift+3 [con_id=__focused__] move container to workspace number 3, focus
+bindsym $mod+Shift+4 [con_id=__focused__] move container to workspace number 4, focus
+bindsym $mod+Shift+5 [con_id=__focused__] move container to workspace number 5, focus
+bindsym $mod+Shift+6 [con_id=__focused__] move container to workspace number 6, focus
+bindsym $mod+Shift+7 [con_id=__focused__] move container to workspace number 7, focus
+bindsym $mod+Shift+8 [con_id=__focused__] move container to workspace number 8, focus
+bindsym $mod+Shift+9 [con_id=__focused__] move container to workspace number 9, focus
+bindsym $mod+Shift+0 [con_id=__focused__] move container to workspace number 10, focus
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
@@ -136,15 +126,15 @@ bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
-bindsym $mod+Ctrl+s layout stacking
-bindsym $mod+Ctrl+w layout tabbed
-bindsym $mod+Ctrl+e layout toggle split
+bindsym $mod+e layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+d layout toggle split
# Make the current focus fullscreen
-bindsym $mod+Ctrl+f fullscreen
+bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
-bindsym $mod+Ctrl+space floating toggle
+bindsym $mod+Alt+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
@@ -206,3 +196,18 @@ mode "apps" {
bindsym Escape mode "default"
}
bindsym $mod+a mode "apps"
+
+# Run launcher scripts
+mode "launchers" {
+ bindsym d exec $menu; mode "default"
+ bindsym q exec $menu-power; mode "default"
+ bindsym e exec $menu-emoji; mode "default"
+ bindsym w exec $menu-wall; mode "default"
+ bindsym s exec $menu-scrot; mode "default"
+ bindsym b exec $menu-blue; mode "default"
+ bindsym c exec $menu-clip; mode "default"
+ bindsym i exec $menu-wifi; mode "default"
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+bindsym $mod+s mode "launchers"
diff --git a/user/.config/sway/modules/input b/config/sway/modules/input
similarity index 100%
rename from user/.config/sway/modules/input
rename to config/sway/modules/input
diff --git a/config/sway/modules/output b/config/sway/modules/output
new file mode 100644
index 000000000..bc6b31979
--- /dev/null
+++ b/config/sway/modules/output
@@ -0,0 +1,25 @@
+# Set background for all outputs
+output * {
+ bg ~/.config/sway/wallpaper/background.* fill
+}
+
+# # Configure internal display (eDP-1)
+# output eDP-1 {
+# mode 1920x1080
+# position 3200,0
+# transform normal
+# }
+
+# # Configure external display (HDMI-A-2)
+# output HDMI-A-2 {
+# mode 1920x1080@100Hz
+# position 1280,0
+# transform normal
+# }
+
+# # Configure external display (DP-1)
+# output DP-1 {
+# mode 1280x1024@75Hz
+# position 0,0
+# transform normal
+# }
diff --git a/user/.config/sway/modules/rules b/config/sway/modules/rules
similarity index 100%
rename from user/.config/sway/modules/rules
rename to config/sway/modules/rules
diff --git a/user/.config/sway/modules/theme b/config/sway/modules/theme
similarity index 58%
rename from user/.config/sway/modules/theme
rename to config/sway/modules/theme
index 22b82c24c..46a7d2dc1 100644
--- a/user/.config/sway/modules/theme
+++ b/config/sway/modules/theme
@@ -1,33 +1,38 @@
# Font
-font pango: Mononoki Nerd Font 12
+font pango: Mononoki Nerd Font 14
# Color scheme (Gruvbox dark)
set $color_normal_white #a89984
set $color_bright_white #ebdbb2
set $color_normal_gray #282828
-set $color_bright_gray #3c3836
+set $color_bright_gray #665c54
set $color_bright_yellow #d79921
set $color_normal_black #1d2021
set $color_unused #ff0000
+set $color_normal_red #cc241d
+set $color_normal_teal #689d6a
+set $color_normal_green #98971a
# Title bar colors
# Colors border background text indicator child_border
-client.focused $color_bright_gray $color_bright_gray $color_bright_white $color_bright_gray $color_normal_black
-client.focused_inactive $color_bright_gray $color_bright_gray $color_bright_white $color_bright_gray $color_normal_black
-client.unfocused $color_normal_gray $color_normal_gray $color_normal_white $color_normal_gray $color_normal_black
+client.focused $color_normal_red $color_bright_gray $color_bright_white $color_normal_teal $color_normal_red
+client.focused_inactive $color_bright_gray $color_bright_gray $color_bright_white $color_normal_green $color_bright_gray
+client.unfocused $color_bright_gray $color_normal_gray $color_normal_white $color_normal_green $color_bright_gray
client.urgent $color_bright_yellow $color_bright_yellow $color_normal_black $color_unused $color_unused
client.placeholder $color_unused $color_unused $color_unused $color_unused $color_unused
# Window borders
-default_border pixel 2
-default_floating_border pixel 2
+default_border pixel 3
+default_floating_border pixel 3
+smart_borders off
+gaps inner 5
# gsettings
exec gsettings set org.gnome.desktop.interface {
- gtk-theme 'gruvbox-dark-gtk'
- icon-theme 'gruvbox-dark-icons-gtk'
+ gtk-theme 'Gruvbox-Dark'
+ icon-theme 'Papirus-Dark'
cursor-theme 'Simp1e-Gruvbox-Dark'
- font-name 'Cantarell 10'
+ font-name 'Inter 10'
document-font-name 'Liberation Serif 12'
monospace-font-name 'Mononoki Nerd Font 12'
enable-animations true
diff --git a/config/sway/wallpaper/background.png b/config/sway/wallpaper/background.png
new file mode 100644
index 000000000..227045615
Binary files /dev/null and b/config/sway/wallpaper/background.png differ
diff --git a/config/sway/wallpaper/locked.png b/config/sway/wallpaper/locked.png
new file mode 100644
index 000000000..227045615
Binary files /dev/null and b/config/sway/wallpaper/locked.png differ
diff --git a/user/.config/sway/winitrc b/config/sway/winitrc
similarity index 85%
rename from user/.config/sway/winitrc
rename to config/sway/winitrc
index 51e408c62..620690ca1 100755
--- a/user/.config/sway/winitrc
+++ b/config/sway/winitrc
@@ -16,17 +16,17 @@ export XKB_DEFAULT_LAYOUT=us
export MOZ_ENABLE_WAYLAND=1
export MOZ_WAYLAND_USE_VAAPI=1
export MOZ_DISABLE_RDD_SANDBOX=1
+export ELECTRON_OZONE_PLATFORM_HINT=auto
# GTK & cursor stuff
export XCURSOR_PATH="$XDG_DATA_HOME/icons/"
export XCURSOR_THEME="Simp1e-Gruvbox-Dark"
-export GTK_THEME="gruvbox-dark-gtk"
-export GTK_ICON_THEME="gruvbox-dark-icons-gtk"
+export GTK_THEME="Gruvbox-Dark"
+export GTK_ICON_THEME="Papirus-Dark"
export GTK_CURSOR_THEME="Simp1e-Gruvbox-Dark"
# User defined enviroment variables
export RUNNER="fuzzel --dmenu"
-export WM=sway
# Start compositor
-dbus-launch $WM
+exec sway
diff --git a/user/.config/waybar/config b/config/waybar/config
similarity index 54%
rename from user/.config/waybar/config
rename to config/waybar/config
index a11c129d1..c97784b98 100644
--- a/user/.config/waybar/config
+++ b/config/waybar/config
@@ -10,6 +10,10 @@
"sway/scratchpad"
],
+ "modules-center": [
+ "sway/window"
+ ],
+
"modules-right": [
"custom/arrow1",
"sway/language",
@@ -18,12 +22,13 @@
"custom/arrow3",
"backlight",
"custom/arrow4",
+ "idle_inhibitor",
+ "power-profiles-daemon",
"battery",
+ "battery#bat2",
"custom/arrow5",
- "custom/powerprofiles",
- "custom/arrow6",
"network",
- "custom/arrow7",
+ "custom/arrow6",
"clock"
],
@@ -47,6 +52,13 @@
}
},
+ "sway/window": {
+ "format": "{title}",
+ "icon": true,
+ "icon-size": 24,
+ "separate-outputs": true
+ },
+
"sway/language": {
"format": "{} \udb80\udf0c",
"on-click": "swaymsg input type:keyboard xkb_switch_layout next",
@@ -65,60 +77,14 @@
"tooltip-format": "{app}: {title}"
},
- "clock": {
- "tooltip-format": "{:%Y %B}\n{calendar}",
- "format": "\udb82\udd54 {:%H:%M}",
- "format-alt": "\udb80\udcf5 {:%Y-%m-%d}"
- },
-
- "backlight": {
- "format": "{percent}% {icon}",
- "format-icons": [
- "\udb86\ude4e", // 10%
- "\udb86\ude4f", // 20%
- "\udb86\ude50", // 30%
- "\udb86\ude51", // 40%
- "\udb86\ude52", // 50%
- "\udb86\ude53", // 60%
- "\udb86\ude54", // 70%
- "\udb86\ude55", // 80%
- "\udb81\udee8" // 90+%
- ]
- },
-
- "battery": {
- "states": {
- "warning": 30,
- "critical": 15
- },
- "format": "{capacity}% {icon}",
- "format-charging": "{capacity}% {icon}\udb81\udea5",
- "format-plugged": "{capacity}% {icon}\udb81\udea5",
- "format-alt": "{time} {icon}",
- "format-critical": "{capacity}% {icon}\udb84\ude38",
- "format-warning": "{capacity}% {icon}\udb84\ude38",
- "format-icons": [
- "\udb80\udc7a",
- "\udb80\udc7c",
- "\udb80\udc7e",
- "\udb80\udc80",
- "\udb80\udc79"
- ],
- },
-
- "custom/powerprofiles": {
- "exec": "bash $HOME/.config/waybar/power-profiles",
- "restart-interval": 5,
- "format": "{}",
- },
-
"pulseaudio": {
"scroll-step": 1, // %, can be a float
- "format": "{volume}% {icon} {format_source}",
- "format-bluetooth": "{volume}% {icon}\udb80\udcaf {format_source}",
+ "tooltip-format": "{volume}% - {desc}",
+ "format": "{icon} {format_source}",
+ "format-bluetooth": "{icon}\udb80\udcaf {format_source}",
"format-bluetooth-muted": "\udb81\udd81 {icon}\udb80\udcaf {format_source}",
"format-muted": "\udb81\udd81 {format_source}",
- "format-source": "{volume}% \udb80\udf6c",
+ "format-source": "\udb80\udf6c",
"format-source-muted": "\udb80\udf6d",
"format-icons": {
"headphone": "\udb80\udecb",
@@ -129,15 +95,101 @@
"car": "\udb80\udd0b",
"default": ["\udb81\udd7f", "\udb81\udd80", "\udb81\udd7e"]
},
- "on-click": "wezterm start --class pulsemixer -- pulsemixer"
+ "on-click": "foot -T audiomixer -a audiomixer pulsemixer"
+ },
+
+ "backlight": {
+ "format": "{icon}",
+ "format-icons": [
+ "\udb86\ude4e",
+ "\udb86\ude4f",
+ "\udb86\ude50",
+ "\udb86\ude51",
+ "\udb86\ude52",
+ "\udb86\ude53",
+ "\udb86\ude54",
+ "\udb86\ude55",
+ "\udb81\udee8"
+ ],
+ "tooltip-format": "{percent}%"
+ },
+
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "\uea71",
+ "deactivated": "\ueabc"
+ }
+ },
+
+ "power-profiles-daemon": {
+ "format": "{icon}",
+ "tooltip-format": "Power profile: {profile}",
+ "tooltip": true,
+ "format-icons": {
+ "default": "",
+ "performance": "",
+ "balanced": "",
+ "power-saver": ""
+ }
+ },
+
+ "battery": {
+ "bat": "BAT0",
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon}",
+ "format-charging": "{icon} \udb81\udea5",
+ "format-plugged": "{icon} \udb81\udea5",
+ "format-critical": "{icon} \udb84\ude38",
+ "format-warning": "{icon} \udb84\ude38",
+ "format-icons": [
+ "\udb80\udc7a",
+ "\udb80\udc7c",
+ "\udb80\udc7e",
+ "\udb80\udc80",
+ "\udb80\udc79"
+ ],
+ "tooltip-format": "{capacity}% - {timeTo}",
+ "on-click": "$HOME/.config/rofi/scripts/rs_power"
+ },
+
+ "battery#bat2": {
+ "bat": "BAT1",
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon}",
+ "format-charging": "{icon} \udb81\udea5",
+ "format-plugged": "{icon} \udb81\udea5",
+ "format-critical": "{icon} \udb84\ude38",
+ "format-warning": "{icon} \udb84\ude38",
+ "format-icons": [
+ "\udb80\udc7a",
+ "\udb80\udc7c",
+ "\udb80\udc7e",
+ "\udb80\udc80",
+ "\udb80\udc79"
+ ],
+ "tooltip-format": "{capacity}% - {timeTo}",
+ "on-click": "$HOME/.config/fuzzel/scripts/rs_power"
},
"network": {
- // "interface": "wlp2*", // (Optional) To force the use of this interface
- "format-wifi": "{essid} \udb81\udda9",
- "format-ethernet": "{ipaddr}/{cidr} \udb80\ude00",
- "format-disconnected": "Disconnected \udb81\uddaa",
- "format-alt": "{ifname}: {ipaddr}/{cidr}",
+ "format-wifi": "\udb81\udda9",
+ "format-ethernet": "\udb80\ude00",
+ "format-disconnected": "\udb80\udd5b",
+ "tooltip-format": "{essid} ({signalStrength}%) - {ifname}: {ipaddr}/{cidr}",
+ "on-click": "$HOME/.config/fuzzel/scripts/rs_wifi"
+ },
+
+ "clock": {
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format": "\udb82\udd54 {:%H:%M}",
+ "format-alt": "\udb80\udcf5 {:%Y-%m-%d}"
},
"custom/arrow1": {
diff --git a/config/waybar/style.css b/config/waybar/style.css
new file mode 100644
index 000000000..4ae0884b0
--- /dev/null
+++ b/config/waybar/style.css
@@ -0,0 +1,259 @@
+/* =====================================
+ Colors (Gruvbox theme)
+ ===================================== */
+@define-color black #1d2021;
+@define-color red #cc241d;
+@define-color green #98971a;
+@define-color yellow #d79921;
+@define-color orange #fe8019;
+@define-color blue #458588;
+@define-color purple #b16286;
+@define-color aqua #689d6a;
+@define-color gray #a89984;
+/* Brighter variants */
+@define-color brgray #928374;
+@define-color brred #fb4934;
+@define-color brgreen #b8bb26;
+@define-color bryellow #fabd2f;
+@define-color brblue #83a598;
+@define-color brpurple #d3869b;
+@define-color braqua #8ec07c;
+@define-color white #ebdbb2;
+@define-color bg2 #504945;
+/* Darker variants */
+@define-color drred #9d0006;
+@define-color drgreen #79740e;
+@define-color drpurple #8f3f71;
+@define-color drorange #af3a03;
+@define-color drgray #3c3836;
+@define-color drblue #076678;
+@define-color draqua #427b58;
+@define-color dryellow #b57614;
+
+/* =====================================
+ Color Definitions for Modules
+ ===================================== */
+@define-color critical @brred;
+@define-color unfocused @braqua;
+@define-color focused @red;
+@define-color inactive @drgray;
+@define-color idle @drgreen;
+@define-color backlight @dryellow;
+@define-color pulseaudio @drblue;
+@define-color powerprofile @drgreen;
+@define-color network @drred;
+@define-color language @drpurple;
+@define-color battery @drgreen;
+@define-color clock @draqua;
+@define-color wbackground rgba(29, 32, 33, 0.95);
+
+/* =====================================
+ Keyframes
+ ===================================== */
+@keyframes blink {
+ to {
+ color: @critical;
+ }
+}
+
+/* =====================================
+ Reset Styles
+ ===================================== */
+* {
+ border: none;
+ border-radius: 0;
+ min-height: 0;
+ padding: 0;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+/* =====================================
+ Button Styles
+ ===================================== */
+button {
+ box-shadow: inset 0 -3px transparent;
+ border: none;
+ border-radius: 0;
+}
+
+/* Prevent strange hover effect on workspace buttons */
+button:hover {
+ background: inherit;
+}
+
+/* =====================================
+ General Bar Styles
+ ===================================== */
+window#waybar {
+ background-color: @wbackground;
+ font-family: Symbols Nerd Font Mono, Mononoki Nerd Font;
+ font-size: 14px;
+}
+
+/* =====================================
+ Workspaces Module
+ ===================================== */
+#workspaces button {
+ font-family: Symbols Nerd Font Mono;
+ font-size: 18px;
+ padding: 0 2pt;
+ color: @white;
+}
+
+#workspaces button.visible {
+ color: @white;
+}
+
+#workspaces button.focused {
+ color: @white;
+ background: @focused;
+}
+
+#workspaces button.unfocused {
+ color: @white;
+}
+
+#workspaces button.urgent {
+ color: @wbackground;
+ background: @critical;
+}
+
+#workspaces button:hover {
+ background: @yellow;
+ color: @white;
+}
+
+/* =====================================
+ Mode Module
+ ===================================== */
+#mode {
+ background-color: @red;
+ border-bottom: 3px solid @white;
+ padding: 3px;
+}
+
+/* =====================================
+ Window Module
+ ===================================== */
+#window {
+ color: @white;
+ padding: 0 10px;
+ margin: 5px 0;
+}
+
+/* =====================================
+ Margins and Layout Adjustments
+ ===================================== */
+#window, #workspaces {
+ margin: 0 4px;
+}
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* =====================================
+ Individual Module Styles
+ ===================================== */
+#clock,
+#power-profiles-daemon,
+#battery,
+#backlight,
+#network,
+#pulseaudio,
+#idle_inhibitor,
+#language {
+ color: @white;
+ padding: 0 1px;
+ padding-left: 4px;
+}
+
+#battery,
+#battery.charging,
+#battery.plugged {
+ background-color: @battery;
+}
+
+#battery.critical:not(.charging) {
+ color: @white;
+ animation: blink 0.5s linear infinite alternate;
+}
+
+#backlight {
+ background-color: @backlight;
+}
+
+#network,
+#network.disconnected {
+ background-color: @network;
+}
+
+#pulseaudio,
+#pulseaudio.muted {
+ background-color: @pulseaudio;
+}
+
+#language {
+ background-color: @language;
+}
+
+#power-profiles-daemon {
+ background-color: @powerprofile;
+}
+
+#clock {
+ background-color: @clock;
+ padding-right: 10px;
+}
+
+#idle_inhibitor {
+ background-color: @battery;
+}
+
+/* =====================================
+ Modeline Arrows
+ ===================================== */
+#custom-arrow1,
+#custom-arrow2,
+#custom-arrow3,
+#custom-arrow4,
+#custom-arrow5,
+#custom-arrow6 {
+ font-size: 25pt;
+}
+
+/* Individual Modeline Arrow Styles */
+#custom-arrow1 {
+ background: transparent;
+ color: @language;
+}
+
+#custom-arrow2 {
+ background: @language;
+ color: @pulseaudio;
+}
+
+#custom-arrow3 {
+ background: @pulseaudio;
+ color: @backlight;
+}
+
+#custom-arrow4 {
+ background: @backlight;
+ color: @battery;
+}
+
+#custom-arrow5 {
+ background: @battery;
+ color: @network;
+}
+
+#custom-arrow6 {
+ background: @network;
+ color: @clock;
+}
diff --git a/config/wget/wgetrc b/config/wget/wgetrc
new file mode 100644
index 000000000..bbd78d995
--- /dev/null
+++ b/config/wget/wgetrc
@@ -0,0 +1,141 @@
+###
+### Sample Wget initialization file .wgetrc
+###
+
+## You can use this file to change the default behaviour of wget or to
+## avoid having to type many many command-line options. This file does
+## not contain a comprehensive list of commands -- look at the manual
+## to find out what you can put into this file. You can find this here:
+## $ info wget.info 'Startup File'
+## Or online here:
+## https://www.gnu.org/software/wget/manual/wget.html#Startup-File
+##
+## Wget initialization file can reside in /usr/local/etc/wgetrc
+## (global, for all users) or $HOME/.wgetrc (for a single user).
+##
+## To use the settings in this file, you will have to uncomment them,
+## as well as change them, in most cases, as the values on the
+## commented-out lines are the default values (e.g. "off").
+##
+## Command are case-, underscore- and minus-insensitive.
+## For example ftp_proxy, ftp-proxy and ftpproxy are the same.
+
+
+##
+## Global settings (useful for setting up in /usr/local/etc/wgetrc).
+## Think well before you change them, since they may reduce wget's
+## functionality, and make it behave contrary to the documentation:
+##
+
+# You can set retrieve quota for beginners by specifying a value
+# optionally followed by 'K' (kilobytes) or 'M' (megabytes). The
+# default quota is unlimited.
+#quota = inf
+
+# You can lower (or raise) the default number of retries when
+# downloading a file (default is 20).
+#tries = 20
+
+# Lowering the maximum depth of the recursive retrieval is handy to
+# prevent newbies from going too "deep" when they unwittingly start
+# the recursive retrieval. The default is 5.
+#reclevel = 5
+
+# By default Wget uses "passive FTP" transfer where the client
+# initiates the data connection to the server rather than the other
+# way around. That is required on systems behind NAT where the client
+# computer cannot be easily reached from the Internet. However, some
+# firewalls software explicitly supports active FTP and in fact has
+# problems supporting passive transfer. If you are in such
+# environment, use "passive_ftp = off" to revert to active FTP.
+#passive_ftp = off
+
+# The "wait" command below makes Wget wait between every connection.
+# If, instead, you want Wget to wait only between retries of failed
+# downloads, set waitretry to maximum number of seconds to wait (Wget
+# will use "linear backoff", waiting 1 second after the first failure
+# on a file, 2 seconds after the second failure, etc. up to this max).
+#waitretry = 10
+
+
+##
+## Local settings (for a user to set in his $HOME/.wgetrc). It is
+## *highly* undesirable to put these settings in the global file, since
+## they are potentially dangerous to "normal" users.
+##
+## Even when setting up your own ~/.wgetrc, you should know what you
+## are doing before doing so.
+##
+
+# Set this to on to use timestamping by default:
+#timestamping = off
+
+# It is a good idea to make Wget send your email address in a `From:'
+# header with your request (so that server administrators can contact
+# you in case of errors). Wget does *not* send `From:' by default.
+#header = From: Your Name
+
+# You can set up other headers, like Accept-Language. Accept-Language
+# is *not* sent by default.
+#header = Accept-Language: en
+
+# You can set the default proxies for Wget to use for http, https, and ftp.
+# They will override the value in the environment.
+#https_proxy = http://proxy.yoyodyne.com:18023/
+#http_proxy = http://proxy.yoyodyne.com:18023/
+#ftp_proxy = http://proxy.yoyodyne.com:18023/
+
+# If you do not want to use proxy at all, set this to off.
+#use_proxy = on
+
+# You can customize the retrieval outlook. Valid options are default,
+# binary, mega and micro.
+#dot_style = default
+
+# Setting this to off makes Wget not download /robots.txt. Be sure to
+# know *exactly* what /robots.txt is and how it is used before changing
+# the default!
+#robots = on
+
+# It can be useful to make Wget wait between connections. Set this to
+# the number of seconds you want Wget to wait.
+#wait = 0
+
+# You can force creating directory structure, even if a single is being
+# retrieved, by setting this to on.
+#dirstruct = off
+
+# You can turn on recursive retrieving by default (don't do this if
+# you are not sure you know what it means) by setting this to on.
+#recursive = off
+
+# To always back up file X as X.orig before converting its links (due
+# to -k / --convert-links / convert_links = on having been specified),
+# set this variable to on:
+#backup_converted = off
+
+# To have Wget follow FTP links from HTML files by default, set this
+# to on:
+#follow_ftp = off
+
+# To try ipv6 addresses first:
+#prefer-family = IPv6
+
+# Set default IRI support state
+#iri = off
+
+# Force the default system encoding
+#localencoding = UTF-8
+
+# Force the default remote server encoding
+#remoteencoding = UTF-8
+
+# Turn on to prevent following non-HTTPS links when in recursive mode
+httpsonly = on
+
+# Tune HTTPS security (auto, SSLv2, SSLv3, TLSv1, PFS)
+#secureprotocol = auto
+ca_certificate=/etc/ssl/certs/ca-certificates.crt
+
+# Custom HSTS caching file path
+hsts-file=~/.config/wget/wget-hsts
diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml
new file mode 100644
index 000000000..7091faaf1
--- /dev/null
+++ b/config/yazi/keymap.toml
@@ -0,0 +1,303 @@
+# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
+# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
+"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
+
+[manager]
+
+keymap = [
+ { on = "", run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
+ { on = "", run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
+ { on = "q", run = "quit", desc = "Exit the process" },
+ { on = "Q", run = "quit --no-cwd-file", desc = "Exit the process without writing cwd-file" },
+ { on = "", run = "close", desc = "Close the current tab, or quit if it is last tab" },
+ { on = "", run = "suspend", desc = "Suspend the process" },
+
+ # Hopping
+ { on = "k", run = "arrow -1", desc = "Move cursor up" },
+ { on = "j", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -50%", desc = "Move cursor up half page" },
+ { on = "", run = "arrow 50%", desc = "Move cursor down half page" },
+ { on = "", run = "arrow -100%", desc = "Move cursor up one page" },
+ { on = "", run = "arrow 100%", desc = "Move cursor down one page" },
+
+ { on = "", run = "arrow -50%", desc = "Move cursor up half page" },
+ { on = "", run = "arrow 50%", desc = "Move cursor down half page" },
+ { on = "", run = "arrow -100%", desc = "Move cursor up one page" },
+ { on = "", run = "arrow 100%", desc = "Move cursor down one page" },
+
+ { on = [ "g", "g" ], run = "arrow -99999999", desc = "Move cursor to the top" },
+ { on = "G", run = "arrow 99999999", desc = "Move cursor to the bottom" },
+
+ # Navigation
+ { on = "h", run = "leave", desc = "Go back to the parent directory" },
+ { on = "l", run = "enter", desc = "Enter the child directory" },
+
+ { on = "", run = "leave", desc = "Go back to the parent directory" },
+ { on = "", run = "enter", desc = "Enter the child directory" },
+
+ { on = "H", run = "back", desc = "Go back to the previous directory" },
+ { on = "L", run = "forward", desc = "Go forward to the next directory" },
+
+ # Seeking
+ { on = "K", run = "seek -5", desc = "Seek up 5 units in the preview" },
+ { on = "J", run = "seek 5", desc = "Seek down 5 units in the preview" },
+
+ # Selection
+ { on = "", run = [ "select --state=none", "arrow 1" ], desc = "Toggle the current selection state" },
+ { on = "v", run = "visual_mode", desc = "Enter visual mode (selection mode)" },
+ { on = "V", run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" },
+ { on = "", run = "select_all --state=true", desc = "Select all files" },
+ { on = "", run = "select_all --state=none", desc = "Inverse selection of all files" },
+
+ # Operation
+ { on = "o", run = "open", desc = "Open selected files" },
+ { on = "O", run = "open --interactive", desc = "Open selected files interactively" },
+ { on = "", run = "open", desc = "Open selected files" },
+ { on = "", run = "open --interactive", desc = "Open selected files interactively" },
+ { on = "y", run = "yank", desc = "Yank selected files (copy)" },
+ { on = "x", run = "yank --cut", desc = "Yank selected files (cut)" },
+ { on = "p", run = "paste", desc = "Paste yanked files" },
+ { on = "P", run = "paste --force", desc = "Paste yanked files (overwrite if the destination exists)" },
+ { on = "-", run = "link", desc = "Symlink the absolute path of yanked files" },
+ { on = "_", run = "link --relative", desc = "Symlink the relative path of yanked files" },
+ { on = "", run = "hardlink", desc = "Hardlink yanked files" },
+ { on = "Y", run = "unyank", desc = "Cancel the yank status" },
+ { on = "X", run = "unyank", desc = "Cancel the yank status" },
+ { on = "d", run = "remove", desc = "Trash selected files" },
+ { on = "D", run = "remove --permanently", desc = "Permanently delete selected files" },
+ { on = "a", run = "create", desc = "Create a file (ends with / for directories)" },
+ { on = "r", run = "rename --cursor=before_ext", desc = "Rename selected file(s)" },
+ { on = ";", run = "shell --interactive", desc = "Run a shell command" },
+ { on = ":", run = "shell --block --interactive", desc = "Run a shell command (block until finishes)" },
+ { on = ".", run = "hidden toggle", desc = "Toggle the visibility of hidden files" },
+ { on = "s", run = "search fd", desc = "Search files by name using fd" },
+ { on = "S", run = "search rg", desc = "Search files by content using ripgrep" },
+ { on = "", run = "escape --search", desc = "Cancel the ongoing search" },
+ { on = "z", run = "plugin zoxide", desc = "Jump to a directory using zoxide" },
+ { on = "Z", run = "plugin fzf", desc = "Jump to a directory or reveal a file using fzf" },
+
+ # Linemode
+ { on = [ "m", "s" ], run = "linemode size", desc = "Set linemode to size" },
+ { on = [ "m", "p" ], run = "linemode permissions", desc = "Set linemode to permissions" },
+ { on = [ "m", "c" ], run = "linemode ctime", desc = "Set linemode to ctime" },
+ { on = [ "m", "m" ], run = "linemode mtime", desc = "Set linemode to mtime" },
+ { on = [ "m", "o" ], run = "linemode owner", desc = "Set linemode to owner" },
+ { on = [ "m", "n" ], run = "linemode none", desc = "Set linemode to none" },
+
+ # Copy
+ { on = [ "c", "c" ], run = "copy path", desc = "Copy the file path" },
+ { on = [ "c", "d" ], run = "copy dirname", desc = "Copy the directory path" },
+ { on = [ "c", "f" ], run = "copy filename", desc = "Copy the filename" },
+ { on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the filename without extension" },
+
+ # Filter
+ { on = "f", run = "filter --smart", desc = "Filter files" },
+
+ # Find
+ { on = "/", run = "find --smart", desc = "Find next file" },
+ { on = "?", run = "find --previous --smart", desc = "Find previous file" },
+ { on = "n", run = "find_arrow", desc = "Go to the next found" },
+ { on = "N", run = "find_arrow --previous", desc = "Go to the previous found" },
+
+ # Sorting
+ { on = [ ",", "m" ], run = [ "sort modified --reverse=no", "linemode mtime" ], desc = "Sort by modified time" },
+ { on = [ ",", "M" ], run = [ "sort modified --reverse", "linemode mtime" ], desc = "Sort by modified time (reverse)" },
+ { on = [ ",", "c" ], run = [ "sort created --reverse=no", "linemode ctime" ], desc = "Sort by created time" },
+ { on = [ ",", "C" ], run = [ "sort created --reverse", "linemode ctime" ], desc = "Sort by created time (reverse)" },
+ { on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" },
+ { on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
+ { on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" },
+ { on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" },
+ { on = [ ",", "n" ], run = "sort natural --reverse=no", desc = "Sort naturally" },
+ { on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" },
+ { on = [ ",", "s" ], run = [ "sort size --reverse=no", "linemode size" ], desc = "Sort by size" },
+ { on = [ ",", "S" ], run = [ "sort size --reverse", "linemode size" ], desc = "Sort by size (reverse)" },
+ { on = [ ",", "r" ], run = "sort random --reverse=no", desc = "Sort randomly" },
+
+ # Goto
+ { on = [ "g", "h" ], run = "cd ~", desc = "Go to the home directory" },
+ { on = [ "g", "c" ], run = "cd ~/.config", desc = "Go to the config directory" },
+ { on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Go to the downloads directory" },
+ { on = [ "g", "" ], run = "cd --interactive", desc = "Go to a directory interactively" },
+
+ # Tabs
+ { on = "t", run = "tab_create --current", desc = "Create a new tab with CWD" },
+
+ { on = "1", run = "tab_switch 0", desc = "Switch to the first tab" },
+ { on = "2", run = "tab_switch 1", desc = "Switch to the second tab" },
+ { on = "3", run = "tab_switch 2", desc = "Switch to the third tab" },
+ { on = "4", run = "tab_switch 3", desc = "Switch to the fourth tab" },
+ { on = "5", run = "tab_switch 4", desc = "Switch to the fifth tab" },
+ { on = "6", run = "tab_switch 5", desc = "Switch to the sixth tab" },
+ { on = "7", run = "tab_switch 6", desc = "Switch to the seventh tab" },
+ { on = "8", run = "tab_switch 7", desc = "Switch to the eighth tab" },
+ { on = "9", run = "tab_switch 8", desc = "Switch to the ninth tab" },
+
+ { on = "[", run = "tab_switch -1 --relative", desc = "Switch to the previous tab" },
+ { on = "]", run = "tab_switch 1 --relative", desc = "Switch to the next tab" },
+
+ { on = "{", run = "tab_swap -1", desc = "Swap current tab with previous tab" },
+ { on = "}", run = "tab_swap 1", desc = "Swap current tab with next tab" },
+
+ # Tasks
+ { on = "w", run = "tasks_show", desc = "Show task manager" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "", run = "help", desc = "Open help" },
+]
+
+[tasks]
+
+keymap = [
+ { on = "", run = "close", desc = "Close task manager" },
+ { on = "", run = "close", desc = "Close task manager" },
+ { on = "", run = "close", desc = "Close task manager" },
+ { on = "w", run = "close", desc = "Close task manager" },
+
+ { on = "k", run = "arrow -1", desc = "Move cursor up" },
+ { on = "j", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "inspect", desc = "Inspect the task" },
+ { on = "x", run = "cancel", desc = "Cancel the task" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "", run = "help", desc = "Open help" },
+]
+
+[select]
+
+keymap = [
+ { on = "", run = "close", desc = "Cancel selection" },
+ { on = "", run = "close", desc = "Cancel selection" },
+ { on = "", run = "close", desc = "Cancel selection" },
+ { on = "", run = "close --submit", desc = "Submit the selection" },
+
+ { on = "k", run = "arrow -1", desc = "Move cursor up" },
+ { on = "j", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "", run = "help", desc = "Open help" },
+]
+
+[input]
+
+keymap = [
+ { on = "", run = "close", desc = "Cancel input" },
+ { on = "", run = "close --submit", desc = "Submit the input" },
+ { on = "", run = "escape", desc = "Go back the normal mode, or cancel input" },
+ { on = "", run = "escape", desc = "Go back the normal mode, or cancel input" },
+
+ # Mode
+ { on = "i", run = "insert", desc = "Enter insert mode" },
+ { on = "a", run = "insert --append", desc = "Enter append mode" },
+ { on = "I", run = [ "move -999", "insert" ], desc = "Move to the BOL, and enter insert mode" },
+ { on = "A", run = [ "move 999", "insert --append" ], desc = "Move to the EOL, and enter append mode" },
+ { on = "v", run = "visual", desc = "Enter visual mode" },
+ { on = "V", run = [ "move -999", "visual", "move 999" ], desc = "Enter visual mode and select all" },
+
+ # Character-wise movement
+ { on = "h", run = "move -1", desc = "Move back a character" },
+ { on = "l", run = "move 1", desc = "Move forward a character" },
+ { on = "", run = "move -1", desc = "Move back a character" },
+ { on = "", run = "move 1", desc = "Move forward a character" },
+ { on = "", run = "move -1", desc = "Move back a character" },
+ { on = "", run = "move 1", desc = "Move forward a character" },
+
+ # Word-wise movement
+ { on = "b", run = "backward", desc = "Move back to the start of the current or previous word" },
+ { on = "w", run = "forward", desc = "Move forward to the start of the next word" },
+ { on = "e", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" },
+ { on = "", run = "backward", desc = "Move back to the start of the current or previous word" },
+ { on = "", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" },
+
+ # Line-wise movement
+ { on = "0", run = "move -999", desc = "Move to the BOL" },
+ { on = "$", run = "move 999", desc = "Move to the EOL" },
+ { on = "", run = "move -999", desc = "Move to the BOL" },
+ { on = "", run = "move 999", desc = "Move to the EOL" },
+ { on = "", run = "move -999", desc = "Move to the BOL" },
+ { on = "", run = "move 999", desc = "Move to the EOL" },
+
+ # Delete
+ { on = "", run = "backspace", desc = "Delete the character before the cursor" },
+ { on = "", run = "backspace --under", desc = "Delete the character under the cursor" },
+ { on = "", run = "backspace", desc = "Delete the character before the cursor" },
+ { on = "", run = "backspace --under", desc = "Delete the character under the cursor" },
+
+ # Kill
+ { on = "", run = "kill bol", desc = "Kill backwards to the BOL" },
+ { on = "", run = "kill eol", desc = "Kill forwards to the EOL" },
+ { on = "", run = "kill backward", desc = "Kill backwards to the start of the current word" },
+ { on = "", run = "kill forward", desc = "Kill forwards to the end of the current word" },
+
+ # Cut/Yank/Paste
+ { on = "d", run = "delete --cut", desc = "Cut the selected characters" },
+ { on = "D", run = [ "delete --cut", "move 999" ], desc = "Cut until the EOL" },
+ { on = "c", run = "delete --cut --insert", desc = "Cut the selected characters, and enter insert mode" },
+ { on = "C", run = [ "delete --cut --insert", "move 999" ], desc = "Cut until the EOL, and enter insert mode" },
+ { on = "x", run = [ "delete --cut", "move 1 --in-operating" ], desc = "Cut the current character" },
+ { on = "y", run = "yank", desc = "Copy the selected characters" },
+ { on = "p", run = "paste", desc = "Paste the copied characters after the cursor" },
+ { on = "P", run = "paste --before", desc = "Paste the copied characters before the cursor" },
+
+ # Undo/Redo
+ { on = "u", run = "undo", desc = "Undo the last operation" },
+ { on = "", run = "redo", desc = "Redo the last operation" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "", run = "help", desc = "Open help" },
+]
+
+[completion]
+
+keymap = [
+ { on = "", run = "close", desc = "Cancel completion" },
+ { on = "", run = "close --submit", desc = "Submit the completion" },
+ { on = "", run = [ "close --submit", "close_input --submit" ], desc = "Submit the completion and input" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "", run = "help", desc = "Open help" },
+]
+
+[help]
+
+keymap = [
+ { on = "", run = "escape", desc = "Clear the filter, or hide the help" },
+ { on = "", run = "escape", desc = "Clear the filter, or hide the help" },
+ { on = "q", run = "close", desc = "Exit the process" },
+ { on = "", run = "close", desc = "Hide the help" },
+
+ # Navigation
+ { on = "k", run = "arrow -1", desc = "Move cursor up" },
+ { on = "j", run = "arrow 1", desc = "Move cursor down" },
+
+ { on = "", run = "arrow -1", desc = "Move cursor up" },
+ { on = "", run = "arrow 1", desc = "Move cursor down" },
+
+ # Filtering
+ { on = "f", run = "filter", desc = "Apply a filter for the help items" },
+]
diff --git a/config/yazi/theme.toml b/config/yazi/theme.toml
new file mode 100644
index 000000000..a514f6fc5
--- /dev/null
+++ b/config/yazi/theme.toml
@@ -0,0 +1,146 @@
+# vim:fileencoding=utf-8:foldmethod=marker
+
+# : Manager {{{
+
+[manager]
+cwd = { fg = "#83a598" }
+
+# Hovered
+hovered = { fg = "#282828", bg = "#83a598" }
+preview_hovered = { underline = true }
+
+# Find
+find_keyword = { fg = "#b8bb26", italic = true }
+find_position = { fg = "#fe8019", bg = "reset", italic = true }
+
+# Marker
+marker_selected = { fg = "#b8bb26", bg = "#b8bb26" }
+marker_copied = { fg = "#b8bb26", bg = "#b8bb26" }
+marker_cut = { fg = "#fb4934", bg = "#fb4934" }
+
+# Tab
+tab_active = { fg = "#282828", bg = "#504945" }
+tab_inactive = { fg = "#a89984", bg = "#3c3836" }
+tab_width = 1
+
+# Border
+border_symbol = "│"
+border_style = { fg = "#665c54" }
+
+# Highlighting
+# syntect_theme = "~/.config/yazi/Gruvbox-Dark.tmTheme"
+
+# : }}}
+
+
+# : Status {{{
+
+[status]
+separator_open = ""
+separator_close = ""
+separator_style = { fg = "#3c3836", bg = "#3c3836" }
+
+# Mode
+mode_normal = { fg = "#282828", bg = "#A89984", bold = true }
+mode_select = { fg = "#282828", bg = "#b8bb26", bold = true }
+mode_unset = { fg = "#282828", bg = "#d3869b", bold = true }
+
+# Progress
+progress_label = { fg = "#ebdbb2", bold = true }
+progress_normal = { fg = "#504945", bg = "#3c3836" }
+progress_error = { fg = "#fb4934", bg = "#3c3836" }
+
+# Permissions
+permissions_t = { fg = "#504945" }
+permissions_r = { fg = "#b8bb26" }
+permissions_w = { fg = "#fb4934" }
+permissions_x = { fg = "#b8bb26" }
+permissions_s = { fg = "#665c54" }
+
+# : }}}
+
+
+# : Input {{{
+
+[input]
+border = { fg = "#bdae93" }
+title = {}
+value = {}
+selected = { reversed = true }
+
+# : }}}
+
+
+# : Select {{{
+
+[select]
+border = { fg = "#504945" }
+active = { fg = "#fe8019" }
+inactive = {}
+
+# : }}}
+
+
+# : Tasks {{{
+
+[tasks]
+border = { fg = "#504945" }
+title = {}
+hovered = { underline = true }
+
+# : }}}
+
+
+# : Which {{{
+
+[which]
+mask = { bg = "#3c3836" }
+cand = { fg = "#83a598" }
+rest = { fg = "#928374" }
+desc = { fg = "#fe8019" }
+separator = " "
+separator_style = { fg = "#504945" }
+
+# : }}}
+
+
+# : Help {{{
+
+[help]
+on = { fg = "#fe8019" }
+exec = { fg = "#83a598" }
+desc = { fg = "#928374" }
+hovered = { bg = "#504945", bold = true }
+footer = { fg = "#3c3836", bg = "#a89984" }
+
+# : }}}
+
+
+# : File-specific styles {{{
+
+[filetype]
+
+rules = [
+ # Images
+ { mime = "image/*", fg = "#83a598" },
+
+ # Videos
+ { mime = "video/*", fg = "#b8bb26" },
+ { mime = "audio/*", fg = "#b8bb26" },
+
+ # Archives
+ { mime = "application/zip", fg = "#fe8019" },
+ { mime = "application/gzip", fg = "#fe8019" },
+ { mime = "application/x-tar", fg = "#fe8019" },
+ { mime = "application/x-bzip", fg = "#fe8019" },
+ { mime = "application/x-bzip2", fg = "#fe8019" },
+ { mime = "application/x-7z-compressed", fg = "#fe8019" },
+ { mime = "application/x-rar", fg = "#fe8019" },
+
+ # Fallback
+ { name = "*", fg = "#a89984" },
+ { name = "*/", fg = "#83a598" }
+]
+
+# : }}}
+
diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml
new file mode 100644
index 000000000..79b95f911
--- /dev/null
+++ b/config/yazi/yazi.toml
@@ -0,0 +1,201 @@
+# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
+# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
+"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
+
+[manager]
+ratio = [ 1, 4, 3 ]
+sort_by = "natural"
+sort_sensitive = false
+sort_reverse = false
+sort_dir_first = true
+sort_translit = false
+linemode = "none"
+show_hidden = false
+show_symlink = true
+scrolloff = 5
+mouse_events = [ "click", "scroll" ]
+title_format = "Yazi: {cwd}"
+
+[preview]
+tab_size = 2
+max_width = 600
+max_height = 900
+cache_dir = ""
+image_filter = "triangle"
+image_quality = 75
+sixel_fraction = 15
+ueberzug_scale = 1
+ueberzug_offset = [ 0, 0, 0, 0 ]
+
+[opener]
+edit = [
+ { run = '${EDITOR:-vi} "$@"', desc = "$EDITOR", block = true, for = "unix" },
+ { run = 'code %*', orphan = true, desc = "code", for = "windows" },
+ { run = 'code -w %*', block = true, desc = "code (block)", for = "windows" },
+]
+open = [
+ { run = 'xdg-open "$1"', desc = "Open", for = "linux" },
+ { run = 'open "$@"', desc = "Open", for = "macos" },
+ { run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" },
+]
+reveal = [
+ { run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" },
+ { run = 'open -R "$1"', desc = "Reveal", for = "macos" },
+ { run = 'explorer /select,"%1"', orphan = true, desc = "Reveal", for = "windows" },
+ { run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" },
+]
+extract = [
+ { run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" },
+ { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" },
+]
+play = [
+ { run = 'mpv --force-window "$@"', orphan = true, for = "unix" },
+ { run = 'mpv --force-window %*', orphan = true, for = "windows" },
+ { run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" },
+]
+
+[open]
+rules = [
+ # Folder
+ { name = "*/", use = [ "edit", "open", "reveal" ] },
+ # Text
+ { mime = "text/*", use = [ "edit", "reveal" ] },
+ # Image
+ { mime = "image/*", use = [ "open", "reveal" ] },
+ # Media
+ { mime = "{audio,video}/*", use = [ "play", "reveal" ] },
+ # Archive
+ { mime = "application/{,g}zip", use = [ "extract", "reveal" ] },
+ { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = [ "extract", "reveal" ] },
+ # JSON
+ { mime = "application/{json,x-ndjson}", use = [ "edit", "reveal" ] },
+ { mime = "*/javascript", use = [ "edit", "reveal" ] },
+ # Empty file
+ { mime = "inode/x-empty", use = [ "edit", "reveal" ] },
+ # Fallback
+ { name = "*", use = [ "open", "reveal" ] },
+]
+
+[tasks]
+micro_workers = 10
+macro_workers = 25
+bizarre_retry = 5
+image_alloc = 536870912 # 512MB
+image_bound = [ 0, 0 ]
+suppress_preload = false
+
+[plugin]
+
+fetchers = [
+ # Mimetype
+ { id = "mime", name = "*", run = "mime", if = "!mime", prio = "high" },
+]
+preloaders = [
+ # Image
+ { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
+ { mime = "image/*", run = "image" },
+ # Video
+ { mime = "video/*", run = "video" },
+ # PDF
+ { mime = "application/pdf", run = "pdf" },
+ # Font
+ { mime = "font/*", run = "font" },
+ { mime = "application/vnd.ms-opentype", run = "font" },
+]
+previewers = [
+ { name = "*/", run = "folder", sync = true },
+ # Code
+ { mime = "text/*", run = "code" },
+ { mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" },
+ # JSON
+ { mime = "application/{json,x-ndjson}", run = "json" },
+ # Image
+ { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
+ { mime = "image/*", run = "image" },
+ # Video
+ { mime = "video/*", run = "video" },
+ # PDF
+ { mime = "application/pdf", run = "pdf" },
+ # Archive
+ { mime = "application/{,g}zip", run = "archive" },
+ { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar,iso9660-image}", run = "archive" },
+ # Font
+ { mime = "font/*", run = "font" },
+ { mime = "application/vnd.ms-opentype", run = "font" },
+ # Empty file
+ { mime = "inode/x-empty", run = "empty" },
+ # Fallback
+ { name = "*", run = "file" },
+]
+
+[input]
+cursor_blink = false
+
+# cd
+cd_title = "Change directory:"
+cd_origin = "top-center"
+cd_offset = [ 0, 2, 50, 3 ]
+
+# create
+create_title = "Create:"
+create_origin = "top-center"
+create_offset = [ 0, 2, 50, 3 ]
+
+# rename
+rename_title = "Rename:"
+rename_origin = "hovered"
+rename_offset = [ 0, 1, 50, 3 ]
+
+# trash
+trash_title = "Move {n} selected file{s} to trash? (y/N)"
+trash_origin = "top-center"
+trash_offset = [ 0, 2, 50, 3 ]
+
+# delete
+delete_title = "Delete {n} selected file{s} permanently? (y/N)"
+delete_origin = "top-center"
+delete_offset = [ 0, 2, 50, 3 ]
+
+# filter
+filter_title = "Filter:"
+filter_origin = "top-center"
+filter_offset = [ 0, 2, 50, 3 ]
+
+# find
+find_title = [ "Find next:", "Find previous:" ]
+find_origin = "top-center"
+find_offset = [ 0, 2, 50, 3 ]
+
+# search
+search_title = "Search via {n}:"
+search_origin = "top-center"
+search_offset = [ 0, 2, 50, 3 ]
+
+# shell
+shell_title = [ "Shell:", "Shell (block):" ]
+shell_origin = "top-center"
+shell_offset = [ 0, 2, 50, 3 ]
+
+# overwrite
+overwrite_title = "Overwrite an existing file? (y/N)"
+overwrite_origin = "top-center"
+overwrite_offset = [ 0, 2, 50, 3 ]
+
+# quit
+quit_title = "{n} task{s} running, sure to quit? (y/N)"
+quit_origin = "top-center"
+quit_offset = [ 0, 2, 50, 3 ]
+
+[select]
+open_title = "Open with:"
+open_origin = "hovered"
+open_offset = [ 0, 1, 50, 7 ]
+
+[which]
+sort_by = "none"
+sort_sensitive = false
+sort_reverse = false
+sort_translit = false
+
+[log]
+enabled = false
diff --git a/user/.config/zathura/zathurarc b/config/zathura/zathurarc
similarity index 100%
rename from user/.config/zathura/zathurarc
rename to config/zathura/zathurarc
diff --git a/etc/bluetooth/main.conf b/etc/bluetooth/main.conf
new file mode 100644
index 000000000..7cb3dbdf7
--- /dev/null
+++ b/etc/bluetooth/main.conf
@@ -0,0 +1,348 @@
+[General]
+
+# Default adapter name
+# Defaults to 'BlueZ X.YZ'
+#Name = BlueZ
+
+# Default device class. Only the major and minor device class bits are
+# considered. Defaults to '0x000000'.
+#Class = 0x000100
+
+# How long to stay in discoverable mode before going back to non-discoverable
+# The value is in seconds. Default is 180, i.e. 3 minutes.
+# 0 = disable timer, i.e. stay discoverable forever
+#DiscoverableTimeout = 0
+
+# Always allow pairing even if there are no agent registered
+# Possible values: true, false
+# Default: false
+#AlwaysPairable = false
+
+# How long to stay in pairable mode before going back to non-discoverable
+# The value is in seconds. Default is 0.
+# 0 = disable timer, i.e. stay pairable forever
+#PairableTimeout = 0
+
+# Use vendor id source (assigner), vendor, product and version information for
+# DID profile support. The values are separated by ":" and assigner, VID, PID
+# and version.
+# Possible vendor id source values: bluetooth, usb (default) or false (disabled)
+#DeviceID = bluetooth:1234:5678:abcd
+
+# Do reverse service discovery for previously unknown devices that connect to
+# us. For BR/EDR this option is really only needed for qualification since the
+# BITE tester doesn't like us doing reverse SDP for some test cases, for LE
+# this disables the GATT client functionally so it can be used in system which
+# can only operate as peripheral (see also GATT Client option).
+# Defaults to 'true'.
+#ReverseServiceDiscovery = true
+
+# Enable name resolving after inquiry. Set it to 'false' if you don't need
+# remote devices name and want shorter discovery cycle. Defaults to 'true'.
+#NameResolving = true
+
+# Enable runtime persistency of debug link keys. Default is false which
+# makes debug link keys valid only for the duration of the connection
+# that they were created for.
+#DebugKeys = false
+
+# Restricts all controllers to the specified transport. Default value
+# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
+# Possible values: "dual", "bredr", "le"
+#ControllerMode = dual
+
+# Maximum number of controllers allowed to be exposed to the system.
+# Default=0 (unlimited)
+#MaxControllers=0
+
+# Enables Multi Profile Specification support. This allows to specify if
+# system supports only Multiple Profiles Single Device (MPSD) configuration
+# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
+# Devices (MPMD) configurations.
+# Possible values: "off", "single", "multiple"
+#MultiProfile = off
+
+# Permanently enables the Fast Connectable setting for adapters that
+# support it. When enabled other devices can connect faster to us,
+# however the tradeoff is increased power consumptions. This feature
+# will fully work only on kernel version 4.1 and newer. Defaults to
+# 'false'.
+#FastConnectable = false
+
+# Default privacy setting.
+# Enables use of private address.
+# Possible values for LE mode: "off", "network/on", "device"
+# Possible values for Dual mode: "off", "network/on", "device",
+# "limited-network", "limited-device"
+#
+# - off: Local privacy disabled.
+#
+# - network/on: A device will only accept advertising packets from peer
+# devices that contain private addresses. It may not be compatible with some
+# legacy devices since it requires the use of RPA(s) all the time.
+#
+# - device: A device in device privacy mode is only concerned about the
+# privacy of the device and will accept advertising packets from peer devices
+# that contain their Identity Address as well as ones that contain a private
+# address, even if the peer device has distributed its IRK in the past.
+
+# - limited-network: Apply Limited Discoverable Mode to advertising, which
+# follows the same policy as to BR/EDR that publishes the identity address when
+# discoverable, and Network Privacy Mode for scanning.
+#
+# - limited-device: Apply Limited Discoverable Mode to advertising, which
+# follows the same policy as to BR/EDR that publishes the identity address when
+# discoverable, and Device Privacy Mode for scanning.
+#
+# Defaults to "off"
+#Privacy = off
+
+# Specify the policy to the JUST-WORKS repairing initiated by peer
+# Possible values: "never", "confirm", "always"
+# Defaults to "never"
+#JustWorksRepairing = never
+
+# How long to keep temporary devices around
+# The value is in seconds. Default is 30.
+# 0 = disable timer, i.e. never keep temporary devices
+#TemporaryTimeout = 30
+
+# Enables the device to issue an SDP request to update known services when
+# profile is connected. Defaults to true.
+#RefreshDiscovery = true
+
+# Default Secure Connections setting.
+# Enables the Secure Connections setting for adapters that support it. It
+# provides better crypto algorithms for BT links and also enables CTKD (cross
+# transport key derivation) during pairing on any link.
+# Possible values: "off", "on", "only"
+# - "off": Secure Connections are disabled
+# - "on": Secure Connections are enabled when peer device supports them
+# - "only": we allow only Secure Connections
+# Defaults to "on"
+#SecureConnections = on
+
+# Enables D-Bus experimental interfaces
+# Possible values: true or false
+#Experimental = false
+
+# Enables D-Bus testing interfaces
+# Possible values: true or false
+#Testing = false
+
+# Enables kernel experimental features, alternatively a list of UUIDs
+# can be given.
+# Possible values: true,false,
+# Possible UUIDS:
+# d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug)
+# 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral)
+# 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy)
+# 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report)
+# a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs)
+# 6fbaf188-05e0-496a-9885-d6ddfdb4e03e (BlueZ Experimental ISO socket)
+# Defaults to false.
+#KernelExperimental = false
+
+# The duration to avoid retrying to resolve a peer's name, if the previous
+# try failed.
+# The value is in seconds. Default is 300, i.e. 5 minutes.
+#RemoteNameRequestRetryDelay = 300
+
+[BR]
+# The following values are used to load default adapter parameters for BR/EDR.
+# BlueZ loads the values into the kernel before the adapter is powered if the
+# kernel supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't
+# provided, the kernel will be initialized to it's default value. The actual
+# value will vary based on the kernel version and thus aren't provided here.
+# The Bluetooth Core Specification should be consulted for the meaning and valid
+# domain of each of these values.
+
+# BR/EDR Page scan activity configuration
+#PageScanType=
+#PageScanInterval=
+#PageScanWindow=
+
+# BR/EDR Inquiry scan activity configuration
+#InquiryScanType=
+#InquiryScanInterval=
+#InquiryScanWindow=
+
+# BR/EDR Link supervision timeout
+#LinkSupervisionTimeout=
+
+# BR/EDR Page Timeout
+#PageTimeout=
+
+# BR/EDR Sniff Intervals
+#MinSniffInterval=
+#MaxSniffInterval=
+
+[LE]
+# The following values are used to load default adapter parameters for LE.
+# BlueZ loads the values into the kernel before the adapter is powered if the
+# kernel supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't
+# provided, the kernel will be initialized to it's default value. The actual
+# value will vary based on the kernel version and thus aren't provided here.
+# The Bluetooth Core Specification should be consulted for the meaning and valid
+# domain of each of these values.
+# LE advertisement interval (used for legacy advertisement interface only)
+#MinAdvertisementInterval=
+#MaxAdvertisementInterval=
+#MultiAdvertisementRotationInterval=
+
+# LE scanning parameters used for passive scanning supporting auto connect
+# scenarios
+#ScanIntervalAutoConnect=
+#ScanWindowAutoConnect=
+
+# LE scanning parameters used for passive scanning supporting wake from suspend
+# scenarios
+#ScanIntervalSuspend=
+#ScanWindowSuspend=
+
+# LE scanning parameters used for active scanning supporting discovery
+# proceedure
+#ScanIntervalDiscovery=
+#ScanWindowDiscovery=
+
+# LE scanning parameters used for passive scanning supporting the advertisement
+# monitor Apis
+#ScanIntervalAdvMonitor=
+#ScanWindowAdvMonitor=
+
+# LE scanning parameters used for connection establishment.
+#ScanIntervalConnect=
+#ScanWindowConnect=
+
+# LE default connection parameters. These values are superceeded by any
+# specific values provided via the Load Connection Parameters interface
+#MinConnectionInterval=
+#MaxConnectionInterval=
+#ConnectionLatency=
+#ConnectionSupervisionTimeout=
+#Autoconnecttimeout=
+
+# Scan duration during interleaving scan. Only used when scanning for ADV
+# monitors. The units are msec.
+# Default: 300
+#AdvMonAllowlistScanDuration=
+# Default: 500
+#AdvMonNoFilterScanDuration=
+
+# Enable/Disable Advertisement Monitor interleave scan for power saving.
+# 0: disable
+# 1: enable
+# Defaults to 1
+#EnableAdvMonInterleaveScan=
+
+[GATT]
+# GATT attribute cache.
+# Possible values:
+# always: Always cache attributes even for devices not paired, this is
+# recommended as it is best for interoperability, with more consistent
+# reconnection times and enables proper tracking of notifications for all
+# devices.
+# yes: Only cache attributes of paired devices.
+# no: Never cache attributes
+# Default: always
+#Cache = always
+
+# Minimum required Encryption Key Size for accessing secured characteristics.
+# Possible values: 0 and 7-16. 0 means don't care.
+# Defaults to 0
+#KeySize = 0
+
+# Exchange MTU size.
+# Possible values: 23-517
+# Defaults to 517
+#ExchangeMTU = 517
+
+# Number of ATT channels
+# Possible values: 1-5 (1 disables EATT)
+# Default to 1
+#Channels = 1
+
+[CSIS]
+# SIRK - Set Identification Resolution Key which is common for all the
+# sets. They SIRK key is used to identify its sets. This can be any
+# 128 bit value or a string value (e.g. product name) which is then hashed.
+# Possible Values:
+# 16 byte hexadecimal value: 861FAE703ED681F0C50B34155B6434FB
+# String value: "My Product Name"
+# Defaults to none
+#SIRK =
+
+# SIRK Encryption
+# Possible values:
+# true: Encrypt SIRK when read
+# false: Do not encrypt SIRK when read. (plaintext)
+# Defaults to true
+#Encryption = true
+
+# Total no of sets belongs to this Profile
+# Defaults to 0
+#Size = 0
+
+# Rank for the device
+# Defaults to 0
+#Rank = 0
+
+# This enables the GATT client functionally, so it can be disabled in system
+# which can only operate as a peripheral.
+# Defaults to 'true'.
+#Client = true
+
+[AVDTP]
+# AVDTP L2CAP Signalling Channel Mode.
+# Possible values:
+# basic: Use L2CAP Basic Mode
+# ertm: Use L2CAP Enhanced Retransmission Mode
+#SessionMode = basic
+
+# AVDTP L2CAP Transport Channel Mode.
+# Possible values:
+# basic: Use L2CAP Basic Mode
+# streaming: Use L2CAP Streaming Mode
+#StreamMode = basic
+
+[Policy]
+#
+# The ReconnectUUIDs defines the set of remote services that should try
+# to be reconnected to in case of a link loss (link supervision
+# timeout). The policy plugin should contain a sane set of values by
+# default, but this list can be overridden here. By setting the list to
+# empty the reconnection feature gets disabled.
+#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb,0000110b-0000-1000-8000-00805f9b34fb
+
+# ReconnectAttempts define the number of attempts to reconnect after a link
+# lost. Setting the value to 0 disables reconnecting feature.
+#ReconnectAttempts=7
+
+# ReconnectIntervals define the set of intervals in seconds to use in between
+# attempts.
+# If the number of attempts defined in ReconnectAttempts is bigger than the
+# set of intervals the last interval is repeated until the last attempt.
+#ReconnectIntervals=1,2,4,8,16,32,64
+
+# AutoEnable defines option to enable all controllers when they are found.
+# This includes adapters present on start as well as adapters that are plugged
+# in later on. Defaults to 'true'.
+AutoEnable=false
+
+# Audio devices that were disconnected due to suspend will be reconnected on
+# resume. ResumeDelay determines the delay between when the controller
+# resumes from suspend and a connection attempt is made. A longer delay is
+# better for better co-existence with Wi-Fi.
+# The value is in seconds.
+# Default: 2
+#ResumeDelay = 2
+
+[AdvMon]
+# Default RSSI Sampling Period. This is used when a client registers an
+# advertisement monitor and leaves the RSSISamplingPeriod unset.
+# Possible values:
+# 0x00 Report all advertisements
+# N = 0xXX Report advertisements every N x 100 msec (range: 0x01 to 0xFE)
+# 0xFF Report only one advertisement per device during monitoring period
+# Default: 0xFF
+#RSSISamplingPeriod=0xFF
diff --git a/etc/default/grub b/etc/default/grub
new file mode 100644
index 000000000..4f3d68034
--- /dev/null
+++ b/etc/default/grub
@@ -0,0 +1,63 @@
+# GRUB boot loader configuration
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=2
+GRUB_DISTRIBUTOR="Arch"
+GRUB_CMDLINE_LINUX_DEFAULT="rd.luks.name== rd.luks.key== loglevel=3 quiet systemd.show_status=auto rd.udev.log_level=3 splash"
+GRUB_CMDLINE_LINUX=""
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable booting from LUKS encrypted devices
+GRUB_ENABLE_CRYPTODISK=y
+
+# Set to 'countdown' or 'hidden' to change timeout behavior,
+# press ESC key to display menu.
+GRUB_TIMEOUT_STYLE=hidden
+
+# Uncomment to use basic console
+GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `videoinfo'
+GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors. Used by normal and wallpaper
+# modes only. Entries specified as foreground/background.
+#GRUB_COLOR_NORMAL="light-blue/black"
+#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+#GRUB_THEME="/path/to/gfxtheme"
+
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+# Uncomment to make GRUB remember the last selection. This requires
+# setting 'GRUB_DEFAULT=saved' above.
+#GRUB_SAVEDEFAULT=true
+
+# Uncomment to disable submenus in boot menu
+#GRUB_DISABLE_SUBMENU=y
+
+# Probing for other operating systems is disabled for security reasons. Read
+# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
+# functionality install os-prober and uncomment to detect and include other
+# operating systems.
+GRUB_DISABLE_OS_PROBER=true
diff --git a/etc/issue b/etc/issue
new file mode 100644
index 000000000..96a033257
--- /dev/null
+++ b/etc/issue
@@ -0,0 +1,13 @@
+ [0;37;40m
+ [1;34;40m [0;37;40m [1;34;40m [0;37;40m [1;34;40m [0;37;40m [1;37;40m###[0;37;40m [1;34;40m###[0;37;40m [1;37;40m##[0;37;40m
+ [1;34;40m [0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;34;40m##[0;37;40m
+ [1;34;40m┌ #### [1;37;40m###[0;37;40m [1;37;40m###[0;37;40m [1;34;40m [0;37;40m [1;37;40m####[0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;37;40m###[0;37;40m [1;34;40m##[0;37;40m [1;37;40m### ###[0;37;40m [1;37;40m###[0;37;40m [1;37;40m###[0;37;40m [1;37;40m###[0;37;40m [1;31;40m ###[0;37;40m [1;31;40m###[0;37;40m
+ [1;34;40m│ [0;37;40m [1;34;40m## [0;37;40m [1;37;40m###[0;37;40m [1;37;40m##[1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m###[0;37;40m [1;31;40m [1;37;40m##[0;37;40m [1;34;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m###[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;31;40m [0;37;40m [1;31;40m##[0;37;40m [1;31;40m##[0;37;40m
+ [1;34;40m│ ##### [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;34;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;31;40m [0;37;40m [1;31;40m###[0;37;40m
+ [1;34;40m│ ##[0;37;40m [1;34;40m## [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;34;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m##[0;37;40m [1;37;40m ##[0;37;40m [1;31;40m [0;37;40m [1;31;40m##[0;37;40m [1;31;40m## [0;37;40m
+ [1;34;40m│ ###### [0;37;40m [1;37;40m##[0;37;40m [1;34;40m [0;37;40m [1;37;40m####[0;37;40m [1;34;40m [1;37;40m###[0;37;40m [1;37;40m###[0;37;40m [1;34;40m####[0;37;40m [1;37;40m####[0;37;40m [1;37;40m###[0;37;40m [1;37;40m###[0;37;40m [1;37;40m######[0;37;40m [1;31;40m ###[0;37;40m [1;34;40m [1;31;40m ###[0;37;40m
+ [1;34;40m└───────────────────────────────────────────[0;36;40m A simple, lightweight distribution.
+ [0;37;40m
+ OS: Arch\s Kernel: \r Processor: \m TTY: \l
+[0m
+
diff --git a/etc/mkinitcpio.conf b/etc/mkinitcpio.conf
new file mode 100644
index 000000000..689eb1e24
--- /dev/null
+++ b/etc/mkinitcpio.conf
@@ -0,0 +1,81 @@
+# vim:set ft=sh
+# MODULES
+# The following modules are loaded before any boot hooks are
+# run. Advanced users may wish to specify all system modules
+# in this array. For instance:
+# MODULES=(usbhid xhci_hcd)
+MODULES=(i915)
+
+# BINARIES
+# This setting includes any additional binaries a given user may
+# wish into the CPIO image. This is run last, so it may be used to
+# override the actual binaries included by a given hook
+# BINARIES are dependency parsed, so you may safely ignore libraries
+BINARIES=()
+
+# FILES
+# This setting is similar to BINARIES above, however, files are added
+# as-is and are not parsed in any way. This is useful for config files.
+FILES=(/boot/volume.key)
+
+# HOOKS
+# This is the most important setting in this file. The HOOKS control the
+# modules and scripts added to the image, and what happens at boot time.
+# Order is important, and it is recommended that you do not change the
+# order in which HOOKS are added. Run 'mkinitcpio -H ' for
+# help on a given hook.
+# 'base' is _required_ unless you know precisely what you are doing.
+# 'udev' is _required_ in order to automatically load modules
+# 'filesystems' is _required_ unless you specify your fs modules in MODULES
+# Examples:
+## This setup specifies all modules in the MODULES setting above.
+## No RAID, lvm2, or encrypted root is needed.
+# HOOKS=(base)
+#
+## This setup will autodetect all modules for your system and should
+## work as a sane default
+# HOOKS=(base udev autodetect modconf block filesystems fsck)
+#
+## This setup will generate a 'full' image which supports most systems.
+## No autodetection is done.
+# HOOKS=(base udev modconf block filesystems fsck)
+#
+## This setup assembles a mdadm array with an encrypted root file system.
+## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
+# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
+#
+## This setup loads an lvm2 volume group.
+# HOOKS=(base udev modconf block lvm2 filesystems fsck)
+#
+## This will create a systemd based initramfs which loads an encrypted root filesystem.
+# HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
+#
+## NOTE: If you have /usr on a separate partition, you MUST include the
+# usr and fsck hooks.
+HOOKS=(base systemd plymouth autodetect microcode modconf kms keyboard keymap sd-vconsole block sd-encrypt lvm2 filesystems fsck)
+
+# COMPRESSION
+# Use this to compress the initramfs image. By default, zstd compression
+# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
+# Use 'cat' to create an uncompressed image.
+#COMPRESSION="zstd"
+#COMPRESSION="gzip"
+#COMPRESSION="bzip2"
+#COMPRESSION="lzma"
+#COMPRESSION="xz"
+#COMPRESSION="lzop"
+#COMPRESSION="lz4"
+
+# COMPRESSION_OPTIONS
+# Additional options for the compressor
+#COMPRESSION_OPTIONS=()
+
+# MODULES_DECOMPRESS
+# Decompress loadable kernel modules and their firmware during initramfs
+# creation. Switch (yes/no).
+# Enable to allow further decreasing image size when using high compression
+# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
+# at early boot.
+# Note that any compressed files will be placed in the uncompressed early CPIO
+# to avoid double compression.
+#MODULES_DECOMPRESS="no"
diff --git a/etc/pacman.conf b/etc/pacman.conf
new file mode 100644
index 000000000..c834223c6
--- /dev/null
+++ b/etc/pacman.conf
@@ -0,0 +1,100 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+#DBPath = /var/lib/pacman/
+#CacheDir = /var/cache/pacman/pkg/
+#LogFile = /var/log/pacman.log
+#GPGDir = /etc/pacman.d/gnupg/
+#HookDir = /etc/pacman.d/hooks/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg =
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+Color
+#NoProgressBar
+CheckSpace
+#VerbosePkgLists
+ParallelDownloads = 5
+ILoveCandy
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+# - can be defined here or included from another file
+# - pacman will search repositories in the order defined here
+# - local/custom mirrors can be added here or in separate files
+# - repositories listed first will take precedence when packages
+# have identical names, regardless of version number
+# - URLs will have $repo replaced by the name of the current repo
+# - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+# [repo-name]
+# Server = ServerName
+# Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[core-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+#[extra-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+#[multilib]
+#Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository. See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+[chaotic-aur]
+Include = /etc/pacman.d/chaotic-mirrorlist
diff --git a/etc/pam.d/login b/etc/pam.d/login
new file mode 100644
index 000000000..3f8c286c2
--- /dev/null
+++ b/etc/pam.d/login
@@ -0,0 +1,9 @@
+#%PAM-1.0
+
+auth requisite pam_nologin.so
+auth include system-local-login
+auth optional pam_gnome_keyring.so
+account include system-local-login
+session include system-local-login
+password include system-local-login
+session optional pam_gnome_keyring.so auto_start
diff --git a/home/.bash_profile b/home/.bash_profile
new file mode 100644
index 000000000..3c41fe175
--- /dev/null
+++ b/home/.bash_profile
@@ -0,0 +1,75 @@
+#!/usr/bin/env bash
+
+# Home folders
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_CONFIG_HOME="$HOME/.config"
+
+# Sanely export XDG Base dir variables
+eval "$(sed 's/^[^#].*/export &/g;t;d' ~/.config/user-dirs.dirs)"
+
+# Clean home
+export W3M_DIR="$XDG_DATA_HOME/w3m"
+export GTK2_RC_FILES="$HOME/.config/gtk-2.0/gtkrc-2.0"
+export WGETDIR="$XDG_CONFIG_HOME/wget"
+export WGETRC="$WGETDIR/wgetrc"
+export INPUTRC="$HOME/.config/X11/inputrc"
+export GNUPGHOME="$HOME/.local/share/gnupg"
+export LESSHISTFILE="-"
+export BASHRC="$HOME/.bashrc"
+export GOPATH="$HOME/.go"
+
+# Default apps
+export TERMINAL="foot"
+export EDITOR="$HOME/.local/bin/lvim"
+export VISUAL="neovide --neovim-bin $EDITOR"
+export BROWSER="brave"
+export VIEWER="zathura"
+
+# Set path
+if [ -d "$HOME/.bin" ]; then
+ PATH="$HOME/.bin:$PATH"
+fi
+if [ -d "$HOME/.local/bin" ]; then
+ PATH="$HOME/.local/bin:$PATH"
+fi
+if [ -d "$HOME/.cargo/bin" ]; then
+ PATH="$HOME/.cargo/bin:$PATH"
+fi
+if [ -d "$GOPATH/bin" ]; then
+ PATH="$GOPATH/bin:$PATH"
+fi
+if [ -d "$HOME/.local/lib/flutter/bin" ]; then
+ PATH="$HOME/.local/lib/flutter/bin:$PATH"
+fi
+if [ -d $HOME/.dotnet/tools ]; then
+ PATH="$HOME/.dotnet/tools:$PATH"
+fi
+if [ -d "$HOME/Applications" ]; then
+ PATH="$HOME/Applications:$PATH"
+fi
+if [ -d "$XDG_DATA_HOME/JetBrains/Toolbox/scripts" ]; then
+ PATH="$XDG_DATA_HOME/JetBrains/Toolbox/scripts:$PATH"
+fi
+if [ -d "$HOME/.config/vifm/scripts" ]; then
+ PATH="$HOME/.config/vifm/scripts:$PATH"
+fi
+
+# export SSH_AUTH_SOCK
+if [[ -z "${SSH_CONNECTION}" ]]; then
+ export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
+fi
+
+# Create config directories if they don't exist
+if [ ! -d "$WGETDIR" ] || [ ! -d "$GNUPGHOME" ]; then
+ mkdir -p "$WGETDIR" "$GNUPGHOME"
+fi
+
+# Bashrc
+source "$BASHRC"
+
+# Starting wayland session
+if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
+ sh "$HOME/.config/sway/winitrc" &>/dev/null
+ logout
+fi
diff --git a/home/.bashrc b/home/.bashrc
new file mode 100644
index 000000000..8dcb7c0cf
--- /dev/null
+++ b/home/.bashrc
@@ -0,0 +1,295 @@
+### EXPORT ###
+export TERM="xterm-256color" # getting proper colors
+export HISTCONTROL=ignoredups:erasedups # no duplicate entries
+
+### "bat" as manpager
+export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -lman'"
+
+# use bash-completion, if available
+[[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \
+ . /usr/share/bash-completion/bash_completion
+
+# if not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+### SET VI MODE ###
+# Comment this line out to enable default emacs-like bindings
+set -o vi
+bind -m vi-command 'Control-l: clear-screen'
+bind -m vi-insert 'Control-l: clear-screen'
+
+### CHANGE TITLE OF TERMINALS ###
+case ${TERM} in
+ xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|alacritty|st|konsole*)
+ PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
+ ;;
+ screen*)
+ PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"'
+ ;;
+esac
+
+### SHOPT ###
+shopt -s autocd # change to named directory
+shopt -s cdspell # autocorrects cd misspellings
+shopt -s cmdhist # save multi-line commands in history as single line
+shopt -s dotglob
+shopt -s histappend # do not overwrite history
+shopt -s expand_aliases # expand aliases
+shopt -s checkwinsize # checks term size when bash regains control
+
+# ignore upper and lowercase when TAB completion
+bind "set completion-ignore-case on"
+
+# sudo not required for some system commands
+for command in cryptsetup mount umount poweroff reboot ; do
+alias $command="sudo $command"
+done; unset command
+
+### ARCHIVE EXTRACTION ###
+# usage: ex
+function ex() {
+ if [ -f "$1" ] ; then
+ case $1 in
+ *.tar.bz2) tar xjf "$1" ;;
+ *.tar.gz) tar xzf "$1" ;;
+ *.bz2) bunzip2 "$1" ;;
+ *.rar) unrar x "$1" ;;
+ *.gz) gunzip "$1" ;;
+ *.tar) tar xf "$1" ;;
+ *.tbz2) tar xjf "$1" ;;
+ *.tgz) tar xzf "$1" ;;
+ *.zip) unzip "$1" ;;
+ *.Z) uncompress "$1";;
+ *.7z) 7zz x "$1" ;;
+ *.deb) ar x "$1" ;;
+ *.tar.xz) tar xf "$1" ;;
+ *.tar.zst) unzstd "$1" ;;
+ *) echo "'$1' cannot be extracted via ex()" ;;
+ esac
+ else
+ echo "'$1' is not a valid file"
+ fi
+}
+
+### ALIASES ###
+# navigation
+function up () {
+ local d=""
+ local limit="$1"
+
+ # Default to limit of 1
+ if [ -z "$limit" ] || [ "$limit" -le 0 ]; then
+ limit=1
+ fi
+
+ for ((i=1;i<=limit;i++)); do
+ d="../$d"
+ done
+
+ # perform cd. Show error if cd fails
+ if ! cd "$d"; then
+ echo "Couldn't go up $limit dirs.";
+ fi
+}
+
+# unlock ssh keys
+function unlock() {
+ ssh-add "$HOME/.ssh/$1"
+}
+
+# cd
+alias \
+ ..="cd .." \
+ .2="cd ../.." \
+ .3="cd ../../.." \
+ .4="cd ../../../.." \
+ .5="cd ../../../../.."
+
+# bat as cat
+[ -x "$(command -v bat)" ] && alias cat="bat"
+
+# fastfetch as neofetch
+[ -x "$(command -v fastfetch)" ] && alias neofetch="fastfetch"
+
+# use lunarvim or neovim for vim if present.
+if [ -x "$(command -v $HOME/.local/bin/lvim)" ]; then
+ alias vim="$HOME/.local/bin/lvim"
+elif [ -x "$(command -v nvim)" ]; then
+ alias vim="nvim"
+fi
+
+# Changing "ls" to "eza"
+[ -x "$(command -v eza)" ] && alias \
+ ls="eza --icons -al --color=always --group-directories-first" \
+ la="eza --icons -a --color=always --group-directories-first" \
+ ll="eza --icons -l --color=always --group-directories-first" \
+ lt="eza --icons -aT --color=always --group-directories-first" \
+ l.='eza --icons -a | grep -E "^\."'
+
+# function to detect os and assign aliases to package managers
+alias \
+ pkg-update="paru -Syyu" \
+ pkg-install="paru -S" \
+ pkg-remove="paru -Rcns" \
+ pkg-remove-sec="paru -R" \
+ pkg-autoremove="paru -Scc && paru -Rns (pacman -Qtdq)" \
+ pkg-search="paru -Ss"
+
+# colorize grep output (good for log files)
+alias \
+ grep="grep --color=auto" \
+ egrep="egrep --color=auto" \
+ fgrep="fgrep --color=auto"
+
+# git
+alias \
+ git-adu="git add -u" \
+ git-adl="git add ." \
+ git-brn="git branch" \
+ git-chk="git checkout" \
+ git-cln="git clone" \
+ git-cmt="git commit -m" \
+ git-fth="git fetch" \
+ git-pll="git pull origin" \
+ git-psh="git push origin" \
+ git-sts="git status" \
+ git-tag="git tag" \
+ git-ntg="git tag -a"
+
+# adding flags
+alias \
+ df="df -h" \
+ free="free -m"
+
+# multimedia scripts
+alias \
+ fli="flix-cli" \
+ ani="ani-cli" \
+ aniq="ani-cli -q"
+
+# audio
+alias \
+ mx="pulsemixer" \
+ mk="cmus" \
+ ms="cmus" \
+ music="cmus"
+
+# power management
+alias \
+ po="systemctl poweroff" \
+ sp="systemctl suspend" \
+ rb="systemctl reboot"
+
+# file management
+alias \
+ fm="yazi" \
+ flm="yazi" \
+ rm="rm -vI" \
+ mv="mv -iv" \
+ cp="cp -iv" \
+ mkd="mkdir -pv"
+
+# ps
+alias \
+ psa="ps auxf" \
+ psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" \
+ psmem="ps auxf | sort -nr -k 4" \
+ pscpu="ps auxf | sort -nr -k 3"
+
+# youtube
+alias \
+ yta-aac="yt-dlp --extract-audio --audio-format aac" \
+ yta-best="yt-dlp --extract-audio --audio-format best" \
+ yta-flac="yt-dlp --extract-audio --audio-format flac" \
+ yta-m4a="yt-dlp --extract-audio --audio-format m4a" \
+ yta-mp3="yt-dlp --extract-audio --audio-format mp3" \
+ yta-opus="yt-dlp --extract-audio --audio-format opus" \
+ yta-vorbis="yt-dlp --extract-audio --audio-format vorbis" \
+ yta-wav="yt-dlp --extract-audio --audio-format wav" \
+ ytv-best="yt-dlp -f bestvideo+bestaudio" \
+ yt="ytfzf -ftsl" \
+ ytm="ytfzf -mtsl"
+
+# network and bluetooth
+alias \
+ netstats="nmcli dev" \
+ wfi="nmtui-connect" \
+ wfi-scan="nmcli dev wifi rescan && nmcli dev wifi list" \
+ wfi-edit="nmtui-edit" \
+ wfi-on="nmcli radio wifi on" \
+ wfi-off="nmcli radio wifi off" \
+ blt="bluetoothctl"
+
+# Automatically add completion for all aliases to commands having completion functions
+# this currently slows startup a bit, but it isn't terrible
+function alias_completion {
+ local namespace="alias_completion"
+
+ # parse function based completion definitions, where capture group 2 => function and 3 => trigger
+ local compl_regex='complete( +[^ ]+)* -F ([^ ]+) ("[^"]+"|[^ ]+)'
+ # parse alias definitions, where capture group 1 => trigger, 2 => command, 3 => command arguments
+ local alias_regex="alias ([^=]+)='(\"[^\"]+\"|[^ ]+)(( +[^ ]+)*)'"
+
+ # create array of function completion triggers, keeping multi-word triggers together
+ eval "local completions=($(complete -p | sed -Ene "/$compl_regex/s//'\3'/p"))"
+ (( ${#completions[@]} == 0 )) && return 0
+
+ # create temporary file for wrapper functions and completions
+ command rm -f "/tmp/${namespace}-*.tmp" &> /dev/null # preliminary cleanup
+ local tmp_file; tmp_file="$(mktemp "/tmp/${namespace}-${RANDOM}XXX.tmp")" || return 1
+
+ local completion_loader; completion_loader="$(complete -p -D 2>/dev/null | sed -Ene 's/.* -F ([^ ]*).*/\1/p')"
+
+ # read in " '' ''" lines from defined aliases
+ local line; while read line; do
+ eval "local alias_tokens; alias_tokens=($line)" 2>/dev/null || continue # some alias arg patterns cause an eval parse error
+ local alias_name="${alias_tokens[0]}" alias_cmd="${alias_tokens[1]}" alias_args="${alias_tokens[2]# }"
+
+ # skip aliases to pipes, boolean control structures and other command lists
+ # (leveraging that eval errs out if $alias_args contains unquoted shell metacharacters)
+ eval "local alias_arg_words; alias_arg_words=($alias_args)" 2>/dev/null || continue
+ # avoid expanding wildcards
+ read -a alias_arg_words <<< "$alias_args"
+
+ # skip alias if there is no completion function triggered by the aliased command
+ if [[ ! " ${completions[*]} " =~ " $alias_cmd " ]]; then
+ if [[ -n "$completion_loader" ]]; then
+ # force loading of completions for the aliased command
+ eval "$completion_loader $alias_cmd"
+ # 124 means completion loader was successful
+ [[ $? -eq 124 ]] || continue
+ completions+=($alias_cmd)
+ else
+ continue
+ fi
+ fi
+ local new_completion="$(complete -p "$alias_cmd")"
+
+ # create a wrapper inserting the alias arguments if any
+ if [[ -n $alias_args ]]; then
+ local compl_func="${new_completion/#* -F /}"; compl_func="${compl_func%% *}"
+ # avoid recursive call loops by ignoring our own functions
+ if [[ "${compl_func#_$namespace::}" == $compl_func ]]; then
+ local compl_wrapper="_${namespace}::${alias_name}"
+ echo "function $compl_wrapper {
+ (( COMP_CWORD += ${#alias_arg_words[@]} ))
+ COMP_WORDS=($alias_cmd $alias_args \${COMP_WORDS[@]:1})
+ (( COMP_POINT -= \${#COMP_LINE} ))
+ COMP_LINE=\${COMP_LINE/$alias_name/$alias_cmd $alias_args}
+ (( COMP_POINT += \${#COMP_LINE} ))
+ $compl_func
+ }" >> "$tmp_file"
+ new_completion="${new_completion/ -F $compl_func / -F $compl_wrapper }"
+ fi
+ fi
+
+ # replace completion trigger by alias
+ new_completion="${new_completion% *} $alias_name"
+ echo "$new_completion" >> "$tmp_file"
+ done < <(alias -p | sed -Ene "s/$alias_regex/\1 '\2' '\3'/p")
+ source "$tmp_file" && command rm -f "$tmp_file" &> /dev/null
+}; alias_completion
+
+# starship prompt
+eval "$(starship init bash)"
+eval "$(zoxide init bash)"
diff --git a/local/share/icons/default/index.theme b/local/share/icons/default/index.theme
new file mode 100644
index 000000000..639d6cc3f
--- /dev/null
+++ b/local/share/icons/default/index.theme
@@ -0,0 +1,4 @@
+[Icon Theme]
+Name=Default
+Comment=Default Cursor Theme
+Inherits=Simp1e-Gruvbox-Dark
diff --git a/system/etc/pam.d/sudo b/system/etc/pam.d/sudo
deleted file mode 100644
index fee24b319..000000000
--- a/system/etc/pam.d/sudo
+++ /dev/null
@@ -1,5 +0,0 @@
-#%PAM-1.0
-auth sufficient pam_fprintd.so
-auth include system-auth
-account include system-auth
-session include system-auth
diff --git a/system/etc/pam.d/system-local-login b/system/etc/pam.d/system-local-login
deleted file mode 100644
index 5ccafc20f..000000000
--- a/system/etc/pam.d/system-local-login
+++ /dev/null
@@ -1,7 +0,0 @@
-#%PAM-1.0
-
-auth sufficient pam_fprintd.so
-auth include system-login
-account include system-login
-password include system-login
-session include system-login
diff --git a/system/etc/sv/runsvdir-drk/run b/system/etc/sv/runsvdir-drk/run
deleted file mode 100755
index ffd45de53..000000000
--- a/system/etc/sv/runsvdir-drk/run
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-export USER="drk"
-export HOME="/home/$USER"
-export XDG_RUNTIME_DIR="/run/user/$(id -u $USER)"
-mkdir $XDG_RUNTIME_DIR
-chown $USER:$USER $XDG_RUNTIME_DIR
-
-groups="$(id -Gn "$USER" | tr ' ' ':')"
-svdir="$HOME/.config/services"
-mkdir -p "$svdir"
-chown $USER:$USER "$svdir"
-
-exec chpst -u "$USER:$groups" runsvdir "$svdir"
diff --git a/user/.bash_profile b/user/.bash_profile
deleted file mode 100644
index 3d6d468f7..000000000
--- a/user/.bash_profile
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-## ____ __
-## / __ \_________ _/ /_____
-## / / / / ___/ __ `/ //_/ _ \
-## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake)
-## /_____/_/ \__,_/_/|_|\___/ My custom bash_profile config
-##
-#
-
-# Home folders
-export XDG_DATA_HOME="$HOME/.local/share"
-export XDG_CACHE_HOME="$HOME/.cache"
-export XDG_CONFIG_HOME="$HOME/.config"
-
-export X11CFGDIR="$XDG_CONFIG_HOME/X11"
-export XINITRC="$X11CFGDIR/xinitrc"
-
-# Sanely export XDG Base dir variables
-eval "$(sed 's/^[^#].*/export &/g;t;d' ~/.config/user-dirs.dirs)"
-
-# Clean home
-export W3M_DIR="$XDG_DATA_HOME/w3m"
-export GTK2_RC_FILES="$HOME/.config/gtk-2.0/gtkrc-2.0"
-export WGETDIR="$XDG_CONFIG_HOME/wget"
-export WGETRC="$WGETDIR/wgetrc"
-export INPUTRC="$HOME/.config/X11/inputrc"
-export GNUPGHOME="$HOME/.local/share/gnupg"
-export LESSHISTFILE="-"
-export BASHRC="$HOME/.bashrc"
-
-# Default apps
-export TERM="wezterm"
-export EDITOR="$HOME/.local/bin/lvim"
-export VISUAL="$HOME/.local/bin/neovide"
-export BROWSER="flatpak run org.mozilla.firefox"
-export VIEWER="zathura"
-
-# Bashrc
-source "$BASHRC"
-
-# Create config directories if they don't exist
-if [ ! -d "$WGETDIR" ] || [ ! -d "$GNUPGHOME" ]; then
- mkdir -p "$WGETDIR" "$GNUPGHOME"
-fi
-
-# starting xsession
-if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
- sh "$HOME/.config/sway/winitrc" &>/dev/null
- logout
-fi
diff --git a/user/.bashrc b/user/.bashrc
deleted file mode 100644
index 2d32d4a9b..000000000
--- a/user/.bashrc
+++ /dev/null
@@ -1,231 +0,0 @@
-## ____ __
-## / __ \_________ _/ /_____
-## / / / / ___/ __ `/ //_/ _ \
-## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake)
-## /_____/_/ \__,_/_/|_|\___/ My custom bash config
-##
-
-### EXPORT ###
-export TERM="xterm-256color" # getting proper colors
-export HISTCONTROL=ignoredups:erasedups # no duplicate entries
-
-### "bat" as manpager
-export PAGER="bat -p"
-
-# use bash-completion, if available
-[[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \
- . /usr/share/bash-completion/bash_completion
-
-# if not running interactively, don't do anything
-[[ $- != *i* ]] && return
-
-### SET VI MODE ###
-# Comment this line out to enable default emacs-like bindings
-set -o vi
-bind -m vi-command 'Control-l: clear-screen'
-bind -m vi-insert 'Control-l: clear-screen'
-
-### PATH ###
-if [ -d "$HOME/.bin" ] ;
- then PATH="$HOME/.bin:$PATH"
-fi
-if [ -d "$HOME/.local/bin" ] ;
- then PATH="$HOME/.local/bin:$PATH"
-fi
-if [ -d "$HOME/Applications" ] ;
- then PATH="$HOME/Applications:$PATH"
-fi
-
-### CHANGE TITLE OF TERMINALS ###
-case ${TERM} in
- xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|alacritty|st|konsole*)
- PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
- ;;
- screen*)
- PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"'
- ;;
-esac
-
-### SHOPT ###
-shopt -s autocd # change to named directory
-shopt -s cdspell # autocorrects cd misspellings
-shopt -s cmdhist # save multi-line commands in history as single line
-shopt -s dotglob
-shopt -s histappend # do not overwrite history
-shopt -s expand_aliases # expand aliases
-shopt -s checkwinsize # checks term size when bash regains control
-
-# ignore upper and lowercase when TAB completion
-bind "set completion-ignore-case on"
-
-# sudo not required for some system commands
-for command in cryptsetup mount umount poweroff reboot ; do
-alias $command="sudo $command"
-done; unset command
-
-### ARCHIVE EXTRACTION ###
-# usage: ex
-ex ()
-{
- if [ -f "$1" ] ; then
- case $1 in
- *.tar.bz2) tar xjf "$1" ;;
- *.tar.gz) tar xzf "$1" ;;
- *.bz2) bunzip2 "$1" ;;
- *.rar) unrar x "$1" ;;
- *.gz) gunzip "$1" ;;
- *.tar) tar xf "$1" ;;
- *.tbz2) tar xjf "$1" ;;
- *.tgz) tar xzf "$1" ;;
- *.zip) unzip "$1" ;;
- *.Z) uncompress "$1";;
- *.7z) 7zz x "$1" ;;
- *.deb) ar x "$1" ;;
- *.tar.xz) tar xf "$1" ;;
- *.tar.zst) unzstd "$1" ;;
- *) echo "'$1' cannot be extracted via ex()" ;;
- esac
- else
- echo "'$1' is not a valid file"
- fi
-}
-
-### ALIASES ###
-# navigation
-up () {
- local d=""
- local limit="$1"
-
- # Default to limit of 1
- if [ -z "$limit" ] || [ "$limit" -le 0 ]; then
- limit=1
- fi
-
- for ((i=1;i<=limit;i++)); do
- d="../$d"
- done
-
- # perform cd. Show error if cd fails
- if ! cd "$d"; then
- echo "Couldn't go up $limit dirs.";
- fi
-}
-
-# cd
-alias \
- ..="cd .." \
- .2="cd ../.." \
- .3="cd ../../.." \
- .4="cd ../../../.." \
- .5="cd ../../../../.."
-
-# bat as cat
-[ -x "$(command -v bat)" ] && alias cat="bat"
-
-# use lunarvim for vim if present.
-[ -x "$(command -v $HOME/.local/bin/lvim)" ] && alias vim="$HOME/.local/bin/lvim"
-
-# Changing "ls" to "eza"
-alias \
- ls="eza --icons -al --color=always --group-directories-first" \
- la="eza --icons -a --color=always --group-directories-first" \
- ll="eza --icons -l --color=always --group-directories-first" \
- lt="eza --icons -aT --color=always --group-directories-first" \
- l.='eza --icons -a | grep -E "^\."'
-
-# function to detect os and assign aliases to package managers
-alias \
- xb-up="sudo xbps-install -Su && xcheckrestart" \
- xb-get="sudo xbps-install -S" \
- xb-rmv="sudo xbps-remove -R" \
- xb-rmv-sec="sudo xbps-remove" \
- xb-qry="sudo xbps-query -Rs" \
- xb-cln="sudo xbps-remove -Oo"
-
-# colorize grep output (good for log files)
-alias \
- grep="grep --color=auto" \
- egrep="egrep --color=auto" \
- fgrep="fgrep --color=auto"
-
-# git
-alias \
- git-adu="git add -u" \
- git-adl="git add ." \
- git-brn="git branch" \
- git-chk="git checkout" \
- git-cln="git clone" \
- git-cmt="git commit -m" \
- git-fth="git fetch" \
- git-pll="git pull origin" \
- git-psh="git push origin" \
- git-sts="git status" \
- git-tag="git tag" \
- git-ntg="git tag -a"
-
-# adding flags
-alias \
- df="df -h" \
- free="free -m"
-
-# multimedia scripts
-alias \
- fli="flix-cli" \
- ani="ani-cli" \
- aniq="ani-cli -q"
-
-# audio
-alias \
- mx="pulsemixer" \
- mk="cmus" \
- ms="cmus" \
- music="cmus"
-
-# power management
-alias \
- po="loginctl poweroff" \
- sp="loginctl suspend" \
- rb="loginctl reboot"
-
-# file management
-alias \
- fm="vifm" \
- flm="vifm" \
- rm="rm -vI" \
- mv="mv -iv" \
- cp="cp -iv" \
- mkd="mkdir -pv"
-
-# ps
-alias \
- psa="ps auxf" \
- psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" \
- psmem="ps auxf | sort -nr -k 4" \
- pscpu="ps auxf | sort -nr -k 3"
-
-# youtube
-alias \
- yta-aac="yt-dlp --extract-audio --audio-format aac" \
- yta-best="yt-dlp --extract-audio --audio-format best" \
- yta-flac="yt-dlp --extract-audio --audio-format flac" \
- yta-m4a="yt-dlp --extract-audio --audio-format m4a" \
- yta-mp3="yt-dlp --extract-audio --audio-format mp3" \
- yta-opus="yt-dlp --extract-audio --audio-format opus" \
- yta-vorbis="yt-dlp --extract-audio --audio-format vorbis" \
- yta-wav="yt-dlp --extract-audio --audio-format wav" \
- ytv-best="yt-dlp -f bestvideo+bestaudio" \
- yt="ytfzf -ftsl" \
- ytm="ytfzf -mtsl"
-
-# network and bluetooth
-alias \
- netstats="nmcli dev" \
- wfi="nmtui-connect" \
- wfi-scan="nmcli dev wifi rescan && nmcli dev wifi list" \
- wfi-edit="nmtui-edit" \
- wfi-on="nmcli radio wifi on" \
- wfi-off="nmcli radio wifi off" \
- blt="bluetoothctl"
-
-# starship prompt
-eval "$(starship init bash)"
diff --git a/user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.svg b/user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.svg
deleted file mode 100644
index 3c29a5f27..000000000
--- a/user/.config/Kvantum/Gruvbox-Dark-Brown/Gruvbox-Dark-Brown.svg
+++ /dev/null
@@ -1,5597 +0,0 @@
-
-
diff --git a/user/.config/Kvantum/kvantum.kvconfig b/user/.config/Kvantum/kvantum.kvconfig
deleted file mode 100644
index 62defb799..000000000
--- a/user/.config/Kvantum/kvantum.kvconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-[General]
-theme=Gruvbox-Dark-Brown
diff --git a/user/.config/gtk-2.0/gtkfilechooser.ini b/user/.config/gtk-2.0/gtkfilechooser.ini
deleted file mode 100644
index 3de31bfd5..000000000
--- a/user/.config/gtk-2.0/gtkfilechooser.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[Filechooser Settings]
-LocationMode=path-bar
-ShowHidden=false
-ShowSizeColumn=true
-GeometryX=0
-GeometryY=0
-GeometryWidth=780
-GeometryHeight=585
-SortColumn=name
-SortOrder=ascending
-StartupMode=recent
diff --git a/user/.config/gtk-3.0/bookmarks b/user/.config/gtk-3.0/bookmarks
deleted file mode 100644
index e69de29bb..000000000
diff --git a/user/.config/lvim/config.lua b/user/.config/lvim/config.lua
deleted file mode 100644
index 64523b530..000000000
--- a/user/.config/lvim/config.lua
+++ /dev/null
@@ -1,129 +0,0 @@
--- neovide options
-vim.o.guifont = "mononoki Nerd Font:h14"
-vim.g.neovide_hide_mouse_when_typing = true
-vim.g.neovide_input_macos_alt_is_meta = true
-vim.g.neovide_hide_mouse_when_typing = false
-vim.g.neovide_refresh_rate = 60
-vim.g.neovide_refresh_rate_idle = 5
-vim.g.neovide_no_idle = true
-vim.g.neovide_confirm_quit = true
-vim.g.neovide_input_use_logo = true
-
-vim.g.neovide_cursor_antialiasing = true
-vim.g.neovide_cursor_animate_in_insert_mode = true
-vim.g.neovide_cursor_vfx_mode = "pixiedust"
-vim.g.neovide_cursor_vfx_particle_speed = 20.0
-
-vim.g.neovide_padding_top = 0
-vim.g.neovide_padding_bottom = 0
-vim.g.neovide_padding_right = 0
-vim.g.neovide_padding_left = 0
-
--- Helper function for transparency formatting
-local alpha = function()
- return string.format("%x", math.floor(255 * (vim.g.transparency or 0.98)))
-end
-vim.g.neovide_transparency = 0.98
-vim.g.transparency = 0.98
-vim.g.neovide_background_color = "#1d2021" .. alpha()
-
--- nvim options
-vim.opt.shiftwidth = 4
-vim.opt.tabstop = 4
-vim.opt.relativenumber = true
-vim.cmd('autocmd FileType markdown setlocal nospell')
-vim.opt.wrap = true -- wrap lines
-vim.opt.spell = false
-vim.o.shell = '/usr/bin/bash'
-vim.o.autochdir = true
-vim.cmd('autocmd BufEnter * lcd %:p:h')
-
--- general
-lvim.use_icons = true
-lvim.log.level = "info"
-lvim.format_on_save = {
- enabled = true,
- pattern = "*.lua",
- timeout = 1000,
-}
-
--- change theme settings
-lvim.colorscheme = "gruvbox"
-lvim.transparent_window = false
-lvim.builtin.alpha.active = true
-lvim.builtin.alpha.mode = "dashboard"
-lvim.builtin.terminal.active = true
-lvim.builtin.nvimtree.setup.view.side = "left"
-lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
-
--- automatically install missing parsers when entering buffer
-lvim.builtin.treesitter.auto_install = true
-
--- additional Plugins
-lvim.plugins = {
- { "lunarvim/colorschemes" },
- { "ellisonleao/gruvbox.nvim" },
- { "puremourning/vimspector" },
- { "SirVer/ultisnips" },
- { "CRAG666/code_runner.nvim" },
-}
-
--- configuring colorscheme
-require("gruvbox").setup({
- undercurl = true,
- underline = true,
- bold = false,
- italic = {
- strings = true,
- comments = true,
- operators = false,
- folds = true,
- },
- strikethrough = true,
- invert_selection = false,
- invert_signs = false,
- invert_tabline = false,
- invert_intend_guides = false,
- inverse = true, -- invert background for search, diffs, statuslines and errors
- contrast = "hard", -- can be "hard", "soft" or empty string
- palette_overrides = {},
- overrides = {},
- dim_inactive = false,
- transparent_mode = false,
-})
-
--- vimspector options
-vim.g.vimspector_enable_mappings = 'HUMAN'
-vim.g.vimspector_enable_mappings_for_mode = {
- [''] = { 'n', 'v' },
-}
-
--- code runner options
-require('code_runner').setup({
- filetype = {
- java = {
- "cd $dir &&",
- "javac $fileName &&",
- "java $fileNameWithoutExt"
- },
- python = "python3 -u",
- typescript = "deno run",
- rust = {
- "cd $dir &&",
- "rustc $fileName &&",
- "$dir/$fileNameWithoutExt"
- },
- cs = {
- "cd '$dir' &&",
- "dotnet run"
- }
- },
-})
-
-lvim.keys.normal_mode["r"] = ":RunCode"
-lvim.keys.normal_mode["rf"] = ":RunFile"
-lvim.keys.normal_mode["rft"] = ":RunFile tab"
-lvim.keys.normal_mode["rp"] = ":RunProject"
-lvim.keys.normal_mode["rc"] = ":RunClose"
-lvim.keys.normal_mode["crf"] = ":CRFiletype"
-lvim.keys.normal_mode["crp"] = ":CRProjects"
diff --git a/user/.config/neofetch/config.conf b/user/.config/neofetch/config.conf
deleted file mode 100644
index 6365d291f..000000000
--- a/user/.config/neofetch/config.conf
+++ /dev/null
@@ -1,118 +0,0 @@
-print_info() {
- prin " "
- prin "┌─────────\n Hardware Information \n─────────┐"
- info " " model
- info " " cpu
- info " " gpu
- info " " memory
- info " " uptime
- prin "├─────────\n Software Information \n─────────┤"
- info " " distro
- info " " kernel
- info " " packages
- info " " wm
- info " " shell
- info " " theme
- info " " icons
- info " " song
- # [[ "$player" ]] && prin "Music Player" "$player"
-# info " " local_ip
-# info " " public_ip
-# info " " locale # This only works on glibc systems.
- prin "└───────────────────────────────────────┘"
- info cols
-prin "\n \n \n \n \n ${cl3} \n \n ${cl5} \n \n ${cl2} \n \n ${cl6} \n \n ${cl4} \n \n ${cl1} \n \n ${cl7} \n \n ${cl0}"
-}
-
-kernel_shorthand="on"
-distro_shorthand="off"
-os_arch="off"
-uptime_shorthand="on"
-memory_percent="on"
-package_managers="on"
-shell_path="off"
-shell_version="on"
-speed_type="bios_limit"
-speed_shorthand="on"
-cpu_brand="off"
-cpu_speed="off"
-cpu_cores="logical"
-cpu_temp="off"
-gpu_brand="off"
-gpu_type="all"
-refresh_rate="on"
-gtk_shorthand="on"
-gtk2="on"
-gtk3="on"
-public_ip_host="http://ident.me"
-public_ip_timeout=2
-disk_show=('/')
-music_player="cmus"
-song_format="%artist% - %title%"
-song_shorthand="off"
-colors=(distro)
-bold="on"
-underline_enabled="on"
-underline_char="-"
-separator=" "
-color_blocks="off"
-block_range=(0 15) # Colorblocks
-
-# Colors for custom colorblocks
-magenta="\033[1;35m"
-green="\033[1;32m"
-white="\033[1;37m"
-blue="\033[1;34m"
-red="\033[1;31m"
-black="\033[1;40;30m"
-yellow="\033[1;33m"
-cyan="\033[1;36m"
-reset="\033[0m"
-bgyellow="\033[1;43;33m"
-bgwhite="\033[1;47;37m"
-cl0="${reset}"
-cl1="${magenta}"
-cl2="${green}"
-cl3="${white}"
-cl4="${blue}"
-cl5="${red}"
-cl6="${yellow}"
-cl7="${cyan}"
-cl8="${black}"
-cl9="${bgyellow}"
-cl10="${bgwhite}"
-
-block_width=4
-block_height=1
-
-bar_char_elapsed="-"
-bar_char_total="="
-bar_border="on"
-bar_length=15
-bar_color_elapsed="distro"
-bar_color_total="distro"
-
-cpu_display="on"
-memory_display="on"
-battery_display="on"
-disk_display="on"
-
-image_backend="chafa"
-image_source="$HOME/.config/neofetch/img1.png"
-image_size="320px"
-image_loop="off"
-
-aascii_distro="auto"
-ascii_colors=(distro)
-ascii_bold="on"
-
-thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
-crop_mode="normal"
-crop_offset="center"
-
-gap=2
-
-yoffset=0
-xoffset=0
-
-stdout="off"
diff --git a/user/.config/neofetch/img1.png b/user/.config/neofetch/img1.png
deleted file mode 100644
index 876a1bb3f..000000000
Binary files a/user/.config/neofetch/img1.png and /dev/null differ
diff --git a/user/.config/newsboat/urls b/user/.config/newsboat/urls
deleted file mode 100644
index d6689f728..000000000
--- a/user/.config/newsboat/urls
+++ /dev/null
@@ -1,154 +0,0 @@
-http://static.fsf.org/fsforg/rss/news.xml "~FSF News"
-http://static.fsf.org/fsforg/rss/blogs.xml "~FSF Blogs"
-https://fsfe.org/news/news.en.rss "~FSFE News"
-https://dot.kde.org/rss.xml "~KDE Dot News"
-https://planet.kde.org/global/atom.xml "~Planet KDE"
-https://pointieststick.com/feed/ "~This Week on KDE"
-https://www.kdeblog.com/rss "~KDE Blog"
-https://thisweek.gnome.org/index.xml "~This Week on GNOME"
-https://www.omgubuntu.co.uk/feed "~OMG!Ubuntu"
-https://www.omglinux.com/feed "~OMG!Linux"
-https://blog.thunderbird.net/feed/ "~The Thunderbird Blog"
-https://thelinuxexp.com/feed.xml "~The Linux Experiment"
-https://techhut.tv/feed/ "~TechHut Media"
-https://itsfoss.com/rss/ "~Its FOSS!"
-https://thelinuxcast.org/feed/feed.xml "~The Linux Cast"
-https://9to5linux.com/feed/atom "~9to5Linux"
-https://blog.elementary.io/feed.xml "~elementary OS Blog"
-https://blog.zorin.com/index.xml "~Zorin OS Blog"
-http://blog.linuxmint.com/?feed=rss2 "~Linux Mint Blog"
-https://www.gamingonlinux.com/article_rss.php "~Gaming on linux"
-https://hackaday.com/blog/feed/ "~Hackaday"
-https://linux.softpedia.com/backend.xml "~Softpedia Linux"
-https://www.phoronix.com/rss.php "~Phoronix"
-https://www.computerworld.com/index.rss "~Computerworld"
-https://betanews.com/feed "~Betanews Linux"
-http://lxer.com/module/newswire/headlines.rss "~Lxer"
-https://theevilskeleton.gitlab.io/feed.xml "~TheEvilSkeleton"
-https://tutanota.com/blog/feed.xml "~Tutanota Blogs"
-https://techcrunch.com/feed/ "~TechCrunch"
-http://www.techradar.com/rss "~TechRadar"
-https://www.zdnet.com/news/rss.xml "~ZDNET - News"
-https://c3po.website/rss/ "~Blog de C3PO"
-https://thecheis.com/feed/ "~THE_CHEI$"
-http://yro.slashdot.org/yro.rss "~Slashdot: Your Rights Online"
-https://freedom-to-tinker.com/feed/rss/ "~Freedom to Tinker"
-https://act.eff.org/action.atom "~EFF - Action Center"
-https://www.eff.org/rss/updates.xml "~EFF - Updates"
-https://victorhckinthefreeworld.com/feed/ "~Victorhck in the free world"
-https://inv.vern.cc/feed/channel/UC-ErgHYY0_Yjhjz2MN1E1lg "~YT - RETRO Hardware"
-https://inv.vern.cc/feed/channel/UC05XpvbHZUQOfA6xk4dlmcw "~YT - DJ Ware"
-https://inv.vern.cc/feed/channel/UC0W_BIuwk8D0Bv4THbVZZOQ "~YT - Surveillance Report"
-https://inv.vern.cc/feed/channel/UC1D3yD4wlPMico0dss264XA "~YT - NileBlue"
-https://inv.vern.cc/feed/channel/UC1_uAIS3r8Vu6JjXWvastJg "~YT - Mathologer"
-https://inv.vern.cc/feed/channel/UC1s1OsWNYDFgbROPV-q5arg "~YT - Michael Horn"
-https://inv.vern.cc/feed/channel/UC1yGcBvdPGxRIMT1yo_bKIQ "~YT - Jake@Linux"
-https://inv.vern.cc/feed/channel/UC2WHjPDvbE6O328n17ZGcfg "~YT - ForrestKnight"
-https://inv.vern.cc/feed/channel/UC2eYFnH61tmytImy1mTYvhA "~YT - Luke Smith"
-https://inv.vern.cc/feed/channel/UC3jSNmKWYA04R47fDcc1ImA "~YT - InfinitelyGalactic"
-https://inv.vern.cc/feed/channel/UC3yaWWA9FF9OBog5U9ml68A "~YT - SavvyNik"
-https://inv.vern.cc/feed/channel/UC5I2hjZYiW9gZPVkvzM8_Cw "~YT - Techmoan"
-https://inv.vern.cc/feed/channel/UC5KDiSAFxrDWhmysBcNqtMA "~YT - Eric Murphy"
-https://inv.vern.cc/feed/channel/UC5UAwBUum7CPN5buc-_N1Fw "~YT - The Linux Experiment"
-https://inv.vern.cc/feed/channel/UC5nlKFUNoskvV5XdW6PbgYw "~YT - A Well-Rested Dog"
-https://inv.vern.cc/feed/channel/UC6WOxrSKLW8VagrNkfvi6EQ "~YT - THE SQUIDD"
-https://inv.vern.cc/feed/channel/UC6biysICWOJ-C3P4Tyeggzg "~YT - Low Level Learning"
-https://inv.vern.cc/feed/channel/UC7YOGHUfC1Tb6E4pudI9STA "~YT - Mental Outlaw"
-https://inv.vern.cc/feed/channel/UC7qPftDWPw9XuExpSgfkmJQ "~YT - Nostalgia Nerd"
-https://inv.vern.cc/feed/channel/UC8ENHE5xdFSwx71u3fDH5Xw "~YT - ThePrimeagen"
-https://inv.vern.cc/feed/channel/UC8uT9cgJorJPWu7ITLGo9Ww "~YT - The 8-Bit Guy"
-https://inv.vern.cc/feed/channel/UC9-y-6csu5WGm29I7JiwpnA "~YT - Computerphile"
-https://inv.vern.cc/feed/channel/UC910yxBmXzGDH_2cx0XE0Xw "~YT - Plano de Juego"
-https://inv.vern.cc/feed/channel/UC9RM-iSvTu1uPJb8X5yp3EQ "~YT - Wendover Productions"
-https://inv.vern.cc/feed/channel/UC9bORzxOWiewqMXxkmhAwAg "~YT - Gingy"
-https://inv.vern.cc/feed/channel/UC9lE09jxmMgMoG13WrNHPmA "~YT - World of Tanks Blitz"
-https://inv.vern.cc/feed/channel/UCAYKj_peyESIMDp5LtHlH2A "~YT - unfa"
-https://inv.vern.cc/feed/channel/UCAiEWppTvoNSHU939xhMb2g "~YT - hoser"
-https://inv.vern.cc/feed/channel/UCAiiOTio8Yu69c3XnR7nQBQ "~YT - System Crafters"
-https://inv.vern.cc/feed/channel/UCBq5p-xOla8xhnrbhu8AIAg "~YT - Tech Over Tea"
-https://inv.vern.cc/feed/channel/UCCIHOP7e271SIumQgyl6XBQ "~YT - OldTechBloke"
-https://inv.vern.cc/feed/channel/UCE0H52NoucHL2JkhPdZ1ykA "~YT - Jwlar"
-https://inv.vern.cc/feed/channel/UCEFymXY4eFCo_AchSpxwyrg "~YT - MetalJesusRocks"
-https://inv.vern.cc/feed/channel/UCEp20NgOZHmgWdbQdHSxgjw "~YT - This Does Not Compute"
-https://inv.vern.cc/feed/channel/UCFhXFikryT4aFcLkLw2LBLA "~YT - NileRed"
-https://inv.vern.cc/feed/channel/UCGE-JpLbibXJg3W_N2hbo8g "~YT - Sethorven"
-https://inv.vern.cc/feed/channel/UCH5DsMZAgdx5Fkk9wwMNwCA "~YT - The New Oil"
-https://inv.vern.cc/feed/channel/UCHnyfMqiRRG1u-2MsSQLbXA "~YT - Veritasium"
-https://inv.vern.cc/feed/channel/UCIFzjAer2W9gTWVECZgtDzg "~YT - GaryH Tech"
-https://inv.vern.cc/feed/channel/UCJ0-OtVpF0wOKEqT2Z1HEtA "~YT - ElectroBOOM"
-https://inv.vern.cc/feed/channel/UCJYJgj7rzsn0vdR7fkgjuIA "~YT - styropyro"
-https://inv.vern.cc/feed/channel/UCLEoyoOKZK0idGqSc6Pi23w "~YT - RMC - The Cave"
-https://inv.vern.cc/feed/channel/UCLx053rWZxCiYWsBETgdKrQ "~YT - LGR"
-https://inv.vern.cc/feed/channel/UCMbQbVilo-nezMvwf1BZfAA "~YT - CienciaDeSofa"
-https://inv.vern.cc/feed/channel/UCMiyV_Ib77XLpzHPQH_q0qQ "~YT - Veronica Explains"
-https://inv.vern.cc/feed/channel/UCNvl_86ygZXRuXjxbONI5jA "~YT - 10leej"
-https://inv.vern.cc/feed/channel/UCNzszbnvQeFzObW0ghk0Ckw "~YT - Dave's Garage"
-https://inv.vern.cc/feed/channel/UCONH73CdRXUjlh3-DdLGCPw "~YT - Nicco Loves Linux"
-https://inv.vern.cc/feed/channel/UCOSSzBN8e3JHOxvltQbf_mQ "~YT - Jack Keifer"
-https://inv.vern.cc/feed/channel/UCOxmlaJURX3nq8eLuJPbl3A "~YT - Psivewri"
-https://inv.vern.cc/feed/channel/UCP5tjEmvPItGyLhmjdwP7Ww "~YT - RealLifeLore"
-https://inv.vern.cc/feed/channel/UCQ-W1KE9EYfdxhL6S4twUNw "~YT - The Cherno"
-https://inv.vern.cc/feed/channel/UCQX_MZRCaluNKxkywkLEgfA "~YT - Date un Vlog"
-https://inv.vern.cc/feed/channel/UCS-WzPVpAAli-1IfEG2lN8A "~YT - Michael MJD"
-https://inv.vern.cc/feed/channel/UCS0N5baNlQWJCUrhCEo8WlA "~YT - Ben Eater"
-https://inv.vern.cc/feed/channel/UCS97tchJDq17Qms3cux8wcA "~YT - chris@machine"
-https://inv.vern.cc/feed/channel/UCSju5G2aFaWMqn-_0YBtq5A "~YT - Stand-up Maths"
-https://inv.vern.cc/feed/channel/UCSuHzQ3GrHSzoBbwrIq3LLA "~YT - NBTV, with Naomi Brockwell"
-https://inv.vern.cc/feed/channel/UCTNj4UtgopYu5T8ew8WZPuw "~YT - Cat and Andrew"
-https://inv.vern.cc/feed/channel/UCUMwY9iS8oMyWDYIe6_RmoA "~YT - No Boilerplate"
-https://inv.vern.cc/feed/channel/UCUyeluBRhGPCW4rPe_UvBZQ "~YT - ThePrimeTime"
-https://inv.vern.cc/feed/channel/UCVls1GmFKf6WlTraIb_IaJg "~YT - DistroTube"
-https://inv.vern.cc/feed/channel/UCW-HHEyt67RhZ6q21n4p2zQ "~YT - Mac84"
-https://inv.vern.cc/feed/channel/UCW0gH2G-cMKAEjEkI4YhnPA "~YT - Nerd of the Rings"
-https://inv.vern.cc/feed/channel/UCWyrVfwRL-2DOkzsqrbjo5Q "~YT - NCommander"
-https://inv.vern.cc/feed/channel/UCX_WM2O-X96URC5n66G-hvw "~YT - EF - Linux Made Simple"
-https://inv.vern.cc/feed/channel/UCYO_jab_esuFRV4b17AJtAw "~YT - 3Blue1Brown"
-https://inv.vern.cc/feed/channel/UCYVU6rModlGxvJbszCclGGw "~YT - Rob Braxman Tech"
-https://inv.vern.cc/feed/channel/UCa6V1UVOXN4wDm7RDQDoa6g "~YT - El Traductor de Ingeniería"
-https://inv.vern.cc/feed/channel/UCbdSYaPD-lr1kW27UJuk8Pw "~YT - QuantumFracture"
-https://inv.vern.cc/feed/channel/UCbiGcwDWZjz05njNPrJU7jA "~YT - ExplainingComputers"
-https://inv.vern.cc/feed/channel/UCcf2Mr1qNoX51XXDUd3Rquw "~YT - ByteSeb"
-https://inv.vern.cc/feed/channel/UCd4XwUn2Lure2NHHjukoCwA "~YT - Linux For Everyone"
-https://inv.vern.cc/feed/channel/UCeHOkFGW-7uAZFvq3BXb8YA "~YT - :3ildcat"
-https://inv.vern.cc/feed/channel/UCerEIdrEW-IqwvlH8lTQUJQ "~YT - Tech Tangents"
-https://inv.vern.cc/feed/channel/UCg6gPGh8HU2U01vaFCAsvmQ "~YT - Chris Titus Tech"
-https://inv.vern.cc/feed/channel/UCgkyQiY_Q5AlrygIXGWO2Zw "~YT - Tux Traveler"
-https://inv.vern.cc/feed/channel/UChI0q9a-ZcbZh7dAu_-J-hg "~YT - Upper Echelon"
-https://inv.vern.cc/feed/channel/UCj8orMezFWVcoN-4S545Wtw "~YT - Max Derrat"
-https://inv.vern.cc/feed/channel/UCjFaPUcJU1vwk193mnW_w1w "~YT - Modern Vintage Gamer"
-https://inv.vern.cc/feed/channel/UCjSEJkpGbcZhvo0lr-44X_w "~YT - TechHut"
-https://inv.vern.cc/feed/channel/UCjgS6Uyg8ok4Jd_lH_MUKgg "~YT - Claus Kellerman"
-https://inv.vern.cc/feed/channel/UCl2mFZoRqjw_ELax4Yisf6w "~YT - Louis Rossmann"
-https://inv.vern.cc/feed/channel/UCl8XUDjAOLc7GNKcDp9Nepg "~YT - Locos por Linux"
-https://inv.vern.cc/feed/channel/UClVi5MQZ6T0InZYT7oFs6wg "~YT - Mumbling Hugo"
-https://inv.vern.cc/feed/channel/UCl_dlV_7ofr4qeP1drJQ-qg "~YT - Tantacrul"
-https://inv.vern.cc/feed/channel/UCld68syR8Wi-GY_n4CaoJGA "~YT - Brodie Robertson"
-https://inv.vern.cc/feed/channel/UCmw-QGOHbHA5cDAvwwqUTKQ "~YT - Zaney"
-https://inv.vern.cc/feed/channel/UCmyGZ0689ODyReHw3rsKLtQ "~YT - Michael Tunnell"
-https://inv.vern.cc/feed/channel/UCnIfca4LPFVn8-FjpPVc1ow "~YT - Fedora Project"
-https://inv.vern.cc/feed/channel/UCnw3aIEiz60S6O3XcztCVkQ "~YT - PatricianTV"
-https://inv.vern.cc/feed/channel/UCoL8olX-259lS1N6QPyP4IQ "~YT - Action Retro"
-https://inv.vern.cc/feed/channel/UCoryWpk4QVYKFCJul9KBdyw "~YT - Switched to Linux"
-https://inv.vern.cc/feed/channel/UCoxcjq-8xIDTYp3uz647V5A "~YT - Numberphile"
-https://inv.vern.cc/feed/channel/UCpuKDBw8IVIdKWPhiB2VDNQ "~YT - Cinematix"
-https://inv.vern.cc/feed/channel/UCpuLiczP2Aqq11Gtf4k_fkw "~YT - Futurasound Productions"
-https://inv.vern.cc/feed/channel/UCqxM9T6ksiOVKIkb88S2r7Q "~YT - Zac Builds"
-https://inv.vern.cc/feed/channel/UCrkPsvLGln62OMZRO6K-llg "~YT - Nick Chapsas"
-https://inv.vern.cc/feed/channel/UCs6KfncB4OV6Vug4o_bzijg "~YT - Techlore"
-https://inv.vern.cc/feed/channel/UCs7nPQIEba0T3tGOWWsZpJQ "~YT - Like Stories of Old"
-https://inv.vern.cc/feed/channel/UCsBjURrPoezykLs9EqgamOA "~YT - Fireship"
-https://inv.vern.cc/feed/channel/UCsnGwSIHyoYN0kiINAGUKxg "~YT - Wolfgang's Channel"
-https://inv.vern.cc/feed/channel/UCtMVHI3AJD4Qk4hcbZnI9ZQ "~YT - SomeOrdinaryGamers"
-https://inv.vern.cc/feed/channel/UCvFGf8HZGZWFzpcDCqb3Lhw "~YT - All Things Secured"
-https://inv.vern.cc/feed/channel/UCvjgXvBlbQiydffZU7m1_aw "~YT - The Coding Train"
-https://inv.vern.cc/feed/channel/UCwEEjrUYHDyQsYPTQdNVacg "~YT - Jacob Pradels"
-https://inv.vern.cc/feed/channel/UCwGX2cE21VPBEJ49hcprP9w "~YT - SupraPixel"
-https://inv.vern.cc/feed/channel/UCxQKHvKbmSzGMvUrVtJYnUA "~YT - Learn Linux TV"
-https://inv.vern.cc/feed/channel/UCxkw-TfCK1t1VKxfHwPzD6w "~YT - Our Walk in Christ"
-https://inv.vern.cc/feed/channel/UCy0tKL1T7wFoYcxCe0xjN6Q "~YT - Technology Connections"
-https://inv.vern.cc/feed/channel/UCybBViio_TH_uiFFDJuz5tg "~YT - Einzelgänger"
-https://inv.vern.cc/feed/channel/UCylGUf9BvQooEFjgdNudoQg "~YT - The Linux Cast"
-https://inv.vern.cc/feed/channel/UCz1oFxMrgrQ82-276UCOU9w "~YT - Atlas Pro"
-https://inv.vern.cc/feed/channel/UCzGMBzt6UOMoQe_dqOfShZw "~YT - Cultura VJ"
-https://inv.vern.cc/feed/channel/UCzXsTSZDoAPSjfHr8IZM9Ew "~YT - FloatyMonkey"
-
diff --git a/user/.config/sway/modules/autostart b/user/.config/sway/modules/autostart
deleted file mode 100644
index 8a911cc1c..000000000
--- a/user/.config/sway/modules/autostart
+++ /dev/null
@@ -1,15 +0,0 @@
-exec {
- /usr/libexec/polkit-gnome-authentication-agent-1
- echo 25 > $SWAYSOCK.wob
- hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
- bash -c ~/.config/sway/pipeinit
- mako -c ~/.config/mako/config
- swayidle -w \
- timeout 300 'swaylock -f -i "$HOME/.config/sway/wallpaper/locked.*"' \
- timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
- before-sleep 'swaylock -f -i "$HOME/.config/sway/wallpaper/locked.*"'
- wl-paste --type text --watch cliphist store
- wl-paste --type image --watch cliphist store
-}
-
-bar swaybar_command waybar
diff --git a/user/.config/sway/modules/output b/user/.config/sway/modules/output
deleted file mode 100644
index 9ed07f541..000000000
--- a/user/.config/sway/modules/output
+++ /dev/null
@@ -1,3 +0,0 @@
-output * {
- bg ~/.config/sway/wallpaper/background.* fill
-}
diff --git a/user/.config/sway/pipeinit b/user/.config/sway/pipeinit
deleted file mode 100755
index 99eb7d482..000000000
--- a/user/.config/sway/pipeinit
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-pkill pipewire
-pkill pipewire-pulse
-pkill wireplumber
-
-pipewire &
-pipewire-pulse &
-wireplumber &
diff --git a/user/.config/sway/wallpaper/background.png b/user/.config/sway/wallpaper/background.png
deleted file mode 100644
index b0eb96251..000000000
Binary files a/user/.config/sway/wallpaper/background.png and /dev/null differ
diff --git a/user/.config/sway/wallpaper/locked.png b/user/.config/sway/wallpaper/locked.png
deleted file mode 100644
index b0eb96251..000000000
Binary files a/user/.config/sway/wallpaper/locked.png and /dev/null differ
diff --git a/user/.config/user-dirs.dirs b/user/.config/user-dirs.dirs
deleted file mode 100644
index 6bad0251b..000000000
--- a/user/.config/user-dirs.dirs
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file is written by xdg-user-dirs-update
-# If you want to change or add directories, just edit the line you're
-# interested in. All local changes will be retained on the next run.
-# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
-# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
-# absolute path. No other format is supported.
-#
-XDG_DESKTOP_DIR="$HOME/var/desktop"
-XDG_DOWNLOAD_DIR="$HOME/var/downloads"
-XDG_TEMPLATES_DIR="$HOME/media/templates"
-XDG_PUBLICSHARE_DIR="$HOME/var/public"
-XDG_DOCUMENTS_DIR="$HOME/media/documents"
-XDG_MUSIC_DIR="$HOME/media/music"
-XDG_PICTURES_DIR="$HOME/media/pictures"
-XDG_VIDEOS_DIR="$HOME/media/videos"
diff --git a/user/.config/waybar/power-profiles b/user/.config/waybar/power-profiles
deleted file mode 100755
index 35f9dc126..000000000
--- a/user/.config/waybar/power-profiles
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-currntpwr=$(powerprofilesctl get)
-if [ "${currntpwr}" = "performance" ]; then
- pwr="Performance "
-elif [ "${currntpwr}" = "balanced" ]; then
- pwr="Balanced "
-elif [ "${currntpwr}" = "power-saver" ]; then
- pwr="PowerSaver "
-fi
-echo "$pwr"
diff --git a/user/.config/waybar/style.css b/user/.config/waybar/style.css
deleted file mode 100644
index 21178dd15..000000000
--- a/user/.config/waybar/style.css
+++ /dev/null
@@ -1,244 +0,0 @@
-/* Keyframes */
-
-@keyframes blink-critical {
- to {
- /*color: @white;*/
- background-color: @critical;
- }
-}
-
-/* Styles */
-/* Colors (gruvbox) */
-@define-color black #1d2021;
-@define-color red #cc241d;
-@define-color green #98971a;
-@define-color yellow #d79921;
-@define-color blue #458588;
-@define-color purple #b16286;
-@define-color aqua #689d6a;
-@define-color gray #a89984;
-@define-color gray2 #504945;
-@define-color orange #d65d0e;
-@define-color brgray #928374;
-@define-color brred #fb4934;
-@define-color brgreen #b8bb26;
-@define-color bryellow #fabd2f;
-@define-color brblue #83a598;
-@define-color brpurple #d3869b;
-@define-color braqua #8ec07c;
-@define-color brorange #fe8019;
-@define-color brwhite #f9f5d7;
-@define-color white #fbf1c7;
-@define-color bg2 #3c3836;
-
-
-@define-color warning @bryellow;
-@define-color critical @red;
-@define-color mode @red;
-@define-color unfocused @bg2;
-@define-color focused @red;
-@define-color inactive @purple;
-@define-color clock #427b58;
-@define-color network #9d0006;
-@define-color language #8f3f71;
-@define-color battery #79740e;
-@define-color volume #076678;
-@define-color backlight #b57614;
-@define-color powerprof #af3a03;
-
-/* Reset all styles */
-* {
- border: none;
- border-radius: 0;
- min-height: 0;
- margin: 0;
- padding: 0;
- box-shadow: none;
- text-shadow: none;
- icon-shadow: none;
-}
-
-/* The whole bar */
-#waybar {
- background: @black; /* #282828e0 */
- color: @white;
- font-family: Mononoki Nerd Font;
- font-size: 16px;
-}
-
-button {
- box-shadow: inset 0 -3px transparent;
- border: none;
- border-radius: 0;
-}
-
-/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
-button:hover {
- background: inherit;
-}
-
-/* Workspaces stuff */
-#workspaces button {
- /*font-weight: bold;*/
- font-family: Symbols Nerd Font Mono;
- font-size: 18px;
- padding-left: 2pt;
- padding-right: 2pt;
- color: @white;
- background: @black;
-}
-
-/* Inactive (on unfocused output) */
-#workspaces button.visible {
- color: @white;
- background: @black;
-}
-
-/* Active (on focused output) */
-#workspaces button.focused {
- color: @white;
- background: @focused;
-}
-
-/* Contains an urgent window */
-#workspaces button.urgent {
- color: @black;
- background: @warning;
-}
-
-/* Style when cursor is on the button */
-#workspaces button:hover {
- background: @black;
- color: @white;
-}
-
-#mode {
- background-color: @red;
- border-bottom: 3px solid @white;
-}
-
-#clock,
-#custom-powerprofiles,
-#battery,
-#backlight,
-#network,
-#pulseaudio,
-#language,
-#mode {
- font-family: Symbols Nerd Font Mono, mononoki Nerd Font;
- font-size: 16px;
- padding-left: 8pt;
- padding-right: 8pt;
- color: @white;
-}
-
-#window,
-#workspaces {
- margin: 0 4px;
-}
-
-/* If workspaces is the leftmost module, omit left margin */
-.modules-left > widget:first-child > #workspaces {
- margin-left: 0;
-}
-
-/* If workspaces is the rightmost module, omit right margin */
-.modules-right > widget:last-child > #workspaces {
- margin-right: 0;
-}
-
-#battery.charging,
-#battery.plugged {
- background-color: @battery;
-}
-
-#battery.critical:not(.charging),
-#battery.critical.discharging {
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- animation-name: blink-critical;
- animation-duration: 1s;
-}
-
-label:focus {
- background-color: @white;
-}
-
-#clock {
- background-color: @clock;
-}
-
-#battery {
- background-color: @battery;
-}
-
-#backlight {
- background-color: @backlight;
-}
-
-#network {
- background-color: @network;
-}
-
-#network.disconnected {
- background-color: @network;
-}
-
-#pulseaudio {
- background-color: @volume;
-}
-
-#pulseaudio.muted {
- background-color: @volume;
-}
-
-#language {
- background-color: @language;
-}
-
-#custom-powerprofiles {
- background-color: @powerprof;
-}
-
-#custom-arrow1 {
- font-size: 22px;
- background: @black;
- color: @language;
-}
-
-#custom-arrow2 {
- font-size: 22px;
- background: @language;
- color: @volume;
-}
-
-#custom-arrow3 {
- font-size: 22px;
- background: @volume;
- color: @backlight;
-}
-
-#custom-arrow4 {
- font-size: 22px;
- background: @backlight;
- color: @battery;
-}
-
-#custom-arrow5 {
- font-size: 22px;
- background: @battery;
- color: @powerprof;
-}
-
-#custom-arrow6 {
- font-size: 22px;
- background: @powerprof;
- color: @network;
-}
-
-#custom-arrow7 {
- font-size: 22px;
- background: @network;
- color: @clock;
-}
diff --git a/user/.config/wezterm/wezterm.lua b/user/.config/wezterm/wezterm.lua
deleted file mode 100644
index da17aa4aa..000000000
--- a/user/.config/wezterm/wezterm.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local wezterm = require 'wezterm'
-local gpus = wezterm.gui.enumerate_gpus()
-
-return {
- enable_wayland = true,
- font = wezterm.font {
- family = 'mononoki Nerd Font',
- weight = 'Medium'
- },
- color_scheme = 'Gruvbox dark, hard (base16)',
- default_prog = { '/usr/bin/fish' },
- default_cursor_style = "BlinkingUnderline",
- font_size = 14,
- check_for_updates = false,
- use_dead_keys = false,
- warn_about_missing_glyphs = false,
- enable_kitty_graphics = true,
- animation_fps = 1,
- cursor_blink_rate = 175,
- hide_tab_bar_if_only_one_tab = true,
- adjust_window_size_when_changing_font_size = false,
- window_padding = {
- left = 10,
- right = 10,
- top = 10,
- bottom = 10,
- },
- use_fancy_tab_bar = false,
- exit_behavior = "Close",
- window_close_confirmation = 'NeverPrompt',
- tab_bar_at_bottom = false,
- window_background_opacity = 0.98,
-}
diff --git a/user/.local/bin/neovide b/user/.local/bin/neovide
deleted file mode 100755
index b1c9d8f31..000000000
--- a/user/.local/bin/neovide
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-NEOVIDE="$HOME/.local/bin/neovide.AppImage"
-NEOVIDE_OPTS="--neovim-bin $HOME/.local/bin/lvim"
-
-$NEOVIDE $NEOVIDE_OPTS
diff --git a/user/.local/bin/rs_clip b/user/.local/bin/rs_clip
deleted file mode 100755
index 9e3702607..000000000
--- a/user/.local/bin/rs_clip
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-
-# clipboard script
-
-cliphist list | $RUNNER -l 10 -p "[ Clipboard] " | cliphist decode | wl-copy
diff --git a/user/.local/bin/rs_scrot b/user/.local/bin/rs_scrot
deleted file mode 100755
index 68f92853d..000000000
--- a/user/.local/bin/rs_scrot
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-
-# ***This script was made by Clay Gomera (Drake)***
-# - Description: A simple screenshot menu rofi script
-# - Dependencies: wofi, grim, slurp
-
-# options
-option1=" Capture the screen"
-option2=" Capture region"
-option3=" Exit"
-options="$option1\n$option2\n$option3"
-
-# countdown
-countdown() {
- notify-send "Screenshot" "Executing in 3 seconds" -t 1000
- sleep 1
- notify-send "Screenshot" "Executing in 2 seconds" -t 1000
- sleep 1
- notify-send "Screenshot" "Executing in 1 seconds" -t 1000
- sleep 2
-}
-
-# run
-choice=$(echo -e "$options" | $RUNNER -l 3 -p "[ Screenshot] " )
-case $choice in
- $option1)
- countdown
- grim - | wl-copy -t image/jpg
- notify-send "Screenshot" "Screenshot saved to clipboard"
- ;;
- $option2)
- notify-send "Screenshot" "Select a region to capture"
- grim -g "$(slurp)" - | wl-copy -t image/jpg
- notify-send "Screenshot" "Region saved to clipboard"
- ;;
- $option3)
- exit 0
- ;;
-esac
diff --git a/user/.local/bin/rs_wall b/user/.local/bin/rs_wall
deleted file mode 100755
index 4b0dca066..000000000
--- a/user/.local/bin/rs_wall
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-# ***This script was made by Clay Gomera (Drake)***
-# - Description: A simple wallpaper changer script for rofi/dmenu/wofi
-# - Dependencies: {rofi||dmenu||wofi}, fd, swaybg
-
-## WALLPAPER DIRECTORY ##
-walldir="$XDG_PICTURES_DIR/Wallpapers" # wallpapers folder, change it to yours
-
-## SELECT PICTURE ##
-cd "$walldir" || exit 1
-wallpaper=$(fd -p "$walldir" | $RUNNER -l 5 -i -p "[ Wallpaper Selector] ")
-if [ -n "$wallpaper" ]; then
- if [[ "$wallpaper" == *.jpg ]]; then
- rm -f "$HOME/.config/sway/wallpaper/"*
- cp "$wallpaper" "$HOME/.config/sway/wallpaper/background.jpg"
- cp "$wallpaper" "$HOME/.config/sway/wallpaper/locked.jpg"
- swaymsg output \* bg "$HOME/.config/sway/wallpaper/background.jpg" fill
- elif [[ "$wallpaper" == *.png ]]; then
- rm -f "$HOME/.config/sway/wallpaper/"*
- cp "$wallpaper" "$HOME/.config/sway/wallpaper/background.png"
- cp "$wallpaper" "$HOME/.config/sway/wallpaper/locked.png"
- swaymsg output \* bg "$HOME/.config/sway/wallpaper/background.png" fill
- fi
-else
- exit 1
-fi
-exit 0
diff --git a/user/.local/bin/rs_wifi b/user/.local/bin/rs_wifi
deleted file mode 100755
index fb166b3ba..000000000
--- a/user/.local/bin/rs_wifi
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/env bash
-
-# ***This script was made by Clay Gomera (Drake)***
-# - Description: A simple wifi script for rofi/dmenu/wofi
-# - Dependencies: {rofi||dmenu||wofi}, NetworkManager, io.elementary.capnet-assist
-
-#######################
-## Main manu options ##
-#######################
-option1=" Turn on WiFi"
-option2=" Turn off WiFi"
-option3=" Disconnect WiFi"
-option4=" Connect WiFi"
-option5=" Setup captive portal"
-option6=" Exit"
-options="$option1\n$option2\n$option3\n$option4\n$option5\n$option6"
-
-#####
-## These variables will store specific
-## information about the wireless
-## interface
-#####
-wifi_info=$(nmcli dev | awk '/wifi/ {print $1,$3; exit}')
-read -r wlan constate <<< "$wifi_info"
-
-#####
-## This function uses nmcli to turn
-## off wifi and then sends a
-## notification
-#####
-## param: none
-## return: void
-#####
-turnoff() {
- nmcli radio wifi off && notify-send "WiFi has been turned off";
-}
-
-#####
-## This function uses nmcli to turn
-## on wifi and then sends a
-## notification
-#####
-## param: none
-## return: void
-#####
-turnon() {
- nmcli radio wifi on && notify-send "WiFi has been turned on";
-}
-
-#####
-## This function uses nmcli and the
-## $wlan and $constate variables to
-## disconnect from the wifi network
-## and then sends a notification
-#####
-## param: none
-## return: void
-#####
-disconnect() {
- if [ "$constate" = "disconnected" ]; then
- notify-send "WiFi is already disconnected";
- elif [ "$constate" = "connected" ]; then
- nmcli device disconnect "$wlan" && notify-send "Wifi has been disconnected";
- else
- exit 1;
- fi
-}
-
-#####
-## This function uses nmcli to first scan
-## for available networks and then the
-## $bssid variable will store the SSID
-## of the network that the user chooses
-#####
-## param: none
-## return: string
-#####
-connect() {
- notify-send "Scannig networks..." && nmcli dev wifi rescan;
- wifinet=$(nmcli -f BSSID,SSID,BARS,SECURITY dev wifi list | sed -n '1!p' | $RUNNER -i -l 10 -p "[ Select a Wifi Network] ");
- bssid=$(echo "$wifinet" | cut -d' ' -f1)
- ssid=$(echo "$wifinet" | cut -d' ' -f3)
-}
-
-#####
-## This function will store the WiFi
-## password in the $pass variable
-#####
-## param: none
-## return: string
-#####
-password() {
- if nmcli connection show | grep -q "$ssid"; then # check if the network is already saved
- return 0; # no password is required
- elif nmcli -f BSSID,SECURITY dev wifi list | sed -n '1!p' | grep "$bssid" | awk '{print $2}' | grep -q -- "--"; then # check if the network is open
- return 0; # no password is required
- else
- pass=$($RUNNER -l 0 --password -p "[Enter Password ] " );
- if [ -n "$pass" ]; then # if the user gave a password
- return 0;
- else
- exit 1; # if not, exit the script
- fi
- fi
-}
-
-#####
-## This function will actually connect
-## to the chosen WiFi network using the
-## $bssid and $pass variables
-#####
-## param: none
-## return: void
-#####
-action() {
- if [ -n "$pass" ]; then # we need to check again if the $pass variable exists
- nmcli dev wifi connect "$bssid" password "$pass"
- else # if not, that means that the password() function ended in one of the first two conditions, the network is saved or open
- nmcli dev wifi connect "$bssid";
- fi
-}
-
-##########
-## main ##
-##########
-cases=$(echo -e "$options" | $RUNNER -i -l 6 -p "[ Wifi Settings] " ) # main menu prompt
-case "$cases" in
- "$option1")
- turnon;
- ;;
- "$option2")
- turnoff;
- ;;
- "$option3")
- disconnect;
- ;;
- "$option4")
- if connect; then # if the user chooses a network
- password; # this function will exit the script if the user didn't put a password
- action;
- else
- exit 1; # if not, exit the script
- fi
- ;;
- "$option5")
- io.elementary.capnet-assist;
- ;;
- "$option6")
- exit 0;
-esac