commit db588a6c56eed333059dcf5309ea672c26135231 Author: juan Date: Mon Aug 16 22:21:31 2021 +0800 Cleaned History diff --git a/.config/fcitx5/conf/classicui.conf b/.config/fcitx5/conf/classicui.conf new file mode 100644 index 0000000..f97114a --- /dev/null +++ b/.config/fcitx5/conf/classicui.conf @@ -0,0 +1,15 @@ +# Vertical Candidate List +Vertical Candidate List=False +# Use Per Screen DPI +PerScreenDPI=True +# Use mouse wheel to go to prev or next page +WheelForPaging=True +# Font +Font="Sans 12" +# Menu Font +MenuFont="Sans 12" +# Use input method langauge to display text +UseInputMethodLangaugeToDisplayText=True +# Theme +Theme=Nord-Dark + diff --git a/.config/fcitx5/conf/notifications.conf b/.config/fcitx5/conf/notifications.conf new file mode 100644 index 0000000..6e7d1b9 --- /dev/null +++ b/.config/fcitx5/conf/notifications.conf @@ -0,0 +1,3 @@ +# Hidden Notifications +HiddenNotifications= + diff --git a/.config/fcitx5/conf/rime.conf b/.config/fcitx5/conf/rime.conf new file mode 100644 index 0000000..1f93cf0 --- /dev/null +++ b/.config/fcitx5/conf/rime.conf @@ -0,0 +1,5 @@ +# Show preedit within application +PreeditInApplication=True +# Commit current text when deactivating +Commit when deactivate=True + diff --git a/.config/fcitx5/conf/spell.conf b/.config/fcitx5/conf/spell.conf new file mode 100644 index 0000000..25197e3 --- /dev/null +++ b/.config/fcitx5/conf/spell.conf @@ -0,0 +1,5 @@ +[ProviderOrder] +0=Presage +1=Custom +2=Enchant + diff --git a/.config/fcitx5/config b/.config/fcitx5/config new file mode 100644 index 0000000..7c71f58 --- /dev/null +++ b/.config/fcitx5/config @@ -0,0 +1,62 @@ +[Hotkey] +# Enumerate when press trigger key repeatedly +EnumerateWithTriggerKeys=True +# Temporally switch between first and current Input Method +AltTriggerKeys= +# Enumerate Input Method Forward +EnumerateForwardKeys= +# Enumerate Input Method Backward +EnumerateBackwardKeys= +# Skip first input method while enumerating +EnumerateSkipFirst=False +# Enumerate Input Method Group Forward +EnumerateGroupForwardKeys= +# Enumerate Input Method Group Backward +EnumerateGroupBackwardKeys= +# Activate Input Method +ActivateKeys= +# Deactivate Input Method +DeactivateKeys= + +[Hotkey/TriggerKeys] +#0=Control+space + +[Hotkey/PrevPage] +0=Up + +[Hotkey/NextPage] +0=Down + +[Hotkey/PrevCandidate] +0=Shift+Tab + +[Hotkey/NextCandidate] +0=Tab + +[Hotkey/TogglePreedit] +0=Control+Alt+P + +[Behavior] +# Active By Default +ActiveByDefault=False +# Share Input State +ShareInputState=All +# Show preedit in application +PreeditEnabledByDefault=True +# Show Input Method Information when switch input method +ShowInputMethodInformation=True +# Show Input Method Information when changing focus +showInputMethodInformationWhenFocusIn=True +# Show compact input method information +CompactInputMethodInformation=True +# Show first input method information +ShowFirstInputMethodInformation=True +# Default page size +DefaultPageSize=5 +# Force Enabled Addons +EnabledAddons= +# Force Disabled Addons +DisabledAddons= +# Preload input method to be used by default +PreloadInputMethod=True + diff --git a/.config/kitty/iceberg_dark.conf b/.config/kitty/iceberg_dark.conf new file mode 100644 index 0000000..f55715e --- /dev/null +++ b/.config/kitty/iceberg_dark.conf @@ -0,0 +1,39 @@ +background #161821 +foreground #c6c8d1 + +selection_background #1e2132 +selection_foreground #c6c8d1 + +cursor #d2d4de + +# black +color0 #161821 +color8 #6b7089 + +# red +color1 #e27878 +color9 #e98989 + +# green +color2 #b4be82 +color10 #c0ca8e + +# yellow/orange +color3 #e2a478 +color11 #e9b189 + +# blue +color4 #84a0c6 +color12 #91acd1 + +# magenta/purple +color5 #a093c7 +color13 #ada0d3 + +# cyan +color6 #89b8c2 +color14 #95c4ce + +# white +color7 #c6c8d1 +color15 #d2d4de diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..6fd72a5 --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,1313 @@ +# 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 IBM Plex Mono Medium + bold_font IBM Plex Mono Bold + italic_font IBM Plex Mono Medium Italic + bold_italic_font IBM Plex Mono Bold Italic + +#: 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 14.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+23FB-U+23FE,U+2B58,U+E200-U+E2A9,U+E0A0-U+E0A3,U+E0B0-U+E0BF,U+E0C0-U+E0C8,U+E0CC-U+E0CF,U+E0D0-U+E0D2,U+E0D4,U+E700-U+E7C5,U+F000-U+F2E0,U+2665,U+26A1,U+F400-U+F4A8,U+F67C,U+E000-U+E00A,U+F300-U+F313,U+E5FA-U+E62B Symbols-2048-em Nerd Font Complete + +#: 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 require +#: 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 0 + +#: 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 0.8 + +#: 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 yes + +#: 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.5 + +#: 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 no + +#: 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 none + +#: 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 0.0 + +#: 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 ask + +#: 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+equal 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 + +#: }}} + +# }}} +include ./iceberg_dark.conf diff --git a/.config/kitty/nord.conf b/.config/kitty/nord.conf new file mode 100644 index 0000000..54f3a96 --- /dev/null +++ b/.config/kitty/nord.conf @@ -0,0 +1,43 @@ +# Nord Colorscheme for Kitty +# Based on: +# - https://gist.github.com/marcusramberg/64010234c95a93d953e8c79fdaf94192 +# - https://github.com/arcticicestudio/nord-hyper + +foreground #D8DEE9 +background #2E3440 +selection_foreground #000000 +selection_background #FFFACD +url_color #0087BD +cursor #81A1C1 + +# black +color0 #3B4252 +color8 #4C566A + +# red +color1 #BF616A +color9 #BF616A + +# green +color2 #A3BE8C +color10 #A3BE8C + +# yellow +color3 #EBCB8B +color11 #EBCB8B + +# blue +color4 #81A1C1 +color12 #81A1C1 + +# magenta +color5 #B48EAD +color13 #B48EAD + +# cyan +color6 #88C0D0 +color14 #8FBCBB + +# white +color7 #E5E9F0 +color15 #ECEFF4 diff --git a/.config/lf/lfrc b/.config/lf/lfrc new file mode 100644 index 0000000..b63ea89 --- /dev/null +++ b/.config/lf/lfrc @@ -0,0 +1,59 @@ +set shell sh +set ifs "\n" +set hidden true +set drawbox true +set icons true +set ignorecase true +set info size + +map D push %rm-rf$fs +map a push %mkdir +map x $$f + +# bulk-rename +cmd bulk-rename ${{ + old="$(mktemp)" + new="$(mktemp)" + [ -n "$fs" ] && fs="$(ls)" + printf '%s\n' "$fs" >"$old" + printf '%s\n' "$fs" >"$new" + $EDITOR "$new" + [ "$(wc -l "$new")" -ne "$(wc -l "$old")" ] && exit + paste "$old" "$new" | while IFS= read -r names; do + src="$(printf '%s' "$names" | cut -f1)" + dst="$(printf '%s' "$names" | cut -f2)" + if [ "$src" = "$dst" ] || [ -e "$dst" ]; then + continue + fi + mv -- "$src" "$dst" + done + rm -- "$old" "$new" + lf -remote "send $id unselect" +}} + +# new folder +cmd newfold ${{ + set -f + read newd + mkdir -- "$newd" + mv -- $fx "$newd" +}} + +#save file name selected +cmd savesel ${{ + echo $fs > args-selected-`pwgen -1`.txt +}} + +cmd extract ${{ + set -f + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; + *.tar.gz|*.tgz) tar xzvf $f;; + *.tar.xz|*.txz) tar xJvf $f;; + *.zip) unzip $f;; + *.rar) unrar x $f;; + *.7z) 7z x $f;; + esac +}} + +#vim:set noet sts=0 sw=2 ts=8: diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf new file mode 100644 index 0000000..427fca6 --- /dev/null +++ b/.config/mpd/mpd.conf @@ -0,0 +1,87 @@ +# general settings # +#### + +music_directory "~/Music" +playlist_directory "~/.config/mpd/playlists" +db_file "~/.config/mpd/database" +log_file "~/.config/mpd/log" +pid_file "~/.config/mpd/pid" +state_file "~/.config/mpd/state" +sticker_file "~/.config/mpd/sticker.sql" + +############################################################################### +user "juan" +#group "audio" +# For network +bind_to_address "127.0.0.1" +# +# And for Unix Socket +#bind_to_address "~/.config/mpd/socket" +# +# This setting is the TCP port that is desired for the daemon to get assigned +# to. +# +port "6600" +#log_level "notice" +restore_paused "yes" +auto_update "yes" +#auto_update_depth "3" + +# Zeroconf / Avahi Service Discovery ########################################## +# +# If this setting is set to "yes", service information will be published with +# Zeroconf / Avahi. +# +#zeroconf_enabled "yes" +# +# The argument to this setting will be the Zeroconf / Avahi unique name for +# this MPD server on the network. %h will be replaced with the hostname. +# +#zeroconf_name "Music Player @ %h" +# +############################################################################### + + +# Permissions ################################################################# +# +# If this setting is set, MPD will require password authorization. The password +# setting can be specified multiple times for different password profiles. +# +#password "password@read,add,control,admin" +# +# This setting specifies the permissions a user has who has not yet logged in. +# +#default_permissions "read,add,control,admin" +# +############################################################################### +# +input { + plugin "curl" +} + +audio_output { + type "alsa" + name "alsa" + mixer_type "software" +} +# Visualization +audio_output { + type "fifo" + name "my_fifo" + path "/tmp/mpd.fifo" + format "44100:16:2" +} +############################################################################### +replaygain "auto" +replaygain_limit "yes" +volume_normalization "yes" +############################################################################### + +# Character Encoding ########################################################## +# +# If file or directory names do not display correctly for your locale then you +# may need to modify this setting. +# +filesystem_charset "UTF-8" +# +############################################################################### diff --git a/.config/ncmpcpp/config b/.config/ncmpcpp/config new file mode 100644 index 0000000..07f92ca --- /dev/null +++ b/.config/ncmpcpp/config @@ -0,0 +1,524 @@ +# vi:syntax=config +ncmpcpp_directory = ~/.config/ncmpcpp +lyrics_directory = ~/.lyrics +mpd_host = 127.0.0.1 +mpd_port = 6600 +mpd_connection_timeout = 5 +mpd_music_dir = ~/Music +mpd_crossfade_time = 1 +visualizer_data_source = /tmp/mpd.fifo +visualizer_output_name = Visualizer feed +visualizer_in_stereo = yes +# +## +## Note: set below to >=10 only if you have synchronization issues with +## visualization and audio. +## +# +#visualizer_sync_interval = 0 +# +## +## Note: To enable spectrum frequency visualization you need to compile ncmpcpp +## with fftw3 support. +## +# +## Available values: spectrum, wave, wave_filled, ellipse. +## +visualizer_type = spectrum +# +visualizer_fps = 60 +# +visualizer_autoscale = no +# +visualizer_look = ●▮ +# +visualizer_color = blue +# +## Alternative subset of 256 colors for terminals that support it. +## +#visualizer_color = 47, 83, 119, 155, 191, 227, 221, 215, 209, 203, 197, 161 +# +## +## Note: The next few visualization options apply to the spectrum visualizer. +## +# +## Use unicode block characters for a smoother, more continuous look. +## This will override the visualizer_look option. With transparent terminals +## and visualizer_in_stereo set, artifacts may be visible on the bottom half of +## the visualization. +# +visualizer_spectrum_smooth_look = yes +# +## A value between 1 and 5 inclusive. Specifying a larger value makes the +## visualizer look at a larger slice of time, which results in less jumpy +## visualizer output. +# +visualizer_spectrum_dft_size = 2 +# +visualizer_spectrum_gain = 7 +# +## Left-most frequency of visualizer in Hz, must be less than HZ MAX +# +visualizer_spectrum_hz_min = 20 +# +## Right-most frequency of visualizer in Hz, must be greater than HZ MIN +# +visualizer_spectrum_hz_max = 20000 +# +##### system encoding ##### +## +## ncmpcpp should detect your charset encoding but if it failed to do so, you +## can specify charset encoding you are using here. +## +## Note: You can see whether your ncmpcpp build supports charset detection by +## checking output of `ncmpcpp --version`. +## +## Note: Since MPD uses UTF-8 by default, setting this option makes sense only +## if your encoding is different. +## +# +#system_encoding = "" +# +##### delays ##### +# +## Time of inactivity (in seconds) after playlist highlighting will be disabled +## (0 = always on). +## +#playlist_disable_highlight_delay = 5 +# +## Defines how long messages are supposed to be visible. +## +#message_delay_time = 5 +# +##### song format ##### +## +## For a song format you can use: +## +## %l - length +## %f - filename +## %D - directory +## %a - artist +## %A - album artist +## %t - title +## %b - album +## %y - date +## %n - track number (01/12 -> 01) +## %N - full track info (01/12 -> 01/12) +## %g - genre +## %c - composer +## %p - performer +## %d - disc +## %C - comment +## %P - priority +## $R - begin right alignment +## +## If you want to make sure that a part of the format is displayed only when +## certain tags are present, you can archieve it by grouping them with brackets, +## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are +## present or '' otherwise. It is also possible to define a list of +## alternatives by providing several groups and separating them with '|', +## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is +## not present. +## +## Note: If you want to set limit on maximal length of a tag, just put the +## appropriate number between % and character that defines tag type, e.g. to +## make album take max. 20 terminal cells, use '%20b'. +## +## In addition, formats support markers used for text attributes. They are +## followed by character '$'. After that you can put: +## +## - 0 - default window color (discards all other colors) +## - 1 - black +## - 2 - red +## - 3 - green +## - 4 - yellow +## - 5 - blue +## - 6 - magenta +## - 7 - cyan +## - 8 - white +## - 9 - end of current color +## - b - bold text +## - u - underline text +## - r - reverse colors +## - a - use alternative character set +## +## If you don't want to use a non-color attribute anymore, just put it again, +## but this time insert character '/' between '$' and attribute character, +## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with +## reversed colors. +## +## If you want to use 256 colors and/or background colors in formats (the naming +## scheme is described below in section about color definitions), it can be done +## with the syntax $(COLOR), e.g. to set the artist tag to one of the +## non-standard colors and make it have yellow background, you need to write +## $(197_yellow)%a$(end). Note that for standard colors this is interchangable +## with attributes listed above. +## +## Note: colors can be nested. +## +# +#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9} +# +#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} +# +#song_library_format = {%n - }{%t}|{%f} +# +#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b +# +alternative_header_second_line_format = {{$7$b%a$/b$9}{ - $7%b$9}}|{%D} +# +current_item_prefix = $6$r +# +current_item_suffix = $/r$(end) +# +#current_item_inactive_column_prefix = $(white)$r +# +#current_item_inactive_column_suffix = $/r$(end) +# +now_playing_prefix = $u$b +# +now_playing_suffix = $/u$/b +# +#browser_playlist_prefix = "$2playlist$9 " +# +#selected_item_prefix = $6 +# +#selected_item_suffix = $9 +# +#modified_item_prefix = $3> $9 +# +## +## Note: attributes are not supported for the following variables. +## +#song_window_title_format = {%a - }{%t}|{%f} +## +## Note: Below variables are used for sorting songs in browser. The sort mode +## determines how songs are sorted, and can be used in combination with a sort +## format to specify a custom sorting format. Available values for +## browser_sort_mode are "type", "name", "mtime", "format" and "none". +## +# +#browser_sort_mode = type +# +#browser_sort_format = {%a - }{%t}|{%f} {%l} +# +##### columns settings ##### +## +## syntax of song columns list format is "column column etc." +## +## - syntax for each column is: +## +## (width of the column)[color of the column]{displayed tag} +## +## Note: Width is by default in %, if you want a column to have fixed size, add +## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of +## screen (so the real width will depend on actual screen size), whereas +## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen +## is. +## +## - color is optional (if you want the default one, leave the field empty). +## +## Note: You can give a column additional attributes by putting appropriate +## character after displayed tag character. Available attributes are: +## +## - r - column will be right aligned +## - E - if tag is empty, empty tag marker won't be displayed +## +## You can also: +## +## - give a column custom name by putting it after attributes, separated with +## character ':', e.g. {lr:Length} gives you right aligned column of lengths +## named "Length". +## +## - define sequence of tags, that have to be displayed in case predecessor is +## empty in a way similar to the one in classic song format, i.e. using '|' +## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to +## display artist tag and then composer and performer if previous ones are not +## available. +## +# +song_columns_list_format = (20)[]{a} (6f)[cyan]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[blue]{l} +# +##### various settings ##### +# +## +## Note: Custom command that will be executed each time song changes. Useful for +## notifications etc. +## +execute_on_song_change = notify-send "$(mpc --format '%title% - %artist%' current)" -t 5000 +# +## +## Note: Custom command that will be executed each time player state +## changes. The environment variable MPD_PLAYER_STATE is set to the current +## state (either unknown, play, pause, or stop) for its duration. +## +# +#execute_on_player_state_change = "" +# +#playlist_show_mpd_host = no +# +playlist_show_remaining_time = yes +# +playlist_shorten_total_times = yes +# +#playlist_separate_albums = no +# +## +## Note: Possible display modes: classic, columns. +## +#playlist_display_mode = columns +# +browser_display_mode = classic +# +#search_engine_display_mode = classic +# +#playlist_editor_display_mode = classic +# +#discard_colors_if_item_is_selected = yes +# +#show_duplicate_tags = yes +# +#incremental_seeking = yes +# +#seek_time = 1 +# +#volume_change_step = 2 +# +autocenter_mode = yes +# +centered_cursor = yes +# +## +## Note: You can specify third character which will be used to build 'empty' +## part of progressbar. +## +progressbar_look = =>- +# +## Available values: database, playlist. +## +#default_place_to_search_in = database +# +## Available values: classic, alternative. +## +user_interface = alternative +# +data_fetching_delay = yes +# +## Available values: artist, album_artist, date, genre, composer, performer. +## +#media_library_primary_tag = artist +# +#media_library_albums_split_by_date = yes +# +#media_library_hide_album_dates = no +# +## Available values: wrapped, normal. +## +#default_find_mode = wrapped +# +#default_tag_editor_pattern = %n - %t +# +#header_visibility = yes +# +#statusbar_visibility = yes +# +## Show the "Connected to ..." message on startup +#connected_message_on_startup = yes +# +#titles_visibility = yes +# +#header_text_scrolling = yes +# +#cyclic_scrolling = no +# +lyrics_fetchers = genius, musixmatch, sing365, metrolyrics, azlyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet +# +follow_now_playing_lyrics = yes +# +fetch_lyrics_for_current_song_in_background = no +# +store_lyrics_in_song_dir = yes +# +#generate_win32_compatible_filenames = yes +# +allow_for_physical_item_deletion = yes +# +## +## Note: If you set this variable, ncmpcpp will try to get info from last.fm in +## language you set and if it fails, it will fall back to english. Otherwise it +## will use english the first time. +## +## Note: Language has to be expressed as an ISO 639 alpha-2 code. +## +#lastfm_preferred_language = en +# +space_add_mode = add_remove +# +#show_hidden_files_in_local_browser = no +# +## +## How shall screen switcher work? +## +## - "previous" - switch between the current and previous screen. +## - "screen1,...,screenN" - switch between given sequence of screens. +## +## Screens available for use: help, playlist, browser, search_engine, +## media_library, playlist_editor, tag_editor, outputs, visualizer, clock, +## lyrics, last_fm. +## +screen_switcher_mode = playlist, media_library, playlist_editor, visualizer, help +# +## +## Note: You can define startup screen by choosing screen from the list above. +## +#startup_screen = playlist +# +## +## Note: You can define startup slave screen by choosing screen from the list +## above or an empty value for no slave screen. +## +startup_slave_screen = "" +# +#startup_slave_screen_focus = no +# +## +## Default width of locked screen (in %). Acceptable values are from 20 to 80. +## +# +#locked_screen_width_part = 50 +# +#ask_for_locked_screen_width_part = yes +# +#jump_to_now_playing_song_at_start = yes +# +#ask_before_clearing_playlists = yes +# +#clock_display_seconds = no +# +display_volume_level = yes +# +display_bitrate = yes +# +#display_remaining_time = no +# +## Available values: none, basic, extended, perl. +## +#regular_expressions = perl +# +## +## Note: if below is enabled, ncmpcpp will ignore leading "The" word while +## sorting items in browser, tags in media library, etc. +## +#ignore_leading_the = no +# +## +## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and +## filtering lists. This takes an effect only if boost was compiled with ICU +## support. +## +#ignore_diacritics = no +# +#block_search_constraints_change_if_items_found = yes +# +#mouse_support = yes +# +#mouse_list_scroll_whole_page = no +# +#lines_scrolled = 5 +# +#empty_tag_marker = +# +#tags_separator = " | " +# +#tag_editor_extended_numeration = no +# +#media_library_sort_by_mtime = no +# +#enable_window_title = yes +# +## +## Note: You can choose default search mode for search engine. Available modes +## are: +## +## - 1 - use mpd built-in searching (no regexes, pattern matching) +## +## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but +## if your mpd is on a remote machine, downloading big database to process +## it can take a while +## +## - 3 - match only exact values (this mode uses mpd function for searching in +## database and local one for searching in current playlist) +## +# +#search_engine_default_search_mode = 1 +# +external_editor = nvim +# +## Note: set to yes if external editor is a console application. +## +use_console_editor = yes +# +##### colors definitions ##### +## +## It is possible to set a background color by setting a color value +## "_", e.g. red_black will set foregound color to red +## and background color to black. +## +## In addition, for terminals that support 256 colors it is possible to set one +## of them by using a number in range [1, 256] instead of color name, +## e.g. numerical value corresponding to red_black is 2_1. To find out if the +## terminal supports 256 colors, run ncmpcpp and check out the bottom of the +## help screen for list of available colors and their numerical values. +## +## What is more, there are two special values for the background color: +## "transparent" and "current". The first one explicitly sets the background to +## be transparent, while the second one allows you to preserve current +## background color and change only the foreground one. It's used implicitly +## when background color is not specified. +## +## Moreover, it is possible to attach format information to selected color +## variables by appending to their end a colon followed by one or more format +## flags, e.g. black:b or red:ur. The following variables support this syntax: +## visualizer_color, color1, color2, empty_tag_color, volume_color, +## state_line_color, state_flags_color, progressbar_color, +## progressbar_elapsed_color, player_state_color, statusbar_time_color, +## alternative_ui_separator_color. +## +## Note: due to technical limitations of older ncurses version, if 256 colors +## are used there is a possibility that you'll be able to use only colors with +## transparent background. +# +colors_enabled = yes +# +empty_tag_color = cyan +# +header_window_color = cyan +# +volume_color = green +# +state_line_color = magenta +# +state_flags_color = magenta:b +# +main_window_color = blue +# +color1 = white +# +color2 = blue +# +progressbar_color = black:b +# +progressbar_elapsed_color = cyan:b +# +statusbar_color = magenta +# +statusbar_time_color = cyan:b +# +player_state_color = yellow:b +# +alternative_ui_separator_color = black:b +# +window_border_color = black +# +active_window_border = red +# diff --git a/.config/nvim/conf.d/coc.vim b/.config/nvim/conf.d/coc.vim new file mode 100644 index 0000000..b521659 --- /dev/null +++ b/.config/nvim/conf.d/coc.vim @@ -0,0 +1,116 @@ +"settings suggested by coc. +set hidden " Text Edit suggestion by coc +" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable +" delays and poor user experience. +set updatetime=300 +" Don't pass messages to |ins-completion-menu|. +set shortmess+=c +" Map for trigger completion, completion confirm, snippet expand and jump +inoremap + \ pumvisible() ? coc#_select_confirm() : + \ coc#expandableOrJumpable() ? + \ "\=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\" : + \ check_back_space() ? "\" : + \ coc#refresh() +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction +let g:coc_snippet_next = '' +" Use to trigger completion. +if has('nvim') + inoremap coc#refresh() +else + inoremap coc#refresh() +endif +" Make notify coc.nvim to +" format on enter, could be remapped by other vim plugin +" (I disabled enter to confirm.) +inoremap "\u\\=coc#on_enter()\" + +nmap [g (coc-diagnostic-prev) +nmap ]g (coc-diagnostic-next) +" GoTo code navigation. +nmap gd (coc-definition) +nmap gy (coc-type-definition) +nmap gi (coc-implementation) +nmap gr (coc-references) +" Use K to show documentation in preview window. +nnoremap K :call show_documentation() +function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + elseif (coc#rpc#ready()) + call CocActionAsync('doHover') + else + execute '!' . &keywordprg . " " . expand('') + endif +endfunction +" Highlight the symbol and its references when holding the cursor. +autocmd CursorHold * silent call CocActionAsync('highlight') +" Symbol renaming. +nmap rn (coc-rename) +" Formatting selected code. +xmap f (coc-format-selected) +nmap f (coc-format-selected) +" Applying codeAction to the selected region. +" Example: `aap` for current paragraph +xmap a (coc-codeaction-selected) +nmap a (coc-codeaction-selected) + +" Remap keys for applying codeAction to the current buffer. +nmap ac (coc-codeaction) +" Apply AutoFix to problem on the current line. +nmap qf (coc-fix-current) +" Map function and class text objects +" NOTE: Requires 'textDocument.documentSymbol' support from the language server. +xmap if (coc-funcobj-i) +omap if (coc-funcobj-i) +xmap af (coc-funcobj-a) +omap af (coc-funcobj-a) +xmap ic (coc-classobj-i) +omap ic (coc-classobj-i) +xmap ac (coc-classobj-a) +omap ac (coc-classobj-a) +" Remap and for scroll float windows/popups. +if has('nvim-0.4.0') || has('patch-8.2.0750') + nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" +endif +" Use CTRL-S for selections ranges. +" Requires 'textDocument/selectionRange' support of language server. +nmap (coc-range-select) +xmap (coc-range-select) +" Add `:Format` command to format current buffer. +command! -nargs=0 Format :call CocAction('format') +" Add `:Fold` command to fold current buffer. +command! -nargs=? Fold :call CocAction('fold', ) +" Add `:OR` command for organize imports of the current buffer. +command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') +" Add (Neo)Vim's native statusline support. +" NOTE: Please see `:h coc-stats` for integrations with external plugins that +" provide custom statusline: lightline.vim, vim-airline. +set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} +" Mappings for CoCList +" Show all diagnostics. +nnoremap a :CocList diagnostics +" Manage extensions. +nnoremap e :CocList extensions +" Show commands. +nnoremap c :CocList commands +" Find symbol of current document. +nnoremap o :CocList outline +" Search workspace symbols. +nnoremap s :CocList -I symbols +" Do default action for next item. +nnoremap j :CocNext +" Do default action for previous item. +nnoremap k :CocPrev +" Resume latest coc list. +nnoremap p :CocListResume +" open COc yank +nnoremap y :CocList -A --normal yank diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..21359a4 --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,127 @@ +call plug#begin('~/.config/nvim/plugged') + +" looks +Plug 'vim-airline/vim-airline' " airline for vim +Plug 'ryanoasis/vim-devicons' " adds many icons +Plug 'airblade/vim-gitgutter' " git changes on left. +Plug 'rrethy/vim-hexokinase', { 'do': 'make hexokinase' } " colors +Plug 'mhinz/vim-startify' " start page +Plug 'tomasiser/vim-code-dark' " colorscheme +Plug 'cocopon/iceberg.vim' + +" misc +Plug 'vimwiki/vimwiki' " for my note taking. +Plug 'gentoo/gentoo-syntax' " syntax for gentoo related files + +" Coding +Plug 'neoclide/coc.nvim', {'branch': 'release'} " code completion +Plug 'chiel92/vim-autoformat' " used to remove trailing spaces. +Plug 'honza/vim-snippets' " snippet supprt. +Plug 'szw/vim-maximizer' " maximizing panel +Plug 'mfussenegger/nvim-dap' " Inspector for vim +Plug 'rcarriga/nvim-dap-ui' " UI for dap + +" functions +Plug 'machakann/vim-sandwich' " surrounding +Plug 'preservim/nerdcommenter' " comment out things +Plug 'nvim-lua/popup.nvim' " dependency of teltscope +Plug 'nvim-lua/plenary.nvim' +Plug 'nvim-telescope/telescope.nvim' " replacement of ctrlp +Plug 'tpope/vim-repeat' " repeat support for stuff +Plug 'tpope/vim-fugitive' " Git support. +Plug 'easymotion/vim-easymotion' " better motion!! +Plug 'godlygeek/tabular' " for OCD people. +Plug 'dhruvasagar/vim-table-mode' " Taking notes in vim + +" trees and bars +Plug 'preservim/nerdtree' +Plug 'Xuyuanp/nerdtree-git-plugin' +Plug 'tiagofumo/vim-nerdtree-syntax-highlight' +Plug 'preservim/tagbar' " press to get a tagbar. + +call plug#end() + +colorscheme iceberg + +set termguicolors +set relativenumber +set number +set shiftwidth=2 +set mouse=a +set ignorecase smartcase +set noshowmode +set smartindent +set scrolloff=10 + +" plugin settings +source ~/.config/nvim/conf.d/* + +let g:startify_custom_header = 'startify#pad(startify#fortune#boxed())' +let g:startify_lists = [ + \ { 'type': 'dir', 'header': [' MRU @ '. getcwd()] }, + \ { 'type': 'sessions', 'header': [' Sessions'] }, + \ { 'type': 'bookmarks', 'header': [' Bookmarks'] }, + \ { 'type': 'commands', 'header': [' Commands'] }, + \ ] +let g:startify_commands = [ + \ {'w': ['Open Vim Wiki', ':VimwikiIndex']}, + \ ] +let g:startify_custom_indices = [ + \ 'a', 'd', 'f', 'l', ';', 'g'] +let g:startify_skiplist = [ + \ '^/tmp', + \ escape(fnamemodify($HOME, ':p'), '\') .'Documents/Personal/Wiki', + \ escape(fnamemodify($HOME, ':p'), '\') .'Encrypted', + \ escape(fnamemodify($HOME, ':p'), '\') .'.config/yadm/repo.git', + \ ] + +let g:Hexokinase_ftDisabled = ['css'] + +let g:vimwiki_list = [{'path': '~/Documents/Personal/Wiki/', + \ 'syntax': 'markdown', 'ext': '.md'}] +" only enable vimwiki in wiki folder +let g:vimwiki_global_ext = 0 + +lua require("dapui").setup() +" keybindings (except for coc) +" Telescope +" Find files using Telescope command-line sugar. +nnoremap tf Telescope fd +nnoremap tg Telescope live_grep +nnoremap tb Telescope buffers +nnoremap th Telescope help_tags +" nerdtree tagbar coc formatter. +nnoremap lua require("dapui").toggle() +nnoremap Format +nnoremap TagbarToggle +nnoremap NERDTreeToggle +nnoremap NERDTreeFind +" easymotion +nmap f (easymotion-f) +nmap F (easymotion-F) +nmap l (easymotion-lineanywhere) +nmap j (easymotion-j) +nmap k (easymotion-k) +nmap w (easymotion-w) +nmap W (easymotion-W) +nmap b (easymotion-b) +nmap b (easymotion-B) +" fix intending. +vmap < >gv +" Shortcutting split navigation +map h +map j +map k +map l +map H +map J +map K +map L +map > > +map < +" Tab shortcuts +nnoremap :tabp +nnoremap :tabn +" map Alt + q to exit terminal mode. +tnoremap diff --git a/.config/nvim/lua/dap-custom.lua b/.config/nvim/lua/dap-custom.lua new file mode 100644 index 0000000..caf7605 --- /dev/null +++ b/.config/nvim/lua/dap-custom.lua @@ -0,0 +1,39 @@ +local dap = require('dap') +dap.adapters.lldb = { + type = 'executable', + command = '/usr/bin/lldb', -- adjust as needed + name = "lldb" +} +local dap = require('dap') +dap.configurations.cpp = { + { + name = "Launch", + type = "lldb", + request = "launch", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = '${workspaceFolder}', + stopOnEntry = false, + args = {}, + + -- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting: + -- + -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope + -- + -- Otherwise you might get the following error: + -- + -- Error on launch: Failed to attach to the target process + -- + -- But you should be aware of the implications: + -- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html + runInTerminal = false, + }, +} + + +-- If you want to use this for rust and c, add something like this: + +dap.configurations.c = dap.configurations.cpp +dap.configurations.rust = dap.configurations.cpp + diff --git a/.config/sway/config##hostname.Desktop b/.config/sway/config##hostname.Desktop new file mode 100644 index 0000000..24ccf6b --- /dev/null +++ b/.config/sway/config##hostname.Desktop @@ -0,0 +1,152 @@ +set $mod Mod4 +set $left h +set $down j +set $up k +set $right l +set $term kitty +set $menu wofi | xargs swaymsg exec -- + +output * bg $(find /home/juan/Pictures/Wallpapers/. -type f | shuf -n1) fill +output DP-3 mode 2560x1440@144Hz +input * xkb_numlock enable +input "5426:92:Razer_Razer_DeathAdder_Elite" { + accel_profile flat + pointer_accel -0.5 +} + +###CUSTOMIZATION START### + +#my keybinds + +bindsym $mod+Ctrl+l exec swaylock -c 000000 -f +bindsym $mod+Print exec grim ~/Pictures/Screenshots/$(date +'%s_grim.png'); \ +exec notify-send -t 3000 'Screenshot saved.' + +exec fcitx +exec wlsunset -l 30.4 -L 104.0 -T 6500 -t 3500 + +#set gtk theme + +set $gnome-schema org.gnome.desktop.interface +exec_always { +gsettings set $gnome-schema gtk-theme 'Materia-dark' +gsettings set $gnome-schema icon-theme 'Arc' +#gsettings set $gnome-schema cursor-theme 'cursor theme name' +gsettings set $gnome-schema font-name 'ibm-plex 12' +} + +#set colour + +#color class border backgr. text indicator child_border +client.focused #b48ead #2e3440 #eceff4 #88c0d0 #b48ead +client.focused_inactive #4c566a #2e3440 #eceff4 #88c0d0 #4c566a +client.unfocused #4c566a #2e3440 #eceff4 #88c0d0 #4c566a +client.urgent #bf616a #2e3440 #eceff4 #88c0d0 #bf616a +client.placeholder #4c566a #2e3440 #eceff4 #88c0d0 #4c566a +client.background #2e3440 + +#bind fn keys + +bindsym XF86AudioMicMute exec amixer set Capture toggle +exec mkfifo $SWAYSOCK.wob && tail -f $SWAYSOCK.wob | wob +bindsym XF86AudioRaiseVolume exec amixer sset Master 3%+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $SWAYSOCK.wob +bindsym XF86AudioLowerVolume exec amixer sset Master 3%- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $SWAYSOCK.wob +bindsym XF86AudioMute exec amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $SWAYSOCK.wob + +#borders stuff + +default_border pixel 2 +workspace_auto_back_and_forth yes +force_display_urgency_hint 500 ms +gaps inner 40 + +###END### + +# Start a terminal +bindsym $mod+Return exec $term +# Kill focused window +bindsym $mod+w kill +# Start your launcher +bindsym $mod+Shift+Return exec $menu + +floating_modifier $mod normal + +bindsym $mod+Ctrl+r reload +bindsym $mod+Ctrl+q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + +# Move your focus around +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right +# Move the focused window with the same, but add Shift +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right +# Switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 0 +# Move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 0 +# +# Layout stuff: +# +# You can "split" the current object of your focus with +# $mod+b or $mod+v, for horizontal and vertical splits +# respectively. +bindsym $mod+c splith +bindsym $mod+v splitv +# Switch the current container between different layout styles +bindsym $mod+s layout stacking +bindsym $mod+t layout tabbed +bindsym $mod+e layout toggle split +# Make the current focus fullscreen +bindsym $mod+f fullscreen +# Toggle the current focus between tiling and floating mode +bindsym $mod+Shift+space floating toggle +# Swap focus between the tiling area and the floating area +bindsym $mod+space focus mode_toggle +# Move focus to the parent or child container +bindsym $mod+a focus parent +bindsym $mod+z focus child +# +# Scratchpad: +# +# Sway has a "scratchpad", which is a bag of holding for windows. +# You can send windows there and get them back later. + +# Move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad +bindsym $mod+minus scratchpad show + +mode "resize" { + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +bar swaybar_command waybar + +include /etc/sway/config.d/* diff --git a/.config/sway/config##hostname.T14s b/.config/sway/config##hostname.T14s new file mode 100644 index 0000000..c5dbd62 --- /dev/null +++ b/.config/sway/config##hostname.T14s @@ -0,0 +1,151 @@ +set $mod Mod4 +set $left h +set $down j +set $up k +set $right l +set $term kitty +set $menu wofi | xargs swaymsg exec -- +output * bg $(find /home/juan/Pictures/Wallpapers/. -type f | shuf -n1) fill + +###CUSTOMIZATION START### + +##starting userspace software +exec wlsunset -l 30.4 -L 104.0 -T 6500 -t 3500 +exec --no-startup-id pipewire +exec mako +exec light -S 70 + +#my keybinds + +bindsym $mod+Ctrl+l exec ~/.config/sway/scripts/logout.sh +bindsym $mod+Print exec grim ~/Pictures/Screenshots/$(date +'%H:%M_%y%m%d.png'); \ +exec notify-send -t 3000 'Screenshot saved.' + +#set gtk theme + +set $gnome-schema org.gnome.desktop.interface +exec_always { + gsettings set $gnome-schema gtk-theme 'Materia-dark' + gsettings set $gnome-schema icon-theme 'Arc' + #gsettings set $gnome-schema cursor-theme 'cursor theme name' + gsettings set $gnome-schema font-name 'ibm-plex 12' + export XDG_CURRENT_DESKTOP=Unity +} + +#set colour + +#color class border backgr. text indicator child_border +client.focused #a093c7 #161821 #d2d4de #84a0c6 #a093c7 +client.focused_inactive #6b7089 #161821 #d2d4de #84a0c6 #6b7089 +client.unfocused #6b7089 #161821 #d2d4de #84a0c6 #6b7089 +client.urgent #e27878 #161821 #d2d4de #84a0c6 #bf616a +client.placeholder #6b7089 #161821 #d2d4de #84a0c6 #6b7089 +client.background #6b7089 +#2e3440 + +#bind fn keys + +bindsym XF86AudioMicMute exec amixer set Capture toggle +exec mkfifo $SWAYSOCK.wob && tail -f $SWAYSOCK.wob | wob +bindsym XF86AudioRaiseVolume exec amixer sset Master 2048+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $SWAYSOCK.wob +bindsym XF86AudioLowerVolume exec amixer sset Master 2048- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $SWAYSOCK.wob +bindsym XF86AudioMute exec amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $SWAYSOCK.wob +bindsym XF86MonBrightnessUp exec light -A 5 && light -G | cut -d'.' -f1 > $SWAYSOCK.wob +bindsym XF86MonBrightnessDown exec light -U 5 && light -G | cut -d'.' -f1 > $SWAYSOCK.wob + +#borders stuff + +default_border pixel 2 +workspace_auto_back_and_forth yes +force_display_urgency_hint 500 ms +smart_borders no_gaps + +#floating thingys +bindsym $mod+Ctrl+s floating toggle ; sticky toggle ; resize set 800 600 ; move position 55ppt 5ppt + +# swap caps and ctrl on PS-2 keyboard +input 1:1:AT_Translated_Set_2_keyboard { + xkb_options "ctrl:swapcaps" +} + +###END### + +# Start a terminal +bindsym $mod+Return exec $term +# Kill focused window +bindsym $mod+w kill +# Start your launcher +bindsym $mod+Shift+Return exec $menu + +floating_modifier $mod normal + +bindsym $mod+Ctrl+r reload +bindsym $mod+Ctrl+q exit + +# Change fcitx IME +bindsym $mod+Ctrl+space exec fcitx5-remote -t + +# Move your focus around +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right +# Move the focused window with the same, but add Shift +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right +# resize windows +bindsym $mod+less resize shrink width 20px +bindsym $mod+greater resize grow width 20px +bindsym $mod+minus resize shrink height 20px +bindsym $mod+plus resize grow height 20px +# Switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +# Move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +# +# Layout stuff: +# +# You can "split" the current object of your focus with +# $mod+b or $mod+v, for horizontal and vertical splits +# respectively. +bindsym $mod+c splith +bindsym $mod+v splitv +# Switch the current container between different layout styles +bindsym $mod+s layout stacking +bindsym $mod+t layout tabbed +bindsym $mod+e layout toggle split +# Make the current focus fullscreen +bindsym $mod+f fullscreen +# Toggle the current focus between tiling and floating mode +bindsym $mod+Shift+space floating toggle +# Swap focus between the tiling area and the floating area +bindsym $mod+space focus mode_toggle +# Move focus to the parent or child container +bindsym $mod+a focus parent +bindsym $mod+z focus child + +# Move the currently focused window to the scratchpad +bindsym $mod+Shift+0 move scratchpad +bindsym $mod+0 scratchpad show + +bar swaybar_command waybar + +include /etc/sway/config.d/* diff --git a/.config/sway/scripts/logout.sh b/.config/sway/scripts/logout.sh new file mode 100755 index 0000000..7110adf --- /dev/null +++ b/.config/sway/scripts/logout.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +choice=`echo "shutdown\npoweroff\nreboot\nlock" | wofi -d -Oalphabetical` +if test "$choice" = lock ; then + tmp=/tmp/lockscreen.bmp + grim - | magick - -blur 0x6 $tmp + bright=`light` + swayidle -w \ + timeout 5 "light -S 1" resume "light -S $bright" \ + timeout 10 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ + & + idlepid=$! + swaylock -e -i $tmp -c 000000 --inside-color 00000003 + kill $idlepid + rm $tmp + swaymsg "output * dpms on" + light -S $bright + return 0 +fi +loginctl $choice diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf new file mode 100644 index 0000000..7dd793e --- /dev/null +++ b/.config/tmux/tmux.conf @@ -0,0 +1,41 @@ +# plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +#set -g @plugin "arcticicestudio/nord-tmux" +#set -g @plugin 'tmux-plugins/tmux-prefix-highlight' + +# FILE: iceberg_minimal.tmux.conf +# REPO: https://github.com/gkeep/iceberg-dark +# MAINTAINER: gkeep + +set -g status-position bottom +set -g status-justify centre +set -g status-style "bg=#1e2132" +set -g window-style "" +set -g window-active-style "" + +# modules +module_left_1="#h" +module_left_2="#{client_width}x#{client_height}" + +module_right_1="%a %d %b" +module_right_2="%R %Z" + +set -g status-left " #[fg=#c6c8d1]$module_left_1 #[fg=#6b7089]$module_left_2" +set -g status-left-style "" +set -g status-left-length 50 + +set -g status-right "$module_right_1 #[fg=#c6c8d1]$module_right_2 " +set -g status-right-style "fg=#6b7089" +set -g status-right-length 25 + +set -g window-status-current-style "bold" +set -g window-status-style "fg=#6b7089" +set -g window-status-format " #[fg=#c6c8d1]#{?#{==:#W,fish},#{b:pane_current_path},#W}#F " +set -g window-status-current-format " #[fg=#c6c8d1]#{?#{==:#W,fish},#{b:pane_current_path},#W}#F " +set -g window-status-separator "" + +set -g pane-active-border-style "fg=#6b7089" +set -g pane-border-style "fg=#6b7089" + +run '~/.tmux/plugins/tpm/tpm' diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..b3a316e --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,73 @@ +{ + "layer": "top", // Waybar at top layer + "height": 24, // Waybar height (to be removed for auto height) + // Choose the order of the modules + "modules-left": ["sway/workspaces", "sway/mode", "custom/media","sway/window"], + "modules-center": [], + "modules-right": ["tray","mpd","custom/weather","network","battery","clock"], + "mpd": { + "format": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} {stateIcon}", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "format-disconnected": "Disconnected ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + "spacing": 10 + }, + "clock": { + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "battery": { + "states": { + "good": 80, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ifname}: {ipaddr}/{cidr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "custom/weather": { + "exec": "sleep 10 && curl 'wttr.in/?format=%t+(%f)+%c' || echo 'No weather data '", + "interval": 1800 + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..eac2496 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,85 @@ +* { + border: none; + border-radius: 0; + font-size: 14px; + min-height: 0; + color: #c6c8d1; +} + +window#waybar { + background: rgba(30, 33, 50, 0.9); +} + +#workspaces { + margin: 5px; + margin-left: 10px; + margin-right: 10px; + border-radius: 2px; +} +#workspaces button { + padding: 0 4px; +} + +#workspaces button.focused { + background: rgba(160, 147, 199, 0.5); + border-radius: 2px; +} + +#workspaces button:hover { + background-color: rgba(173, 160, 211, 0.2); + border-radius: 2px; +} + +#workspaces button.urgent { + background-color: #e27878; + border-radius: 2px; +} + +#clock, +#battery, +#network, +#mpd, +#custom-weather { + background-color: #161821; + padding: 0px 10px; + margin: 5px 0px; +} + +#clock { + border-radius: 0px 2px 2px 0px; + margin-right: 10px; +} + +@keyframes blink { + to { + background-color: #d2d4de; + color: #161821; + } +} + +#battery.charging { + color: #b4be82; +} + +#battery.critical:not(.charging) { + background-color: #e98989; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#mpd { + border-radius: 2px 0px 0px 2px; + margin-left: 10px; +} + +#mode { + background-color: #89b8c2; + padding: 0px 5px 0px 5px; + margin: 5px; + margin-left: 0px; + margin-right: 10px; + border-radius: 2px; +} diff --git a/.config/wofi/config b/.config/wofi/config new file mode 100644 index 0000000..7f9a2ea --- /dev/null +++ b/.config/wofi/config @@ -0,0 +1,12 @@ +style=/home/juan/.config/wofi/style.css +xoffset=660 +yoffset=275 +show=drun +width=600 +height=500 +always_parse_args=true +show_all=true +print_command=true +layer=overlay +insensitive=true +prompt= diff --git a/.config/wofi/style.css b/.config/wofi/style.css new file mode 100644 index 0000000..64b7063 --- /dev/null +++ b/.config/wofi/style.css @@ -0,0 +1,55 @@ +window { + margin: 0px; + border: 2px solid #6b7089; + border-radius: 2px; + background-color: #161821; + font-family: monospace; + font-size: 14px; +} + +#input { + margin: 5px; + border: 1px solid #1e2132; + color: #d2d4de; + background-color: #161821; +} + +#input image { + color: #d2d4de; +} + +#inner-box { + margin: 5px; + border: none; + background-color: #161821; +} + +#outer-box { + margin: 5px; + border: none; + background-color: #161821; +} + +#scroll { + margin: 0px; + border: none; +} + +#text { + margin: 5px; + border: none; + color: #d2d4de; +} + +#entry:selected { + background-color: #1e2132; + border-radius: 3px; + font-weight: normal; +} + +#text:selected { + background-color: #1e2132; + border-radius: 3px; + font-weight: normal; +} + diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc new file mode 100644 index 0000000..d4cdac4 --- /dev/null +++ b/.config/zathura/zathurarc @@ -0,0 +1,38 @@ +set window-title-basename "true" +set selection-clipboard "clipboard" +set recolor "true" + + +# Base16 Nord +# Author: arcticicestudio + +set default-bg "#161821" +set default-fg "#1e2132" + +set statusbar-fg "#6b7089" +set statusbar-bg "#161821" + +set inputbar-bg "#161821" +set inputbar-fg "#84a0c6" + +set notification-bg "#161821" +set notification-fg "#91acd1" + +set notification-error-bg "#161821" +set notification-error-fg "#e27878" + +set notification-warning-bg "#161821" +set notification-warning-fg "#e27878" + +set highlight-color "#e2a478" +set highlight-active-color "#91acd1" + +set completion-bg "#161821" +set completion-fg "#84a0c6" + +set completion-highlight-fg "#95c4ce" +set completion-highlight-bg "#a093c7" + +set recolor-lightcolor "#161821" +set recolor-darkcolor "#c6c8d1" + diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..16512c7 --- /dev/null +++ b/.zshrc @@ -0,0 +1,149 @@ +echo '\033[0;36m ___ ___ ___ ___ ' +echo '\033[0;36m /\ \ /\__\ /\ \ /\__\ ' +echo '\033[0;36m _\:\ \ /:/ _/_ /::\ \ /:| _|_ ' +echo '\033[0;36m /\/::\__\/:/_/\__\/::\:\__\/::|/\__\ ' +echo '\033[0;36m \::/\/__/\:\/:/ /\/\::/ /\/|::/ / ' +echo '\033[0;36m \/__/ \::/ / /:/ / |:/ / ' +echo '\033[0;36m \/__/ \/__/ \/__/ ' +echo '\033[0;36m ' +echo '\033[0;35m /w '$(awk -F "=" '/^NAME/ {print $2}' < /etc/os-release ) +echo '\033[0;34m @ '$HOST + +#Install zinit if no zinit is present +if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then + print -P "%F{33}▓▒░ %F{220}Installing %F{33}DHARMA%F{220} Initiative Plugin Manager (%F{33}zdharma/zinit%F{220})…%f" + command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit" + command git clone https://github.com/zdharma/zinit "$HOME/.zinit/bin" && \ + print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \ + print -P "%F{160}▓▒░ The clone has failed.%f%b" +fi +source "$HOME/.zinit/bin/zinit.zsh" + +zinit ice compile'(pure|async).zsh' pick'async.zsh' src'pure.zsh' +zinit light sindresorhus/pure +zinit light zsh-users/zsh-autosuggestions +zinit ice lucid wait +zinit light zdharma/fast-syntax-highlighting +zinit light zsh-users/zsh-history-substring-search +autoload -Uz _zinit +(( ${+_comps} )) && _comps[zinit]=_zinit + +zstyle ':completion:*' auto-description 'specify: %F{magenta}%d%f' +zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate +zstyle ':completion:*' expand prefix suffix +zstyle ':completion:*' file-sort name +zstyle ':completion:*' format 'Completing %F{magenta}%d%f' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' insert-unambiguous true +zstyle ':completion:*' list-colors '' +zstyle ':completion:*' list-suffixes true +zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*' +zstyle ':completion:*' menu select=1 +zstyle ':completion:*' original true +zstyle ':completion:*' preserve-prefix '//[^/]##/' +zstyle ':completion:*' select-prompt %SScrolling active: current selection at %F{blue}%p%s%f %l +zstyle ':completion:*' verbose true +zstyle :compinstall filename '/home/juan/.zshrc' +autoload -Uz compinit +compinit +HISTFILE=~/.cache/.zhistory +HISTSIZE=8192 +SAVEHIST=8192 +setopt autocd extendedglob nomatch notify auto_pushd +unsetopt beep +zmodload zsh/complist + +#vi mone +bindkey -v +export KEYTIMEOUT=1 + +#edit in vim +autoload edit-command-line +zle -N edit-command-line +bindkey '' edit-command-line + +#use lf to change dirs. credit: luke +lfcd () { + tmp="$(mktemp)" + lf -last-dir-path="$tmp" "$@" + if [ -f "$tmp" ]; then + dir="$(cat "$tmp")" + rm -f "$tmp" + [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" + fi +} + +# get cheat sheet +cb () { + curl -s cht.sh/$* | bat --decorations never +} + +#start mpv detached +dmpv () { + mpv $* &> /dev/null & + disown +} + +#config location +export XDG_CONFIG_HOME=$HOME/.config +export XDG_CACHE_HOME=$HOME/.cache +export CARGO_HOME=$HOME/.cache/cargo +export GOPATH=$HOME/.cache/go +export LESSHISTFILE=/dev/null +export LYNX_CFG=$HOME/.config/lynx/lynxrc + +#colored output +export LESS_TERMCAP_md=$'\e[01;35m' +export LESS_TERMCAP_me=$'\e[0m' +export LESS_TERMCAP_so=$'\e[01;100;37m' +export LESS_TERMCAP_se=$'\e[0m' +export LESS_TERMCAP_us=$'\e[01;36m' +export LESS_TERMCAP_ue=$'\e[0m' +export MANWIDTH=${MANWIDTH:-78} +export MANLESS="Manual\ \$MAN_PN\ ?ltline\ %lt?L/%L.:byte\ %bB?s/%s..?\:?pB\ %pB\\%.." +export LESS="-RSM~" + +#local path +export PATH="${PATH}:${HOME}/.local/bin/" +export PATH="${PATH}:${HOME}/.scripts/" + +#ccache support +export USE_CCACHE=1 +export PATH="/usr/lib/ccache/bin${PATH:+:}$PATH" + +#source fasd_cache for 40 ms quicker start. +fasd_cache="$HOME/.cache/fasd_cache" +if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then + fasd --init zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install posix-alias posix-hook >| "$fasd_cache" +fi +source "$fasd_cache" +unset fasd_cache + +alias b='bat' +alias btctl='bluetoothctl' +alias cp='cp -iv' +alias df='df -h' +alias diff='diff --color=auto' +alias e='emerge' +alias free='free -h' +alias g='git' +alias grep='grep --color=auto' +alias ip='ip -color=auto' +alias la='ls -a --color=auto' +alias ll='ls -lh --color=auto' +alias ls='ls --color=auto' +alias se='doas emerge' +alias sp='doas pacman' +alias ssh='TERM="xterm-256color" ssh' +alias sv='doasedit.sh' +alias v='nvim' +alias vw='nvim -c VimwikiIndex' +alias yt-dl='yt-dlp --sub-lang en,zh-Hant --audio-format best' + +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history + +bindkey '^[[A' history-substring-search-up +bindkey '^[[B' history-substring-search-down diff --git a/README.md b/README.md new file mode 100644 index 0000000..73c0ba5 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# dotfiles + +my dotfiles for an Arch Linux desktop and a Gentoo laptop + +## Softwares + +- Sway - WM +- Firefox - I built from source with wayland support +- kitty - terminal emulator +- beets - music library management +- mpd - music server +- ncmpcpp - music player +- neovim with VimPlug - text editor and a lightweight plugin manager +- wofi - wayland native app launcher +- zsh with zinit - a shell and a fast plugin framework +- wob - bar in wayland + +## Screenshots + +### Sway + +![windows](https://user-images.githubusercontent.com/72336775/122357027-def01800-cf42-11eb-82f9-3d08ea86317a.png) + +![background](https://user-images.githubusercontent.com/72336775/122357052-e3b4cc00-cf42-11eb-902e-0337852f885e.png)