Compare commits

..
34 changed files with 200 additions and 134 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.luarc.json
/zsh/plugins

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "zsh/plugins/zsh-autosuggestions"]
path = zsh/plugins/zsh-autosuggestions
url = git@github.com:zsh-users/zsh-autosuggestions.git

View file

@ -1,78 +0,0 @@
install_base:
sudo dnf install -y \
NetworkManager-tui \
btop \
cava \
cbonsai \
cloc \
cmatrix \
fastfetch \
fzf \
git \
git-lfs \
htop \
httpie \
light \
lynx \
mc \
ncdu \
neovim \
profanity \
pwgen \
ranger \
ripgrep \
sen \
stow \
telnet \
vim \
zsh
install_gui:
sudo dnf install -y \
dino \
epiphany \
firefox \
gimp \
gparted \
inkscape \
kitty \
mediawriter \
qt5ct \
telegram-desktop \
thunderbird \
vlc \
fontawesome-fonts \
terminus-fonts \
unifont-fonts
install_multimedia:
sudo dnf group install Multimedia
install_i3: install_base install_gui
sudo dnf install -y \
arandr \
dunst \
gpick \
i3 \
picom \
polybar \
rofi \
rxvt-unicode \
unclutter-xfixes \
xclip \
xdotool \
xdpyinfo \
xev \
xkill \
xprop
remove_default_configs:
rm -f ~/.zshrc
rm -fr ~/.config/i3
apply_configs: remove_default_configs
stow -Rvt ~ home
desktop_i3: install_i3 apply_configs
# vim: set ts=4 sw=4 autoindent noexpandtab:

View file

