diff --git a/configs/.zshrc b/configs/.zshrc index 86cf9d4..5eafe1b 100644 --- a/configs/.zshrc +++ b/configs/.zshrc @@ -22,6 +22,8 @@ eval `dircolors ~/.dircolors` export FPATH=$FPATH:~/.dotfiles/completions export NVIM_HOME=$HOME/.config/nvim +export NVIM_LISTEN_ADDRESS=/tmp/nvimsocket +export NVR_CMD="" # Load oh my zsh export ZSH=~/.oh-my-zsh @@ -78,6 +80,10 @@ if type rg &> /dev/null; then export FZF_DEFAULT_OPTS='-m --height 50% --border' fi +if [ "$XDG_SESSION_TYPE" = "wayland" ]; then + export MOZ_ENABLE_WAYLAND=1 +fi + # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh diff --git a/configs/kitty/current-theme.conf b/configs/kitty/current-theme.conf new file mode 100644 index 0000000..29f8f9e --- /dev/null +++ b/configs/kitty/current-theme.conf @@ -0,0 +1,21 @@ +background #000000 +foreground #fffaf3 +cursor #ffffff +selection_background #002a3a +color0 #222222 +color8 #444444 +color1 #ff000f +color9 #ff273f +color2 #8ce00a +color10 #abe05a +color3 #ffb900 +color11 #ffd141 +color4 #008df8 +color12 #0092ff +color5 #6c43a5 +color13 #9a5feb +color6 #00d7eb +color14 #67ffef +color7 #ffffff +color15 #ffffff +selection_foreground #0d0f18 diff --git a/configs/kitty/kitty.conf b/configs/kitty/kitty.conf index 9ae9246..8948b61 100644 --- a/configs/kitty/kitty.conf +++ b/configs/kitty/kitty.conf @@ -1,7 +1,5 @@ # vim:fileencoding=utf-8:ft=conf:foldmethod=marker -include ./theme.conf - #: Fonts {{{ #: kitty has very powerful font management. You can configure @@ -627,9 +625,8 @@ window_padding_width 10 #: Color scheme {{{ # - -foreground #dddddd -background #000000 +# foreground #dddddd +# background #000000 #: The foreground and background colors @@ -793,7 +790,7 @@ background #000000 #: to yes means that any background processes still using the terminal #: can fail silently because their stdout/stderr/stdin no longer work. -# allow_remote_control no +allow_remote_control yes #: Allow other programs to control kitty. If you turn this on other #: programs can control all aspects of kitty, including sending text @@ -806,7 +803,7 @@ background #000000 #: you want to prevent programs running on a remote computer over ssh #: from controlling kitty. -# listen_on none +listen_on unix:/tmp/kitty-socket #: Tell kitty to listen to the specified unix/tcp socket for remote #: control connections. Note that this will apply to all kitty @@ -1314,3 +1311,9 @@ map kitty_mod+minus change_font_size all -2.0 #: }}} # }}} + + +# BEGIN_KITTY_THEME +# Argonaut +include current-theme.conf +# END_KITTY_THEME diff --git a/configs/kitty/kitty.conf.bak b/configs/kitty/kitty.conf.bak new file mode 100644 index 0000000..6cccc8d --- /dev/null +++ b/configs/kitty/kitty.conf.bak @@ -0,0 +1,1319 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +font_family FiraCode Nerd Font Mono +# bold_font auto +# italic_font auto +# bold_italic_font auto +# + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: list-fonts` command. By default they are derived automatically, by +#: the OSes font system. Setting them manually is useful for font +#: families that have many weight variants like Book, Medium, Thick, +#: etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 13.0 + +#: Font size (in pts) + +# force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the the string been LTR. For example, assuming the Hebrew word +#: ירושלים, selecting the character that on the screen appears to be ם +#: actually writes into the selection buffer the character י. + +#: kitty's default behavior is useful in conjunction with a filter to +#: reverse the word order, however, if you wish to manipulate RTL +#: glyphs, it can be very challenging to work with, so this option is +#: provided to turn it off. Furthermore, this option can be used with +#: the command line program GNU FriBidi +#: to get BIDI +#: support, because it will force kitty to always treat the text as +#: LTR, which FriBidi expects for terminals. + +# adjust_line_height 0 +# adjust_column_width 0 + +#: Change the size of each character cell kitty renders. You can use +#: either numbers, which are interpreted as pixels or percentages +#: (number followed by %), which are interpreted as percentages of the +#: unmodified values. You can use negative pixels or percentages less +#: than 100% to reduce sizes (but this might cause rendering +#: artifacts). + +# symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each unicode code +#: point is specified in the form U+. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. symbol_map itself can be specified multiple +#: times. Syntax is:: + +#: symbol_map codepoints Font Family Name + +disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features setting. + +# font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code Retina includes a discretionary +#: feature, zero, which in that font changes the appearance of the +#: zero (0), to make it more easily distinguishable from Ø. Fira Code +#: Retina also includes other discretionary features known as +#: Stylistic Sets which have the tags ss01 through ss20. + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, these are read from the FontConfig database first and +#: then this, setting is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use kitty + list-fonts +#: --psnames: + +#: .. code-block:: sh + +#: $ kitty + list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero:: + +#: font_features FiraCode-Retina +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +# box_drawing_scale 0.001, 1, 1.5, 2 + +#: Change the sizes of the lines used for the box drawing unicode +#: characters These values are in pts. They will be scaled by the +#: monitor DPI to arrive at a pixel value. There must be four values +#: corresponding to thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +# cursor #cccccc + +#: Default cursor color + +# cursor_text_color #111111 + +#: Choose the color of text under the cursor. If you want it rendered +#: with the background color of the cell underneath instead, use the +#: special keyword: background + +# cursor_shape block + +#: The cursor shape can be one of (block, beam, underline) + +# cursor_beam_thickness 1.5 + +#: Defines the thickness of the beam cursor (in pts) + +# cursor_underline_thickness 2.0 + +#: Defines the thickness of the underline cursor (in pts) + +# cursor_blink_interval -1 + +#: The interval (in seconds) at which to blink the cursor. Set to zero +#: to disable blinking. Negative values mean use system default. Note +#: that numbers smaller than repaint_delay will be limited to +#: repaint_delay. + +# cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +# scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. + +# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position. + +# scrollback_pager_history_size 0 + +#: Separate scrollback history size, used only for browsing the +#: scrollback buffer (in MB). This separate buffer is not available +#: for interactive scrolling but will be piped to the pager program +#: when viewing scrollback buffer in a separate window. The current +#: implementation stores the data in UTF-8, so approximatively 10000 +#: lines per megabyte at 100 chars per line, for pure ASCII text, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. + +# wheel_scroll_multiplier 5.0 + +#: Modify the amount scrolled by the mouse wheel. Note this is only +#: used for low precision scrolling devices, not for high precision +#: scrolling on platforms such as macOS and Wayland. Use negative +#: numbers to change scroll direction. + +# touch_scroll_multiplier 1.0 + +#: Modify the amount scrolled by a touchpad. Note this is only used +#: for high precision scrolling devices on platforms such as macOS and +#: Wayland. Use negative numbers to change scroll direction. + +#: }}} + +#: Mouse {{{ + +# mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +# url_color #0087bd +# url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, single, double, curly + +# open_url_modifiers kitty_mod + +#: The modifier keys to press when clicking with the mouse on URLs to +#: open the URL + +# open_url_with default + +#: The program with which to open URLs that are clicked on. The +#: special value default means to use the operating system's default +#: URL handler. + +# url_prefixes http https file ftp + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +# detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. + +# copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, simply selecting text with the mouse will cause the text +#: to be copied to clipboard. Useful on platforms such as macOS that +#: do not have the concept of primary selections. You can instead +#: specify a name such as a1 to copy to a private kitty buffer +#: instead. Map a shortcut with the paste_from_buffer action to paste +#: from this private buffer. For example:: + +#: map cmd+shift+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +# strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. always will always do it. + +# rectangle_select_modifiers ctrl+alt + +#: The modifiers to use rectangular selection (i.e. to select text in +#: a rectangular block with the mouse) + +# terminal_select_modifiers shift + +#: The modifiers to override mouse selection even when a terminal +#: application has grabbed the mouse + +# select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the unicode database will be matched. + +# click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +# focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around + +# pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. Valid values are: arrow, beam and hand + +# default_pointer_shape beam + +#: The default shape of the mouse pointer. Valid values are: arrow, +#: beam and hand + +# pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. +#: Valid values are: arrow, beam and hand + +#: }}} + +#: Performance tuning {{{ + +# repaint_delay 10 + +#: Delay (in milliseconds) between screen updates. Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS you have to either +#: set sync_to_monitor to no or use a monitor with a high refresh +#: rate. Also, to minimize latency when there is pending input to be +#: processed, repaint_delay is ignored. + +# input_delay 3 + +#: Delay (in milliseconds) before input from the program running in +#: the terminal is processed. Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +# sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) +#: when scrolling. However, it limits the rendering speed to the +#: refresh rate of your monitor. With a very high speed mouse/high +#: keyboard repeat rate, you may notice some slight input latency. If +#: so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +enable_audio_bell no + +#: Enable/disable the audio bell. Useful in environments that requir +#: silence. + +# visual_bell_duration 0.0 + +#: Visual bell duration. Flash the screen when a bell occurs for the +#: specified number of seconds. Set to zero to disable. + +# window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +# bell_on_tab yes + +#: Show a bell symbol on the tab if a bell occurs in one of the +#: windows in the tab and the window is not the currently focused +#: window + +# command_on_bell none + +#: Program to run when a bell occurs. + +#: }}} + +#: Window layout {{{ + +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +# enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the https://sw.kovidgoyal.net/kitty/index.html#layouts. + +# window_resize_step_cells 2 +# window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing windows. The cells value is used for horizontal resizing +#: and the lines value for vertical resizing. + +# window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified the unit is assumed to +#: be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: minimum needed borders for inactive windows are drawn. That is only +#: the borders that separate the inactive window from a neighbor. Note +#: that setting a non-zero window margin overrides this and causes all +#: borders to be drawn. + +# window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +# single_window_margin_width -1 + +#: The window margin (in pts) to use when only a single window is +#: visible. Negative values will cause the value of +#: window_margin_width to be used instead. A single value sets all +#: four sides. Two values set the vertical and horizontal sides. Three +#: values set top, horizontal and bottom. Four values set top, right, +#: bottom and left. + +window_padding_width 10 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +# placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be on +#: only the bottom and right edges. + +# active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +# inactive_border_color #cccccc + +#: The color for the border of inactive windows + +# bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred + +# inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +# hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only can be used to only hide the titlebar. +#: Whether this works and exactly what effect it has depends on the +#: window manager/operating system. + +# resize_debounce_time 0.1 + +#: The time (in seconds) to wait before redrawing the screen when a +#: resize event is received. On platforms such as macOS, where the +#: operating system sends events corresponding to the start and end of +#: a resize, this number is ignored. + +# resize_draw_strategy static + +#: Choose how kitty draws a window while a resize is in progress. A +#: value of static means draw the current window contents, mostly +#: unchanged. A value of scale means draw the current window contents +#: scaled. A value of blank means draw a blank window. A value of size +#: means show the window size in cells. + +# resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with an +#: initial_window_width and initial_window_height in number of cells, +#: this option can be used to keep the margins as small as possible +#: when resizing the OS window. Note that this does not currently work +#: on Wayland. + +# confirm_os_window_close 0 + +#: Ask for confirmation when closing an OS window or a tab that has at +#: least this number of kitty windows in it. A value of zero disables +#: confirmation. This confirmation also applies to requests to quit +#: the entire application (all OS windows, via the quit action). + +#: }}} + +#: Tab bar {{{ + +# tab_bar_edge bottom + +#: Which edge to show the tab bar on, top or bottom + +# tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts) + +# tab_bar_style fade + +#: The tab bar style, can be one of: fade, separator, powerline, or +#: hidden. In the fade style, each tab's edges fade into the +#: background color, in the separator style, tabs are separated by a +#: configurable separator, and the powerline shows the tabs as a +#: continuous line. If you use the hidden style, you might want to +#: create a mapping for the select_tab action which presents you with +#: a list of tabs and allows for easy switching to a tab. + +# tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown + +# tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +# tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +# tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +# tab_activity_symbol none + +#: Some text or a unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. + +# tab_title_template "{title}" + +#: A template to render the tab title. The default just renders the +#: title. If you wish to include the tab-index as well, use something +#: like: {index}: {title}. Useful if you have shortcuts mapped for +#: goto_tab N. In addition you can use {layout_name} for the current +#: layout name and {num_windows} for the number of windows in the tab. +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. +#: If you want to style the text, you can use styling directives, for +#: example: {fmt.fg.red}red{fmt.fg.default}normal{fmt.bg._00FF00}green +#: bg{fmt.bg.normal}. Similarly, for bold and italic: +#: {fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}. + +# active_tab_title_template none + +#: Template to use for active tabs, if not specified falls back to +#: tab_title_template. + +# active_tab_foreground #000 +# active_tab_background #eee +# active_tab_font_style bold-italic +# inactive_tab_foreground #444 +# inactive_tab_background #999 +# inactive_tab_font_style normal + +#: Tab bar colors and styles + +# tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +#: }}} + +#: Color scheme {{{ +# +# foreground #dddddd +# background #000000 + +#: The foreground and background colors + +# background_opacity 1.0 + +#: The opacity of the background. A number between 0 and 1, where 1 is +#: opaque and 0 is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background. This is so that things like the status bar in vim, +#: powerline prompts, etc. still look good. But it means that if you +#: use a color theme with a background color in your editor, it will +#: not be rendered as transparent. Instead you should change the +#: default background color in your kitty config and not use a +#: background color in the editor color scheme. Or use the escape +#: codes to set the terminals default colors in a shell script to +#: launch your editor. Be aware that using a value less than 1.0 is a +#: (possibly significant) performance hit. If you want to dynamically +#: change transparency of windows set dynamic_background_opacity to +#: yes (this is off by default as it has a performance cost) + +# background_image none + +#: Path to a background image. Must be in PNG format. + +# background_image_layout tiled + +#: Whether to tile or scale the background image. + +# background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +# dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. + +# background_tint 0.0 + +#: How much to tint the background image by the background color. The +#: tint is applied only under the text area, not margin/borders. Makes +#: it easier to read the text. Tinting is done using the current +#: background color for each window. This setting applies only if +#: background_opacity is set and transparent windows are supported or +#: background_image is set. + +# dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +# selection_foreground #000000 + +#: The foreground for text selected with the mouse. A value of none +#: means to leave the color unchanged. + +# selection_background #fffacd + +#: The background for text selected with the mouse. + + +#: The 16 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version. You can also set the remaining colors from +#: the 256 color table as color16 to color255. + +# color0 #000000 +# color8 #767676 + +#: black + +# color1 #cc0403 +# color9 #f2201f + +#: red + +# color2 #19cb00 +# color10 #23fd00 + +#: green + +# color3 #cecb00 +# color11 #fffd00 + +#: yellow + +# color4 #0d73cc +# color12 #1a8fff + +#: blue + +# color5 #cb1ed1 +# color13 #fd28ff + +#: magenta + +# color6 #0dcdcd +# color14 #14ffff + +#: cyan + +# color7 #dddddd +# color15 #ffffff + +#: white + +# mark1_foreground black + +#: Color for marks of type 1 + +# mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +# mark2_foreground black + +#: Color for marks of type 2 + +# mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +# mark3_foreground black + +#: Color for marks of type 3 + +# mark3_background #f274bc + +#: Color for marks of type 1 (violet) + +#: }}} + +#: Advanced {{{ + +# shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login to ensure that the shell starts in interactive mode and +#: reads its startup rc files. + +# editor . + +#: The console editor to use when editing the kitty config file or +#: similar tasks. A value of . means to use the environment variables +#: VISUAL and EDITOR in that order. Note that this environment +#: variable has to be set not just in your shell startup scripts but +#: system-wide, otherwise kitty will not see it. + +# close_on_child_death no + +#: Close the window when the child process (shell) exits. If no (the +#: default), the terminal will remain open when the child exits as +#: long as there are still processes outputting to the terminal (for +#: example disowned or backgrounded processes). If yes, the window +#: will close as soon as the child process exits. Note that setting it +#: to yes means that any background processes still using the terminal +#: can fail silently because their stdout/stderr/stdin no longer work. + +allow_remote_control yes + +#: Allow other programs to control kitty. If you turn this on other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over ssh +#: connections. You can chose to either allow any program running +#: within kitty to control it, with yes or only programs that connect +#: to the socket specified with the kitty --listen-on command line +#: option, if you use the value socket-only. The latter is useful if +#: you want to prevent programs running on a remote computer over ssh +#: from controlling kitty. + +listen_on unix:/tmp/kitty-socket + +#: Tell kitty to listen to the specified unix/tcp socket for remote +#: control connections. Note that this will apply to all kitty +#: instances. It can be overridden by the kitty --listen-on command +#: line flag. This option accepts only UNIX sockets, such as +#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment +#: variables are expanded. If {kitty_pid} is present then it is +#: replaced by the PID of the kitty process, otherwise the PID of the +#: kitty process is appended to the value, with a hyphen. This option +#: is ignored unless you also set allow_remote_control to enable +#: remote control. See the help for kitty --listen-on for more +#: details. + +# env + +#: Specify environment variables to set in all child processes. Note +#: that environment variables are expanded recursively, so if you +#: use:: + +#: env MYVAR1=a +#: env MYVAR2=${MYVAR1}/${HOME}/b + +#: The value of MYVAR2 will be a//b. + +# update_check_interval 24 + +#: Periodically check if an update to kitty is available. If an update +#: is found a system notification is displayed informing you of the +#: available update. The default is to check every 24 hrs, set to zero +#: to disable. + +# startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See +#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. + +# clipboard_control write-clipboard write-primary + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: set of possible actions is: write-clipboard read-clipboard write- +#: primary read-primary. You can additionally specify no-append to +#: disable kitty's protocol extension for clipboard concatenation. The +#: default is to allow writing to the clipboard and primary selection +#: with concatenation enabled. Note that enabling the read +#: functionality is a security risk as it means that any program, even +#: one running on a remote server via SSH can read your clipboard. + +# allow_hyperlinks yes + +#: Process hyperlink (OSC 8) escape sequences. If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click by holding down ctrl+shift and clicking +#: with the mouse. The special value of ``ask`` means that kitty will +#: ask before opening the link. + +# term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on Stack Overflow +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. + +#: }}} + +#: OS specific tweaks {{{ + +# macos_titlebar_color system + +#: Change the color of the kitty window's titlebar on macOS. A value +#: of system means to use the default system color, a value of +#: background means to use the background color of the currently +#: active window and finally you can use an arbitrary color, such as +#: #12af59 or red. WARNING: This option works by using a hack, as +#: there is no proper Cocoa API for it. It sets the background color +#: of the entire window and makes the titlebar transparent. As such it +#: is incompatible with background_opacity. If you want to use both, +#: you are probably better off just hiding the titlebar with +#: hide_window_decorations. + +# macos_option_as_alt no + +#: Use the option key as an alt key. With this set to no, kitty will +#: use the macOS native Option+Key = unicode character behavior. This +#: will break any Alt+key keyboard shortcuts in your terminal +#: programs, but you can use the macOS unicode input technique. You +#: can use the values: left, right, or both to use only the left, +#: right or both Option keys as Alt, instead. + +# macos_hide_from_tasks no + +#: Hide the kitty window from running tasks (Option+Tab) on macOS. + +# macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed. By +#: default, kitty will stay running, even with no open windows, as is +#: the expected behavior on macOS. + +# macos_window_resizable yes + +#: Disable this if you want kitty top-level (OS) windows to not be +#: resizable on macOS. + +# macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes. For example, a value of +#: 0.75 will result in rendering that looks similar to sub-pixel +#: antialiasing at common font sizes. + +# macos_traditional_fullscreen no + +#: Use the traditional full-screen transition, that is faster, but +#: less pretty. + +# macos_show_window_title_in all + +#: Show or hide the window title in the macOS window or menu-bar. A +#: value of window will show the title of the currently active window +#: at the top of the macOS window. A value of menubar will show the +#: title of the currently active window in the macOS menu-bar, making +#: use of otherwise wasted space. all will show the title everywhere +#: and none hides the title in the window and the menu-bar. + +# macos_custom_beam_cursor no + +#: Enable/disable custom mouse cursor for macOS that is easier to see +#: on both light and dark backgrounds. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. + +# linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: For a list of key names, see: the GLFW key macros +#: . +#: The name to use is the part after the GLFW_KEY_ prefix. For a list +#: of modifier names, see: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-keyboard option. +#: Then kitty will output some debug text for every key event. In that +#: text look for ``native_code`` the value of that becomes the key +#: name in the shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map ctrl+a to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: You can combine multiple actions to be triggered by a single +#: shortcut, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: this will create a new window and switch to the next available +#: layout + +#: You can use multi-key shortcuts using the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +kitty_mod ctrl+shift + +#: The value of kitty_mod is used as the modifier for all default +#: shortcuts, you can change it in your kitty.conf to change the +#: modifiers for all the default shortcuts. + +# clear_all_shortcuts no + +#: You can have kitty remove all shortcut definition seen up to this +#: point. Useful, for instance, to remove the default shortcuts. + +# kitten_alias hints hints --hints-offset=0 + +#: You can create aliases for kitten names, this allows overriding the +#: defaults for kitten options and can also be used to shorten +#: repeated mappings of the same kitten with a specific group of +#: options. For example, the above alias changes the default value of +#: kitty +kitten hints --hints-offset to zero for all mappings, +#: including the builtin ones. + +#: Clipboard {{{ + +# map kitty_mod+c copy_to_clipboard + +#: There is also a copy_or_interrupt action that can be optionally +#: mapped to Ctrl+c. It will copy only if there is a selection and +#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt +#: will copy and clear the selection or send an interrupt if there is +#: no selection. + +# map kitty_mod+v paste_from_clipboard +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection +# map kitty_mod+o pass_selection_to_program + +#: You can also pass the contents of the current selection to any +#: program using pass_selection_to_program. By default, the system's +#: open program is used, but you can specify your own, the selection +#: will be passed as a command line argument to the program, for +#: example:: + +#: map kitty_mod+o pass_selection_to_program firefox + +#: You can pass the current selection to a terminal program running in +#: a new kitty window, by using the @selection placeholder:: + +#: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +# map kitty_mod+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map kitty_mod+page_up scroll_page_up +# map kitty_mod+page_down scroll_page_down +# map kitty_mod+home scroll_home +# map kitty_mod+end scroll_end +# map kitty_mod+h show_scrollback + +#: You can pipe the contents of the current screen + history buffer as +#: STDIN to an arbitrary program using the ``launch`` function. For +#: example, the following opens the scrollback buffer in less in an +#: overlay window:: + +#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#: For more details on piping screen and buffer contents to external +#: programs, see launch. + +#: }}} + +#: Window management {{{ + +# map kitty_mod+enter new_window + +#: You can open a new window running an arbitrary program, for +#: example:: + +#: map kitty_mod+y launch mutt + +#: You can open a new window with the current working directory set to +#: the working directory of the current window using:: + +#: map ctrl+alt+enter launch --cwd=current + +#: You can open a new window that is allowed to control kitty via the +#: kitty remote control facility by prefixing the command line with @. +#: Any programs running in that window will be allowed to control +#: kitty. For example:: + +#: map ctrl+enter launch --allow-remote-control some_program + +#: You can open a new window next to the currently active window or as +#: the first window, with:: + +#: map ctrl+n launch --location=neighbor some_program +#: map ctrl+f launch --location=first some_program + +#: For more details, see launch. + +# map kitty_mod+n new_os_window + +#: Works like new_window above, except that it opens a top level OS +#: kitty window. In particular you can use new_os_window_with_cwd to +#: open a window with the current working directory. + +# map kitty_mod+w close_window +# map kitty_mod+] next_window +# map kitty_mod+[ previous_window +# map kitty_mod+f move_window_forward +# map kitty_mod+b move_window_backward +# map kitty_mod+` move_window_to_top +# map kitty_mod+r start_resizing_window +# map kitty_mod+1 first_window +# map kitty_mod+2 second_window +# map kitty_mod+3 third_window +# map kitty_mod+4 fourth_window +# map kitty_mod+5 fifth_window +# map kitty_mod+6 sixth_window +# map kitty_mod+7 seventh_window +# map kitty_mod+8 eighth_window +# map kitty_mod+9 ninth_window +# map kitty_mod+0 tenth_window +#: }}} + +#: Tab management {{{ + +# map kitty_mod+right next_tab +# map kitty_mod+left previous_tab +# map kitty_mod+t new_tab +# map kitty_mod+q close_tab +# map kitty_mod+. move_tab_forward +# map kitty_mod+, move_tab_backward +# map kitty_mod+alt+t set_tab_title + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and use +#: new_tab_with_cwd. Finally, if you want the new tab to open next to +#: the current tab rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +# map kitty_mod+l next_layout + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +map kitty_mod+plus change_font_size all +2.0 +map kitty_mod+minus change_font_size all -2.0 +# map kitty_mod+backspace change_font_size all 0 + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +# map kitty_mod+e kitten hints + +#: Open a currently visible URL using the keyboard. The program used +#: to open the URL is specified in open_url_with. + +# map kitty_mod+p>f kitten hints --type path --program - + +#: Select a path/filename and insert it into the terminal. Useful, for +#: instance to run git commands on a filename output from a previous +#: git command. + +# map kitty_mod+p>shift+f kitten hints --type path + +#: Select a path/filename and open it with the default open program. + +# map kitty_mod+p>l kitten hints --type line --program - + +#: Select a line of text and insert it into the terminal. Use for the +#: output of things like: ls -1 + +# map kitty_mod+p>w kitten hints --type word --program - + +#: Select words and insert into terminal. + +# map kitty_mod+p>h kitten hints --type hash --program - + +#: Select something that looks like a hash and insert it into the +#: terminal. Useful with git, which uses sha1 hashes to identify +#: commits + +# map kitty_mod+p>n kitten hints --type linenum + +#: Select something that looks like filename:linenum and open it in +#: vim at the specified line number. + +# map kitty_mod+p>y kitten hints --type hyperlink + +#: Select a hyperlink (i.e. a URL that has been marked as such by the +#: terminal program, for example, by ls --hyperlink=auto). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see kittens/hints. +#: }}} + +#: Miscellaneous {{{ + +# map kitty_mod+f11 toggle_fullscreen +# map kitty_mod+f10 toggle_maximized +# map kitty_mod+u kitten unicode_input +# map kitty_mod+f2 edit_config_file +# map kitty_mod+escape kitty_shell window + +#: Open the kitty shell in a new window/tab/overlay/os_window to +#: control kitty using commands. + +# map kitty_mod+a>m set_background_opacity +0.1 +# map kitty_mod+a>l set_background_opacity -0.1 +# map kitty_mod+a>1 set_background_opacity 1 +# map kitty_mod+a>d set_background_opacity default +# map kitty_mod+delete clear_terminal reset active + +#: You can create shortcuts to clear/reset the terminal. For example:: + +#: # Reset the terminal +#: map kitty_mod+f9 clear_terminal reset active +#: # Clear the terminal screen by erasing all contents +#: map kitty_mod+f10 clear_terminal clear active +#: # Clear the terminal scrollback by erasing it +#: map kitty_mod+f11 clear_terminal scrollback active +#: # Scroll the contents of the screen into the scrollback +#: map kitty_mod+f12 clear_terminal scroll active + +#: If you want to operate on all windows instead of just the current +#: one, use all instead of active. + +#: It is also possible to remap Ctrl+L to both scroll the current +#: screen contents into the scrollback buffer and clear the screen, +#: instead of just clearing the screen:: + +#: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c + + +#: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#: client program when pressing specified shortcut keys. For example:: + +#: map ctrl+alt+a send_text all Special text + +#: This will send "Special text" when you press the ctrl+alt+a key +#: combination. The text to be sent is a python string literal so you +#: can use escapes like \x1b to send control codes or \u21fb to send +#: unicode characters (or you can just input the unicode characters +#: directly as UTF-8 text). The first argument to send_text is the +#: keyboard modes in which to activate the shortcut. The possible +#: values are normal or application or kitty or a comma separated +#: combination of them. The special keyword all means all modes. The +#: modes normal and application refer to the DECCKM cursor key mode +#: for terminals, and kitty refers to the special kitty extended +#: keyboard protocol. + +#: Another example, that outputs a word and then moves the cursor to +#: the start of the line (same as pressing the Home key):: + +#: map ctrl+alt+a send_text normal Word\x1b[H +#: map ctrl+alt+a send_text application Word\x1bOH + +#: }}} + +# }}} + + +# BEGIN_KITTY_THEME +# Atom One Light +include current-theme.conf +# END_KITTY_THEME diff --git a/configs/kitty/theme.conf b/configs/kitty/theme.conf deleted file mode 100644 index 00b71c9..0000000 --- a/configs/kitty/theme.conf +++ /dev/null @@ -1,21 +0,0 @@ -background #000000 -foreground #ffffff -cursor #e2bbef -selection_background #4d4d4d -color0 #3d352a -color8 #554444 -color1 #cd5c5c -color9 #cc5533 -color2 #86af80 -color10 #88aa22 -color3 #e8ae5b -color11 #ffa75d -color4 #6495ed -color12 #87ceeb -color5 #deb887 -color13 #996600 -color6 #b0c4de -color14 #b0c4de -color7 #bbaa99 -color15 #ddccbb -selection_foreground #1c1c1c diff --git a/configs/kitty/themes/Argonaut.conf b/configs/kitty/themes/Argonaut.conf new file mode 100644 index 0000000..29f8f9e --- /dev/null +++ b/configs/kitty/themes/Argonaut.conf @@ -0,0 +1,21 @@ +background #000000 +foreground #fffaf3 +cursor #ffffff +selection_background #002a3a +color0 #222222 +color8 #444444 +color1 #ff000f +color9 #ff273f +color2 #8ce00a +color10 #abe05a +color3 #ffb900 +color11 #ffd141 +color4 #008df8 +color12 #0092ff +color5 #6c43a5 +color13 #9a5feb +color6 #00d7eb +color14 #67ffef +color7 #ffffff +color15 #ffffff +selection_foreground #0d0f18 diff --git a/configs/kitty/themes/Atom One Light.conf b/configs/kitty/themes/Atom One Light.conf new file mode 100644 index 0000000..056ef3b --- /dev/null +++ b/configs/kitty/themes/Atom One Light.conf @@ -0,0 +1,21 @@ +background #f8f8f8 +foreground #2a2b33 +cursor #bbbbbb +selection_background #ececec +color0 #000000 +color8 #000000 +color1 #de3d35 +color9 #de3d35 +color2 #3e953a +color10 #3e953a +color3 #d2b67b +color11 #d2b67b +color4 #2f5af3 +color12 #2f5af3 +color5 #950095 +color13 #a00095 +color6 #3e953a +color14 #3e953a +color7 #bbbbbb +color15 #ffffff +selection_foreground #f8f8f8 diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua index 84930ad..f01cd8b 100644 --- a/configs/nvim/init.lua +++ b/configs/nvim/init.lua @@ -1,228 +1,93 @@ -require("install-packer") +require("utils.install-packer") local u = require("utils") +require("core.plugins") -local o = vim.o local g = vim.g local cmd = vim.cmd -local opt = vim.opt - -require("plugins") if u.has_plugin("cmp") then - -- Global options - o.number = true -- show line number - o.showmatch = true -- show matching brackets + require "impatient" - -- Indentation options - vim.cmd [[ - set autoindent - set expandtab - set shiftwidth=2 - set softtabstop=2 - set tabstop=1 - ]] + require "core.options" + require "core.autocommands" + require "core.keymappings" - g.hidden = true -- unload buffers when hidden - g.filetype = true -- execute autocommands based on filetype - opt.clipboard = {"unnamedplus"} - o.autoread = true - opt.termguicolors = true + local packer = require("packer") - -- Search - o.inccommand = "nosplit" -- show substitutions incrementally - o.ignorecase = true - o.smartcase = true - opt.wildignore:append(".git/*", "node_modules/*") - o.wildignorecase = true - o.lazyredraw = true + -- Have packer use a popup window + packer.init { + display = { + open_fn = function() + return require("packer.util").float { border = "rounded" } + end, + }, + } - opt.listchars:append( - { - extends = "#", - eol = "↴", - space = "⋅", - tab = "▸ " - } - ) + require "configs.command-center" + require "configs.notify" + require "configs.lsp" + require "configs.lspinstaller" + require "configs.telescope" + require "configs.tree" - -- Shortmess - cmd [[set shortmess+=F]] - g.loaded_netrw = 1 - g.loaded_netrwPlugin = 1 - g.loaded_zipPlugin = 1 - g.loaded_zip = 1 - - g.languagetool_server_jar = "~/build/languagetool/languagetool-server.jar" - g.languagetool_lang = "de" - - cmd [[set mouse=a]] -- enable mouse interaction - cmd [[set undofile]] - cmd [[set fcs=eob:\ ]] -- disable showing ~ in empty lines - - cmd [[set noshowmode]] -- to get rid of thing like --INSERT-- - cmd [[set noshowcmd]] -- to get rid of display of last command - cmd [[set shortmess+=F]] -- to get rid of the file name displayed in the command line bar - - cmd [[set noruler]] - - g.ale_fixers = {"prettier", "eslint"} - - require("command-center-conf") - - local notify = require("notify") - vim.notify = notify; - - notify.setup( - { - stages = "fade_in_slide_out", - max_width = 50, - render = "minimal", - background_colour = "#000000", - icons = { - ERROR = "", - WARN = "", - INFO = "", - DEBUG = "", - TRACE = "✎" - } - } - ) - - vim.wo.foldmethod = "expr" - vim.wo.foldexpr = "nvim_treesitter#foldexpr()" - vim.cmd [[ - set foldlevel=99 - ]] - - require("telescope-conf").setup() - - -- Enable Theming / Syntax - o.syntax = "enable" - o.termguicolors = true - cmd("colorscheme nightfox") - g.material_terminal_italics = 1 - g.material_theme_style = "darker" - g.tokyonight_style = "night" - g.tokyonight_transparent_sidebar = true - require("nightfox").setup( - { - options = { - styles = { - comments = "italic", - keywords = "bold", - types = "italic,bold" - }, - transparent = true - } - } - ) - - g.markdown_fenced_languages = {"html", "python", "bash=sh"} - - -- Remove background color - cmd("highlight Normal guibg=none") - cmd("highlight NonText guibg=none") - - - - -- Configure nvim-tree - g.nvim_tree_highlight_opened_files = 1 - g.nvim_tree_group_empty = 1 - g.nvim_tree_show_icons = { - folder_arrows = 0, - folders = 1, - files = 1, - git = 1 - } - require("nvim-tree").setup { - auto_open = 1, - gitignore = 1, - group_empty = 1, - hijack_cursor = 1, - update_cwd = true, - update_focused_file = { - enable = false - }, - renderer = { - indent_markers = { - enable = 0 - } - }, - diagnostics = { - enable = true, - icons = { - hint = "", - info = "", - warning = "", - error = "" - } - }, - view = { - auto_resize = true, - hide_root_folder = true, - signcolumn = "no" - } + -- Enable Theming / Syntax + require("nightfox").setup({ + options = { + transparent = true } + }) + cmd("colorscheme nightfox") + require "utils.theme-reloader" + require "configs.lualine" - -- Configure Wiki - g.wiki_root = "~/Notes" - g.wiki_filetypes = {"md"} - g.wiki_link_extension = ".md" + -- Configure Wiki + g.wiki_root = "~/Notes" + g.wiki_filetypes = { "md" } + g.wiki_link_extension = ".md" - -- KeyBindings - require "keymappings" + require "overlays" - require "overlays" + -- require "nvim-tmux-navigation".setup { + -- keybindings = { + -- left = "", + -- down = "", + -- up = "", + -- right = "", + -- last_active = "", + -- next = "" + -- } + -- } - require "nvim-tmux-navigation".setup { - keybindings = { - left = "", - down = "", - up = "", - right = "", - last_active = "", - next = "" - } - } + require "nvim-autopairs".setup() - require "nvim-autopairs".setup() + -- Treesitter config + require "configs.treesitter" - -- Treesitter config - require "treesitter-conf" + -- Autocompletion Setup + require "snippets" + require "configs.autocomplete" - -- Autocompletion Setup - require "snippets" - require "cmp-conf" + -- Setup rest.vim + -- require("rest-nvim").setup( + -- { + -- -- Open request results in a horizontal split + -- result_split_horizontal = false, + -- -- Skip SSL verification, useful for unknown certificates + -- skip_ssl_verification = false, + -- -- Highlight request on run + -- highlight = { + -- enabled = true, + -- timeout = 150 + -- }, + -- -- Jump to request line on run + -- jump_to_request = false + -- } + -- ) - -- LSP Config - require "lspinstaller-conf" - - -- Setup Command OVerlays - require "lazy-git" - - require "autocommands" - - -- Setup rest.vim - require("rest-nvim").setup( - { - -- Open request results in a horizontal split - result_split_horizontal = false, - -- Skip SSL verification, useful for unknown certificates - skip_ssl_verification = false, - -- Highlight request on run - highlight = { - enabled = true, - timeout = 150 - }, - -- Jump to request line on run - jump_to_request = false - } - ) - - -- LSP Config - require "lspinstaller-conf" - -- require "lsp-conf" + -- LSP Config + -- require "lsp-conf" else - vim.cmd [[PackerSync]] + vim.cmd [[PackerSync]] + vim.cmd [[echo Installed -> Reload]] end diff --git a/configs/nvim/lua/cmp-conf.lua b/configs/nvim/lua/configs/autocomplete.lua similarity index 81% rename from configs/nvim/lua/cmp-conf.lua rename to configs/nvim/lua/configs/autocomplete.lua index 7c84973..0445f28 100644 --- a/configs/nvim/lua/cmp-conf.lua +++ b/configs/nvim/lua/configs/autocomplete.lua @@ -1,24 +1,24 @@ -- luasnip setup local luasnip = require "luasnip" -local lspkind = require "lspkind" +-- local lspkind = require "lspkind" local cmp = require "cmp" local cmp_autopairs = require("nvim-autopairs.completion.cmp") cmp.setup { - formatting = { - format = lspkind.cmp_format( - { - with_text = true, - menu = ({ - buffer = "[Buffer]", - nvim_lsp = "[LSP]", - luasnip = "[LuaSnip]", - nvim_lua = "[Lua]", - latex_symbols = "[Latex]" - }) - } - ) - }, + -- formatting = { + -- format = lspkind.cmp_format( + -- { + -- with_text = true, + -- menu = ({ + -- buffer = "[Buffer]", + -- nvim_lsp = "[LSP]", + -- luasnip = "[LuaSnip]", + -- nvim_lua = "[Lua]", + -- latex_symbols = "[Latex]" + -- }) + -- } + -- ) + -- }, experimental = { ghost_text = true }, diff --git a/configs/nvim/lua/command-center-conf.lua b/configs/nvim/lua/configs/command-center.lua similarity index 73% rename from configs/nvim/lua/command-center-conf.lua rename to configs/nvim/lua/configs/command-center.lua index dbec65e..bb1bc2b 100644 --- a/configs/nvim/lua/command-center-conf.lua +++ b/configs/nvim/lua/configs/command-center.lua @@ -4,28 +4,28 @@ local noremap = {noremap = true} command_center.add({ { description = "Search inside current buffer", - command = "Telescope current_buffer_fuzzy_find", + cmd = "Telescope current_buffer_fuzzy_find", keybindings = { "n", "fl", noremap }, }, { -- If no descirption is specified, command is used to replace descirption by default -- You can change this behavior in settigns - command = "Telescope find_files", + cmd = "Telescope find_files", }, { -- If no keybindings specified, no keybindings will be displayed or registered description = "Find hidden files", - command = "Telescope find_files hidden=true", + cmd = "Telescope find_files hidden=true", }, { -- You can specify multiple keybindings for the same command ... description = "Show document symbols", - command = "Telescope lsp_document_symbols", + cmd = "Telescope lsp_document_symbols", }, { description = "Show function signaure (hover)", - command = "lua vim.lsp.buf.hover()", + cmd = "lua vim.lsp.buf.hover()", },{ description="(TS) Organize Imports", - command = "OrganizeImports" + cmd = "OrganizeImports" } }) diff --git a/configs/nvim/lua/lsp-conf.lua b/configs/nvim/lua/configs/lsp.lua similarity index 98% rename from configs/nvim/lua/lsp-conf.lua rename to configs/nvim/lua/configs/lsp.lua index a835736..7dff02a 100644 --- a/configs/nvim/lua/lsp-conf.lua +++ b/configs/nvim/lua/configs/lsp.lua @@ -1,6 +1,6 @@ local lsp = require "lspconfig" local lsp_status = require("lsp-status") -local ts_utils = require("nvim-lsp-ts-utils") +-- local ts_utils = require("nvim-lsp-ts-utils") require'nvim-lightbulb'.setup { -- LSP client names to ignore diff --git a/configs/nvim/lua/lspinstaller-conf.lua b/configs/nvim/lua/configs/lspinstaller.lua similarity index 100% rename from configs/nvim/lua/lspinstaller-conf.lua rename to configs/nvim/lua/configs/lspinstaller.lua diff --git a/configs/nvim/lua/configs/lualine.lua b/configs/nvim/lua/configs/lualine.lua new file mode 100644 index 0000000..b817eac --- /dev/null +++ b/configs/nvim/lua/configs/lualine.lua @@ -0,0 +1,239 @@ +----------------- +-- Status Line -- +----------------- + +-- Eviline / Vimline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +-- Credit: Elai + +local lualine = require "lualine" + +-- Color table for highlights +-- stylua: ignore +local colors = { + bg = '#00000000', + fg = '#bbc2cf', + yellow = '#ECBE7B', + cyan = '#008080', + darkblue = '#081633', + green = '#B7BD82', + orange = '#8d6141', + violet = '#B294BB', + magenta = '#AE84BB', + blue = '#81A2BE', + red = '#CC8282', +} + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} + +-- Config +local config = { + options = { + -- Disable sections and component separators + component_separators = '', + section_separators = '', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + + -- These are to remove the defaults + sections = { + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, +} + +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x ot right section +local function ins_right(component) + table.insert(config.sections.lualine_x, component) +end + +-- Begining Of The StatusLine +-- ins_left { +-- function() +-- return '|' +-- end, +-- color = { fg = colors.blue }, -- Sets highlighting of component +-- padding = { left = 0, right = 1 }, -- We don't need space before this +-- } + +-- Icon Of Diffrent Mode: -- normal -- | -- insert -- | -- visual -- +ins_left { + -- mode component + function() + return '' + end, + color = function() + + -- auto change color according to neovims mode + local mode_color = { + n = colors.green, + i = colors.blue, + v = colors.magenta, + [''] = colors.blue, + V = colors.blue, + c = colors.red, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.violet, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { right = 1 }, +} + +-- File Name +ins_left { + 'filename', + file_status = true, -- Displays file status (readonly status, modified status) + path = 2, -- 0: Just the filename + -- 1: Relative path + -- 2: Absolute path + shorting_target = 100, -- Shortens path to leave 40 spaces in the window + -- for other components. (terrible name, any suggestions?) + symbols = { + modified = '  ', -- Text to show when the file is modified. + readonly = ' ', -- Text to show when the file is non-modifiable or readonly. + unnamed = '[No Name]', -- Text to show for unnamed buffers. + } +} + +-- Git Diff +local function diff_source() + local gitsigns = vim.b.gitsigns_status_dict + if gitsigns then + return { + added = gitsigns.added, + modified = gitsigns.changed, + removed = gitsigns.removed + } + end +end + +ins_right { 'diff', source = diff_source } + +-- Git Branch +ins_right { + 'branch', + icon = '', + -- icon = '', + -- color = { fg = colors.green }, + -- padding = { right = 1 }, + -- padding = { left = 1 }, +} + +-- File Type +ins_right { + 'filetype', + icon_only = true, + padding = { right = 2, left = 1 } +} + +-- File Encoding +ins_right { + 'o:encoding', -- option component same as &encoding in viml + fmt = string.upper, -- I'm not sure why it's upper case either ;) + cond = conditions.hide_in_width, + padding = { right = 2 }, + -- color = { fg = colors.green, gui = 'bold' }, + -- Add components to right sections +} + +-- File Format +-- ins_right { +-- 'fileformat', +-- -- fmt = string.upper, +-- -- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh +-- padding = { right = 2 }, +-- symbols = { unix = 'NIX '}, +-- -- color = { fg = colors.green, gui = 'bold' }, +-- } + +-- File Size +ins_right { + -- filesize component + 'filesize', + padding = { right = 2 }, + cond = conditions.buffer_not_empty, +} + +-- Text Progress +ins_right { + 'progress', + padding = { right = 1 }, + -- padding = { left = 1 }, +} + +-- File Location +ins_right { + 'location', + padding = { right = 0 }, +} + +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left { + function() + return '%=' + end, +} + +-- End Of The Status Bar +-- ins_right { +-- function() +-- return '' +-- end, +-- color = { fg = colors.blue }, -- Sets highlighting of component +-- padding = { left = 1, right = 0 }, -- We don't need space before this +-- } + +-- Now don't forget to initialize lualine +lualine.setup(config) diff --git a/configs/nvim/lua/configs/notify.lua b/configs/nvim/lua/configs/notify.lua new file mode 100644 index 0000000..65b2fb3 --- /dev/null +++ b/configs/nvim/lua/configs/notify.lua @@ -0,0 +1,17 @@ +local notify = require("notify") +notify.setup( + { + stages = "fade_in_slide_out", + max_width = 50, + render = "minimal", + background_colour = "#000000", + icons = { + ERROR = "", + WARN = "", + INFO = "", + DEBUG = "", + TRACE = "✎" + } + } +) +vim.notify = notify; diff --git a/configs/nvim/lua/telescope-conf.lua b/configs/nvim/lua/configs/telescope.lua similarity index 91% rename from configs/nvim/lua/telescope-conf.lua rename to configs/nvim/lua/configs/telescope.lua index e3b2f6c..ba49128 100644 --- a/configs/nvim/lua/telescope-conf.lua +++ b/configs/nvim/lua/configs/telescope.lua @@ -49,11 +49,7 @@ local default = { } } -local M = {} -M.setup = function() - telescope.setup(default) - -- telescope.load_extension("themes"); - telescope.load_extension("command_center"); -end - -return M +telescope.setup(default) +-- telescope.load_extension("themes"); +telescope.load_extension("command_center"); +telescope.load_extension("notify"); diff --git a/configs/nvim/lua/configs/tree.lua b/configs/nvim/lua/configs/tree.lua new file mode 100644 index 0000000..5f2fa6d --- /dev/null +++ b/configs/nvim/lua/configs/tree.lua @@ -0,0 +1,40 @@ +local g = vim.g + +-- Configure nvim-tree +g.nvim_tree_highlight_opened_files = 1 +g.nvim_tree_group_empty = 1 +g.nvim_tree_show_icons = { + folder_arrows = 0, + folders = 1, + files = 1, + git = 1 +} +require("nvim-tree").setup { + auto_open = 1, + gitignore = 1, + group_empty = 1, + hijack_cursor = 1, + update_cwd = true, + update_focused_file = { + enable = false + }, + renderer = { + indent_markers = { + enable = 0 + } + }, + diagnostics = { + enable = true, + icons = { + hint = "", + info = "", + warning = "", + error = "" + } + }, + view = { + auto_resize = true, + hide_root_folder = true, + signcolumn = "no" + } +} diff --git a/configs/nvim/lua/treesitter-conf.lua b/configs/nvim/lua/configs/treesitter.lua similarity index 100% rename from configs/nvim/lua/treesitter-conf.lua rename to configs/nvim/lua/configs/treesitter.lua diff --git a/configs/nvim/lua/autocommands.lua b/configs/nvim/lua/core/autocommands.lua similarity index 81% rename from configs/nvim/lua/autocommands.lua rename to configs/nvim/lua/core/autocommands.lua index 6f54cd3..bdee7d3 100644 --- a/configs/nvim/lua/autocommands.lua +++ b/configs/nvim/lua/core/autocommands.lua @@ -7,11 +7,6 @@ cmd [[ augroup END ]] -cmd [[ - au ColorScheme * hi Normal ctermbg=none guibg=none - au ColorScheme myspecialcolors hi Normal ctermbg=red guibg=red -]] - cmd [[ augroup filetypedetect au BufNewFile,BufRead *.frag setl ft=glsl @@ -27,6 +22,9 @@ augroup SaveManualFolds augroup END ]] + + + vim.api.nvim_create_autocmd("BufWritePre",{ callback = function() vim.lsp.buf.formatting_sync(); diff --git a/configs/nvim/lua/keymappings.lua b/configs/nvim/lua/core/keymappings.lua similarity index 95% rename from configs/nvim/lua/keymappings.lua rename to configs/nvim/lua/core/keymappings.lua index 09e318d..3d9c877 100644 --- a/configs/nvim/lua/keymappings.lua +++ b/configs/nvim/lua/core/keymappings.lua @@ -1,6 +1,5 @@ local map = vim.api.nvim_set_keymap local g = vim.g -local cmd = vim.cmd local options = {noremap = true} local remap = {noremap = false} @@ -21,7 +20,7 @@ map("n", "K", "lua vim.lsp.buf.hover()", options) map("n", "e", "lua vim.diagnostic.open_float()", options) map("n", "rn", "lua vim.lsp.buf.rename()", options) map("n", "c", "lua vim.lsp.buf.code_action()", options) -map("n", "", ":Neoformat", options) +-- map("n", "", ":Neoformat", options) map("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", options) map("n", "]d", "lua vim.lsp.diagnostic.goto_next()", options) map("n", "t", ":TroubleToggle", remap) @@ -36,6 +35,9 @@ map("n", "", "l", options) map("n", "", ":bprevious",options); map("n", "", ":bnext",options); +-- Backspace Delete like Browser +map('i', '', 'caw', options) + map("n", "Y", "yy", options) map("n", "k", "{", options) map("n", "j", "}", options) diff --git a/configs/nvim/lua/core/options.lua b/configs/nvim/lua/core/options.lua new file mode 100644 index 0000000..37ca228 --- /dev/null +++ b/configs/nvim/lua/core/options.lua @@ -0,0 +1,63 @@ + +------------- +-- General -- +------------- +local set = vim.opt +set.swapfile = false -- Don't use swapfile +set.updatetime = 0 -- Faster completion +set.encoding="utf-8" -- The encoding displayed +set.fileencoding="utf-8" -- The encoding written to file +set.smartindent = true -- Makes indenting smart +set.iskeyword:append("-") -- treat dash separated words as a word text object" +set.clipboard = "unnamedplus" -- Copy paste between vim and everything else +set.smarttab = true -- Makes tabbing smarter will realize you have 2 vs 4 +set.expandtab = true -- Converts tabs to spaces +set.autoindent = true -- Good auto indent +set.autochdir = true -- Your working directory will always be the same as your working directory +set.incsearch = true -- sets incremental search +set.shell = "/bin/zsh" -- Set your shell to bash or zsh +set.shortmess:append "sI" -- Disable nvim intro +vim.cmd [[set nobackup]] -- creates a backup file +vim.cmd [[set nowritebackup]] -- creates a backup file i guess +vim.cmd [[set formatoptions-=cro]] -- Stop newline continution of comments +vim.cmd [[set complete+=kspell]] -- auto complete with spellcheck +vim.cmd [[set completeopt=menuone,longest]] -- auto complete menu (It's pretty great) +vim.cmd [[set nocompatible]] -- Disable compatibility to old-time vi +set.mouse = 'a' -- Enable mouse support + +--------------- +-- Neovim UI -- +--------------- +set.pumheight = 15 -- Makes popup menu smaller +set.ruler = true -- Show the cursor position all the time +set.splitbelow = true -- Horizontal splits will automatically be below +set.splitright = true -- Vertical splits will automatically be to the right +set.conceallevel = 0 -- So that I can see `` in markdown files +set.tabstop = 2 -- Insert 2 spaces for a tab +set.number = true -- Line numbers +set.background = "dark" -- tell vim what the background color looks like +set.virtualedit = "onemore" -- With This option you can move the cursor one character over the end +set.ignorecase = true -- ignores case when searching +set.smartcase = true -- turns on case sensitive search when letters are capitalized +set.termguicolors = true -- set term gui colors (most terminals support this) +set.laststatus=2 -- Always display the status line +set.title = true -- Show current txt that you editing +set.relativenumber = false -- Vim’s absolute, relative and hybrid line numbers +set.cursorline = false -- Enable highlighting of the current line +set.shiftwidth = 2 -- Change the number of space characters inserted for indentation +set.showtabline = 1 -- Always show tabs +set.cmdheight = 1 -- More space for displaying messages +vim.cmd [[set nowrap]] -- Display long lines as just one line +vim.cmd [[set noshowmode]] -- We don't need to see things like -- INSERT -- anymore +vim.cmd [[syntax enable]] -- Enables syntax highlighing +vim.cmd [[set t_Co=256]] -- Support 256 colors +-- vim.cmd "set whichwrap+=<,>,[,],h,l" -- Breaks Space-Time Continuum + +----------------- +-- Memory, CPU -- +----------------- +set.hidden = true -- Required to keep multiple buffers open multiple buffers +set.timeoutlen = 500 -- By default timeoutlen is 1000 ms +set.lazyredraw = true -- Disable lazyredraw +set.synmaxcol = 240 -- Max column for syntax highlight +set.updatetime = 700 -- ms to wait for trigger an event diff --git a/configs/nvim/lua/plugins.lua b/configs/nvim/lua/core/plugins.lua similarity index 77% rename from configs/nvim/lua/plugins.lua rename to configs/nvim/lua/core/plugins.lua index 3fe9341..64b3286 100644 --- a/configs/nvim/lua/plugins.lua +++ b/configs/nvim/lua/core/plugins.lua @@ -3,15 +3,18 @@ return require("packer").startup( -- Let packer manage itself use "wbthomason/packer.nvim" + use 'lewis6991/impatient.nvim' + -- General Helper Functions use "nvim-lua/plenary.nvim" -- Filetype Detection - use "nathom/filetype.nvim" + -- use "nathom/filetype.nvim" -- Theming Section -- use 'folke/tokyonight.nvim' use "EdenEast/nightfox.nvim" + use "nvim-lualine/lualine.nvim" -- use "xiyaowong/nvim-transparent" -- Layout Plugins @@ -19,22 +22,22 @@ return require("packer").startup( use "kyazdani42/nvim-tree.lua" use "nvim-lua/popup.nvim" use "mhinz/vim-startify" - use "tpope/vim-fugitive" + -- use "tpope/vim-fugitive" use "tpope/vim-commentary" - use "tpope/vim-surround" - use "lambdalisue/suda.vim" + -- use "tpope/vim-surround" + -- use "lambdalisue/suda.vim" use "windwp/nvim-autopairs" -- Code Navigation - use "alexghergh/nvim-tmux-navigation" - use "dense-analysis/ale" - use "nathanmsmith/nvim-ale-diagnostic" + -- use "alexghergh/nvim-tmux-navigation" + -- use "dense-analysis/ale" + -- use "nathanmsmith/nvim-ale-diagnostic" use "junegunn/fzf" use "nvim-telescope/telescope.nvim" use "gfeiyou/command-center.nvim" -- Postman like features - use "NTBBloodbath/rest.nvim" + -- use "NTBBloodbath/rest.nvim" -- Obsidian / Roam like features -- use "lervag/wiki.vim" @@ -44,7 +47,7 @@ return require("packer").startup( -- Lsp Errors use "folke/lsp-colors.nvim" use "kosayoda/nvim-lightbulb" - use "onsails/lspkind-nvim" + -- use "onsails/lspkind-nvim" use { "folke/trouble.nvim", requires = "kyazdani42/nvim-web-devicons", @@ -54,7 +57,7 @@ return require("packer").startup( } -- Syntax / Autocomplete - use "terminalnode/sway-vim-syntax" --sway config syntax + -- use "terminalnode/sway-vim-syntax" --sway config syntax use "neovim/nvim-lspconfig" use "hrsh7th/nvim-cmp" use "hrsh7th/cmp-nvim-lsp" @@ -68,8 +71,8 @@ return require("packer").startup( use "saadparwaiz1/cmp_luasnip" use "williamboman/nvim-lsp-installer" use "nvim-lua/lsp-status.nvim" - use "jose-elias-alvarez/nvim-lsp-ts-utils" - use "neoclide/jsonc.vim" + -- use "jose-elias-alvarez/nvim-lsp-ts-utils" + -- use "neoclide/jsonc.vim" use "brymer-meneses/grammar-guard.nvim" use { "nvim-treesitter/nvim-treesitter", @@ -84,6 +87,8 @@ return require("packer").startup( -- General Popup Window use "akinsho/nvim-toggleterm.lua" + use "rktjmp/fwatch.nvim" + -- Database Feature use "tpope/vim-dadbod" use "kristijanhusak/vim-dadbod-ui" diff --git a/configs/nvim/lua/formatter-conf.lua b/configs/nvim/lua/formatter-conf.lua deleted file mode 100644 index 3c5f2a2..0000000 --- a/configs/nvim/lua/formatter-conf.lua +++ /dev/null @@ -1,57 +0,0 @@ -local cmd = vim.cmd -local g = vim.g - -local function tablelength(T) - local count = 0 - for _ in pairs(T) do - count = count + 1 - end - return count -end - -local function select_client(method) - local all_clients = vim.tbl_values(vim.lsp.buf_get_clients()) - - local supported_client - local found_client = false - for _, client in ipairs(all_clients) do - local supports = client.supports_method(method) - if supports then - found_client = true - supported_client = client - end - end - - if not found_client then - return nil - end - - return supported_client -end - -g.neoformat_enabled_glsl = {} - -function FormattingSync() - vim.cmd("Neoformat") - -- local client = select_client("textDocument/formatting") - -- if client == nil then - -- vim.notify("No LSP Client with formatting connected") - -- end - -- vim.notify("Formatting with LSP") - -- local params = util.make_formatting_params({}) - -- local result, err = client.request_sync("textDocument/formatting", params, 500, vim.api.nvim_get_current_buf()) - -- if result and result.result then - -- util.apply_text_edits(result.result) - -- elseif err then - -- vim.notify("vim.lsp.buf.formatting_sync: " .. err, vim.log.levels.WARN) - -- end -end - -vim.cmd [[command! Format lua FormattingSync()]] - -cmd [[ - augroup auto_format - au! - au BufWritePre * lua FormattingSync() - augroup END -]] diff --git a/configs/nvim/lua/lazy-git.lua b/configs/nvim/lua/lazy-git.lua deleted file mode 100644 index 406aea4..0000000 --- a/configs/nvim/lua/lazy-git.lua +++ /dev/null @@ -1,68 +0,0 @@ -local Terminal = require("toggleterm.terminal").Terminal -local u = require("utils") -local lazygit = - Terminal:new( - { - cmd = "lazygit", - dir = "git_dir", - direction = "float", - float_opts = { - winblend = 0, - border = "shadow" - }, - on_open = function(term) - vim.cmd("startinsert!") - vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "close", {noremap = true, silent = true}) - end, - on_close = function(term) - Terminal:close() - end - } -) - -function _lazygit_toggle() - lazygit:toggle() -end - -vim.api.nvim_set_keymap("n", "", "lua _lazygit_toggle()", {noremap = true, silent = true}) - -local pnpm = - Terminal:new( - { - cmd = "pnpm dev", - dir = "git_dir", - size = 5, - direction = "vertical", - on_close = function(term) - Terminal:close() - end - } -) - -function _pnpm_toggle() - pnpm:toggle() -end - -vim.api.nvim_set_keymap("n", "d", "lua _pnpm_toggle()", {noremap = true, silent = true}) - -local nvimConfig = - Terminal:new( - { - cmd = "cd $HOME/.dotfiles && nvim configs/init.lua && cd -", - direction = "float", - on_close = function(term) - Terminal:close() - u.ReloadConfig() - end - } -) - -function _nvimConfig_toggle() - nvimConfig:toggle() -end - -vim.api.nvim_set_keymap("n", "", "lua _nvimConfig_toggle()", {noremap = true, silent = true}) - -require("toggleterm").setup { - shade_terminals = true -} diff --git a/configs/nvim/lua/lorem.lua b/configs/nvim/lua/lorem.lua deleted file mode 100644 index 43ee8ae..0000000 --- a/configs/nvim/lua/lorem.lua +++ /dev/null @@ -1,85 +0,0 @@ -local lorem = {} - -local WORDS_IN_SENTENCE = {min = 5, max = 15} -local SENTENCES_IN_PARAGRAPH = {min = 2, max = 7 } -local PARAGRAPHS_IN_TEXT = {min = 2, max = 7 } - -local function random_int(min, max) - return math.random(min, max) -end - -local BASE_PHRASE = [[ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Suspendisse rutrum accumsan elit vel auctor. -Praesent sit amet aliquam turpis. -Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae. -Maecenas non erat ut elit sodales commodo. -Nam gravida ipsum quis nulla tempus, quis pulvinar augue tristique. -Nulla massa odio, imperdiet non ultricies tincidunt, viverra sed lorem. -Nulla elementum sapien ut commodo aliquet. -Pellentesque iaculis turpis tellus, eget laoreet augue condimentum vel. -Quisque at risus rhoncus, facilisis tellus nec, tristique dolor. -Maecenas cursus magna eget imperdiet laoreet. -]] - -local function get_words(phrase) - local list = {} - for word in phrase:gmatch('%a+') do - table.insert(list, word:lower()) - end - return list -end - -lorem.__index = lorem -lorem._dict = get_words(BASE_PHRASE) - -function lorem:generator(phrase) - if type(phrase) ~= 'string' then - error('First argument of lorem.generator should be a string', 2) - end - local g = {_dict = {}} - for word in phrase:gmatch('%a+') do - table.insert(g._dict, word:lower()) - end - if #(g._dict) == 0 then - error('String argument of lorem.generator should contain words', 2) - end - setmetatable(g, self) - return g -end - -function lorem:word() - return self._dict[random_int(1, #(self._dict))] -end - -function lorem:sentence() - local n = random_int(WORDS_IN_SENTENCE.min, WORDS_IN_SENTENCE.max) - local words = {} - for i = 1, n do - words[i] = self:word() - end - local s = table.concat(words, ' ') - s = s .. "." - s = s:sub(1, 1):upper() .. s:sub(2) - return s -end - -function lorem:paragraph() - local n = random_int(SENTENCES_IN_PARAGRAPH.min, SENTENCES_IN_PARAGRAPH.max) - local sentences = {} - for i = 1, n do - sentences[i] = self:sentence() - end - return table.concat(sentences, ' ') -end - -function lorem:text() - local n = random_int(PARAGRAPHS_IN_TEXT.min, PARAGRAPHS_IN_TEXT.max) - local paragraphs = {} - for i = 1, n do - paragraphs[i] = self:paragraph() - end - return table.concat(paragraphs, '\n') -end - -return lorem diff --git a/configs/nvim/lua/utils.lua b/configs/nvim/lua/utils/init.lua similarity index 100% rename from configs/nvim/lua/utils.lua rename to configs/nvim/lua/utils/init.lua diff --git a/configs/nvim/lua/install-packer.lua b/configs/nvim/lua/utils/install-packer.lua similarity index 100% rename from configs/nvim/lua/install-packer.lua rename to configs/nvim/lua/utils/install-packer.lua diff --git a/configs/nvim/lua/utils/theme-reloader.lua b/configs/nvim/lua/utils/theme-reloader.lua new file mode 100644 index 0000000..4a7af6a --- /dev/null +++ b/configs/nvim/lua/utils/theme-reloader.lua @@ -0,0 +1,35 @@ +-- see if the file exists +local function file_exists(file) + local f = io.open(file, "rb") + if f then f:close() end + return f ~= nil +end + +-- get all lines from a file, returns an empty +-- list/table if the file does not exist +local function line_from(file) + if not file_exists(file) then return {} end + local f = io.open(file) -- 'r' is unnecessary because it's a default value. + local line = f:read() -- '*l' is unnecessary because it's a default value. + f:close() + return line; +end + +local filePath = os.getenv("HOME").."/.cache/dark-mode"; +local function updateTheme() + local line = line_from(filePath); + if line then + local dark = string.find(line, "dark"); + if dark then + vim.cmd("colorscheme nightfox") + else + vim.cmd("colorscheme dayfox") + end + end +end + + + +updateTheme() +local w = vim.loop.new_fs_event() +w:start(filePath, {}, vim.schedule_wrap(updateTheme)) diff --git a/configs/nvim/spell/dictionary.txt b/configs/nvim/spell/dictionary.txt deleted file mode 100644 index e69de29..0000000 diff --git a/configs/nvim/spell/disable.txt b/configs/nvim/spell/disable.txt deleted file mode 100644 index e69de29..0000000 diff --git a/configs/nvim/spell/false.txt b/configs/nvim/spell/false.txt deleted file mode 100644 index e69de29..0000000 diff --git a/configs/sway/config b/configs/sway/config index 2438e04..74a50d4 100644 --- a/configs/sway/config +++ b/configs/sway/config @@ -86,9 +86,12 @@ output * bg `find $wallpapers_path -type f | shuf -n 1` fill # exec swayidle -w \ timeout 300 '~/.config/sway/lock_screen.sh' \ - timeout 600 'swaymsg "output \* dpms off"' \ + timeout 600 'swaymsg "output * dpms off"' \ timeout 660 'systemctl suspend' \ - resume 'swaymsg "output \* dpms on"' + resume 'swaymsg "output * dpms on"' \ + before-sleep '~/.config/sway/lock_screen.sh' + + # # This will lock your screen after 300 seconds of inactivity, then turn off # your displays after another 300 seconds, and turn your screens back on when diff --git a/configs/waybar/config b/configs/waybar/config index 0178a72..f072893 100644 --- a/configs/waybar/config +++ b/configs/waybar/config @@ -7,7 +7,7 @@ "hidden_state": "show", "modules-left": ["custom/clock", "custom/waybar-mpris"], "modules-center": ["sway/workspaces", "sway/mode"], - "modules-right": ["pulseaudio", "network", "custom/cpu_speed", "memory", "battery"], + "modules-right": ["custom/theme","pulseaudio", "network", "battery"], "sway/workspaces": { "disable-scroll": true, "all-outputs": false, @@ -27,6 +27,11 @@ "unlocked": "" } }, + "custom/theme":{ + "exec": "~/.config/waybar/theme.sh", + "on-click": "~/.config/waybar/theme.sh --toggle", + "restart-interval": 1, + }, "custom/spotify": { "exec": "/usr/bin/python3 /home/jim/.config/waybar/mediaplayer.py --player spotify", "format": "{} ", diff --git a/configs/waybar/dark-mode.sh b/configs/waybar/dark-mode.sh new file mode 100755 index 0000000..5f92654 --- /dev/null +++ b/configs/waybar/dark-mode.sh @@ -0,0 +1,215 @@ +#!/usr/bin/env bash +# https://gitlab.com/wef/dotfiles/-/blob/master/bin/dark-mode + +TIME_STAMP="20220227.144601" + +# dark-mode [light|dark|refresh] +# sets dark mode on or off + +# Copyright (C) 2021 Bob Hepple < bob dot hepple at gmail dot com> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# I like to have this called by my +# ~/.config/i3blocks/i3blocks/weather script which runs every 10m and +# knows about sunset and sunrise times. + + +PROG=$( basename $0 ) + +KITTY_ONLY="" +[[ "$1" == "--kitty-only" ]] && { + KITTY_ONLY="true" + shift +} + +CMD="$1" + +DARK_MODE_STATUS_FILE=~/.cache/dark-mode +CURRENT_DARK_MODE=$( cat $DARK_MODE_STATUS_FILE ) + +case $CMD in + -h|--help) + echo "Usage: $PROG <[on|start|dark]|refresh|[off|stop|light]>" + echo + echo "toggles or refreshes dark-mode for emacs, kitty, gtk and qt" + exit 0 + ;; + on|start|dark) + CMD="dark" + ;; + re*) + CMD="refresh" + ;; + *) # off|stop|light + CMD="light" + ;; +esac + +if [[ "$CMD" == "refresh" ]]; then + CMD="$CURRENT_DARK_MODE" +else + [[ "$CURRENT_DARK_MODE" == "$CMD" ]] && exit 0 +fi + +# for emacs, these themes can be chosen from the standard ones (in +# custom-theme-load-path) or they can be installed in +# custom-theme-directory (usually ~/.emacs.d) +# They must have a filename of $THEMENAME-theme.el + +case "$CMD" in + light) + # light mode + # new_emacs_theme="dichromacy-bh" + # new_emacs_theme="modus-operandi" + #new_emacs_theme="Adwaita" # text background is #ededed !!! + #new_emacs_theme="solarized-light" + # new_emacs_modeline_theme="smart-mode-line-light" + + # new_gtk_theme='WhiteSur' + new_gtk_theme='Pop' + #new_gtk_theme='Solarized-Light' + #new_gtk_theme='Crux' + + new_icon_theme='WhiteSur' + new_cursor_theme='WhiteSur-cursors' + + # new_kitty_theme="$HOME/.config/kitty/Adwaita.conf" + + # new_nvim_theme="dayfox" + + new_kitty_theme="Atom One Light" + # new_fg='black' + # new_fg='00/00/00' + # new_bg='white' + # new_bg='ff/ff/ff' + BRIGHTNESS=100 + TERM_BACKGROUND=light + ;; + *) + # dark mode + # new_emacs_theme="dichromacy-dark-bh" + # new_emacs_theme="modus-vivendi" + # new_emacs_theme="manoj-dark-bh" + # new_emacs_theme="solarized-dark" + # new_emacs_modeline_theme="smart-mode-line-dark" + + new_gtk_theme='Pop-dark' + #new_gtk_theme='Solarized-Dark' + #new_gtk_theme='Crux-dark' + + # 'Breeze' icons are too dark for Adwaita-dark: + new_icon_theme='WhiteSur-dark' + new_cursor_theme='WhiteSur-cursors' + + #new_kitty_theme="$HOME/.config/kitty/Adwaita-dark.conf" + new_kitty_theme="Argonaut" + + # new_nvim_theme="nightfox" + # new_fg='white' + # new_fg='ff/ff/ff' + # new_bg='#232729' + # new_bg='black' + # new_bg='00/00/00' + BRIGHTNESS=20 + TERM_BACKGROUND=dark + ;; +esac + +( + [[ -z "$KITTY_ONLY" ]] && { + # brightnessctl set $BRIGHTNESS + + ## look for an emacs running as this user: + #emacs_pid=$(pgrep -u $USER emacs | head -n 1) + #[[ "$emacs_pid" ]] && emacsclient --eval " + # (progn + # (mapcar 'disable-theme custom-enabled-themes) + # (load-theme '$new_emacs_theme t))" + ##(load-theme '$new_emacs_modeline_theme))" + + f=~/.gtkrc-2.0 + [[ -w $f ]] && { + sed -i "s/^gtk-theme-name=.*/gtk-theme-name=\"$new_gtk_theme\"/" $f + sed -i "s/^gtk-icon-theme-name=.*/gtk-icon-theme-name=\"$new_icon_theme\"/" $f + sed -i "s/^gtk-cursor-theme-name=.*/gtk-cursor-theme-name=\"$new_cursor_theme\"/" $f + } + + # gtkreload # gtk2 only! + + # if ! command -v nvr &> /dev/null + # then + # echo "nvr not installed" + # elif [ "$(pgrep nvim)" != "" ]; then + # echo "new theme $new_nvim_theme" + # nvr --nostart --remote-send ":colorscheme $new_nvim_theme" + # exit + # fi + + + f=~/.config/gtk-3.0/settings.ini + [[ -w $f ]] && { + sed -i "s/^gtk-theme-name=.*/gtk-theme-name=$new_gtk_theme/" $f + sed -i "s/^gtk-icon-theme-name=.*/gtk-icon-theme-name=$new_icon_theme/" $f + sed -i "s/^gtk-cursor-theme-name=.*/gtk-cursor-theme-name=$new_cursor_theme/" $f + } + + # /usr/libexec/gsd-xsettings notifies gtk3 clients - start it in sway + + # these two appear to be completely equivalent: + dconf write /org/gnome/desktop/interface/gtk-theme "'$new_gtk_theme'" + #gsettings set org.gnome.desktop.interface gtk-theme $new_gtk_theme + + dconf write /org/gnome/desktop/interface/icon-theme "'$new_icon_theme'" + dconf write /org/gnome/desktop/interface/cursor-theme "'$new_cursor_theme'" + + f=~/.config/qt5ct/qt5ct.conf + [[ -w $f ]] && { + sed -i "s/^style=.*/style=$new_gtk_theme/" $f + sed -i "s/^icon-theme=.*/style=$new_icon_theme/" $f + # cursor? + } + } + + # requires this in ~/.config/kitty/kitty.conf: + # allow_remote_control yes + # listen_on unix:/tmp/kitty-socket + kitty +kitten themes --reload-in=all $new_kitty_theme + # for SOCK in /tmp/kitty-socket-*; do + # if [[ -r $new_kitty_theme ]]; then + # else + # # this should work for all terms: + # for TERM in /dev/pts/[0-9]*; do + # if [[ -O $TERM ]]; then + # { + # printf "\\033]10;rgb:$new_fg\\033\\\\" + # printf "\\033]11;rgb:$new_bg\\033\\\\" + # } >$TERM + # fi + # done + # # kitty @ --to=unix:$SOCK set_colors --all foreground=$new_fg background=$new_bg + # fi + # done + + # for 'low-power' script: + echo $TERM_BACKGROUND > $DARK_MODE_STATUS_FILE +) >/dev/null + +# echo "TERM_BACKGROUND=$TERM_BACKGROUND; setup_prompt" + +# Local Variables: +# mode: shell-script +# time-stamp-pattern: "4/TIME_STAMP=\"%:y%02m%02d.%02H%02M%02S\"" +# eval: (add-hook 'before-save-hook 'time-stamp) +# End: diff --git a/configs/waybar/style.css b/configs/waybar/style.css index 0f64a24..2ff82fa 100644 --- a/configs/waybar/style.css +++ b/configs/waybar/style.css @@ -13,8 +13,8 @@ window#waybar { window > box { margin: 6px; margin-bottom: 0px; - background: #2b303b; - background: black; + background: #2b303b; + background: @theme_bg_color; padding: 5px 8px; border-radius: 4px; /*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/ @@ -23,7 +23,7 @@ window > box { #workspaces button { padding: 0px 7px; padding-left: 4px; - color: white; + color: @theme_fg_color; background: transparent; border-radius: 2px; } @@ -33,8 +33,8 @@ window > box { } #workspaces button.focused { - background-color: white; - color: #2b303b; + background-color: @theme_fg_color; + color: @theme_bg_color; } #battery, #network, #pulseaudio, #clock, #custom-power, #custom-qbitstats { diff --git a/configs/waybar/theme.sh b/configs/waybar/theme.sh new file mode 100755 index 0000000..6b4283e --- /dev/null +++ b/configs/waybar/theme.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +DARK_MODE_STATUS_FILE=~/.cache/dark-mode +CURRENT_DARK_MODE=$( cat $DARK_MODE_STATUS_FILE ) + +LIGHT="☀️" +DARK="🌙" + +echo "\$1 $1" +echo "MODE: $CURRENT_DARK_MODE" + +if [ "$1" == "--toggle" ]; then + if [ $CURRENT_DARK_MODE == "light" ]; then + ~/.config/waybar/dark-mode.sh dark + else + ~/.config/waybar/dark-mode.sh light + fi +fi + +if [ $CURRENT_DARK_MODE != "light" ]; then + echo $DARK +else + echo $LIGHT +fi