Compare commits

..
Author SHA1 Message Date
8b0c9631bd nvim: stylua 2026-06-03 12:51:52 +02:00
8f55e5d525 nvim: copy lua_ls from kickstart.nvim 2026-06-03 12:51:44 +02:00
e2cc701edd .gitignore: no more 2026-06-03 12:49:23 +02:00
8453f7a56b rofi: even row number 2026-06-03 12:35:54 +02:00
afc86615a7 Makefile: safe cleaup 2026-06-03 12:20:54 +02:00
867bd23f49 Makefile: cleanup i3 directory 2026-06-03 12:20:54 +02:00
868a467018 Makefile: add fzf 2026-06-03 12:20:54 +02:00
6d2e96ca48 Makefile: cleanup defaults 2026-06-03 12:20:54 +02:00
f02ec2af74 Makefile: remove lxappearance 2026-06-03 12:20:54 +02:00
1425f4433d nvim: remove xkb-switch 2026-06-03 12:20:54 +02:00
c83f16fb45 Makefile: remove xkb-switch 2026-06-03 12:20:54 +02:00
d9d04b623f Update README.md 2026-06-03 12:20:54 +02:00
7ac320bde1 zsh: add zsh-autosuggestions as submodule 2026-06-03 12:20:54 +02:00
15197873fd Delete installPackages.sh 2026-06-03 12:20:54 +02:00
26666e0508 Delete apply.sh 2026-06-03 12:20:54 +02:00
aa3e69b70c i3: move config to .config 2026-06-03 12:20:54 +02:00
ad13c01291 i3: delete accidental config 2026-06-03 12:20:54 +02:00
c9f41f00b6 nvim: use default lockfile path 2026-06-03 12:20:54 +02:00
3e019d7931 nvim: move to .config 2026-06-03 12:20:54 +02:00
f75f716242 i3: move config to .config 2026-06-03 12:20:54 +02:00
3009db7e2e Update README.md 2026-06-03 12:20:54 +02:00
d0d9540bd1 Makefile: init 2026-06-03 12:20:54 +02:00
194b456a45 Update README.md 2026-06-03 12:20:54 +02:00
cdd5172652 firefox: shuffle the files 2026-06-03 12:20:54 +02:00
d91ca54827 profanity: create profrc 2026-06-03 12:20:54 +02:00
0375ac95b9 profanity: move to .config 2026-06-03 12:20:54 +02:00
0bcd854212 rofi: move to .config 2026-06-03 12:20:54 +02:00
924cac2a08 ranger: move to .config 2026-06-03 12:20:54 +02:00
a23cb0d9bb polybar: move to .config 2026-06-03 12:20:54 +02:00
4a65d16a40 i3: .desktop no more 2026-06-03 12:20:54 +02:00
87c08a7086 dunst: move to .config 2026-06-03 12:20:54 +02:00
91006b39db kitty: move to .config 2026-06-03 12:20:54 +02:00
e18cc38d8b oomox: obsolete 2026-06-03 12:20:54 +02:00
3d4f992e58 zsh: move .zshrc to home 2026-06-03 12:20:54 +02:00
d506f8ee3f vim: move to home 2026-06-03 12:20:54 +02:00
9d77c9ac84 lynx: move to home 2026-06-03 12:20:54 +02:00
0e0110b1a7 Xresources: move to home 2026-06-03 12:20:54 +02:00
c4823477f0 home: add .gitconfig 2026-06-03 12:20:54 +02:00
34 changed files with 134 additions and 200 deletions

2
.gitignore vendored
View file

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

3
.gitmodules vendored Normal file
View file

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

78
Makefile Normal file
View file

@ -0,0 +1,78 @@
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,10 +2,12 @@
## Bootstrap
1. `git clone https://github.com/He4eT/dotfiles.git ~/dotfiles`
1. Run `./installPackages.sh`
1. Run `./apply.sh`
1. Setup SSH keys
1. [Enable RPM Fusion](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/)
1. `sudo dnf install git make`
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. `make desktop_i3`
## GTK
@ -17,13 +19,6 @@
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
1. Tinted theme: `#707070`

View file

@ -1,55 +0,0 @@
# .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

View file