@ -2,12 +2,10 @@
## Bootstrap ## Bootstrap
1. Setup SSH keys 1. `git clone https://github.com/He4eT/dotfiles.git ~/dotfiles`
1. [Enable RPM Fusion](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/) 1. Run `./installPackages.sh`
1. `sudo dnf install git make` 1. Run `./apply.sh`
1. `git clone --recurse-submodules git@github.com:He4eT/dotfiles.git ~/dotfiles`
1. Install [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh#basic-installation) 1. Install [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh#basic-installation)
1. `make desktop_i3`
## GTK ## GTK
@ -19,6 +17,13 @@
XDG_CURRENT_DESKTOP=gnome XDG_CURRENT_DESKTOP=gnome
``` ```
## git
1. `git config --global core.pager 'less -S'`
1. `git config --global pull.rebase true`
1. `git config user.email 'email'`
1. `git config user.name 'name'`
## Telegram ## Telegram
1. Tinted theme: `#707070` 1. Tinted theme: `#707070`

55
apply.sh Executable file
View file

@ -0,0 +1,55 @@
# .Xresources
rm ~/.Xresources
ln -sv ~/dotfiles/root/.Xresources ~/.Xresources
# .zshrc
rm ~/.zshrc
ln -sv ~/dotfiles/root/.zshrc ~/.zshrc
# .vimrc
rm ~/.vimrc
ln -sv ~/dotfiles/root/.vimrc ~/.vimrc
# .lynxrc
rm ~/.lynxrc
ln -sv ~/dotfiles/root/.lynxrc ~/.lynxrc
# kitty
mkdir -p ~/.config/kitty
rm ~/.config/kitty/kitty.conf
ln -sv ~/dotfiles/kitty/kitty.conf ~/.config/kitty/kitty.conf
# neovim
mkdir -p ~/.config/nvim
rm ~/.config/nvim/init.lua
ln -sv ~/dotfiles/nvim/init.lua ~/.config/nvim/init.lua
# i3
mkdir -p ~/.config/i3
rm ~/.config/i3/config
ln -sv ~/dotfiles/i3/config ~/.config/i3/config
# sudo cp ~/dotfiles/i3/i3-gaps.desktop /usr/share/xsessions/i3-gaps.desktop
# dunst
mkdir -p ~/.config/dunst
rm ~/.config/dunst/dunstrc
ln -sv ~/dotfiles/dunst/dunstrc ~/.config/dunst/dunstrc
# polybar
mkdir -p ~/.config/polybar
rm ~/.config/polybar/config
ln -sv ~/dotfiles/polybar/config.ini ~/.config/polybar/config.ini
# ranger
mkdir -p ~/.config/ranger
rm ~/.config/ranger/rc.conf
ln -sv ~/dotfiles/ranger/rc.conf ~/.config/ranger/rc.conf
rm ~/.config/ranger/scope.sh
ln -sv ~/dotfiles/ranger/scope.sh ~/.config/ranger/scope.sh
# rofi
mkdir -p ~/.config/rofi
rm ~/.config/rofi/config
ln -sv ~/dotfiles/rofi/config.rasi ~/.config/rofi/config.rasi
rm ~/.config/rofi/paper-float.rasi
ln -sv ~/dotfiles/rofi/paper-float.rasi ~/.config/rofi/paper-float.rasi

128
dunst/dunstrc Normal file
View file

@ -0,0 +1,128 @@
# @see https://github.com/dunst-project/dunst/blob/master/dunstrc
[global]
# Position
origin = top-right
offset = 16x48
shrink = yes
# Display
monitor = 0
follow = mouse
# History
sticky_history = yes
history_length = 20
# Timings
show_age_threshold = 60
idle_threshold = 120
# Tuning
sort = yes
hide_duplicate_count = yes
indicate_hidden = yes
show_indicators = no
startup_notification = false
# Borders
frame_width = 3
frame_color = "#bdbdbd"
gap_size = 0
separator_height = 3
separator_color = "#bdbdbd"
# Paddings
padding = 16
horizontal_padding = 12
# Progress bar
highlight = "#cdcdcd"
progress_bar = true
progress_bar_height = 8
progress_bar_frame_width = 0
progress_bar_min_width = 300
# Content
font = Noto Sans 11
alignment = left
word_wrap = yes
ignore_newline = no
transparency = 0
line_height = 0
icon_position = off
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s %n\n</b>\n%b\n"
[urgency_low]
background = "#222222"
foreground = "#cdcdcd"
timeout = 5
[urgency_normal]
background = "#222222"
foreground = "#cdcdcd"
timeout = 8
[urgency_critical]
background = "#444444"
foreground = "#cdcdcd"
timeout = 0
[change-format]
appname = dunstify
format = "<b>%s\n</b>\n%b\n"
# vim: ft=cfg

View file

@ -1,12 +1,6 @@
# Firefox # Firefox
## userChrome
1. Set `toolkit.legacyUserProfileCustomizations.stylesheets` to `true` with `about:config` 1. Set `toolkit.legacyUserProfileCustomizations.stylesheets` to `true` with `about:config`
1. Locate profile with `about:profiles` 1. Locate profile with `about:profiles`
1. Copy `firefox/userChrome.css` to `{Root Directory}/chrome/userChrome.css` 1. Copy `firefox/userChrome.css` to `{Root Directory}/chrome/userChrome.css`
1. Customize interface 1. Customize interface
## userStyles
Styles can be applied using the [CSS Override extension](https://github.com/swcolegrove/css-override-web-extension).

View file

@ -0,0 +1,62 @@
{
"__ConfigsMigration__userValeusSameToDefaultAreCleared": true,
"animation": false,
"autoAttachOnAnyOtherTrigger": 0,
"autoAttachOnContextNewTabCommand": 6,
"autoAttachOnNewTabButtonAccelClick": 6,
"autoAttachOnNewTabButtonMiddleClick": 6,
"autoAttachOnNewTabCommand": 0,
"autoAttachOnOpenedFromExternal": 0,
"autoAttachOnOpenedWithOwner": 6,
"autoAttachSameSiteOrphan": 0,
"autoGroupNewTabsFromPinned": false,
"chunkedUserStyleRules0": "OnJvb3QgewogIC0tdGFiLXNpemU6IDIuM2VtOwogIC0tdGFiLWhpZ2hsaWdodGVyLXNpemU6IDRweDsKfQoKLyogTm8gbmV3IHRhYiBidXR0b24gKi8KLm5ld3RhYi1idXR0b24gewogIGRpc3BsYXk6IG5vbmU7Cn0KLm5ld3RhYi1idXR0b246OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9CgovKiBDb3VudGVyIHR1bm5pbmcgKi8KLmNvdW50ZXIgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5jb3VudGVyOjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwp9Ci5jb3VudGVyOjphZnRlciB7CiAgY29udGVudDogJyc7Cn0KCi8qIFB1dCBzY3JvbGxiYXIgcmlnaHRzaWRlICovCjpyb290LmxlZnQgI3RhYmJhciB7IGRpcmVjdGlvbjogbHRyOyB9CgovKiBTY3JvbGxiYXIgd2lkdGggKi8KI3Bpbm5lZC10YWJzLWNvbnRhaW5lciwgI25vcm1hbC10YWJzLWNvbnRhaW5lciB7CiAgc2Nyb2xsYmFyLXdpZHRoOiB1bnNldDsKfQoKLyogQ29tbW9uIGJhY2tncm91bmQgKi8KI2JhY2tncm91bmQgewogIGJhY2tncm91bmQ6IC1tb3otZGlhbG9nOwp9CgovKiBQaW5lZCB0YWJzIGNvbnRhaW5lciAqLwojcGlubmVkLXRhYnMtY29udGFpbmVyIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE3MywgMTczLCAxNzMpOwogIHRyYW5zaXRpb246IG5vbmU7Cn0KCi8qIFRhYnMgKi8KCnRhYi1pdGVtLAp0YWItaXRlbS1zdWJzdGFuY2UgewogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Cgp0YWItaXRlbS1zdWJzdGFuY2UgewogIHBhZGRpbmc6IDAuM2VtOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNzMsIDE3MywgMTczKTsKICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KCi50YWIsIC50YWIucGlubmVkIHsKICBoZWlnaHQ6IHZhcigtLXRhYi1zaXplKTsKICBtYXJnaW4tdG9wOiAtMXB4Owp9CgoudGFiOmhvdmVyID4gdGFiLWl0ZW0tc3Vic3RhbmNlLAoudGFiLmFjdGl2ZSA+IHRhYi1pdGVtLXN1YnN0YW5jZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmFjZS1oaWdobGlnaHQtbW9yZS1saWdodGVyKTsKfQoKLnRhYi5hY3RpdmUgPiB0YWItaXRlbS1zdWJzdGFuY2UgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoudGFiIC5sYWJlbCB7CiAgbWFyZ2luLWxlZnQ6IDAuNGVtOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS10YWItc2l6ZSk7Cn0KCi50YWIgLmNsb3NlYm94IHsKICBtYXJnaW4tbGVmdDogMC4yZW07CiAgbWFyZ2luLXJpZ2h0OiAwLjFlbTsKfQoKdGFiLWl0ZW0gdGFiLWZhdmljb24sCnRhYi1pdGVtIHRhYi1mYXZpY29uICogewogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5oaWdobGlnaHRlcjo6YmVmb3JlIHsKICBtYXJnaW4tdG9wOiAwcHg7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9",
"closeParentBehaviorMode": 1,
"configsVersion": 33,
"context_sendTreeToDevice": true,
"faviconizePinnedTabs": false,
"inheritContextualIdentityToSameSiteOrphanMode": 0,
"insertNewChildAt": 0,
"insertNewTabFromPinnedTabAt": 1,
"labelOverflowStyle": "crop",
"lastSelectedSubPanelProviderId": "@tst-search",
"notifiedFeaturesVersion": 9,
"optionsExpandedSections": [
"section-appearance",
"section-newTabWithOwner",
"section-newTab",
"section-treeBehavior",
"section-advanced",
"section-debug"
],
"parentTabOperationBehaviorMode": 1,
"scrollLines": 5,
"shiftTabsForScrollbarDistance": "0.0em",
"showAutoGroupOptionHint": false,
"showExpertOptions": true,
"showNewTabActionSelector": false,
"sidebarPosition": 1,
"sidebarPositionRighsideNotificationShown": true,
"sidebarScrollbarPosition": 2,
"sidebarWidthInWindow": {
"1": 314,
"257": 0,
"1425": 314
},
"simulateSVGContextFill": false,
"style": "none",
"syncDevices": {
"device-1679911263898-61773": {
"id": "device-1679911263898-61773",
"name": "Firefox on Linux",
"icon": "device-desktop",
"timestamp": 1756424972587
}
},
"treeDoubleClickBehavior": 1,
"useCachedTree": false,
"userStyleRules": "",
"userStyleRulesFieldHeight": "484px",
"warnOnCloseTabs": false,
"warnOnCloseTabsByClosebox": false
}

94
firefox/treestyletab.css Normal file
View file

@ -0,0 +1,94 @@
:root {
--tab-size: 2.3em;
--tab-highlighter-size: 4px;
}
/* No new tab button */
.newtab-button {
display: none;
}
.newtab-button::after {
display: none;
}
/* Counter tunning */
.counter {
font-weight: bold;
}
.counter::before {
content: '';
}
.counter::after {
content: '';
}
/* Put scrollbar rightside */
:root.left #tabbar { direction: ltr; }
/* Scrollbar width */
#pinned-tabs-container, #normal-tabs-container {
scrollbar-width: unset;
}
/* Common background */
#background {
background: -moz-dialog;
}
/* Pined tabs container */
#pinned-tabs-container {
border-bottom: 1px solid rgb(173, 173, 173);
transition: none;
}
/* Tabs */
tab-item,
tab-item-substance {
justify-content: center;
}
tab-item-substance {
padding: 0.3em;
border: 1px solid rgb(173, 173, 173);
border-right: none;
}
.tab, .tab.pinned {
height: var(--tab-size);
margin-top: -1px;
}
.tab .label {
margin-left: 0.4em;
line-height: var(--tab-size);
}
.tab .closebox {
margin-left: 0.2em;
margin-right: 0.1em;
}
tab-item tab-favicon,
tab-item tab-favicon * {
vertical-align: top;
}
.highlighter::before {
margin-top: 0px;
margin-bottom: 0px;
}
.tab:hover > tab-item-substance,
.tab.active > tab-item-substance {
background: var(--face-highlight-more-lighter);
}
.tab.active > tab-item-substance {
font-weight: bold;
}
.tab.active .highlighter {
width: 5px;
background: var(--tab-highlighted-glow);
}

