Compare commits

...
Author SHA1 Message Date
3ee7c2e599 Makefile: cleanup i3 directory 2026-05-30 04:07:47 +02:00
6c74eea252 Makefile: add fzf 2026-05-30 04:07:47 +02:00
ba8a8d22f8 Makefile: cleanup defaults 2026-05-30 04:07:47 +02:00
cb0b5e0b69 Makefile: remove lxappearance 2026-05-30 04:07:47 +02:00
9a611befd9 nvim: remove xkb-switch 2026-05-30 04:07:47 +02:00
89b8f4a28e Makefile: remove xkb-switch 2026-05-30 04:07:47 +02:00
5fd0e1e2f6 Update README.md 2026-05-30 04:07:47 +02:00
1a897d7143 zsh: add zsh-autosuggestions as submodule 2026-05-30 04:07:47 +02:00
3b00e70aab Delete installPackages.sh 2026-05-30 04:07:47 +02:00
708ba4456c Delete apply.sh 2026-05-30 04:07:47 +02:00
87f1234613 i3: move config to .config 2026-05-30 04:07:47 +02:00
120d9a6fc1 i3: delete accidental config 2026-05-30 04:07:47 +02:00
1f51471afb nvim: use default lockfile path 2026-05-30 04:07:47 +02:00
d2f39dd374 nvim: move to .config 2026-05-30 04:07:47 +02:00
186d12012b i3: move config to .config 2026-05-30 04:07:47 +02:00
d5e5f33911 Update README.md 2026-05-30 04:07:47 +02:00
0ae874afc3 Makefile: init 2026-05-30 04:07:47 +02:00
1921a73d54 Update README.md 2026-05-30 04:07:47 +02:00
09fddea8c7 firefox: shuffle the files 2026-05-30 04:07:47 +02:00
4b90c6729c profanity: create profrc 2026-05-30 04:07:47 +02:00
5f252f5b50 profanity: move to .config 2026-05-30 04:07:47 +02:00
967984334b rofi: move to .config 2026-05-30 04:07:47 +02:00
dfefeaedf7 ranger: move to .config 2026-05-30 04:07:47 +02:00
0e4bcfdc5e polybar: move to .config 2026-05-30 04:07:47 +02:00
e1d1a7905e i3: .desktop no more 2026-05-30 04:07:47 +02:00
ecdc5e4352 dunst: move to .config 2026-05-30 04:07:47 +02:00
56746a9eaf kitty: move to .config 2026-05-30 04:07:47 +02:00
0a61f761d5 oomox: obsolete 2026-05-30 04:07:47 +02:00
de7eb87caf zsh: move .zshrc to home 2026-05-30 04:07:47 +02:00
e494152b45 vim: move to home 2026-05-30 04:07:47 +02:00
fe3ce9d543 lynx: move to home 2026-05-30 04:07:47 +02:00
2f9679dd35 Xresources: move to home 2026-05-30 04:07:47 +02:00
2fa78f715e home: add .gitconfig 2026-05-30 04:07:47 +02:00
51a478ea32 nvim: xclip no more 2026-05-30 02:52:00 +02:00
b7b1f2d4df vim: wayland-ready 2026-05-30 02:44:17 +02:00
96c353ef78 vim: trim config 2026-05-30 02:17:03 +02:00
c7532a4957 nvim: grep for dotfiles 2026-05-30 00:56:19 +02:00
34 changed files with 146 additions and 239 deletions

1
.gitignore vendored
View file

@ -1,2 +1 @@
.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"

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

@ -0,0 +1,635 @@
--[[ 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 = {},
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