From 1bfdb95a09bad1337f6c015ceaf270a6476bc47e Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Mon, 20 Apr 2020 01:03:51 +0700 Subject: [PATCH] First commit from Pengwin --- .config/alacritty/alacritty.yml | 938 ++++++++++++++++++ .config/fish/config.fish | 21 + .../fish/functions/dotfiles-update-win.fish | 5 + .config/fish/functions/fish_greeting.fish | 3 + .config/fish/functions/fish_prompt.fish | 79 ++ .config/fish/functions/winpwd.fish | 4 + .ideavimrc | 127 +++ .tmux.conf | 92 ++ .vimrc | 47 + README.md | 19 + dotfiles-old.tar.gz | Bin 0 -> 20186 bytes 11 files changed, 1335 insertions(+) create mode 100644 .config/alacritty/alacritty.yml create mode 100644 .config/fish/config.fish create mode 100644 .config/fish/functions/dotfiles-update-win.fish create mode 100644 .config/fish/functions/fish_greeting.fish create mode 100644 .config/fish/functions/fish_prompt.fish create mode 100644 .config/fish/functions/winpwd.fish create mode 100755 .ideavimrc create mode 100644 .tmux.conf create mode 100644 .vimrc create mode 100644 README.md create mode 100644 dotfiles-old.tar.gz diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..27b67b0 --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,938 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: alacritty + +window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + dimensions: + columns: 232 + lines: 60 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + position: + x: 24 + y: 22 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + padding: + x: 5 + y: 5 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: true + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background, but no title bar buttons + decorations: none + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + startup_mode: Windowed + + # Window title + title: Alacritty + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. + # Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). + #multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + # normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + # family: Fira Code Medium + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + size: 11.0 + + # Offset is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false` + # + # macOS >= 10.14.x: + # + # If the font quality on non-retina display looks bad then set + # `use_thin_strokes` to `true` and enable font smoothing by running the + # following command: + # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` + # + # This is a global setting and will require a log out or restart to take + # effect. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +schemes: + Xterm: &xterm + # Default colors + primary: + background: '#000000' + foreground: '#ffffff' + # Normal colors + normal: + black: '#000000' + red: '#cd0000' + green: '#00cd00' + yellow: '#cdcd00' + blue: '#0000ee' + magenta: '#cd00cd' + cyan: '#00cdcd' + white: '#e5e5e5' + # Bright colors + bright: + black: '#7f7f7f' + red: '#ff0000' + green: '#00ff00' + yellow: '#ffff00' + blue: '#5c5cff' + magenta: '#ff00ff' + cyan: '#00ffff' + white: '#ffffff' + # Colors (Ubuntu) + + Ayu Dark: &ayu + # Default colors + primary: + background: '#0A0E14' + foreground: '#B3B1AD' + + # Normal colors + normal: + black: '#01060E' + red: '#EA6C73' + green: '#91B362' + yellow: '#F9AF4F' + blue: '#53BDFA' + magenta: '#FAE994' + cyan: '#90E1C6' + white: '#C7C7C7' + + # Bright colors + bright: + black: '#686868' + red: '#F07178' + green: '#C2D94C' + yellow: '#FFB454' + blue: '#59C2FF' + magenta: '#FFEE99' + cyan: '#95E6CB' + white: '#FFFFFF' + + Tomorrow Night: &tmr + # Default colors + primary: + background: '0x1d1f21' + foreground: '0xc5c8c6' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x1d1f21' + cursor: '0xc5c8c6' + + # Normal colors + normal: + black: '0x1d1f21' + red: '0xcc6666' + green: '0xb5bd68' + yellow: '0xf0c674' + blue: '0x81a2be' + magenta: '0xb294bb' + cyan: '0x8abeb7' + white: '0xc5c8c6' + + # Bright colors + bright: + black: '0x969896' + red: '0xcc6666' + green: '0xb5bd68' + yellow: '0xf0c674' + blue: '0x81a2be' + magenta: '0xb294bb' + cyan: '0x8abeb7' + white: '0xffffff' + + indexed_colors: + - { index: 16, color: '0xde935f' } + - { index: 17, color: '0xa3685a' } + - { index: 18, color: '0x282a2e' } + - { index: 19, color: '0x373b41' } + - { index: 20, color: '0xb4b7b4' } + - { index: 21, color: '0xe0e0e0' } + + Dracula: &dracula + # Default colors + primary: + background: '#282a36' + foreground: '#f8f8f2' + + # Normal colors + normal: + black: '#000000' + red: '#ff5555' + green: '#50fa7b' + yellow: '#f1fa8c' + blue: '#caa9fa' + magenta: '#ff79c6' + cyan: '#8be9fd' + white: '#bfbfbf' + + # Bright colors + bright: + black: '#575b70' + red: '#ff6e67' + green: '#5af78e' + yellow: '#f4f99d' + blue: '#caa9fa' + magenta: '#ff92d0' + cyan: '#9aedfe' + white: '#e6e6e6' + + # Colors (iTerm 2 default theme) + iTerm: &iterm + # Default colors + primary: + background: '#101421' + foreground: '#fffbf6' + + # Normal colors + normal: + black: '#2e2e2e' + red: '#eb4129' + green: '#abe047' + yellow: '#f6c744' + blue: '#47a0f3' + magenta: '#7b5cb0' + cyan: '#64dbed' + white: '#e5e9f0' + + # Bright colors + bright: + black: '#565656' + red: '#ec5357' + green: '#c0e17d' + yellow: '#f9da6a' + blue: '#49a4f8' + magenta: '#a47de9' + cyan: '#99faf2' + white: '#ffffff' + + + + + + + + ## [New Moon](https://github.com/taniarascia/new-moon) + + # Colors (New Moon) + New Moon: &newmoon + # Default colors + primary: + background: '#2D2D2D' + foreground: '#B3B9C5' + # Normal colors + normal: + black: '#2D2D2D' + red: '#F2777A' + green: '#92D192' + yellow: '#FFD479' + blue: '#6AB0F3' + magenta: '#E1A6F2' + cyan: '#76D4D6' + white: '#B3B9C5' + # Bright colors + bright: + black: '#777C85' + red: '#F2777A' + green: '#76D4D6' + yellow: '#FFEEA6' + blue: '#6AB0F3' + magenta: '#E1A6F2' + cyan: '#76D4D6' + white: '#FFFFFF' + + ## [Nord](https://github.com/arcticicestudio/nord) + + # Colors (Nord) + Nord: &nord + # Default colors + primary: + background: '#2E3440' + foreground: '#D8DEE9' + + # Normal colors + normal: + black: '#3B4252' + red: '#BF616A' + green: '#A3BE8C' + yellow: '#EBCB8B' + blue: '#81A1C1' + magenta: '#B48EAD' + cyan: '#88C0D0' + white: '#E5E9F0' + + # Bright colors + bright: + black: '#4C566A' + red: '#BF616A' + green: '#A3BE8C' + yellow: '#EBCB8B' + blue: '#81A1C1' + magenta: '#B48EAD' + cyan: '#8FBCBB' + white: '#ECEFF4' + + ## [Oceanic Next](https://github.com/voronianski/oceanic-next-color-scheme) + + # Colors (Oceanic Next) + Oceanic: &oceanic + # Default colors + primary: + background: '#1b2b34' + foreground: '#d8dee9' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '#1b2b34' + cursor: '#ffffff' + + # Normal colors + normal: + black: '#343d46' + red: '#EC5f67' + green: '#99C794' + yellow: '#FAC863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#d8dee9' + + # Bright colors + bright: + black: '#343d46' + red: '#EC5f67' + green: '#99C794' + yellow: '#FAC863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#d8dee9' + + ## One Dark + + # Colors (One Dark) + One Dark: &onedark + # Default colors + primary: + background: '#282c34' + foreground: '#abb2bf' + + # Normal colors + normal: + # NOTE: Use '#131613' for the `black` color if you'd like to see + # black text on the background. + black: '#282c34' + red: '#e06c75' + green: '#98c379' + yellow: '#d19a66' + blue: '#61afef' + magenta: '#c678dd' + cyan: '#56b6c2' + white: '#abb2bf' + + # Bright colors + bright: + black: '#5c6370' + red: '#e06c75' + green: '#98c379' + yellow: '#d19a66' + blue: '#61afef' + magenta: '#c678dd' + cyan: '#56b6c2' + white: '#ffffff' + + ## [Oxide](https://github.com/dikiaap/dotfiles) + + # Colors (Oxide) + Oxide: &oxide + # Default colors + primary: + background: '#212121' + foreground: '#c0c5ce' + bright_foreground: '#f3f4f5' + + cursor: + text: '#212121' + cursor: '#c0c5ce' + + # Normal colors + normal: + black: '#212121' + red: '#e57373' + green: '#a6bc69' + yellow: '#fac863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#c0c5ce' + + # Bright colors + bright: + black: '#5c5c5c' + red: '#e57373' + green: '#a6bc69' + yellow: '#fac863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#f3f4f5' + + ## [Snazzy](https://github.com/sindresorhus/hyper-snazzy) + + # Colors (Snazzy) + Snazzy: &snazzy + # Default colors + primary: + background: '#282a36' + foreground: '#eff0eb' + + # Normal colors + normal: + black: '#282a36' + red: '#ff5c57' + green: '#5af78e' + yellow: '#f3f99d' + blue: '#57c7ff' + magenta: '#ff6ac1' + cyan: '#9aedfe' + white: '#f1f1f0' + + # Bright colors + bright: + black: '#686868' + red: '#ff5c57' + green: '#5af78e' + yellow: '#f3f99d' + blue: '#57c7ff' + magenta: '#ff6ac1' + cyan: '#9aedfe' + white: '#f1f1f0' + + ## [Taerminal](https://github.com/cozywigwam/iterm-taerminal) + + # Colors (Taerminal) + Taerminal: &taerminal + # Default colors + primary: + background: '#26282a' + foreground: '#f0f0f0' + cursor: + background: '#f0f0f0' + foreground: '#26282a' + + # Normal colors + normal: + black: '#26282a' + red: '#ff8878' + green: '#b4fb73' + yellow: '#fffcb7' + blue: '#8bbce5' + magenta: '#ffb2fe' + cyan: '#a2e1f8' + white: '#f1f1f1' + + # Bright colors + bright: + black: '#6f6f6f' + red: '#fe978b' + green: '#d6fcba' + yellow: '#fffed5' + blue: '#c2e3ff' + magenta: '#ffc6ff' + cyan: '#c0e9f8' + white: '#ffffff' + + ## [Tender](https://github.com/huyvohcmc/tender-alacritty) + + # Colors (Tender) + Tender: &tender + # Default colors + primary: + background: '#282828' + foreground: '#eeeeee' + + # Normal colors + normal: + black: '#282828' + red: '#f43753' + green: '#c9d05c' + yellow: '#ffc24b' + blue: '#b3deef' + magenta: '#d3b987' + cyan: '#73cef4' + white: '#eeeeee' + + # Bright colors + bright: + black: '#4c4c4c' + red: '#f43753' + green: '#c9d05c' + yellow: '#ffc24b' + blue: '#b3deef' + magenta: '#d3b987' + cyan: '#73cef4' + white: '#feffff' + + +#colors: *tender +#colors: *ayu +#colors: *dracula +#colors: *tmr +#colors: *iterm +colors: *newmoon +#colors: *nord +#colors: *oceanic +#colors: *onedark +#colors: *oxide +#colors: *snazzy +#colors: *taerminal +custom_cursor_colors: true + +# black +# red +# green +# yellow +# blue +# magenta +# cyan +# white +# brblack +# brred +# brgreen +# bryellow +# brblue +# brmagenta +# brcyan +# brwhite +# normal + + + +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +# +# Specifying a `duration` of `0` will disable the visual bell. +#visual_bell: +# animation: EaseOutExpo +# duration: 0 +# color: '#ffffff' + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +background_opacity: 0.75 + +#selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +#cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + #style: Block + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +shell: + program: wsl +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +working_directory: C:\Users\josep + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + + #url: + # URL launcher + # + # This program is executed when clicking on a text which is recognized as a URL. + # The URL is always added to the command as the last parameter. + # + # When set to `None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # URL modifiers + # + # These are the modifiers that need to be held down for opening URLs when clicking + # on them. The available modifiers are documented in the key binding section. + #modifiers: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty captures the mouse, the +# `Shift` modifier is automatically added as a requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ReceiveChar +# - None +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# at once. +key_bindings: + # (Windows, Linux, and BSD only) + - { key: V, mods: Alt, action: Paste } + - { key: C, mods: Alt, action: Copy } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Add, mods: Control, action: IncreaseFontSize } + #- { key: Subtract, mods: Control, action: DecreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Add, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: K, mods: Command, chars: "\x0c" } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, chars: "\x0c" } + #- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } + #- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } + #- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } + #- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100644 index 0000000..046baac --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,21 @@ +set -g fish_user_paths $fish_user_paths ~/bin ~/.cargo/bin ~/.local/bin + +set -g MANPAGER "sh -c 'col -bx | bat -l man -p'" +set EDITOR vim +set -U FZF_COMPLETE 0 +set -U FZF_LEGACY_KEYBINDINGS 0 + +source ~/.config/fish/dircolors.fish + +bind \cx 'if jobs > /dev/null ; fg; fish_prompt; end' + +abbr -a -g c "clip.exe" +abbr -a -g o wsl-open +abbr -a -g dot dotfiles + +alias ll "exa -la" +alias xdg-open wsl-ope + +alias dotfiles "git --git-dir=$HOME/.dotfiles --work-tree=$HOME" + + diff --git a/.config/fish/functions/dotfiles-update-win.fish b/.config/fish/functions/dotfiles-update-win.fish new file mode 100644 index 0000000..c7c21be --- /dev/null +++ b/.config/fish/functions/dotfiles-update-win.fish @@ -0,0 +1,5 @@ +# Defined in /tmp/fish.6qfkSz/dotfiles-update-win.fish @ line 1 +function dotfiles-update-win + cp /mnt/c/Users/josep/AppData/Roaming/alacritty/alacritty.yml ~/.config/alacritty/alacritty.yml + cp /mnt/c/Users/josep/.ideavimrc ~/.ideavimrc +end diff --git a/.config/fish/functions/fish_greeting.fish b/.config/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..9ed796a --- /dev/null +++ b/.config/fish/functions/fish_greeting.fish @@ -0,0 +1,3 @@ +function fish_greeting + fortune | lolcat -p 2.5 -S 102 +end diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..b259b1a --- /dev/null +++ b/.config/fish/functions/fish_prompt.fish @@ -0,0 +1,79 @@ +function fish_prompt + + # - green lines if the last return command is OK, red otherwise + # - your user name, in red if root or yellow otherwise + # - your hostname, in cyan if ssh or blue otherwise + # - the current path (with prompt_pwd) + # - date +%X + # - the current virtual environment, if any + # - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi" + # - current background jobs, if any + + # It goes from: + # ┬─[nim@Hattori:~]─[11:39:00] + # ╰─>$ echo here + + # To: + # ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining] + # │ 2 15054 0% arrêtée sleep 100000 + # │ 1 15048 0% arrêtée sleep 100000 + # ╰─>$ echo there + + function _nim_prompt_wrapper + set retc $argv[1] + set field_name $argv[2] + set field_value $argv[3] + + set_color normal + set_color $retc + echo -n '─' + set_color -o green + echo -n '[' + set_color normal + test -n $field_name + and echo -n $field_name: + set_color $retc + echo -n $field_value + set_color -o green + echo -n ']' + end + and set retc brgreen + or set retc green + + set_color $retc + echo -n '┬─' + set_color -o green + + # Date + _nim_prompt_wrapper cyan '' (date +%X) + + # Current Directory + _nim_prompt_wrapper blue '' (pwd | sed 's/\/home\/joe/~/') + + # Virtual Environment + set -q VIRTUAL_ENV + and _nim_prompt_wrapper $retc V (basename "$VIRTUAL_ENV") + + # Battery status + type -q acpi + and test (acpi -a 2> /dev/null | string match -r off) + and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-) + + # New line + echo + + # Background jobs + set_color normal + for job in (jobs) + set_color $retc + echo -n '│ ' + set_color brblack + echo $job + end + set_color normal + set_color $retc + echo -n '╰─>' + set_color -o brcyan + echo -n '$ ' + set_color normal +end diff --git a/.config/fish/functions/winpwd.fish b/.config/fish/functions/winpwd.fish new file mode 100644 index 0000000..d13c68c --- /dev/null +++ b/.config/fish/functions/winpwd.fish @@ -0,0 +1,4 @@ +# Defined in /tmp/fish.Ln0oz6/winpwd.fish @ line 1 +function winpwd + wslupath (pwd) | clip.exe +end diff --git a/.ideavimrc b/.ideavimrc new file mode 100755 index 0000000..7243831 --- /dev/null +++ b/.ideavimrc @@ -0,0 +1,127 @@ +let mapleader = " " +set incsearch +set hlsearch +set clipboard+=unnamed +set number +set relativenumber +set surround +set multiple-cursors +set ideajoin +set idearefactormode=visual +set ignorecase +set commentary + +" TODO Find bindings for these +" nnoremap rc :action ChooseRcnConfiguration +" nnoremap ;b :action ToggleLineBreakpoint +" nnoremap ;e :action EvaluateExpression +" nnoremap ;d :action Debug +" nnoremap ;r :action Resume +" nnoremap ;s :action StepInto +" nnoremap ;n :action StepOver +" nmap :action **** Repeat last command +" Find out about VCS tool +" We need to get good bindings for window navigation + +" IDE has nice search behavior, consider adding these +" map / :action Find +" nnoremap n :action FindNext +" nnoremap N :action FindPrevious +" vnoremap n :action FindNext +" vnoremap N :action FindPrevious +" nnoremap * :action FindWordAtCaret +" nnoremap # :action FindWordAtCaret + +nnoremap f :action FindInPath + +nnoremap :action EditorIncreaseFontSize +nnoremap :action EditorDecreaseFontSize +nnoremap :action EditorResetFontSize + +nnoremap ) :action MethodDown +nnoremap ( :action MethodUp + +nnoremap \ q +nnoremap q :action KJumpAction.Word0 + +noremap rl :source ~/.ideavimrc +noremap i :e C:/Users/josep/.ideavimrc + +nnoremap p :action SearchEverywhere +nnoremap c :action GotoClass +nnoremap t :action FileStructurePopup +nnoremap f :action GotoFile +nnoremap r :action RecentFiles +nnoremap u :action GotoTest + +nnoremap zd :action CollapseDocComments +nnoremap zD :action ExpandDocComments + +nnoremap H :action MoveEditorToOppositeTabGroup +nnoremap L :action MoveEditorToOppositeTabGroup +nnoremap 2 +nnoremap 2 + +nnoremap gt :action GotoTypeDeclaration +nnoremap s :action KJumpAction.Word0 +nnoremap q :action CloseContent +nnoremap d :action QuickImplementations +nnoremap t :action QuickJavaDoc +nnoremap e :action ShowErrorDescription +nnoremap u :action FindUsages +nnoremap rn :action RenameElement +nnoremap c :action ChangeColorScheme +nnoremap ; :actionlist +vnoremap a :action StringManipulation.AlignToColumns +nnoremap bb :action BuildCurrentProject +nnoremap br :action Run +nnoremap bd :action Debug +nnoremap bs :action BuildSolutionAction + +vnoremap gq :action aligncarets.AlignAction +nnoremap w :action SaveDocument + +noremap = :action ReformatCode +vnoremap = :action ReformatCode +nnoremap / :nohlsearch +nnoremap g/ :action Find +nnoremap ga :action GotoAction + +" So we jump to both line and column for marks +nnoremap ' ` +nnoremap Y y$ +nnoremap $ g_ +nnoremap vv ^vg_ +nnoremap g; :action JumpToLastChange +nnoremap g, :action JumpToNextChange +nnoremap ; : +nnoremap : ; + +nnoremap :action GoToTab1 +nnoremap :action GoToTab2 +nnoremap :action GoToTab3 +nnoremap :action GoToTab4 +nnoremap :action GoToTab5 +nnoremap :action GoToTab6 +nnoremap :action GoToTab7 +nnoremap :action GoToTab8 +nnoremap :action GoToTab9 + +nnoremap :action ActivateStructureToolWindow +nnoremap :action MoveLineDown +nnoremap :action MoveLineUp +nnoremap h +nnoremap l +noremap :action SurroundWithLiveTemplate +nnoremap gT +nnoremap gt +nnoremap :action EditorCloneCaretBelow +nnoremap :action EditorCloneCaretAbove +nnoremap A; +inoremap A; +nnoremap :action ToggleDistractionFreeMode +nnoremap :action ToggleFullScreen +nnoremap :action GotoNextError +nnoremap :action GotoPreviousError +nnoremap moo'o +nnoremap moO'o diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..8200569 --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,92 @@ +set -g default-shell /usr/bin/fish +set -g base-index 1 +set -s escape-time 0 +set -g history-limit 50000 +set -g display-time 3000 +set -g display-panes-time 3000 +set -g status-interval 5 +set -g default-terminal "screen-256color" +set -g status-keys emacs +set -g renumber-windows on +setw -g pane-base-index 1 +setw -g automatic-rename off +setw -g mode-keys vi + +set -g prefix C-s +unbind C-b +unbind '"' +unbind % +unbind Left +unbind Right +unbind Up +unbind Down +bind C-s send-prefix + +bind r source-file ~/.tmux.conf \; display "config reloaded" +bind v split-window -h -c '#{pane_current_path}' +bind s split-window -v -c '#{pane_current_path}' +bind X confirm-before -p "kill-window #W? (y/n)" kill-window +bind n switch-client -n +bind p switch-client -p +bind \; command-prompt +bind o if-shell '[ #{pane_index} = 1 ]' \ + 'last-pane ; swap-pane -dt 1' \ + 'swap-pane -dt 1' \ + +set -g mouse on +bind -T copy-mode-vi C-WheelUpPane send-keys -X halfpage-up +bind -T copy-mode-vi C-WheelDownPane send-keys -X halfpage-down + +# bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c" +bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "clip.exe" + +bind-key -T copy-mode-vi u send-keys -X halfpage-up +bind-key -T copy-mode-vi d send-keys -X halfpage-down +bind-key -T copy-mode-vi v send-keys -X begin-selection +bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel +bind-key -T copy-mode-vi r send-keys -X rectangle-toggle + +bind -n C-h select-pane -L +bind -n C-j select-pane -D +bind -n C-k select-pane -U +bind -n C-l select-pane -R +bind -n C-S-Left swap-window -t -1 \; previous-window +bind -n C-S-Right swap-window -t +1 \; next-window +bind -n M-0 select-window -t :=0 +bind -n M-1 select-window -t :=1 +bind -n M-2 select-window -t :=2 +bind -n M-3 select-window -t :=3 +bind -n M-4 select-window -t :=4 +bind -n M-5 select-window -t :=5 +bind -n M-6 select-window -t :=6 +bind -n M-7 select-window -t :=7 +bind -n M-8 select-window -t :=8 +bind -n M-9 select-window -t :=10 +bind -n M-l next-window +bind -n M-h previous-window +bind -n M-k send-keys C-l +bind -n M-Space resize-pane -Z + +set -g status-position top +set -g status-justify centre +set -g status-style fg=black,bg=colour238 +set -g status-left '#[bg=green,] #S ' +set-window-option -g window-status-format '#[bg=blue,fg=black,dim] #I #[bg=blue,fg=black,dim]#W ' +set-window-option -g window-status-current-format '#[bg=colour254,fg=black] [#I] #[bg=colour254,fg=black]#W ' +set -g status-right '#[bg=cyan] %H:%M #[bg=green] %A, %e %b %Y ' +set -g status-left-length 100 + +set -g window-style 'fg=colour248,bg=black' +set -g window-active-style 'fg=colour255,bg=colour237' +set -g pane-border-style 'fg=colour235,bg=colour238' +set -g pane-active-border-style 'fg=white,bg=colour236' + +set -g @resurrect-capture-pane-contents 'on' +set -g @resurrect-processes 'ranger' +set -g @resurrect-save 'S' +set -g @resurrect-restore 'R' + +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'schasse/tmux-jump' + +run -b ~/.tmux/plugins/tpm/tpm diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..21a0643 --- /dev/null +++ b/.vimrc @@ -0,0 +1,47 @@ +set nocompatible +syntax on +set number +set relativenumber +set splitbelow +set splitright +set tabstop=4 +set shiftwidth=4 +set expandtab +set nowrap +set hlsearch +set ignorecase +set smartcase +nohlsearch +set timeoutlen=1000 +set ttimeoutlen=0 +set noswapfile +set nobackup +set hidden +color peachpuff +let mapleader = "\" + +noremap +noremap / :nohlsearch +nnoremap D d$ +nnoremap Y y$ +nnoremap vv ^v$h +noremap \ q +noremap $ g_ +nnoremap ' ` +nnoremap ` ' + +nnoremap w :w +nnoremap rl :so $MYVIMRC +nnoremap q :q + +nnoremap h +nnoremap j +nnoremap k +nnoremap l + +if system('uname -r') =~ "Microsoft" + augroup Yank + autocmd! + autocmd TextYankPost * :call system('clip.exe ',@") + augroup END +endif diff --git a/README.md b/README.md new file mode 100644 index 0000000..992d346 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +## dotfiles + +### Main environment +- pengwin (WSL) +- alacritty +- fish +- tmux +- vim +- ideavim +- lf +- fzf +- bat +- rg +- exa +- sxiv (with X410) +- fd + +#### Old dotfiles +I also have my old backed up dotfiles from my previous System76 Ubuntu i3 setup with more stuff diff --git a/dotfiles-old.tar.gz b/dotfiles-old.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8109f32e36e8cad815a334472be70677bb368f99 GIT binary patch literal 20186 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