View file

@ -0,0 +1,67 @@
{
"waitForEnterForFilteredHints": false,
"keyMappings": "# Insert your preferred key mappings here.\nmap [ goPrevious\nmap ] goNext\n\nmap J nextTab\nmap K previousTab",
"linkHintCharacters": "sadfjklervmuigh",
"ignoreKeyboardLayout": true,
"smoothScroll": false,
"settingsVersion": "2.2.1",
"userDefinedLinkHintCss": "/* click flash */\ndiv.vimiumFlash,\ndiv.vimium-flash {\n box-shadow: none;\n outline: 3px solid rgba(0, 0, 0, 0.5);\n outline-offset: 4px;\n}\n\n/* linkhint boxes */\n#vimiumHintMarkerContainer div.internalVimiumHintMarker, #vimiumHintMarkerContainer div.vimiumHintMarker {\n background: #fff;\n border-radius: 0;\n border: 2px solid #000;\n color: black;\n font-weight: bold;\n font-size: 12px;\n}\n\ndiv > .vimiumHintMarker {\n background: #fff;\n border-radius: 0;\n border: 2px solid #000;\n}\n\n/* linkhint text */\ndiv > .vimiumHintMarker span {\n color: black;\n font-weight: bold;\n font-size: 12px;\n}\n\n.vimiumReset,\ndiv.vimiumReset,\nspan.vimiumReset,\ntable.vimiumReset,\na.vimiumReset,\na:visited.vimiumReset,\na:link.vimiumReset,\na:hover.vimiumReset,\ntd.vimiumReset,\ntr.vimiumReset {\n font-family: sans-serif;\n}\n\n\n#vomnibar {\n border-radius: 0;\n border: 0;\n box-shadow: 0 2px 16px rgba(0,0,0,0.3);\n color: #2d2d2d;\n left: 50%;\n margin-left: -320px;\n max-width: 640px;\n top: 18px;\n}\n\n#vomnibar .vomnibarSearchArea {\n background: #F9FAF9;\n border: 0;\n border-radius: 0;\n padding: 0;\n}\n\n#vomnibar input {\n border-radius: 0;\n border: 0;\n box-shadow: none;\n font-size: 24px;\n height: initial;\n padding: 16px 24px;\n}\n\n#vomnibar ul {\n background: inherit;\n border-radius: 0;\n padding: 0;\n margin: 0;\n}\n\n#vomnibar li {\n border: 0;\n color: #2d2d2d;\n display: flex;\n line-height: 1;\n}\n\n#vomnibar li .vomnibarTopHalf,\n#vomnibar li .vomnibarBottomHalf {\n font-size: 13px;\n margin: 0;\n padding: 0;\n}\n\n#vomnibar li .vomnibarTopHalf {\n display: flex;\n flex: 0 0 67%;\n margin-right: 16px;\n}\n\n#vomnibar li .vomnibarBottomHalf {\n flex: 0 0 33%;\n overflow: hidden;\n text-overflow: ellipsis;\n color: transparent;\n}\n\n#vomnibar li .vomnibarSource.vomnibarNoInsertText,\n#vomnibar li .vomnibarSource.vomnibarInsertText {\n display: none;\n}\n\n#vomnibar li .vomnibarSource,\n#vomnibar li .vomnibarUrl {\n color: #979797;\n}\n\n#vomnibar li .vomnibarSource {\n display: block;\n flex-shrink: 0;\n font-size: 13px;\n line-height: 1.6;\n margin-right: 12px;\n text-transform: uppercase;\n}\n\n#vomnibar li .vomnibarTitle,\n#vomnibar li .vomnibarUrl {\n line-height: 1.6;\n}\n\n#vomnibar li .vomnibarTitle {\n color: #2d2d2d;\n display: block;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n#vomnibar li .vomnibarMatch {\n color: inherit;\n}\n\n#vomnibar li.vomnibarSelected {\n background: #222222;\n}\n\n#vomnibar li.vomnibarSelected .vomnibarSource,\n#vomnibar li.vomnibarSelected .vomnibarUrl {\n color: #ebebeb;\n}\n\n#vomnibar li.vomnibarSelected .vomnibarTitle {\n color: #f4f4f4;\n}\n\n#vomnibar li.vomnibarSelected .vomnibarMatch {\n color: inherit;\n}\n\ndiv.vimiumHUD {\n border-radius: 0;\n box-shadow: unset;\n left: unset;\n right: 0;\n}",
"exclusionRules": [
{
"passKeys": "",
"pattern": "https?://chriskempson.com/*"
},
{
"passKeys": "",
"pattern": "https?://config.qmk.fm/*"
},
{
"passKeys": "",
"pattern": "https?://zty.pe/*"
},
{
"passKeys": "",
"pattern": "https?://monkeytype.com/*"
},
{
"passKeys": "",
"pattern": "https?://monkeytype.com/*"
},
{
"passKeys": "",
"pattern": "https?://hh.gbdev.io/*"
},
{
"passKeys": "",
"pattern": "https?://v6p9d9t4.ssl.hwcdn.net/*"
},
{
"passKeys": "",
"pattern": "https?://docs.google.com/*"
},
{
"passKeys": "",
"pattern": "https?://html.itch.zone/*"
},
{
"passKeys": "j, k, i, u, >, r, d, t",
"pattern": "https?://chat.constr.dev/*"
},
{
"passKeys": "",
"pattern": "https?://drummyfish.gitlab.io/*"
},
{
"passKeys": "",
"pattern": "https?://babus-games.itch.io/*"
},
{
"passKeys": "",
"pattern": "https?://archive.org/*"
},
{
"passKeys": "",
"pattern": "https?://leetcode.com/*"
}
]
}