@ -1,6 +1,12 @@
# Firefox
## userChrome
1. Set `toolkit.legacyUserProfileCustomizations.stylesheets` to `true` with `about:config`
1. Locate profile with `about:profiles`
1. Copy `firefox/userChrome.css` to `{Root Directory}/chrome/userChrome.css`
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
}

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,37 @@
/* Turn off border radius. */
*,
.rounded {
border-radius: 0 !important;
}
/* Filter section */
.btn-check {
position: unset;
pointer-events: auto;
opacity: 0;
margin-left: -13px;
z-index: 1000;
}
/* Some air for post text. */
#postContent {
line-height: 1.5;
}
.post-listing {
line-height: 2;
}
/* Tuning for https://lemmy.cafe */
#navbar {
margin-block-start: 16px;
}
#tagline {
display: none;
margin-block-end: 32px;
}
.post-listings {
margin-block-start: 48px;
}

View file

@ -0,0 +1,83 @@
/* Turn off colors for stream icons. */
.stream-privacy {
color: #7f807f !important;
}
/* Turn off border radius. */
*,
*::before,
*::after {
border-radius: 0 !important;
}
/* Turn off border-radius for the compose stream selector. */
.compose_table #compose-recipient.compose-recipient-direct-selected #compose_select_recipient_widget {
border-radius: 0 !important;
}
/* Background color for compose block. */
#compose-content {
background-color: #efebeb !important;
}
/* Background color for send button. */
#message-send-controls-container {
filter: grayscale(1);
}
/* Recent conversations hover item. */
.recent_view_container #recent_view_table tr:hover {
background-color: hsl(0, 0%, 85%) !important;
}
/* Add border to avatars in recent conversations. */
.recent_view_participant_avatar {
outline: 2px solid #e0e0e0;
outline-offset: -2px;
}
/* Color for stream names and topics in recent conversations. */
.table.table-responsive a {
color: #212121 !important;
}
/* Color for focus indicator. */
.recent_view_container #recent_view_table .recent_view_focusable:focus-within {
box-shadow: 0 3px 0 #212121 !important;
}
/* Color for sidebar active item. */
li.active-filter, li.active-sub-filter {
background-color: hsl(0, 0%, 85%) !important;
}
/* Color for sidebar hovered item. */
.bottom_left_row:not(.active-sub-filter):hover, .top_left_row:not(.active-sub-filter):hover {
background-color: hsl(0, 0%, 85%) !important;
}
/* Hide "Subscribe to more streams". */
#subscribe-to-more-streams > a {
opacity: 0;
}
/* Dim logo. */
#realm-logo {
filter: grayscale(1);
opacity: 0.6;
}
/* Hide toolbar buttons. */
#help-menu,
#searchbox_form,
#userlist-toggle,
#settings-dropdown {
opacity: 0 !important;
}
#help-menu:hover,
#searchbox_form:hover,
#searchbox_form:focus-within,
#userlist-toggle:hover,
#settings-dropdown:hover {
opacity: 1 !important;
}

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/*"
}
]
}

45
home/.Xresources Normal file
View file

@ -0,0 +1,45 @@
! RXVT Config. terminus font is required!
!
! xrdb ~/.Xresources
URxvt.font: xft:Terminus:size=13
URxvt*transparent: true
URxvt*tintColor: White
URxvt*shading: 40
URxvt*scrollBar: false
URxvt*print-pipe: cat > /tmp/urxvt-screen-content.txt
URxvt.internalBorder: 20
URxvt*iso14755: False
URxvt*iso14755_52: False
URxvt.keysym.C-S-0x43: eval:selection_to_clipboard
URxvt.keysym.C-S-0x56: eval:paste_clipboard
*.cursorColor: #c5c8c6
*.foreground: #c5c8c6
*.background: #1d1f21
*.color0: #000000
*.color8: #555555
*.color1: #ff4242
*.color9: #ff3242
*.color2: #74af68
*.color10: #74cd68
*.color3: #ffad29
*.color11: #ffb929
*.color4: #00838F
*.color12: #0097A7
*.color5: #9414e6
*.color13: #ff37ff
*.color6: #607D8B
*.color14: #78909C
*.color7: #e1e1e0
*.color15: #ffffff

128
home/.config/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

291
home/.config/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"
}

File diff suppressed because it is too large Load diff

View file

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

658
home/.config/nvim/init.lua Normal file
View file

@ -0,0 +1,658 @@
--[[ 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',
})
--[[ 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 = {
on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if path ~= vim.fn.stdpath 'config' and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then
return
end
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT',
path = { 'lua/?.lua', 'lua/?/init.lua' },
},
workspace = {
checkThirdParty = false,
library = vim.tbl_extend('force', vim.api.nvim_get_runtime_file('', true), {
'${3rd}/luv/library',
'${3rd}/busted/library',
}),
},
})
end,
},
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
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

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" }
}

View file

@ -0,0 +1,169 @@
[config]
padding = 2
background = #222222
background-alt = #444444
foreground = #cdcdcd
foreground-alt = #7d7d7d
date = %%{F#7d7d7d}%Y-%m-%d%%{F-} %%{F#cdcdcd}%H:%M%%{F-}
date-alt =  %%{F#7d7d7d}%A, %d %B %Y %%{F#cdcdcd}%H:%M:%S%%{F-}
[bar/top]
;monitor = ${env:MONITOR:HDMI-1}
width = 100%
height = 30
radius = 0
fixed-center = true
background = ${config.background}
foreground = ${config.foreground}
line-size = 2
border-size = 0
padding-left = 0
padding-right = ${config.padding}
module-margin-left = 4
module-margin-right = 4
font-0 = NotoSans-Regular:size=11;1
font-1 = FontAwesome:size=10;2
font-2 = Unifont:size=9;1
modules-left = i3 xwindow
modules-right = xkeyboard volume wlan eth battery date
;i3
[module/i3]
type = internal/i3
format = <label-state><label-mode>
index-sort = true
wrapping-scroll = false
strip-wsnumbers = true
; Only show workspaces on the same output as the bar
;pin-workspaces = true
label-mode-padding = ${config.padding}
label-mode-foreground = ${config.foreground}
label-mode-background = ${config.background-alt}
label-mode-underline = ${config.foreground}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-background = ${config.background-alt}
label-focused-underline = ${config.foreground}
label-focused-padding = ${config.padding}
; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = ${self.label-focused-padding}
; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-background = ${self.label-focused-background}
label-urgent-padding = ${self.label-focused-padding}
;title
[module/xwindow]
type = internal/xwindow
label = %title:0:100:...%
;lang
[module/xkeyboard]
type = internal/xkeyboard
format = <label-indicator><label-layout>
blacklist-0 = num lock
label-layout-padding = ${config.padding}
label-layout-underline = ${config.foreground}
label-indicator-font = 1
label-indicator-on =
label-indicator-underline = ${config.foreground}
;network
[module/wlan]
type = internal/network
interface = wlp0s20f3
interval = 3.0
format-connected = <ramp-signal> <label-connected>
label-connected = %essid%
ramp-signal-0 =
ramp-signal-1 =
ramp-signal-2 =
ramp-signal-3 =
ramp-signal-4 =
ramp-signal-foreground = ${config.foreground}
[module/eth]
type = internal/network
interface = enp4s0
interval = 3.0
format-connected-prefix = " "
format-connected-prefix-foreground = ${config.foreground}
label-connected = %local_ip%
;volume
[module/volume]
type = internal/pulseaudio
click-right = pavucontrol
format-volume = <label-volume> <bar-volume>
label-volume =
bar-volume-font = 1
label-volume-foreground = ${config.foreground}
format-muted-foreground = ${config.background-alt}
label-muted =  ━━━━━━━━━━━━━━━━━━━
bar-volume-width = 20
bar-volume-foreground-0 = #555
bar-volume-foreground-1 = #666
bar-volume-foreground-2 = #777
bar-volume-foreground-3 = #888
bar-volume-foreground-4 = #999
bar-volume-foreground-5 = #aaa
bar-volume-foreground-6 = ${config.foreground}
bar-volume-gradient = false
bar-volume-indicator =
bar-volume-fill = ━
bar-volume-empty = ━
bar-volume-empty-foreground = ${config.background-alt}
;battery
[module/battery]
type = internal/battery
battery = BAT0
full-at = 98
format-charging = <animation-charging> <label-charging>
format-discharging = <ramp-capacity> <label-discharging>
format-full = <ramp-capacity> <label-full>
ramp-capacity-0 =
ramp-capacity-0-foreground = #ff4242
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
animation-charging-0 = ""
animation-charging-framerate = 10000
;time date
[module/date]
type = internal/date
date = ${config.date}
date-alt = ${config.date-alt}

View file

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

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