From c19fa68472bec357914ff264e52b45945221d530 Mon Sep 17 00:00:00 2001 From: Pascal Dulieu Date: Wed, 30 Jul 2025 11:45:00 +0100 Subject: init --- .config/nvim/.gitignore | 8 + .config/nvim/.neoconf.json | 15 ++ .config/nvim/LICENSE | 201 +++++++++++++++ .config/nvim/README.md | 4 + .config/nvim/colors/lushwal.vim | 218 ++++++++++++++++ .config/nvim/init.lua | 2 + .config/nvim/lazy-lock.json | 38 +++ .config/nvim/lazyvim.json | 10 + .config/nvim/lua/config/autocmds.lua | 8 + .config/nvim/lua/config/keymaps.lua | 3 + .config/nvim/lua/config/lazy.lua | 53 ++++ .config/nvim/lua/config/options.lua | 6 + .config/nvim/lua/plugins/example.lua | 197 ++++++++++++++ .config/nvim/lua/plugins/lushwal.lua | 119 +++++++++ .config/nvim/stylua.toml | 3 + .config/tmux-powerline/config.sh | 469 ++++++++++++++++++++++++++++++++++ .config/tmux-powerline/themes/main.sh | 230 +++++++++++++++++ 17 files changed, 1584 insertions(+) create mode 100644 .config/nvim/.gitignore create mode 100644 .config/nvim/.neoconf.json create mode 100644 .config/nvim/LICENSE create mode 100644 .config/nvim/README.md create mode 100644 .config/nvim/colors/lushwal.vim create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lazy-lock.json create mode 100644 .config/nvim/lazyvim.json create mode 100644 .config/nvim/lua/config/autocmds.lua create mode 100644 .config/nvim/lua/config/keymaps.lua create mode 100644 .config/nvim/lua/config/lazy.lua create mode 100644 .config/nvim/lua/config/options.lua create mode 100644 .config/nvim/lua/plugins/example.lua create mode 100644 .config/nvim/lua/plugins/lushwal.lua create mode 100644 .config/nvim/stylua.toml create mode 100644 .config/tmux-powerline/config.sh create mode 100644 .config/tmux-powerline/themes/main.sh (limited to '.config') diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/.config/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/.config/nvim/.neoconf.json b/.config/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/.config/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/.config/nvim/LICENSE b/.config/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/.config/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.config/nvim/README.md b/.config/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/.config/nvim/README.md @@ -0,0 +1,4 @@ +# 💤 LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/.config/nvim/colors/lushwal.vim b/.config/nvim/colors/lushwal.vim new file mode 100644 index 0000000..ecf199b --- /dev/null +++ b/.config/nvim/colors/lushwal.vim @@ -0,0 +1,218 @@ +set background=dark +if exists('g:colors_name') +hi clear +if exists('syntax_on') +syntax reset +endif +endif +let g:colors_name = 'lushwal' +highlight Normal guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight! link User Normal +highlight Bold guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=bold +highlight Boolean guifg=#516757 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Character guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight ColorColumn guifg=#738787 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Comment guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=italic +highlight Conceal guifg=#576B6B guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight! link Whitespace Conceal +highlight Conditional guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Constant guifg=#516757 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Cursor guifg=#091515 guibg=#C1C3C3 guisp=NONE blend=NONE gui=NONE +highlight CursorColumn guifg=#738787 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight CursorLine guifg=NONE guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight CursorLineNr guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Debug guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Define guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Delimiter guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight DiagnosticError guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight DiagnosticHint guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight DiagnosticInfo guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight DiagnosticUnderlineError guifg=#546064 guibg=NONE guisp=#546064 blend=NONE gui=underline +highlight DiagnosticUnderlineHint guifg=#747873 guibg=NONE guisp=#747873 blend=NONE gui=underline +highlight DiagnosticUnderlineInfo guifg=#5D6365 guibg=NONE guisp=#5D6365 blend=NONE gui=underline +highlight DiagnosticUnderlineWarn guifg=#4C6F49 guibg=NONE guisp=#4C6F49 blend=NONE gui=underline +highlight DiagnosticWarn guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight DiffAdd guifg=#5E5F53 guibg=#576B6B guisp=NONE blend=NONE gui=bold +highlight! link DiffAdded DiffAdd +highlight DiffChange guifg=#9CA5A5 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight DiffDelete guifg=#546064 guibg=#576B6B guisp=NONE blend=NONE gui=bold +highlight! link DiffRemoved DiffDelete +highlight! link diffRemoved DiffDelete +highlight DiffFile guifg=#546064 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight DiffLine guifg=#5D6365 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight DiffNewFile guifg=#5E5F53 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight DiffText guifg=#5D6365 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight Directory guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight EndOfBuffer guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Error guifg=#546064 guibg=#C1C3C3 guisp=NONE blend=NONE gui=NONE +highlight ErrorMsg guifg=#546064 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Exception guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Float guifg=#516757 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight FoldColumn guifg=#5D6365 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Folded guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=italic +highlight Function guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Identifier guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight IncSearch guifg=#576B6B guibg=#516757 guisp=NONE blend=NONE gui=NONE +highlight Include guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Italic guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=italic +highlight Keyword guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Label guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight LineNr guifg=#9CA5A5 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Macro guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MatchParen guifg=#C1C3C3 guibg=#9CA5A5 guisp=NONE blend=NONE gui=NONE +highlight MiniCompletionActiveParameter guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniCursorword guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=underline +highlight! link MiniCursorwordCurrent MiniCursorword +highlight MiniIndentscopePrefix guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=nocombine +highlight MiniIndentscopeSymbol guifg=#576B6B guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight MiniJump guifg=#5D6365 guibg=NONE guisp=#9CA5A5 blend=NONE gui=underline +highlight MiniJump2dSpot guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=undercurl +highlight MiniStarterCurrent guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniStarterFooter guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight MiniStarterHeader guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight MiniStarterInactive guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=italic +highlight MiniStarterItem guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight MiniStarterItemBullet guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniStarterItemPrefix guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniStarterQuery guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniStarterSection guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineDevinfo guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineFileinfo guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineFilename guifg=#4C6F49 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineInactive guifg=#738787 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeCommand guifg=#091515 guibg=#747873 guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeInsert guifg=#091515 guibg=#5D6365 guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeNormal guifg=#091515 guibg=#5E5F53 guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeOther guifg=#091515 guibg=#A7A5AC guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeReplace guifg=#091515 guibg=#546064 guisp=NONE blend=NONE gui=NONE +highlight MiniStatuslineModeVisual guifg=#091515 guibg=#516757 guisp=NONE blend=NONE gui=NONE +highlight MiniSurround guifg=#576B6B guibg=#516757 guisp=NONE blend=NONE gui=NONE +highlight MiniTablineCurrent guifg=#9CA5A5 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTablineFill guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MiniTablineHidden guifg=#5E5F53 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTablineModifiedCurrent guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTablineModifiedHidden guifg=#738787 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTablineModifiedVisible guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTablineVisible guifg=#9CA5A5 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight MiniTestEmphasis guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=bold +highlight MiniTestFail guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=bold +highlight MiniTestPass guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=bold +highlight MiniTrailspace guifg=#546064 guibg=#C1C3C3 guisp=NONE blend=NONE gui=NONE +highlight ModeMsg guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight MoreMsg guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight NonText guifg=#9CA5A5 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Number guifg=#516757 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Operator guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight PMenu guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight PMenuSel guifg=#C1C3C3 guibg=#5D6365 guisp=NONE blend=NONE gui=NONE +highlight PmenuSbar guifg=#738787 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight PmenuThumb guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight PreProc guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Question guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Repeat guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Search guifg=#9CA5A5 guibg=#4C6F49 guisp=NONE blend=NONE gui=NONE +highlight! link MiniTablineTabpagesection Search +highlight SignColumn guifg=#738787 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight Special guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight SpecialChar guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight SpecialKey guifg=#9CA5A5 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight SpellBad guifg=#546064 guibg=NONE guisp=#546064 blend=NONE gui=underline +highlight SpellCap guifg=#4C6F49 guibg=NONE guisp=#4C6F49 blend=NONE gui=underline +highlight SpellLocal guifg=#747873 guibg=NONE guisp=#747873 blend=NONE gui=underline +highlight SpellRare guifg=#A7A5AC guibg=NONE guisp=#A7A5AC blend=NONE gui=underline +highlight Statement guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight StatusLine guifg=#C1C3C3 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight StatusLineNC guifg=#738787 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight StatusLineTerm guifg=#5E5F53 guibg=#5E5F53 guisp=NONE blend=NONE gui=NONE +highlight StatusLineTermNC guifg=#4C6F49 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight StorageClass guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight String guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Structure guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight TabLine guifg=#9CA5A5 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight TabLineFill guifg=#9CA5A5 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight TabLineSel guifg=#5E5F53 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight Tag guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Title guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight Todo guifg=#4C6F49 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight TooLong guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Type guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Typedef guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight Underlined guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight VertSplit guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight! link WinSeparator VertSplit +highlight Visual guifg=#091515 guibg=#738787 guisp=NONE blend=NONE gui=NONE +highlight VisualNOS guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight WarningMsg guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight WildMenu guifg=#C1C3C3 guibg=#5D6365 guisp=NONE blend=NONE gui=NONE +highlight WinBar guifg=#C1C3C3 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight WinBarNC guifg=#738787 guibg=#091515 guisp=NONE blend=NONE gui=NONE +highlight gitCommitOverflow guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight gitCommitSummary guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight helpCommand guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight helpExample guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @attribute guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @boolean guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @character guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @character.special guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @comment guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=italic +highlight @conditional guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @constant guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @constant.builtin guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @constant.macro guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @constructor guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @debug guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @define guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @exception guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @field guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @float guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @function guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @function.builtin guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @function.macro guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @include guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @keyword guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @keyword.function guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @keyword.operator guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @label guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @method guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @namespace guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @none guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @number guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @operator guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @parameter guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @preproc guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @property guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @punctuation.bracket guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @punctuation.delimiter guifg=#C1C3C3 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @punctuation.special guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight @repeat guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @storageclass guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @string guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @string.escape guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @string.regex guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @string.special guifg=#556261 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @symbol guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @tag guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @tag.attribute guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @tag.delimiter guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.bold guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight @text.danger guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.diff.add guifg=#5E5F53 guibg=#576B6B guisp=NONE blend=NONE gui=bold +highlight @text.diff.delete guifg=#546064 guibg=#576B6B guisp=NONE blend=NONE gui=bold +highlight @text.emphasis guifg=#A7A5AC guibg=NONE guisp=NONE blend=NONE gui=italic +highlight @text.environment guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.environment.name guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.literal guifg=#5E5F53 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.math guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.note guifg=#747873 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.reference guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @text.strike guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=strikethrough +highlight @text.title guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=bold +highlight @text.todo guifg=#4C6F49 guibg=#576B6B guisp=NONE blend=NONE gui=NONE +highlight @text.underline guifg=NONE guibg=NONE guisp=NONE blend=NONE gui=underline +highlight @text.uri guifg=NONE guibg=#576B6B guisp=NONE blend=NONE gui=underline +highlight @type guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @type.builtin guifg=#5D6365 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @type.definition guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @variable guifg=#4C6F49 guibg=NONE guisp=NONE blend=NONE gui=NONE +highlight @variable.builtin guifg=#546064 guibg=NONE guisp=NONE blend=NONE gui=NONE diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..2514f9e --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,2 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..f557235 --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,38 @@ +{ + "LazyVim": { "branch": "main", "commit": "d72127eb936f7f05d88d4fc316bc7e89080d69d8" }, + "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "8c4125e3c746976ba025dc5d908fa22c6aa09486" }, + "conform.nvim": { "branch": "master", "commit": "9fd3d5e0b689ec1bf400c53cbbec72c6fdf24081" }, + "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, + "grug-far.nvim": { "branch": "main", "commit": "3e72397465f774b01aa38e4fe8e6eecf23d766d9" }, + "lazy.nvim": { "branch": "main", "commit": "db067881fff0fd4be8c00e5bde7492e0e1c77a2f" }, + "lazydev.nvim": { "branch": "main", "commit": "c2dfe354571a8255c5d3e96a9a4c297c89ce2347" }, + "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, + "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, + "lushwal.nvim": { "branch": "main", "commit": "2823942833368460c85bb235b4e36789c266e6a2" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "3590d66effccc7376d8c3dbe45e8291f9fed2843" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "mini.ai": { "branch": "main", "commit": "11c57180bc9084089206e211ac7aa598bedc9673" }, + "mini.icons": { "branch": "main", "commit": "284798619aed9f4c1ac1b9417b9a5e3b4b85ef3a" }, + "mini.pairs": { "branch": "main", "commit": "b9aada8c0e59f2b938e98fbf4eae0799eba96ad9" }, + "noice.nvim": { "branch": "main", "commit": "5099348591f7d3ba9e547b1e631c694c65bbe0b9" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-lint": { "branch": "master", "commit": "9da1fb942dd0668d5182f9c8dee801b9c190e2bb" }, + "nvim-lspconfig": { "branch": "master", "commit": "48a9b4dcd9a3611edddd51972d8abb1a289c7724" }, + "nvim-treesitter": { "branch": "main", "commit": "645f42e85d8665c91a9911c3896afb57d6b8a923" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931" }, + "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, + "shipwright.nvim": { "branch": "master", "commit": "e596ab48328c31873f4f4d2e070243bf9de16ff3" }, + "snacks.nvim": { "branch": "main", "commit": "14ead48b513207298711224fe70a3abd58fcc190" }, + "todo-comments.nvim": { "branch": "main", "commit": "411503d3bedeff88484de572f2509c248e499b38" }, + "tokyonight.nvim": { "branch": "main", "commit": "2642dbb83333e0575d1c3436e1d837926871c5fb" }, + "trouble.nvim": { "branch": "main", "commit": "d7494d8bc563f8ae8b3f35d78c7478cf842b0ab9" }, + "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json new file mode 100644 index 0000000..d8bcaf6 --- /dev/null +++ b/.config/nvim/lazyvim.json @@ -0,0 +1,10 @@ +{ + "extras": [ + + ], + "install_version": 8, + "news": { + "NEWS.md": "11866" + }, + "version": 8 +} \ No newline at end of file diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/.config/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..2c134f7 --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,3 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..195b7fe --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,6 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here + +-- Enable transparency support for iTerm2 +vim.opt.termguicolors = true diff --git a/.config/nvim/lua/plugins/example.lua b/.config/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/.config/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "😄" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/lushwal.lua b/.config/nvim/lua/plugins/lushwal.lua new file mode 100644 index 0000000..94c5681 --- /dev/null +++ b/.config/nvim/lua/plugins/lushwal.lua @@ -0,0 +1,119 @@ +local function apply_transparent_overrides() + local hl = vim.api.nvim_set_hl + local none = "NONE" + hl(0, "Normal", { bg = none }) + hl(0, "NormalFloat", { bg = none }) + hl(0, "FloatBorder", { bg = none }) + hl(0, "EndOfBuffer", { bg = none }) + hl(0, "CursorLine", { bg = none }) + hl(0, "LineNr", { bg = none }) + hl(0, "SignColumn", { bg = none }) + hl(0, "Pmenu", { bg = none }) + hl(0, "PmenuSel", { bg = none }) + hl(0, "TelescopeNormal", { bg = none }) + hl(0, "TelescopeBorder", { bg = none }) +end + +local function set_transparent(on) + vim.g.lushwal_transparent = on + if on then + apply_transparent_overrides() + else + -- Restore theme defaults (pywal colors with solid background) + vim.cmd("colorscheme lushwal") + end + vim.notify( + (on and "Transparency on" or "Transparency off"), + vim.log.levels.INFO, + { title = "Lushwal" } + ) +end + +local function toggle_transparent() + set_transparent(vim.g.lushwal_transparent ~= true) +end + +return { + { + "oncomouse/lushwal.nvim", + cmd = { "LushwalCompile" }, + dependencies = { + { "rktjmp/lush.nvim" }, + { "rktjmp/shipwright.nvim" }, + }, + lazy = false, + init = function() + -- Solid background by default (pywal colors). Run :LushwalCompile once after this change to regenerate the theme. + vim.g.lushwal_configuration = { + transparent_background = false, + } + end, + config = function() + vim.g.lushwal_transparent = false -- off by default + vim.api.nvim_create_user_command("LushwalToggleTransparency", toggle_transparent, {}) + vim.keymap.set("n", "ut", toggle_transparent, { desc = "Toggle transparency" }) + -- Re-apply transparent overrides after colorscheme load when user had transparency on + vim.api.nvim_create_autocmd("ColorScheme", { + pattern = "lushwal", + callback = function() + if vim.g.lushwal_transparent then + apply_transparent_overrides() + else + -- Softer cursor line so the active line doesn't overpower the text + vim.api.nvim_set_hl(0, "CursorLine", { bg = "#252530", fg = "NONE" }) + end + end, + }) + -- Apply subtle CursorLine on first load (non-transparent default) + vim.defer_fn(function() + if vim.g.colors_name == "lushwal" and not vim.g.lushwal_transparent then + vim.api.nvim_set_hl(0, "CursorLine", { bg = "#252530", fg = "NONE" }) + end + end, 10) + end, + }, + -- Add project.nvim for better project management + { + "ahmedkhalf/project.nvim", + keys = { + { "fp", "Telescope projects", desc = "Find Projects" }, + }, + config = function() + require("project_nvim").setup({ + -- Path where to store the project history for telescope + datapath = vim.fn.stdpath("data"), + -- Detection methods for projects + detection_methods = { "pattern", "lsp" }, + -- Patterns used to detect projects + patterns = { + ".git", + "_darcs", + ".hg", + ".bzr", + ".svn", + "Makefile", + "package.json", + "Cargo.toml", + "requirements.txt", + "pyproject.toml", + "go.mod", + "composer.json", + "Gemfile", + ".lazy.lua", + }, + -- Only consider these directories as projects + scope_chdir = "tab", + -- What to do when changing project + silent_chdir = false, + }) + require("telescope").load_extension("projects") + end, + }, + -- Configure LazyVim to load lushwal + { + "LazyVim/LazyVim", + opts = { + colorscheme = "lushwal", + }, + }, +} diff --git a/.config/nvim/stylua.toml b/.config/nvim/stylua.toml new file mode 100644 index 0000000..0f90030 --- /dev/null +++ b/.config/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 diff --git a/.config/tmux-powerline/config.sh b/.config/tmux-powerline/config.sh new file mode 100644 index 0000000..14498ef --- /dev/null +++ b/.config/tmux-powerline/config.sh @@ -0,0 +1,469 @@ +# Default configuration file for tmux-powerline. +# Modeline { +# vi: foldmarker={,} foldmethod=marker foldlevel=0 tabstop=4 filetype=sh +# } + +# General { +# Show which segment fails and its exit code. +export TMUX_POWERLINE_DEBUG_MODE_ENABLED="false" +# Create error log in tmux runtime temp dir. +export TMUX_POWERLINE_ERROR_LOGS_ENABLED="false" +# Only log specific scopes. Space separated list of scopes. Supported scopes: weather.sh lib/text_roll.sh lib/powerline.sh lib/colors.sh config/helpers.sh +export TMUX_POWERLINE_ERROR_LOGS_SCOPES="" +# Use patched font symbols. +export TMUX_POWERLINE_PATCHED_FONT_IN_USE="true" + +# The theme to use. +export TMUX_POWERLINE_THEME="main" +# Overlay directory to look for themes. There you can put your own themes outside the repo. Fallback will still be the "themes" directory in the repo. +export TMUX_POWERLINE_DIR_USER_THEMES="${XDG_CONFIG_HOME:-$HOME/.config}/tmux-powerline/themes" +# Overlay directory to look for segments. There you can put your own segments outside the repo. Fallback will still be the "segments" directory in the repo. +export TMUX_POWERLINE_DIR_USER_SEGMENTS="${XDG_CONFIG_HOME:-$HOME/.config}/tmux-powerline/segments" + +# The initial visibility of the status bar. Can be {"on", "off", "2"}. 2 will create two status lines: one for the window list and one with status bar segments. +export TMUX_POWERLINE_STATUS_VISIBILITY="on" +# In case of visibility = 2, where to display window status and where left/right status bars. +# 0: window status top, left/right status bottom; 1: window status bottom, left/right status top +export TMUX_POWERLINE_WINDOW_STATUS_LINE=0 +# The status bar refresh interval in seconds. +# Note that events that force-refresh the status bar (such as window renaming) will ignore this. +export TMUX_POWERLINE_STATUS_INTERVAL="1" +# The location of the window list. Can be {"absolute-centre, centre, left, right"}. +# Note that "absolute-centre" is only supported on `tmux -V` >= 3.2. +export TMUX_POWERLINE_STATUS_JUSTIFICATION="left" + +# The maximum length of the left status bar. +export TMUX_POWERLINE_STATUS_LEFT_LENGTH="60" +# The maximum length of the right status bar. +export TMUX_POWERLINE_STATUS_RIGHT_LENGTH="90" + +# The separator to use between windows on the status bar. +export TMUX_POWERLINE_WINDOW_STATUS_SEPARATOR="" + +# Uncomment these if you want to enable tmux bindings for muting (hiding) one of the status bars. +# E.g. this example binding would mute the left status bar when pressing followed by Ctrl-[ +#export TMUX_POWERLINE_MUTE_LEFT_KEYBINDING="C-[" +#export TMUX_POWERLINE_MUTE_RIGHT_KEYBINDING="C-]" +# } + +# air.sh { +# The data provider to use. Currently only "openweather" is supported. +export TMUX_POWERLINE_SEG_AIR_DATA_PROVIDER="openweather" +# How often to update the weather in seconds. +export TMUX_POWERLINE_SEG_AIR_UPDATE_PERIOD="600" +# Location of the JSON parser, jq +export TMUX_POWERLINE_SEG_AIR_JSON="jq" +# Your location +# Latitude and Longitude: +TMUX_POWERLINE_SEG_AIR_LAT="" +TMUX_POWERLINE_SEG_AIR_LON="" +# Your Open Weather API Key: +TMUX_POWERLINE_SEG_AIR_OPEN_WEATHER_API_KEY="" +# } + +# battery.sh { +# How to display battery remaining. Can be {percentage, cute, hearts}. +export TMUX_POWERLINE_SEG_BATTERY_TYPE="percentage" +# How may hearts to show if cute indicators are used. +export TMUX_POWERLINE_SEG_BATTERY_NUM_HEARTS="5" +# } + +# cpu_temp.sh { +# CPU temperature icon +export TMUX_POWERLINE_SEG_CPU_TEMP_ICON=" " +# Linux only. Regexp to indicate a line containing CPU temperature in 'sensors' output. +# Check the output of 'sensors' program, decide which line contains desired CPU temperature +# and store an unique part of that line in this variable. It will be used by 'grep' program +# to distinct the 'CPU temperature' line from the rest output lines. +export TMUX_POWERLINE_SEG_CPU_TEMP_SENSORS_LINE_MARKER="Package id 0\|Physical id 0\|temp1" +# } + +# date_week.sh { +# Symbol for calendar week. +# export TMUX_POWERLINE_SEG_DATE_WEEK_SYMBOL="󰨳" +# export TMUX_POWERLINE_SEG_DATE_WEEK_SYMBOL_COLOUR="255" +# } + +# date.sh { +# date(1) format for the date. If you don't, for some reason, like ISO 8601 format you might want to have "%D" or "%m/%d/%Y". +export TMUX_POWERLINE_SEG_DATE_FORMAT="%F" +# } + +# disk_usage.sh { +# Filesystem to retrieve disk space information. Any from the filesystems available (run "df | awk '{print }'" to check them). +export TMUX_POWERLINE_SEG_DISK_USAGE_FILESYSTEM="/" +# } + +# dropbox_status.sh { +# The Dropbox glyph to use +export TMUX_POWERLINE_SEG_DROPBOX_GLYPH="\uf16b" +# Replace 'Uploading' in the status +export TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH="\uf093" +# Replace 'Downloading' in the status +export TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH="\uf019" +# Replace 'Indexing' in the status +export TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH="\uf02e" +# Replace 'Syncing' in the status +export TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH="\uf46a" +# } + +# earthquake.sh { +# The data provider to use. Currently only "goo" is supported. +export TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER="goo" +# How often to update the earthquake data in seconds. +# Note: This is not an early warning detector, use this +# to be informed about recent earthquake magnitudes in your +# area. If this is too often, goo may decide to ban you form +# their server +export TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD="600" +# Only display information when earthquakes are within this many minutes +export TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW="60" +# Display time with this format +export TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT='(%H:%M)' +# Display only if magnitude is greater or equal to this number +export TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE="3" +# } + +# gcalcli.sh { +# gcalcli uses 24hr time format by default - if you want to see 12hr time format, set TMUX_POWERLINE_SEG_GCALCLI_MILITARY_TIME_DEFAULT to 0 +export TMUX_POWERLINE_SEG_GCALCLI_24HR_TIME_FORMAT="1" +# } + +# github_notifications.sh { +# Github token (https://github.com/settings/tokens) with at least "notifications" scope +export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_TOKEN="" +# Include available notification reasons (https://docs.github.com/en/rest/activity/notifications?apiVersion=2022-11-28#about-notification-reasons), +# in the format "REASON:SEPARATOR" +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_REASONS="approval_requested:-󰴄 |assign:-󰎔 |author:-󰔗 |comment:- |ci_activity:-󰙨 |invitation:- |manual:-󱥃 |mention:- |review_requested:- |security_alert:-󰒃 |state_change:-󱇯 |subscribed:- |team_mention:- " +# Or if you don't like so many symbols, try the abbreviation variant +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_REASONS="approval_requested:areq|assign:as|author:au|comment:co|ci_activity:ci|invitation:in|manual:ma|mention:me|review_requested:rreq|security_alert:sec|state_change:st|subscribed:sub|team_mention:team" +# Use symbol mode (ignored if you set TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_REASONS yourself) +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_SYMBOL_MODE="yes" +# Summarize all notifications +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_SUMMARIZE="no" +# Hide if no notifications +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_HIDE_NO_NOTIFICATIONS="yes" +# Only show new notifications since date (default: today) (takes up to UPDATE_INTERVAL time to take effect) +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_SINCE="$(date +%Y-%m-%dT00:00:00Z)" +# Enable show only notifications since date (takes up to UPDATE_INTERVAL time to take effect) +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_SINCE_ENABLE="no" +# Maximum notifications to retreive per page (upstream github default per_page, 50) +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_PER_PAGE="50" +# Maximum pages to retreive +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_MAX_PAGES="10" +# Update interval to pull latest state from github api +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_UPDATE_INTERVAL="60" +# Enable Test Mode (to test how the segment will look like when you have notifications for all types/reasons) +# export TMUX_POWERLINE_SEG_GITHUB_NOTIFICATIONS_TEST_MODE="no" +# } + +# hostname.sh { +# Use short, long or custom format for the hostname. Can be {"short", "long", "custom"}. +export TMUX_POWERLINE_SEG_HOSTNAME_FORMAT="short" +# Custom name to be used when format is "custom" +export TMUX_POWERLINE_SEG_HOSTNAME_CUSTOM="" +# } + +# ifstat.sh { +# Symbol for Download. +# export TMUX_POWERLINE_SEG_IFSTAT_DOWN_SYMBOL="⇊" +# Symbol for Upload. +# export TMUX_POWERLINE_SEG_IFSTAT_UP_SYMBOL="⇈" +# Symbol for Ethernet. +# export TMUX_POWERLINE_SEG_IFSTAT_ETHERNET_SYMBOL="󰈀" +# Symbol for WLAN. +# export TMUX_POWERLINE_SEG_IFSTAT_WLAN_SYMBOL="󱚻" +# Symbol for WWAN. +# export TMUX_POWERLINE_SEG_IFSTAT_WWAN_SYMBOL="" +# Separator for Interfaces. +# export TMUX_POWERLINE_SEG_IFSTAT_INTERFACE_SEPARATOR=" | " +# Space separated list of interface names to be excluded. substring match, regexp can be used. +# Examples: +# export TMUX_POWERLINE_SEG_IFSTAT_INTERFACE_EXCLUDES="tun" # will exclude 'tun0', 'utun0', 'itun', 'tun08127387' +# export TMUX_POWERLINE_SEG_IFSTAT_INTERFACE_EXCLUDES="tun0 tuntun" # will exclude 'tun0', 'utun0', 'tuntun' +# export TMUX_POWERLINE_SEG_IFSTAT_INTERFACE_EXCLUDES="^tun0$ ^tun1$" # excludes exactly 'tun0' and 'tun1' +# Default: +# export TMUX_POWERLINE_SEG_IFSTAT_INTERFACE_EXCLUDES="^u?tun[0-9]+$" +# } + +# kubernetes_context.sh { +# Kubernetes config context display mode {"name_namespace", "name", "namespace"}. +# export TMUX_POWERLINE_SEG_KUBERNETES_CONTEXT_DISPLAY_MODE="name_namespace" +# Kubernetes config context symbol. +# export TMUX_POWERLINE_SEG_KUBERNETES_CONTEXT_SYMBOL="󱃾" +# Kubernetes config context symbol colour. +# export TMUX_POWERLINE_SEG_KUBERNETES_CONTEXT_SYMBOL_COLOUR="255" +# Separator for display mode "name_namespace" +# TMUX_POWERLINE_SEG_KUBERNETES_CONTEXT_SEPARATOR="󰿟" +# } + +# lan_ip.sh { +# Symbol for LAN IP. +# export TMUX_POWERLINE_SEG_LAN_IP_SYMBOL="ⓛ " +# Symbol colour for LAN IP +# export TMUX_POWERLINE_SEG_LAN_IP_SYMBOL_COLOUR="255" +# } + +# macos_notification_count.sh { + +# } + +# mailcount.sh { +# Mailbox type to use. Can be any of {apple_mail, gmail, maildir, mbox, mailcheck} +export TMUX_POWERLINE_SEG_MAILCOUNT_MAILBOX_TYPE="" + +## Gmail +# Enter your Gmail username here WITH OUT @gmail.com.( OR @domain) +export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_USERNAME="" +# Google password. Recomenned to use application specific password (https://accounts.google.com/b/0/IssuedAuthSubTokens) Leave this empty to get password from OS X keychain. +# For macOS users : MAKE SURE that you add a key to the keychain in the format as follows +# Keychain Item name : http:// +# Account name : @ +# Password : Your password ( Once again, try to use 2 step-verification and application-specific password) +# See http://support.google.com/accounts/bin/answer.py?hl=en&answer=185833 for more info. +export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_PASSWORD="" +# Domain name that will complete your email. For normal GMail users it probably is "gmail.com but can be "foo.tld" for Google Apps users. +export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_SERVER="gmail.com" +# How often in minutes to check for new mails. +export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_INTERVAL="5" + +## Maildir +# Path to the maildir to check. +export TMUX_POWERLINE_SEG_MAILCOUNT_MAILDIR_INBOX="$HOME/.mail/inbox/new" + +## mbox +# Path to the mbox to check. +export TMUX_POWERLINE_SEG_MAILCOUNT_MBOX_INBOX="" + +## mailcheck +# Optional path to mailcheckrc +export TMUX_POWERLINE_SEG_MAILCOUNT_MAILCHECKRC="$HOME/.mailcheckrc" +# } + +# mode_indicator.sh { +# Whether the normal & prefix mode section should be enabled. Should be {"true, "false"}. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_NORMAL_AND_PREFIX_MODE_ENABLED="true" +# Normal mode text & color overrides. Defaults to "normal" & the segment foreground color set in the theme used. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_NORMAL_MODE_TEXT="normal" +export TMUX_POWERLINE_SEG_MODE_INDICATOR_NORMAL_MODE_TEXT_COLOR="" +# Prefix mode text & color overrides. Defaults to "prefix" & the segment foreground color set in the theme used. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_PREFIX_MODE_TEXT="prefix" +export TMUX_POWERLINE_SEG_MODE_INDICATOR_PREFIX_MODE_TEXT_COLOR="" +# Whether the mouse mode section should be enabled. Should be {"true, "false"}. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_MOUSE_MODE_ENABLED="true" +# Mouse mode text & color overrides. Defaults to "mouse" & the segment foreground color set in the theme used. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_MOUSE_MODE_TEXT="mouse" +export TMUX_POWERLINE_SEG_MODE_INDICATOR_MOUSE_MODE_TEXT_COLOR="" +# Whether the copy mode section should be enabled. Should be {"true, "false"}. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_COPY_MODE_ENABLED="true" +# Copy mode text & color overrides. Defaults to "copy" & the segment foreground color set in the theme used. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_COPY_MODE_TEXT="copy" +export TMUX_POWERLINE_SEG_MODE_INDICATOR_COPY_MODE_TEXT_COLOR="" +# Suspend mode text & color overrides. Defaults to "SUSPEND" & the segment foreground color set in the theme used. +export TMUX_POWERLINE_SEG_MODE_INDICATOR_SUSPEND_MODE_TEXT="SUSPEND" +export TMUX_POWERLINE_SEG_MODE_INDICATOR_SUSPEND_MODE_TEXT_COLOR="" +# Separator text override. Defaults to " • ". +export TMUX_POWERLINE_SEG_MODE_INDICATOR_SEPARATOR_TEXT=" • " +# } + +# now_playing.sh { +# Music player to use. Can be any of {audacious, banshee, cmus, apple_music, itunes, lastfm, plexamp, mocp, mpd, mpd_simple, pithos, playerctl, rdio, rhythmbox, spotify, file}. +export TMUX_POWERLINE_SEG_NOW_PLAYING_MUSIC_PLAYER="lastfm" +# File to be read in case the song is being read from a file +export TMUX_POWERLINE_SEG_NOW_PLAYING_FILE_NAME="" +# Maximum output length. +export TMUX_POWERLINE_SEG_NOW_PLAYING_MAX_LEN="40" +# How to handle too long strings. Can be {trim, roll}. +export TMUX_POWERLINE_SEG_NOW_PLAYING_TRIM_METHOD="trim" +# Characters per second to roll if rolling trim method is used. +export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SPEED="2" +# Mode of roll text {"space", "repeat"}. space: fill up with empty space; repeat: repeat text from beginning +# export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE="repeat" +# Separator for "repeat" roll mode +# export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR="  " +# If set to 'true', 'yes', 'on' or '1', played tracks will be logged to a file. +# export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE="false" +# If enabled, log played tracks to the following file: +# export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH="$HOME/.now_playing.log" +# Maximum number of logged song entries. Set to "unlimited" for unlimited entries. +# export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES="100" + +# Hostname for MPD server in the format "[password@]host" +export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_HOST="localhost" +# Port the MPD server is running on. +export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_PORT="6600" +# Song display format for mpd_simple. See mpc(1) for delimiters. +export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_SIMPLE_FORMAT="%artist% - %title%" +# Song display format for playerctl. see "Format Strings" in playerctl(1). +export TMUX_POWERLINE_SEG_NOW_PLAYING_PLAYERCTL_FORMAT="{{ artist }} - {{ title }}" +# Song display format for rhythmbox. see "FORMATS" in rhythmbox-client(1). +export TMUX_POWERLINE_SEG_NOW_PLAYING_RHYTHMBOX_FORMAT="%aa - %tt" + +# Last.fm +# Set up steps for Last.fm +# 1. Make sure jq(1) is installed on the system. +# 2. Create a new API application at https://www.last.fm/api/account/create (name it tmux-powerline) and copy the API key and insert it below in the setting TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_API_KEY +# 3. Make sure the API can access your recently played song by going to you user privacy settings https://www.last.fm/settings/privacy and make sure "Hide recent listening information" is UNCHECKED. +# Username for Last.fm if that music player is used. +export TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_USERNAME="" +# API Key for the API. +export TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_API_KEY="" +# How often in seconds to update the data from last.fm. +export TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_UPDATE_PERIOD="30" +# Fancy char to display before now playing track +export TMUX_POWERLINE_SEG_NOW_PLAYING_NOTE_CHAR="♫" + +# Plexamp +# Set up steps for Plexamp +# 1. Make sure jq(1) is installed on the system. +# 2. Make sure you have an instance of Tautulli that is accessible by the computer running tmux-powerline. +# Username for Plexamp if that music player is used. +export TMUX_POWERLINE_SEG_NOW_PLAYING_PLEXAMP_USERNAME="" +# Hostname for Tautulli server in the format "[password@]host" +export TMUX_POWERLINE_SEG_NOW_PLAYING_PLEXAMP_TAUTULLI_HOST="" +# API Key for Tautulli. +export TMUX_POWERLINE_SEG_NOW_PLAYING_PLEXAMP_TAUTULLI_API_KEY="" +# How often in seconds to update the data from Plexamp. +export TMUX_POWERLINE_SEG_NOW_PLAYING_PLEXAMP_UPDATE_PERIOD="30" +# } + +# pwd.sh { +# Maximum length of output. +export TMUX_POWERLINE_SEG_PWD_MAX_LEN="40" +# } + +# time.sh { +# date(1) format for the time. Americans might want to have "%I:%M %p". +export TMUX_POWERLINE_SEG_TIME_FORMAT="%H:%M" +# Change this to display a different timezone than the system default. +# Use TZ Identifier like "America/Los_Angeles" +# export TMUX_POWERLINE_SEG_TIME_TZ="" +# } + +# tmux_continuum_save.sh { +# Path to the tmux-continuum git repo. +export TMUX_POWERLINE_SEG_TMUX_CONTINUUM_PATH="$HOME/.tmux/plugins/tmux-continuum" +# } + +# tmux_continuum_status.sh { +# Path to the tmux-continuum git repo. +export TMUX_POWERLINE_SEG_TMUX_CONTINUUM_PATH="$HOME/.tmux/plugins/tmux-continuum" +# Message to perfix the status indication with. +export TMUX_POWERLINE_SEG_TMUX_CONTINUUM_PREFIX="Continuum status: " +# } + +# tmux_mem_cpu_load.sh { +# Arguments passed to tmux-mem-cpu-load. +# See https://github.com/thewtex/tmux-mem-cpu-load for all available options. +# export TMUX_POWERLINE_SEG_TMUX_MEM_CPU_LOAD_ARGS="-v" +# } + +# tmux_session_info.sh { +# Session info format to feed into the command: tmux display-message -p +# For example, if FORMAT is '[ #S ]', the command is: tmux display-message -p '[ #S ]' +export TMUX_POWERLINE_SEG_TMUX_SESSION_INFO_FORMAT="#S:#I.#P" +# } + +# utc_time.sh { +# date(1) format for the UTC time. +export TMUX_POWERLINE_SEG_UTC_TIME_FORMAT="%H:%M %Z" +# } + +# vcs_branch.sh { +# Max length of the branch name. +export TMUX_POWERLINE_SEG_VCS_BRANCH_MAX_LEN="" +# Symbol when branch length exceeds max length +# export TMUX_POWERLINE_SEG_VCS_BRANCH_TRUNCATE_SYMBOL="…" +# Default branch symbol +export TMUX_POWERLINE_SEG_VCS_BRANCH_DEFAULT_SYMBOL="" +# Branch symbol for git repositories +# export TMUX_POWERLINE_SEG_VCS_BRANCH_GIT_SYMBOL="${TMUX_POWERLINE_SEG_VCS_BRANCH_DEFAULT_SYMBOL}" +# Branch symbol for hg/mercurial repositories +# export TMUX_POWERLINE_SEG_VCS_BRANCH_HG_SYMBOL="${TMUX_POWERLINE_SEG_VCS_BRANCH_DEFAULT_SYMBOL}" +# Branch symbol for SVN repositories +# export TMUX_POWERLINE_SEG_VCS_BRANCH_SVN_SYMBOL="${TMUX_POWERLINE_SEG_VCS_BRANCH_DEFAULT_SYMBOL}" +# Branch symbol colour for git repositories +export TMUX_POWERLINE_SEG_VCS_BRANCH_GIT_SYMBOL_COLOUR="5" +# Branch symbol colour for hg/mercurial repositories +export TMUX_POWERLINE_SEG_VCS_BRANCH_HG_SYMBOL_COLOUR="45" +# Branch symbol colour for SVN repositories +export TMUX_POWERLINE_SEG_VCS_BRANCH_SVN_SYMBOL_COLOUR="220" +# } + +# vcs_compare.sh { +# Symbol if local branch is behind. +# export TMUX_POWERLINE_SEG_VCS_COMPARE_AHEAD_SYMBOL="↑ " +# Symbol colour if local branch is ahead. Defaults to "current segment foreground colour" +# export TMUX_POWERLINE_SEG_VCS_COMPARE_AHEAD_SYMBOL_COLOUR="" +# Symbol if local branch is ahead. +# export TMUX_POWERLINE_SEG_VCS_COMPARE_BEHIND_SYMBOL="↓ " +# Symbol colour if local branch is behind. Defaults to "current segment foreground colour" +# export TMUX_POWERLINE_SEG_VCS_COMPARE_BEHIND_SYMBOL_COLOUR="" +# } + +# vcs_modified.sh { +# Symbol for count of modified vcs files. +# export TMUX_POWERLINE_SEG_VCS_MODIFIED_SYMBOL="± " +# } + +# vcs_others.sh { +# Symbol for count of untracked vcs files. +# export TMUX_POWERLINE_SEG_VCS_OTHERS_SYMBOL="⋯" +# } + +# vcs_rootpath.sh { +# Display mode for vcs_rootpath. +# Example: (name: folder name only; path: full path, w/o expansion; user_path: full path, w/ tilde expansion) +# export TMUX_POWERLINE_SEG_VCS_ROOTPATH_MODE="name" +# } + +# vcs_staged.sh { +# Symbol for count of staged vcs files. +# export TMUX_POWERLINE_SEG_VCS_STAGED_SYMBOL="⊕ " +# } + +# vpn.sh { +# Mode for VPN segment {"both", "ip", "name"}. both: Show NIC/IP; ip: Show only IP; name: Show only NIC name +# export TMUX_POWERLINE_SEG_VPN_DISPLAY_MODE="both" +# Space separated list of tunnel interface names. First match is being used. substring match, regexp can be used. +# Examples: +# export TMUX_POWERLINE_SEG_VPN_NICS="tun" # will match 'tun0', 'utun0', 'itun', 'tun08127387' +# export TMUX_POWERLINE_SEG_VPN_NICS="tun0 tuntun" # will match 'tun0', 'utun0', 'tuntun' +# export TMUX_POWERLINE_SEG_VPN_NICS="^tun0$ ^tun1$" # exactly 'tun0' and 'tun1' +# Default: +# export TMUX_POWERLINE_SEG_VPN_NICS='^u?tun[0-9]+$' +# Symbol to use for vpn tunnel. +# export TMUX_POWERLINE_SEG_VPN_SYMBOL="󱠾 " +# Colour for vpn tunnel symbol +# export TMUX_POWERLINE_SEG_VPN_SYMBOL_COLOUR="255" +# Symbol for separator +# export TMUX_POWERLINE_SEG_VPN_DISPLAY_SEPARATOR="󰿟" +# } + +# wan_ip.sh { +# Symbol for WAN IP +# export TMUX_POWERLINE_SEG_WAN_IP_SYMBOL="ⓦ " +# Symbol colour for WAN IP +# export TMUX_POWERLINE_SEG_WAN_IP_SYMBOL_COLOUR="255" +# } + +# weather.sh { +# The data provider to use. Currently only "yrno" is supported. +export TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER="yrno" +# What unit to use. Can be any of {c,f,k}. +export TMUX_POWERLINE_SEG_WEATHER_UNIT="c" +# How often to update the weather in seconds. +export TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD="600" +# How often to update the weather location in seconds (this is only used when latitude and longitude settings are set to "auto") +export TMUX_POWERLINE_SEG_WEATHER_LOCATION_UPDATE_PERIOD="86400" +# Your location +# Latitude and Longtitude for use with yr.no +# Set both to "auto" to detect automatically based on your IP address, or set them manually +export TMUX_POWERLINE_SEG_WEATHER_LAT="auto" +export TMUX_POWERLINE_SEG_WEATHER_LON="auto" +# } + +# xkb_layout.sh { +# Keyboard icon +export TMUX_POWERLINE_SEG_XKB_LAYOUT_ICON="⌨ " +# } diff --git a/.config/tmux-powerline/themes/main.sh b/.config/tmux-powerline/themes/main.sh new file mode 100644 index 0000000..c558c2b --- /dev/null +++ b/.config/tmux-powerline/themes/main.sh @@ -0,0 +1,230 @@ +# shellcheck shell=bash +# Pywal Theme - Integrated with pywal colors +# If changes made here does not take effect, then try to re-create the tmux session to force reload. + +# Source pywal colors if available +if [ -f "${HOME}/.cache/wal/colors.sh" ]; then + # shellcheck source=/dev/null + source "${HOME}/.cache/wal/colors.sh" +fi + +if tp_patched_font_in_use; then + TMUX_POWERLINE_SEPARATOR_LEFT_BOLD="" + TMUX_POWERLINE_SEPARATOR_LEFT_THIN="" + TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD="" + TMUX_POWERLINE_SEPARATOR_RIGHT_THIN="" +else + TMUX_POWERLINE_SEPARATOR_LEFT_BOLD="◀" + TMUX_POWERLINE_SEPARATOR_LEFT_THIN="❮" + TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD="▶" + TMUX_POWERLINE_SEPARATOR_RIGHT_THIN="❯" +fi + +# See Color formatting section below for details on what colors can be used here. +# Use pywal colors if available, otherwise fallback to defaults +if [ -n "$background" ] && [ -n "$foreground" ]; then + TMUX_POWERLINE_DEFAULT_BACKGROUND_COLOR=${TMUX_POWERLINE_DEFAULT_BACKGROUND_COLOR:-"$background"} + TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR=${TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR:-"$foreground"} +else + TMUX_POWERLINE_DEFAULT_BACKGROUND_COLOR=${TMUX_POWERLINE_DEFAULT_BACKGROUND_COLOR:-'235'} + TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR=${TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR:-'255'} +fi +# shellcheck disable=SC2034 +TMUX_POWERLINE_SEG_AIR_COLOR=$(tp_air_color) + +TMUX_POWERLINE_DEFAULT_LEFTSIDE_SEPARATOR=${TMUX_POWERLINE_DEFAULT_LEFTSIDE_SEPARATOR:-$TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD} +TMUX_POWERLINE_DEFAULT_RIGHTSIDE_SEPARATOR=${TMUX_POWERLINE_DEFAULT_RIGHTSIDE_SEPARATOR:-$TMUX_POWERLINE_SEPARATOR_LEFT_BOLD} + +# See `man tmux` for additional formatting options for the status line. +# The `format regular` and `format inverse` functions are provided as conveniences + +# shellcheck disable=SC2128 +if [ -z "$TMUX_POWERLINE_WINDOW_STATUS_CURRENT" ]; then + TMUX_POWERLINE_WINDOW_STATUS_CURRENT=( + "#[$(tp_format inverse)]" + "$TMUX_POWERLINE_DEFAULT_LEFTSIDE_SEPARATOR" + " #I#F " + "$TMUX_POWERLINE_SEPARATOR_RIGHT_THIN" + " #W " + "#[$(tp_format regular)]" + "$TMUX_POWERLINE_DEFAULT_LEFTSIDE_SEPARATOR" + ) +fi + +# shellcheck disable=SC2128 +if [ -z "$TMUX_POWERLINE_WINDOW_STATUS_STYLE" ]; then + TMUX_POWERLINE_WINDOW_STATUS_STYLE=( + "$(tp_format regular)" + ) +fi + +# shellcheck disable=SC2128 +if [ -z "$TMUX_POWERLINE_WINDOW_STATUS_FORMAT" ]; then + TMUX_POWERLINE_WINDOW_STATUS_FORMAT=( + "#[$(tp_format regular)]" + " #I#{?window_flags,#F, } " + "$TMUX_POWERLINE_SEPARATOR_RIGHT_THIN" + " #W " + ) +fi + +# Format: segment_name [background_color|default_bg_color] [foreground_color|default_fg_color] [non_default_separator|default_separator] [separator_background_color|no_sep_bg_color] +# [separator_foreground_color|no_sep_fg_color] [spacing_disable|no_spacing_disable] [separator_disable|no_separator_disable] +# +# * background_color and foreground_color. Color formatting (see `man tmux` for complete list) or run the color_palette.sh in the tmux-powerline root directory: +# * Named colors, e.g. black, red, green, yellow, blue, magenta, cyan, white +# * Hexadecimal RGB string e.g. #ffffff +# * 'default_fg_color|default_bg_color' for the default theme bg and fg color +# * 'default' for the default tmux color. +# * 'terminal' for the terminal's default background/foreground color +# * The numbers 0-255 for the 256-color palette. Run `tmux-powerline/color-palette.sh` to see the colors. +# * non_default_separator - specify an alternative character for this segment's separator +# * 'default_separator' for the theme default separator +# * separator_background_color - specify a unique background color for the separator +# * 'no_sep_bg_color' for using the default coloring for the separator +# * separator_foreground_color - specify a unique foreground color for the separator +# * 'no_sep_fg_color' for using the default coloring for the separator +# * spacing_disable - remove space on left, right or both sides of the segment: +# * "no_spacing_disable" - don't disable spacing (default) +# * "left_disable" - disable space on the left +# * "right_disable" - disable space on the right +# * "both_disable" - disable spaces on both sides +# * - any other character/string produces no change to default behavior (eg "none", "X", etc.) +# +# * separator_disable - disables drawing a separator on this segment, very useful for segments +# with dynamic background colours (eg tmux_mem_cpu_load): +# * "no_separator_disable" - don't disable the separator (default) +# * "separator_disable" - disables the separator +# * - any other character/string produces no change to default behavior +# +# Example segment with separator disabled and right space character disabled: +# "hostname 33 0 {TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD} 0 0 right_disable separator_disable" +# +# Example segment with spacing characters disabled on both sides but not touching the default coloring: +# "hostname 33 0 {TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD} no_sep_bg_color no_sep_fg_color both_disable" +# +# Example segment with changing the foreground color of the default separator: +# "hostname 33 0 default_separator no_sep_bg_color 120" +# +## Note that although redundant the non_default_separator, separator_background_color and +# separator_foreground_color options must still be specified so that appropriate index +# of options to support the spacing_disable and separator_disable features can be used +# The default_* and no_* can be used to keep the default behaviour. + +# shellcheck disable=SC1143,SC2128 +if [ -z "$TMUX_POWERLINE_LEFT_STATUS_SEGMENTS" ]; then + # Use pywal colors if available, otherwise use defaults + # shellcheck disable=SC2154 + if [ -n "$color5" ] && [ -n "$background" ]; then + # shellcheck disable=SC2154 + TMUX_POWERLINE_LEFT_STATUS_SEGMENTS=( + # shellcheck disable=SC2154 + "tmux_session_info ${color5} ${background}" + # shellcheck disable=SC2154 + "hostname ${color3} ${background}" + #"mode_indicator 165 0" + #"ifstat 30 255" + #"ifstat_sys 30 255" + # shellcheck disable=SC2154 + # "lan_ip ${color6} ${background} ${TMUX_POWERLINE_SEPARATOR_RIGHT_THIN}" + #"vpn 24 255 ${TMUX_POWERLINE_SEPARATOR_RIGHT_THIN}" + # shellcheck disable=SC2154 + # "wan_ip ${color6} ${background} ${TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD} ${color2} ${background}" + # shellcheck disable=SC2154 + "vcs_branch ${color2} ${background}" + #"vcs_compare 60 255" + #"vcs_staged 64 255" + #"vcs_modified 9 255" + #"vcs_others 245 0" + ) + else + TMUX_POWERLINE_LEFT_STATUS_SEGMENTS=( + "tmux_session_info 148 234" + "hostname 33 0" + #"mode_indicator 165 0" + #"ifstat 30 255" + #"ifstat_sys 30 255" + # "lan_ip 24 255 ${TMUX_POWERLINE_SEPARATOR_RIGHT_THIN}" + #"vpn 24 255 ${TMUX_POWERLINE_SEPARATOR_RIGHT_THIN}" + # "wan_ip 24 255 ${TMUX_POWERLINE_SEPARATOR_RIGHT_BOLD} 29 255" + "vcs_branch 29 88" + #"vcs_compare 60 255" + #"vcs_staged 64 255" + #"vcs_modified 9 255" + #"vcs_others 245 0" + ) + fi +fi + +# shellcheck disable=SC1143,SC2128 +if [ -z "$TMUX_POWERLINE_RIGHT_STATUS_SEGMENTS" ]; then + # Use pywal colors if available, otherwise use defaults + # shellcheck disable=SC2154 + if [ -n "$color1" ] && [ -n "$background" ] && [ -n "$foreground" ]; then + # shellcheck disable=SC2154 + TMUX_POWERLINE_RIGHT_STATUS_SEGMENTS=( + #"earthquake 3 0" + # shellcheck disable=SC2154 + "pwd ${color4} ${background}" + #"macos_notification_count 29 255" + #"mailcount 9 255" + "now_playing 234 37" + #"cpu 240 136" + # shellcheck disable=SC2154 + # "load ${color8} ${background}" + #"tmux_mem_cpu_load 234 136" + # shellcheck disable=SC2154 + "battery ${color5} ${background}" + #"air ${TMUX_POWERLINE_SEG_AIR_COLOR} 255" + # shellcheck disable=SC2154 + "weather ${color14} ${background}" + #"rainbarf 0 ${TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR}" + # "$( + # if (($(tp_cpu_temp_at_least 60))); then + # echo "cpu_temp #ff2020 235" + # else + # echo "cpu_temp #303080 136" + # fi + # )" \ + #"xkb_layout 125 117" + #"tmux_continuum_save" + #"tmux_continuum_status 14 7" + # shellcheck disable=SC2154 + "date_day ${color1} ${background}" + # shellcheck disable=SC2154 + "date ${color1} ${background} ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + # shellcheck disable=SC2154 + "time ${color1} ${background} ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + #"utc_time 235 136 ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + ) + else + TMUX_POWERLINE_RIGHT_STATUS_SEGMENTS=( + #"earthquake 3 0" + "pwd 89 211" + #"macos_notification_count 29 255" + #"mailcount 9 255" + "now_playing 234 37" + #"cpu 240 136" + # "load 237 167" + #"tmux_mem_cpu_load 234 136" + "battery 137 127" + #"air ${TMUX_POWERLINE_SEG_AIR_COLOR} 255" + "weather 37 255" + #"rainbarf 0 ${TMUX_POWERLINE_DEFAULT_FOREGROUND_COLOR}" + # "$( + # if (($(tp_cpu_temp_at_least 60))); then + # echo "cpu_temp #ff2020 235" + # else + # echo "cpu_temp #303080 136" + # fi + # )" \ + #"xkb_layout 125 117" + #"tmux_continuum_save" + #"tmux_continuum_status 14 7" + "date_day 235 136" + "date 235 136 ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + "time 235 136 ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + #"utc_time 235 136 ${TMUX_POWERLINE_SEPARATOR_LEFT_THIN}" + ) + fi +fi -- cgit v1.2.3