View file

@ -1,2 +0,0 @@
[ui]
theme=desolate

View file

@ -1,12 +0,0 @@
[user]
name = He4eT
email = He4eT@oddsquat.org
[core]
pager = less -S
[pull]
rebase = true
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f

291
i3/config Normal file
View file

@ -0,0 +1,291 @@
# [Startup]
exec --no-startup-id feh --bg-scale ~/dotfiles/wallpapers/png/blob.png
exec --no-startup-id setxkbmap -layout 'us,ru' -option 'grp:caps_toggle'
exec --no-startup-id polybar top
exec --no-startup-id unclutter
exec --no-startup-id picom \
--daemon \
--backend glx \
--vsync \
--shadow \
--shadow-opacity=0.9 \
--shadow-radius=12 \
--shadow-offset-x=-12 \
--shadow-offset-y=-9 \
--shadow-exclude='x <= 0 && x2 >= 1920 && y <= 30 && y2 >= 1020' \
--shadow-exclude='class_g = "i3-frame"' \
--shadow-exclude='class_g = "TelegramDesktop" && argb' \
--shadow-exclude='class_g = "net.thunderbird.Thunderbird" && argb' \
--shadow-exclude='class_g = "org.mozilla.firefox" && argb' \
# [Appearance]
# Class Border Back Text Marker Child_Border
client.focused #383838 #383838 #cdcdcd #bdbdbd #bdbdbd
client.focused_inactive #222222 #222222 #7d7d7d #222222 #222222
client.unfocused #222222 #222222 #7d7d7d #222222 #222222
client.urgent #222222 #222222 #7d7d7d #222222 #222222
client.placeholder #222222 #222222 #7d7d7d #222222 #222222
client.background #ffffff
font pango:NotoSans 11
gaps inner 30
hide_edge_borders both
for_window [class=".*"] title_format " ◼ %title"
for_window [class="^.*"] border pixel 3
# [Exceptions]
for_window [title=" is sharing your screen.$"] \
border none, sticky enable, move position 0 px 0 px
# [Keyboard Shortcuts]
set $mod Mod4
# [Execute]
bindsym $mod+Return exec urxvt
bindsym $mod+d exec rofi -show run
bindsym $mod+Tab exec rofi -show window
# [Utils]
bindsym Print exec xfce4-screenshooter
bindsym XF86Tools exec xfce4-screenshooter --region --delay 0
bindsym $mod+y exec --no-startup-id "pkill gpick; gpick -so | xclip -sel c"
bindsym $mod+g exec --no-startup-id xdotool mousemove 0 1080
bindsym $mod+Shift+g exec --no-startup-id xdotool mousemove 960 540
bindsym $mod+t \
exec "firefox --new-tab --url about:newtab && i3-msg 'workspace 1'"
bindsym $mod+Shift+o \
exec "~/dotfiles/i3/scripts/tabToLastWorkspace.sh"
# [Notifications]
bindsym $mod+grave exec --no-startup-id dunstctl history-pop
bindsym $mod+BackSpace exec --no-startup-id dunstctl close-all
# [Volume Controls]
bindsym XF86AudioRaiseVolume exec --no-startup-id \
pactl set-sink-volume @DEFAULT_SINK@ +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id \
pactl set-sink-volume @DEFAULT_SINK@ -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id \
pactl set-sink-mute @DEFAULT_SINK@ toggle # mute sound
# [Screen Brightness Controls]
bindsym XF86MonBrightnessUp exec --no-startup-id \
"light -A 5 && dunstify Brightness -h int:value:`light`"
bindsym XF86MonBrightnessDown exec --no-startup-id \
"light -U 5 && dunstify Brightness -h int:value:`light`"
# [i3 Controls]
bindsym $mod+Shift+q kill
# Lock the screen
bindsym $mod+F4 exec "i3lock -c 000000"
# Reload the configuration file
bindsym $mod+Shift+c reload
# Restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# Exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec \
"i3-nagbar -t warning -m 'Exit i3?' -b 'Yes' 'i3-msg exit'"
# Change the Focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the Focused Window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# Split in Horizontal Orientation
bindsym $mod+b split h
# Split in Vertical Orientation
bindsym $mod+v split v
# Enter Fullscreen Mode for the Focused Container
bindsym $mod+f fullscreen toggle
# Change Container Layout (Stacked, Tabbed, Toggle Split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Toggle Mode (Tiling / Floating)
bindsym $mod+Shift+space floating toggle
# Change Focus Between Tiling and Floating Windows
bindsym $mod+space focus mode_toggle
# Use Mouse+$mod to Drag Floating Windows to Their Wanted Position
floating_modifier $mod
# Focus the Parent Container
bindsym $mod+a focus parent
# Focus the Child Container
bindsym $mod+z focus child
# [Workspaces]
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# Workspace Rules
workspace_auto_back_and_forth yes
workspace 1 gaps inner 0
workspace 2 gaps inner 0
for_window [workspace="2"] layout tabbed
workspace 5 gaps inner 0
workspace 9 gaps inner 0
# Switch to Nearest Workspace
bindsym $mod+Ctrl+h workspace prev
bindsym $mod+Ctrl+j workspace next
bindsym $mod+Ctrl+k workspace prev
bindsym $mod+Ctrl+l workspace next
bindsym $mod+Ctrl+Left workspace prev
bindsym $mod+Ctrl+Down workspace next
bindsym $mod+Ctrl+Up workspace prev
bindsym $mod+Ctrl+Right workspace next
# Switch to Workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
# Move Focused Container to Workspace
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
# [Mods]
bindsym $mod+r mode "resize"
mode "resize" {
# Resize Current Window
bindsym h resize shrink width 10 px or 10 ppt
bindsym j resize grow height 10 px or 10 ppt
bindsym k resize shrink height 10 px or 10 ppt
bindsym l resize grow width 10 px or 10 ppt
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# Set Gaps Size
bindsym 0 gaps inner current set 0
bindsym 1 gaps inner current set 10
bindsym 2 gaps inner current set 20
bindsym 3 gaps inner current set 30
bindsym 4 gaps inner current set 40
bindsym 5 gaps inner current set 50
bindsym r exec --no-startup-id \
"i3-msg mode default && i3-msg gaps inner current set 0"
# Back to Normal Mode
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+m mode "mouse"
mode "mouse" {
# Clicks
bindsym j exec --no-startup-id xdotool click 1
bindsym k exec --no-startup-id xdotool click 3
bindsym l exec --no-startup-id xdotool click 2
# Wheel
bindsym t exec --no-startup-id xdotool click 4
bindsym g exec --no-startup-id xdotool click 5
bindsym y exec --no-startup-id xdotool click 4
bindsym h exec --no-startup-id xdotool click 5
# Movement
bindsym a exec --no-startup-id \
"~/dotfiles/i3/scripts/binSeekCursor.sh reset"
bindsym e exec --no-startup-id \
"~/dotfiles/i3/scripts/binSeekCursor.sh up"
bindsym s exec --no-startup-id \
"~/dotfiles/i3/scripts/binSeekCursor.sh left"
bindsym d exec --no-startup-id \
"~/dotfiles/i3/scripts/binSeekCursor.sh down"
bindsym f exec --no-startup-id \
"~/dotfiles/i3/scripts/binSeekCursor.sh right"
# Slow Movement
bindsym Shift+e exec --no-startup-id xdotool mousemove_relative -- 0 -1
bindsym Shift+s exec --no-startup-id xdotool mousemove_relative -- -1 0
bindsym Shift+d exec --no-startup-id xdotool mousemove_relative -- 0 1
bindsym Shift+f exec --no-startup-id xdotool mousemove_relative -- 1 0
# Back to Normal Mode
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+m mode "default"
}

9
i3/i3-gaps.desktop Normal file
View file

@ -0,0 +1,9 @@
[Desktop Entry]
Name=i3-gaps
Comment=improved dynamic tiling window manager
Exec=i3
TryExec=i3
Type=Application
X-LightDM-DesktopName=i3
DesktopNames=i3

44
installPackages.sh Executable file
View file

@ -0,0 +1,44 @@
sudo dnf install \
fontawesome-fonts \
terminus-fonts \
unifont-fonts \
i3 \
picom \
polybar \
rofi \
lxappearance \
gparted \
gimp \
vlc \
qt5ct \
rxvt-unicode \
cbonsai \
cmatrix \
fastfetch \
NetworkManager-tui \
arandr \
gpick \
light \
btop \
htop \
ncdu \
lynx \
sen \
vim \
neovim \
ripgrep \
xclip \
xdotool \
xdpyinfo \
xkb-switch \
unclutter-xfixes \
git \
zsh \
mc \
ranger \
telegram-desktop \
sudo dnf group install Multimedia
mkdir ./zsh/plugins
git clone git@github.com:zsh-users/zsh-autosuggestions.git ~/dotfiles/zsh/plugins/zsh-autosuggestions

1103
kitty/kitty.conf Normal file

File diff suppressed because it is too large Load diff

6
nvim/.stylua.toml Normal file
View file

@ -0,0 +1,6 @@
column_width = 160
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
call_parentheses = "None"

643
nvim/init.lua Normal file
View file

@ -0,0 +1,643 @@
--[[ NeoVim Configuration File ]]
--[[ Formatter:
npx @johnnymorganz/stylua-bin ./init.lua
]]
--[[ Structure:
├─ cfg_options: See `:help vim.o`
├─ cfg_filetypes: Filetype aliases
├─ cfg_cmds: Commands
├─ cfg_autocmds: Autocommands
├─ cfg_keymaps: Base keymaps
└─ cfg_lazy: Plugin manager
  ├─ cfg_lazy_guess_indent: Detect tabstop and shiftwidth automatically
  ├─ cfg_lazy_surround: Add/change/delete paired surroundings
  ├─ cfg_lazy_comment: Toggle line/block comments
  ├─ cfg_lazy_colorizer: Color highlighter
  ├─ cfg_lazy_lualine: Statusline
  ├─ cfg_lazy_leap: Leap motion plugin
  ├─ cfg_lazy_cmp: Autocompletion
  │ └─ cfg_lazy_cmp_keymaps
  ├─ cfg_lazy_fzf: Fuzzy search
  │ └─ cfg_lazy_fzf_keymaps
  ├─ cfg_lazy_gitsigns: Git-related actions and gutter signs
  │ └─ cfg_lazy_gitsigns_keymaps
├─ cfg_lazy_lsp: LSP configuration & plugins
  │ ├─ cfg_lazy_lsp_keymaps
  │ └─ cfg_lazy_lsp_servers
  ├─ cfg_lazy_treesitter: Highlight, edit, and navigate code
  │ ├─ cfg_lazy_treesitter_langs
  │ └─ cfg_lazy_treesitter_keymaps
  ├─ cfg_lazy_onedark: Colorscheme inspired by Atom
  └─ cfg_lazy_desolate: Not-so-colorful colorscheme
]]
--[[ cfg_options: See `:help vim.o` ]]
-- Raise a dialog asking if you wish to save the current file(s)
vim.o.confirm = true
-- Set window title
vim.o.title = true
vim.o.titlestring = '%F'
-- Window borders
vim.o.winborder = 'solid'
-- Hide mode in cmd
vim.o.showmode = false
-- Make line numbers default
vim.o.number = true
-- Enable mouse mode
vim.o.mouse = 'a'
vim.o.mousemodel = 'extend'
-- Enable break indent
vim.o.breakindent = true
-- Disable line wrapping
vim.o.wrap = false
-- Break lines at word
vim.o.linebreak = true
-- Go to start of the line after gg and similar moves
vim.o.startofline = true
-- Show cursorline
vim.o.cursorline = true
-- Keep signcolumn on by default
vim.o.signcolumn = 'yes'
-- Hide tildes on unused lines
vim.o.fillchars = 'eob: '
-- Save undo history
vim.o.undofile = true
-- Case insensitive searching UNLESS /C or capital in search
vim.o.ignorecase = true
vim.o.smartcase = true
-- Decrease update time
vim.o.updatetime = 250
-- Disabling the timeout for key sequence completion
vim.o.timeout = false
-- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect,fuzzy'
-- Keeps the same screen lines in all split windows
vim.o.splitkeep = 'screen'
-- Disable Intro (:intro)
vim.opt.shortmess:append 'I'
-- Netrw settings
vim.g.netrw_sort_sequence = '[\\/]$,*'
--[[ cfg_filetypes: Filetype aliases ]]
vim.filetype.add {
extension = {
pcss = 'css',
},
}
--[[ cfg_cmds: Commands ]]
vim.api.nvim_create_user_command('E', 'Explore', { desc = 'Alias for :Explore' })
vim.api.nvim_create_user_command('WipeUI', function()
vim.api.nvim_command 'nohlsearch'
vim.api.nvim_echo({}, false, {})
for _, win in ipairs(vim.api.nvim_list_wins()) do
local win_config = vim.api.nvim_win_get_config(win)
if win_config.relative ~= '' then
vim.api.nvim_win_close(win, true)
end
end
end, { desc = 'Clear search highlight, cmdline, and popups' })
--[[ cfg_autocmds: Autocommands ]]
-- Highlight on yank
vim.api.nvim_create_autocmd('TextYankPost', {
group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }),
pattern = '*',
callback = function()
vim.hl.on_yank()
end,
})
-- Default insert mode in terminal buffers
vim.api.nvim_create_autocmd('BufEnter', {
group = vim.api.nvim_create_augroup('TerminalEnter', { clear = true }),
pattern = 'term://*',
command = 'startinsert',
})
-- Disable line numbers for terminal buffers
vim.api.nvim_create_autocmd('TermOpen', {
group = vim.api.nvim_create_augroup('TerminalSettings', { clear = true }),
pattern = '*',
command = 'setlocal nonumber',
})
-- Switch the keyboard layout to English (US) when leaving Insert Mode
vim.api.nvim_create_autocmd('InsertLeave', {
group = vim.api.nvim_create_augroup('SwitchToEnglishOnLeave', { clear = true }),
pattern = '*',
command = 'silent !xkb-switch -s us',
})
--[[ cfg_keymaps: Base keymaps ]]
local leader = ' '
vim.g.mapleader = leader
vim.g.maplocalleader = leader
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
-- Remap for dealing with word wrap
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
-- Remap PgUp/PgDown to C-u/C-d
vim.keymap.set('n', '<PageDown>', '<C-d>', { silent = true, desc = 'Emulate <Ctrl + d>' })
vim.keymap.set('n', '<PageUp>', '<C-u>', { silent = true, desc = 'Emulate <Ctrl + u>' })
-- Open terminal
vim.keymap.set('n', '<leader>T', ':terminal<CR>i', { silent = true, desc = 'Open [t]erminal here' })
vim.keymap.set('n', '<leader>t', ':vs<CR><C-w>w:terminal<CR>i', { silent = true, desc = 'Open [T]erminal in vsplit' })
-- Escape terminal mode
vim.keymap.set('t', ';;', '<C-\\><C-n>', { silent = true, desc = 'Escape terminal mode' })
-- Window managment
vim.keymap.set('n', '<leader>q', ':bp|bd#<CR>', { desc = 'Close current buffer' })
vim.keymap.set('n', '<leader>w', '<C-w>', { remap = true, desc = 'Alias for Ctrl + w' })
vim.keymap.set('n', '<leader>k', '<C-w>w', { remap = true, desc = 'Jump to the next window' })
vim.keymap.set('n', '<leader>K', ':vs<CR><C-w>w', { desc = 'Split window to the right' })
-- Navigation
vim.keymap.set('n', '<leader>h', '<C-o>', { desc = 'Back' })
vim.keymap.set('n', '<leader>l', '<C-i>', { desc = 'Forward' })
-- Copy'n'Paste
vim.keymap.set('v', '<leader>y', '"+y', { desc = 'Cop[y] selection to system clipboard' })
vim.keymap.set('n', '<leader>y', function()
vim.fn.setreg('+', vim.fn.getreg('"'))
print('Copied to system clipboard')
end, {
silent = true,
desc = 'Copy last [y]anked or deleted text to system clipboard',
})
-- Diagnostic
vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float, { desc = 'Open floating [d]iagnostic message' })
vim.keymap.set('n', '<leader>D', vim.diagnostic.setloclist, { desc = 'Open [D]iagnostics list' })
-- Search in Visual Mode
vim.keymap.set('x', '/', '<Esc>/\\%V', { desc = 'Search within visual selection' })
-- Hide search highlight, cmdline, and popups
vim.keymap.set('n', '<BS>', ':WipeUI<CR>', { silent = true, desc = 'WipeUI' })
vim.keymap.set('n', '<ESC>', ':WipeUI<CR>', { silent = true, desc = 'WipeUI' })
--[[ cfg_lazy: Plugin manager ]]
-- https://github.com/folke/lazy.nvim
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system {
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable', -- latest stable release
lazypath,
}
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
--[[ cfg_lazy_guess_indent: Detect tabstop and shiftwidth automatically ]]
'NMAC427/guess-indent.nvim',
--[[ cfg_lazy_surround: Add/change/delete paired surroundings ]]
'tpope/vim-surround',
--[[ cfg_lazy_comment: Toggle line/block comments ]]
{
'numToStr/Comment.nvim',
opts = {},
},
--[[ cfg_lazy_colorizer: Color highlighter ]]
{
'catgoose/nvim-colorizer.lua',
cmd = 'ColorizerToggle',
opts = {},
},
--[[ cfg_lazy_lualine: Statusline ]]
{
'nvim-lualine/lualine.nvim',
opts = {
options = {
globalstatus = true,
icons_enabled = false,
section_separators = '',
component_separators = '',
},
},
},
--[[ cfg_lazy_leap: Leap motion plugin ]]
{
url = 'https://codeberg.org/andyg/leap.nvim',
dependencies = {
'tpope/vim-repeat',
},
config = function()
local leap = require 'leap'
leap.opts.highlight_unlabeled_phase_one_targets = true
leap.opts.safe_labels = {}
vim.keymap.set({ 'n', 'x', 'o' }, 's', '<Plug>(leap-forward)')
vim.keymap.set({ 'n', 'x', 'o' }, 'S', '<Plug>(leap-backward)')
vim.keymap.set({ 'x', 'o' }, 'x', '<Plug>(leap-forward-till)')
vim.keymap.set({ 'x', 'o' }, 'X', '<Plug>(leap-backward-till)')
vim.keymap.set({ 'n' }, 'gs', '<Plug>(leap-from-window)')
end,
},
--[[ cfg_lazy_cmp: Autocompletion ]]
{
'hrsh7th/nvim-cmp',
dependencies = {
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-path',
},
config = function()
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args)
vim.snippet.expand(args.body)
end,
},
--[[ cfg_lazy_cmp_keymaps ]]
mapping = cmp.mapping.preset.insert {
['<C-Space>'] = cmp.mapping.complete {},
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<Esc>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'path' },
},
}
end,
},
--[[ cfg_lazy_fzf: Fuzzy search ]]
{
'ibhagwan/fzf-lua',
dependencies = {
{
'junegunn/fzf',
build = './install --bin',
},
},
config = function()
local fzf = require 'fzf-lua'
fzf.setup {
fzf_colors = true,
winopts = {
backdrop = 100,
border = 'single',
fullscreen = true,
preview = {
border = 'single',
},
previewers = {
builtin = {
syntax = true,
syntax_limit_b = 1024 * 64, -- syntax limit (bytes), 0=nolimit
},
},
},
grep = {
rg_opts = ''
.. ' --color=ansi'
.. ' --colors column:fg:blue'
.. ' --colors line:fg:green'
.. ' --colors match:fg:red'
.. ' --colors path:fg:yellow'
.. ' --column'
.. ' --line-number'
.. ' --max-columns=512'
.. ' --smart-case'
.. ' --hidden'
.. ' --vimgrep',
file_ignore_patterns = {
'^node_modules/',
'/node_modules/',
'^.git/',
'^.yarn/',
},
},
}
local fzf_files = function()
fzf.files { fd_opts = '--no-ignore --hidden' }
end
local fzf_grep_filename = function()
fzf.grep { search = vim.fn.expand '%:t' }
end
local fzf_git_chronology = function()
fzf.files {
cmd = "git log --name-only --pretty=\"\" | sed -e '/^\\s*$/d' | awk '!seen[$0]++'",
hidden = false,
}
end
--[[ cfg_lazy_fzf_keymaps ]]
vim.keymap.set('n', '<leader>fp', fzf.builtin, { desc = '[f]zf: [p]allete' })
vim.keymap.set('n', '<leader>f.', fzf.resume, { desc = '[f]zf: resume [.]' })
vim.keymap.set('n', '<leader>b', fzf.buffers, { desc = '[f]zf: [b]uffers' })
vim.keymap.set('n', '<leader>fF', fzf_files, { desc = '[f]zf: all [F]iles' })
vim.keymap.set('n', '<leader>ff', fzf.git_files, { desc = '[f]zf: git [f]iles' })
vim.keymap.set('n', '<leader>fd', fzf.git_status, { desc = '[f]zf: git [d]iff' })
vim.keymap.set('n', '<leader>fh', fzf_git_chronology, { desc = '[f]zf: git c[h]ronology' })
vim.keymap.set('n', '<leader>f/', fzf.blines, { desc = '[f]zf: buffer lines [/]' })
vim.keymap.set('n', '<leader>fg', fzf.live_grep, { desc = '[f]zf: [g]rep' })
vim.keymap.set('n', '<leader>fw', fzf.grep_cword, { desc = '[f]zf: grep [w]' })
vim.keymap.set('n', '<leader>fW', fzf.grep_cWORD, { desc = '[f]zf: grep [W]' })
vim.keymap.set('n', '<leader>fu', fzf_grep_filename, { desc = '[f]zf: current file [u]sages' })
vim.keymap.set('n', '<leader>p', fzf.registers, { desc = '[f]zf: [p]aste from register' })
vim.keymap.set('n', '<leader>?', fzf.keymaps, { desc = '[f]zf: keymaps [?]' })
vim.keymap.set('n', '<leader>/', fzf.search_history, { desc = 'fzf: search history [/]' })
vim.keymap.set('n', '<leader>:', fzf.command_history, { desc = 'fzf: command history [:]' })
-- LSP
vim.keymap.set('n', 'gd', fzf.lsp_definitions, { desc = 'LSP: [g]oto [d]efinition list' })
vim.keymap.set('n', '<leader>gr', fzf.lsp_references, { desc = 'LSP: [g]oto [r]eference list' })
end,
},
--[[ cfg_lazy_gitsigns: Git-related actions and gutter signs ]]
{
'lewis6991/gitsigns.nvim',
config = function()
require('gitsigns').setup {
signs = {
add = { text = '│' },
change = { text = '│' },
delete = { text = '_' },
topdelete = { text = '‾' },
changedelete = { text = '│' },
},
}
--[[ cfg_lazy_gitsigns_keymaps ]]
vim.keymap.set('n', '[g', ':Gitsigns prev_hunk<CR>', { desc = 'Go to previous Git hunk' })
vim.keymap.set('n', ']g', ':Gitsigns next_hunk<CR>', { desc = 'Go to next Git hunk' })
vim.keymap.set('n', '<leader>gb', ':Gitsigns blame_line<CR>', { desc = 'Show [g]it [b]lame' })
vim.keymap.set('n', '<leader>gu', ':Gitsigns reset_hunk<CR>', { desc = 'Reset [g]it h[u]nk' })
vim.keymap.set('n', '<leader>gj', ':Gitsigns stage_hunk<CR>', { desc = 'Stage/unstage current hunk' })
vim.keymap.set('n', '<leader>gk', ':Gitsigns preview_hunk<CR>', { desc = 'Preview [g]it hun[k]' })
end,
},
--[[ cfg_lazy_lsp: LSP configuration & plugins ]]
{
'neovim/nvim-lspconfig',
dependencies = {
{ 'mason-org/mason.nvim', opts = {} },
'mason-org/mason-lspconfig.nvim',
},
config = function()
-- Diagnostic Appearance
local icon = '⏹'
vim.diagnostic.config {
signs = {
text = {
[vim.diagnostic.severity.ERROR] = icon,
[vim.diagnostic.severity.WARN] = icon,
[vim.diagnostic.severity.INFO] = icon,
[vim.diagnostic.severity.HINT] = icon,
},
},
virtual_text = {
prefix = icon,
},
}
--[[ cfg_lazy_lsp_keymaps ]]
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
callback = function(event)
local map = function(keys, func, desc, mode)
vim.keymap.set(mode or 'n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
-- See also cfg_lazy_fzf_keymaps
map('<C-k>', vim.lsp.buf.signature_help, 'signature documentation', { 'n', 'i' })
map('<leader>rn', vim.lsp.buf.rename, '[r]e[n]ame')
map('<leader>ca', vim.lsp.buf.code_action, '[c]ode [a]ction', { 'n', 'x' })
map('gD', vim.lsp.buf.type_definition, '[g]oto type [D]efinition')
map('<leader>gd', vim.lsp.buf.definition, '[g]oto [d]efinition')
map('<leader>gD', vim.lsp.buf.declaration, '[g]oto [D]eclaration')
map('<leader>ea', vim.lsp.buf.add_workspace_folder, 'workspac[e]: [a]dd folder')
map('<leader>er', vim.lsp.buf.remove_workspace_folder, 'workspac[e]: [r]emove folder')
map('<leader>el', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, 'workspac[e]: [l]ist folders')
vim.api.nvim_buf_create_user_command(event.buf, 'Format', function()
vim.lsp.buf.format()
end, { desc = 'Format current buffer with LSP' })
end,
})
--[[ cfg_lazy_lsp_servers ]]
local servers = {
lua_ls = {},
ts_ls = {
filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'vue' },
init_options = {
plugins = {
{
-- https://github.com/vuejs/language-tools/wiki/Neovim
languages = { 'vue' },
location = vim.fn.stdpath 'data' .. '/mason/packages/vue-language-server/node_modules/@vue/language-server',
name = '@vue/typescript-plugin',
},
},
},
},
}
local capabilities = require('cmp_nvim_lsp').default_capabilities()
for server, config in pairs(servers) do
config.capabilities = vim.tbl_deep_extend('force', {}, capabilities, config.capabilities or {})
vim.lsp.config(server, config)
end
require('mason-lspconfig').setup {
automatic_enable = true,
ensure_installed = {
'lua_ls',
'ts_ls',
'vue_ls',
},
}
end,
},
--[[ cfg_lazy_treesitter: Highlight, edit, and navigate code ]]
{
'nvim-treesitter/nvim-treesitter',
dependencies = {
'nvim-treesitter/nvim-treesitter-textobjects',
},
build = ':TSUpdate',
config = function()
require('nvim-treesitter.configs').setup {
--[[ cfg_lazy_treesitter_langs ]]
ensure_installed = {
'vim',
'vimdoc',
'lua',
'javascript',
'typescript',
'tsx',
'vue',
'html',
'css',
'scss',
},
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
--[[ cfg_lazy_treesitter_keymaps ]]
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<c-space>',
node_incremental = '<c-space>',
node_decremental = '<M-space>',
scope_incremental = '<c-s>',
},
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
['aa'] = '@parameter.outer',
['ia'] = '@parameter.inner',
['af'] = '@function.outer',
['if'] = '@function.inner',
['ac'] = '@class.outer',
['ic'] = '@class.inner',
},
},
},
}
end,
},
--[[ cfg_lazy_onedark: Colorscheme inspired by Atom ]]
'navarasu/onedark.nvim',
--[[ cfg_lazy_desolate: Not-so-colorful colorscheme ]]
{
'He4eT/desolate.nvim',
dependencies = {
'rktjmp/lush.nvim',
},
priority = 1000,
init = function()
vim.g.desolate_h = 0
vim.g.desolate_s = 0
vim.g.desolate_l = 70
vim.g.desolate_contrast = 120
vim.g.desolate_fg = '#cdcdcd'
vim.g.desolate_bg = '#383838'
vim.g.desolate_constant = '#ffd700'
vim.g.desolate_identifier = '#ffc812'
vim.g.desolate_statement = '#ffffff'
vim.g.desolate_error = '#ff4242'
vim.g.desolate_warning = '#ffad29'
vim.g.desolate_success = '#74af68'
vim.g.desolate_info = '#ffffff'
vim.o.termguicolors = true
vim.o.background = 'dark'
vim.cmd.colorscheme 'desolate'
end,
-- dir = '~/trash/desolate.nvim',
},
}, {
-- lazy.nvim options
lockfile = '~/dotfiles/nvim/lazy-lock.json',
ui = {
backdrop = 100,
border = 'solid',
size = { width = 0.85, height = 0.7 },
icons = {
cmd = '[cmd]',
config = '[cfg]',
event = '[e]',
favorite = '[*]',
ft = '[ft]',
init = '[init]',
import = '[import]',
keys = '[keys]',
lazy = '[lazy]',
plugin = '[plugin]',
runtime = '[runtime]',
require = '[require]',
source = '</>',
start = '[+]',
},
},
})
-- vim: ts=2 sts=2 sw=2 et

24
nvim/lazy-lock.json Normal file
View file

@ -0,0 +1,24 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"desolate.nvim": { "branch": "develop", "commit": "08c59bb2d9e805b206e8128a698bb839a189f1ae" },
"fzf": { "branch": "master", "commit": "4a684b6c784111d4aa15c2532381273d742af97b" },
"fzf-lua": { "branch": "main", "commit": "b2c0603216adb92c6bba81053bc996d7ae95b77a" },
"gitsigns.nvim": { "branch": "main", "commit": "9f3c6dd7868bcc116e9c1c1929ce063b978fa519" },
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"leap.nvim": { "branch": "main", "commit": "eda0138a408a5600c45e324c69fe73c9df30939c" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "21c2a84ce368e99b18f52ab348c4c02c32c02fcf" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
"nvim-colorizer.lua": { "branch": "master", "commit": "338409dd8a6ed74767bad3eb5269f1b903ffb3cf" },
"nvim-lspconfig": { "branch": "master", "commit": "44acfe887d4056f704ccc4f17513ed41c9e2b2e6" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
"onedark.nvim": { "branch": "master", "commit": "213c23ae45a04797572242568d5d51937181792d" },
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }
}

34
oomox/colors/desolate Normal file
View file

@ -0,0 +1,34 @@
NAME="desolate"
THEME_STYLE=oomox
GTK3_GENERATE_DARK=True
ROUNDNESS=0
GRADIENT=0.0
SPACING=8
OUTLINE_WIDTH=0
BTN_OUTLINE_OFFSET=2
BTN_OUTLINE_WIDTH=2
ACCENT_BG=CDCDCD
BG=383838
BTN_BG=383838
BTN_FG=CDCDCD
CARET1_FG=CDCDCD
CARET2_FG=CDCDCD
CARET_SIZE=0.08
FG=CDCDCD
HDR_BG=383838
HDR_BTN_BG=383838
HDR_BTN_FG=CDCDCD
HDR_FG=CDCDCD
MENU_BG=383838
MENU_FG=CDCDCD
SEL_BG=BDBDBD
SEL_FG=383838
TXT_BG=383838
TXT_FG=CDCDCD
WM_BORDER_FOCUS=FFFFFF
WM_BORDER_UNFOCUS=383838
ICONS_ARCHDROID=757575
ICONS_STYLE=archdroid

Some files were not shown because too many files have changed in this diff Show more