added atuin, changes in kanata, added wezterm

This commit is contained in:
liph
2026-03-18 20:51:43 +01:00
parent a5be19430e
commit a22912ce30
17 changed files with 1749 additions and 135 deletions
+1
View File
@@ -0,0 +1 @@
{"binaries":["atuin"],"binary_aliases":{},"cdylibs":[],"cstaticlibs":[],"install_layout":"flat","install_prefix":"/home/liph/.atuin/bin","modify_path":true,"provider":{"source":"cargo-dist","version":"0.31.0"},"source":{"app_name":"atuin","name":"atuin","owner":"atuinsh","release_type":"github"},"version":"18.13.3"}
+372
View File
@@ -0,0 +1,372 @@
## Base directory for Atuin data files (databases, keys, session, etc.)
## All data file paths default to being relative to this directory.
## linux/mac: ~/.local/share/atuin (or XDG_DATA_HOME/atuin)
## windows: %USERPROFILE%/.local/share/atuin
# data_dir = "~/.local/share/atuin"
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
# db_path = "~/.history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
# key_path = "~/.key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
# auto_sync = true
## enable or disable automatic update checks
# update_check = true
## address of the sync server
# sync_address = "https://api.atuin.sh"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
# search_mode = "daemon-fuzzy"
## which filter mode to use by default
## possible values: "global", "host", "session", "session-preload", "directory", "workspace"
## consider using search.filters to customize the enablement and order of filter modes
# filter_mode = "global"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false).
##
## To use workspace mode by default when available, set this to true and
## set filter_mode to "workspace" or leave it unspecified and
## set search.filters to include "workspace" before other filter modes.
# workspaces = false
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
# filter_mode_shell_up_key_binding = "global"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
## which style to use
## possible values: auto, full, compact
# style = "auto"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
inline_height = 20
## the maximum number of lines the interface should take up
## when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "inline_height"
# inline_height_shell_up_key_binding = 0
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
show_preview = true
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
# exit_mode = "return-original"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
# ctrl_n_shortcuts = false
## Show numeric shortcuts (1..9) beside list items in the TUI
## set to false to hide the moving numbers if you find them distracting
show_numeric_shortcuts = false
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# history_filter = [
# "^secret-cmd",
# "^innocuous-cmd .*--secret=.+",
# ]
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area",
# ]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
## Configure whether or not to show tabs for search and inspect
# show_tabs = true
## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
## tab, such as Search or Inspector, and other tabs you may wish to see. This will
## only be hidden if there are fewer than this count of lines available, and does not affect the use
## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
## This is ignored except in `compact` mode.
# auto_hide_height = 8
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command,
## whereas tab will put the command in the prompt for editing.
## If set to false, both enter and tab will place the command in the prompt for editing.
## This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
enter_accept = true
search_mode = "fuzzy"
## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line.
# command_chaining = false
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
# keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underline,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
[stats]
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
# common_subcommands = [
# "apt",
# "cargo",
# "composer",
# "dnf",
# "docker",
# "dotnet",
# "git",
# "go",
# "ip",
# "jj",
# "kubectl",
# "nix",
# "nmcli",
# "npm",
# "pecl",
# "pnpm",
# "podman",
# "port",
# "systemctl",
# "tmux",
# "yarn",
# ]
## Set commands that should be totally stripped and ignored from stats
# common_prefix = ["sudo"]
## Set commands that will be completely ignored from stats
# ignored_commands = [
# "cd",
# "ls",
# "vi"
# ]
[keys]
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
# scroll_exits = true
# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character
# exit_past_line_start = true
# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
# accept_past_line_end = true
# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
# accept_past_line_start = false
# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line.
# accept_with_backspace = false
[sync]
# Enable sync v2 by default
# This ensures that sync v2 is enabled for new installs only
# In a later release it will become the default across the board
records = true
[preview]
## which preview strategy to use to calculate the preview height (respects max_preview_height).
## possible values: auto, static
## auto: length of the selected command.
## static: length of the longest command stored in the history.
## fixed: use max_preview_height as fixed height.
# strategy = "auto"
[daemon]
enabled = true
autostart = true
## Enables using the daemon to sync.
# enabled = false
## Automatically start and manage the daemon when needed.
## Not compatible with `systemd_socket = true`.
# autostart = false
## How often the daemon should sync in seconds
# sync_frequency = 300
## The path to the unix socket used by the daemon (on unix systems)
## linux/mac: ~/.local/share/atuin/atuin.sock
## windows: Not Supported
# socket_path = "~/.local/share/atuin/atuin.sock"
## The daemon pidfile used for lifecycle management.
## Defaults to the Atuin data directory.
# pidfile_path = "~/.local/share/atuin/atuin-daemon.pid"
## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
## linux: false
## mac/windows: Not Supported
# systemd_socket = false
## The port that should be used for TCP on non unix systems
# tcp_port = 8889
# [theme]
## Color theme to use for rendering in the terminal.
## There are some built-in themes, including the base theme ("default"),
## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
## the string values as lowercase entries from this list:
## https://ogeon.github.io/docs/palette/master/palette/named/index.html
## If you provide a custom theme file, it should be called "NAME.toml" and the theme below
## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
# name = "autumn"
## Whether the theme manager should output normal or extra information to help fix themes.
## Boolean, true or false. If unset, left up to the theme manager.
# debug = true
[search]
## The list of enabled filter modes, in order of priority.
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
## Default filter mode can be overridden with the filter_mode setting.
# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]
[tmux]
## Enable using atuin with tmux popup (requires tmux >= 3.2)
## When enabled and running inside tmux, Atuin will use a popup window for interactive search.
## Set to false to disable the popup.
## This can also be controlled with the ATUIN_TMUX_POPUP environment variable.
## Note: The tmux popup is currently supported in zsh, bash, and fish shells. This currently doesn't work with iTerm native tmux integration.
# enabled = false
## Width of the tmux popup window
## Can be a percentage, or integer (e.g. "100" means 100 characters wide)
# width = "80%"
## Height of the tmux popup window
## Can be a percentage, or integer (e.g. "100" means 100 lines tall)
# height = "60%"
[ui]
[ai]
enabled = true
## Columns to display in the interactive search, from left to right.
## The selection indicator (" > ") is always shown first implicitly.
##
## Each column can be specified as a simple string (uses default width)
## or as an object with type, width, and expand:
## { type = "directory", width = 30, expand = true }
##
## Available column types (with default widths):
## duration (5) - Command execution duration (e.g., "123ms")
## time (8) - Relative time since execution (e.g., "59m ago")
## datetime (16) - Absolute timestamp (e.g., "2025-01-22 14:35")
## directory (20) - Working directory (truncated if too long)
## host (15) - Hostname where command was run
## user (10) - Username
## exit (3) - Exit code (colored by success/failure)
## command (*) - The command itself (expands by default)
##
## The "expand" option (default: true for command, false for others) makes a
## column fill remaining space. Only one column should have expand = true.
##
## Default:
# columns = ["duration", "time", "command"]
##
## Examples:
##
## Minimal - more space for commands:
# columns = ["duration", "command"]
##
## With wider directory column:
# columns = ["duration", { type = "directory", width = 30 }, "command"]
##
## Show host for multi-machine sync users:
# columns = ["duration", "time", "host", "command"]
##
## Show exit codes prominently:
# columns = ["exit", "duration", "command"]
##
## Make directory expand instead of command:
# columns = ["duration", "time", { type = "directory", expand = true }, { type = "command", expand = false }]
+8 -8
View File
@@ -13,14 +13,14 @@
(defalias (defalias
escctrl (tap-hold 250 250 esc lctrl) escctrl (tap-hold 250 250 esc lctrl)
a (multi f24 (tap-hold $tap-time $hold-time a lmet)) a (tap-hold $tap-time $hold-time a lmet)
s (multi f24 (tap-hold $tap-time $hold-time s lalt)) s (tap-hold $tap-time $hold-time s lalt)
d (multi f24 (tap-hold $tap-time $hold-time d lsft)) d (tap-hold $tap-time $hold-time d lsft)
f (multi f24 (tap-hold $tap-time $hold-time f lctl)) f (tap-hold $tap-time $hold-time f lctl)
j (multi f24 (tap-hold $tap-time $hold-time j rctl)) j (tap-hold $tap-time $hold-time j rctl)
k (multi f24 (tap-hold $tap-time $hold-time k rsft)) k (tap-hold $tap-time $hold-time k rsft)
l (multi f24 (tap-hold $tap-time $hold-time l ralt)) l (tap-hold $tap-time $hold-time l ralt)
; (multi f24 (tap-hold $tap-time $hold-time ; rmet)) ; (tap-hold $tap-time $hold-time ; rmet)
) )
(deflayer base (deflayer base
+24 -20
View File
@@ -76,14 +76,15 @@ layout {
} }
} }
spawn-at-startup "bash" "/mnt/tank/scripts/fix-bitwarden.sh"
spawn-at-startup "waybar" "-c" "/home/liph/.config/niri/waybar-niri/config.jsonc" "-s" "/home/liph/.config/niri/waybar-niri/style.css" spawn-at-startup "waybar" "-c" "/home/liph/.config/niri/waybar-niri/config.jsonc" "-s" "/home/liph/.config/niri/waybar-niri/style.css"
spawn-at-startup "swaync" spawn-at-startup "swaync"
// spawn-at-startup "kanshi" // spawn-at-startup "kanshi"
spawn-at-startup "swww-daemon" spawn-at-startup "swww-daemon"
spawn-at-startup "xwayland-satellite" spawn-at-startup "xwayland-satellite"
spawn-at-startup "gammastep" "-l" "47.38:8.54" "-t" "6000:4000" spawn-at-startup "gammastep" "-l" "47.38:8.54" "-t" "6000:4000"
spawn-at-startup "kitty" spawn-at-startup "wezterm"
spawn-at-startup "kanshi" // spawn-at-startup "kanshi"
spawn-at-startup "librewolf" spawn-at-startup "librewolf"
spawn-at-startup "sh" "-c" "sleep 5 && exec swayidle -w timeout 300 hyprlock timeout 600 'niri msg action power-off-monitors' resume 'niri msg action power-on-monitors' timeout 3600 'systemctl suspend'" spawn-at-startup "sh" "-c" "sleep 5 && exec swayidle -w timeout 300 hyprlock timeout 600 'niri msg action power-off-monitors' resume 'niri msg action power-on-monitors' timeout 3600 'systemctl suspend'"
prefer-no-csd prefer-no-csd
@@ -124,25 +125,15 @@ window-rule {
// } // }
window-rule { window-rule {
match at-startup=true app-id="kitty" match at-startup=true app-id="wezterm"
open-on-workspace "1" open-on-workspace "1"
clip-to-geometry true open-floating false
// clip-to-geometry true
} }
window-rule { window-rule {
match at-startup=false app-id="kitty" match at-startup=false app-id="wezterm"
clip-to-geometry true open-floating false
} // clip-to-geometry true
// browser window-rules
window-rule {
match at-startup=true app-id="librewolf"
open-on-workspace "2"
open-maximized true
// geometry-corner-radius 5
clip-to-geometry true
}
window-rule {
match at-startup=false app-id="librewolf"
clip-to-geometry true
} }
window-rule { window-rule {
match app-id="Claude" match app-id="Claude"
@@ -152,6 +143,19 @@ window-rule {
} }
clip-to-geometry true clip-to-geometry true
} }
// 1. Generic rule for all LibreWolf windows
window-rule {
match app-id="librewolf"
open-maximized true
clip-to-geometry true
open-floating false
}
// 2. Specific rule for windows opening at startup
window-rule {
match at-startup=true app-id="librewolf"
open-on-workspace "2"
}
window-rule { window-rule {
match app-id="floating_btop" match app-id="floating_btop"
default-column-width { default-column-width {
@@ -229,7 +233,7 @@ binds {
spawn "librewolf" spawn "librewolf"
} }
Mod+Alt+Return hotkey-overlay-title="Open Kitty" { Mod+Alt+Return hotkey-overlay-title="Open Kitty" {
spawn "kitty" spawn "wezterm"
} }
Mod+Alt+Space hotkey-overlay-title="Open Wofi" { Mod+Alt+Space hotkey-overlay-title="Open Wofi" {
spawn "wofi" "--show" "drun" spawn "wofi" "--show" "drun"
@@ -243,7 +247,7 @@ binds {
Mod+Mod5+E hotkey-overlay-title="Open Pulsemixer" { Mod+Mod5+E hotkey-overlay-title="Open Pulsemixer" {
spawn "kitty" "--class" "floating_pulsemixer" "-e" "pulsemixer" spawn "kitty" "--class" "floating_pulsemixer" "-e" "pulsemixer"
} }
Mod+Mod5+R hotkey-overlay-title="Open Bluetui" { Mod+Mod5+R allow-inhibiting=false hotkey-overlay-title="Open Bluetui" {
spawn "kitty" "--class" "floating_bluetui" "-e" "bluetui" spawn "kitty" "--class" "floating_bluetui" "-e" "bluetui"
} }
Mod+Mod5+T hotkey-overlay-title="Open Wavemon" { Mod+Mod5+T hotkey-overlay-title="Open Wavemon" {
+10
View File
@@ -0,0 +1,10 @@
alias cl = clear
alias y = yazi
alias neo = neofetch
alias a = aerc
alias oc = opencode
# nvim
alias n = nvim
alias nv = nvim
alias nano = nvim
+1
View File
@@ -0,0 +1 @@
def --env cld [path: path = "~"] { clear; cd $path }
+954
View File
@@ -0,0 +1,954 @@
# Nushell Config File
#
# version = "0.95.0"
# For more information on defining custom themes, see
# https://www.nushell.sh/book/coloring_and_theming.html
# And here is the theme collection
# https://github.com/nushell/nu_scripts/tree/main/themes
let dark_theme = {
# color for nushell primitives
separator: white
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
header: green_bold
empty: blue
# Closures can be used to choose colors for specific values.
# The value (in this case, a bool) is piped into the closure.
# eg) {|| if $in { 'light_cyan' } else { 'light_gray' } }
bool: light_cyan
int: white
filesize: cyan
duration: white
date: purple
range: white
float: white
string: white
nothing: white
binary: white
cell-path: white
row_index: green_bold
record: white
list: white
block: white
hints: dark_gray
search_result: { bg: red fg: white }
shape_and: purple_bold
shape_binary: purple_bold
shape_block: blue_bold
shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green
shape_datetime: cyan_bold
shape_directory: cyan
shape_external: cyan
shape_externalarg: green_bold
shape_external_resolved: light_yellow_bold
shape_filepath: cyan
shape_flag: blue_bold
shape_float: purple_bold
# shapes are used to change the cli syntax highlighting
shape_garbage: { fg: white bg: red attr: b}
shape_glob_interpolation: cyan_bold
shape_globpattern: cyan_bold
shape_int: purple_bold
shape_internalcall: cyan_bold
shape_keyword: cyan_bold
shape_list: cyan_bold
shape_literal: blue
shape_match_pattern: green
shape_matching_brackets: { attr: u }
shape_nothing: light_cyan
shape_operator: yellow
shape_or: purple_bold
shape_pipe: purple_bold
shape_range: yellow_bold
shape_record: cyan_bold
shape_redirection: purple_bold
shape_signature: green_bold
shape_string: green
shape_string_interpolation: cyan_bold
shape_table: blue_bold
shape_variable: purple
shape_vardecl: purple
shape_raw_string: light_purple
}
let light_theme = {
# color for nushell primitives
separator: dark_gray
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
header: green_bold
empty: blue
# Closures can be used to choose colors for specific values.
# The value (in this case, a bool) is piped into the closure.
# eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } }
bool: dark_cyan
int: dark_gray
filesize: cyan_bold
duration: dark_gray
date: purple
range: dark_gray
float: dark_gray
string: dark_gray
nothing: dark_gray
binary: dark_gray
cell-path: dark_gray
row_index: green_bold
record: dark_gray
list: dark_gray
block: dark_gray
hints: dark_gray
search_result: { fg: white bg: red }
shape_and: purple_bold
shape_binary: purple_bold
shape_block: blue_bold
shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green
shape_datetime: cyan_bold
shape_directory: cyan
shape_external: cyan
shape_externalarg: green_bold
shape_external_resolved: light_purple_bold
shape_filepath: cyan
shape_flag: blue_bold
shape_float: purple_bold
# shapes are used to change the cli syntax highlighting
shape_garbage: { fg: white bg: red attr: b}
shape_globpattern: cyan_bold
shape_int: purple_bold
shape_internalcall: cyan_bold
shape_keyword: cyan_bold
shape_list: cyan_bold
shape_literal: blue
shape_match_pattern: green
shape_matching_brackets: { attr: u }
shape_nothing: light_cyan
shape_operator: yellow
shape_or: purple_bold
shape_pipe: purple_bold
shape_range: yellow_bold
shape_record: cyan_bold
shape_redirection: purple_bold
shape_signature: green_bold
shape_string: green
shape_string_interpolation: cyan_bold
shape_table: blue_bold
shape_variable: purple
shape_vardecl: purple
shape_raw_string: light_purple
}
$env.config = {
show_banner: false
ls: {
use_ls_colors: true
}
rm: {
always_trash: false # always act as if -t was given. Can be overridden with -p
}
table: {
mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
show_empty: true # show 'empty list' and 'empty record' placeholders for command output
padding: { left: 1, right: 1 } # a left right padding of each column in a table
trim: {
methodology: wrapping # wrapping or truncating
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
truncating_suffix: "..." # A suffix used by the 'truncating' methodology
}
header_on_separator: false # show header text on separator/border line
# abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point
}
error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages
# datetime_format determines what a datetime rendered in the shell would look like.
# Behavior without this configuration point will be to "humanize" the datetime display,
# showing something like "a day ago."
datetime_format: {
# normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables
# table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format
}
explore: {
status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" },
command_bar_text: { fg: "#C4C9C6" },
highlight: { fg: "black", bg: "yellow" },
status: {
error: { fg: "white", bg: "red" },
warn: {}
info: {}
},
selected_cell: { bg: light_blue },
}
history: {
max_size: 100_000 # Session has to be reloaded for this to take effect
sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file
file_format: "plaintext" # "sqlite" or "plaintext"
isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions.
}
completions: {
case_sensitive: false # set to true to enable case-sensitive completions
quick: true # set this to false to prevent auto-selecting completions when only one remains
partial: true # set this to false to prevent partial filling of the prompt
algorithm: "prefix" # prefix or fuzzy
external: {
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
completer: null # check 'carapace_completer' above as an example
}
use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS
}
cursor_shape: {
emacs: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default)
vi_insert: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default)
vi_normal: underscore # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default)
}
color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record
footer_mode: 25 # always, never, number_of_rows, auto
float_precision: 2 # the precision for displaying floats in tables
buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
use_ansi_coloring: true
bracketed_paste: true # enable bracketed paste, currently useless on windows
edit_mode: vi # emacs, vi
shell_integration: {
# osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title
osc2: true
# osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory
osc7: true
# osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8
osc8: true
# osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal
osc9_9: false
# osc133 is several escapes invented by Final Term which include the supported ones below.
# 133;A - Mark prompt start
# 133;B - Mark prompt end
# 133;C - Mark pre-execution
# 133;D;exit - Mark execution finished with exit code
# This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is
osc133: true
# osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features
# 633;A - Mark prompt start
# 633;B - Mark prompt end
# 633;C - Mark pre-execution
# 633;D;exit - Mark execution finished with exit code
# 633;E - NOT IMPLEMENTED - Explicitly set the command line with an optional nonce
# 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal
# and also helps with the run recent menu in vscode
osc633: true
# reset_application_mode is escape \x1b[?1l and was added to help ssh work better
reset_application_mode: true
}
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this.
highlight_resolved_externals: false # true enables highlighting of external commands in the repl resolved by which.
recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it
plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration.
plugin_gc: {
# Configuration for plugin garbage collection
default: {
enabled: true # true to enable stopping of inactive plugins
stop_after: 10sec # how long to wait after a plugin is inactive to stop it
}
plugins: {
# alternate configuration for specific plugins, by name, for example:
#
# gstat: {
# enabled: false
# }
}
}
hooks: {
pre_prompt: [{||
if (which direnv | is-empty) {
return
}
try {
direnv export json | from json | default {} | load-env
if 'PATH' in $env {
$env.PATH = ($env.PATH | split row (char esep))
}
} catch {}
}]
pre_execution: [{ null }] # run before the repl input is run
env_change: {
PWD: [] # run if the PWD environment is different since the last repl input
}
display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline
command_not_found: { null } # return an error message when a command is not found
}
menus: [
# Configuration for default nushell menus
# Note the lack of source parameter
{
name: completion_menu
only_buffer_difference: false
marker: "| "
type: {
layout: columnar
columns: 4
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
}
style: {
text: green
selected_text: { attr: r }
description_text: yellow
match_text: { attr: u }
selected_match_text: { attr: ur }
}
}
{
name: ide_completion_menu
only_buffer_difference: false
marker: "| "
type: {
layout: ide
min_completion_width: 0,
max_completion_width: 50,
max_completion_height: 10, # will be limited by the available lines in the terminal
padding: 0,
border: true,
cursor_offset: 0,
description_mode: "prefer_right"
min_description_width: 0
max_description_width: 50
max_description_height: 10
description_offset: 1
# If true, the cursor pos will be corrected, so the suggestions match up with the typed text
#
# C:\> str
# str join
# str trim
# str split
correct_cursor_pos: false
}
style: {
text: green
selected_text: { attr: r }
description_text: yellow
match_text: { attr: u }
selected_match_text: { attr: ur }
}
}
{
name: history_menu
only_buffer_difference: true
marker: "? "
type: {
layout: list
page_size: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
}
{
name: help_menu
only_buffer_difference: true
marker: "? "
type: {
layout: description
columns: 4
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
selection_rows: 4
description_rows: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
}
]
keybindings: [
{
name: delete_one_word_backward
modifier: alt
keycode: backspace
mode: [emacs, vi_normal, vi_insert]
event: {edit: backspaceword}
}
{
name: completion_menu
modifier: none
keycode: tab
mode: [emacs vi_normal vi_insert]
event: {
until: [
{ send: menu name: completion_menu }
{ send: menunext }
{ edit: complete }
]
}
}
{
name: ide_completion_menu
modifier: control
keycode: char_n
mode: [emacs vi_normal vi_insert]
event: {
until: [
{ send: menu name: ide_completion_menu }
{ send: menunext }
{ edit: complete }
]
}
}
{
name: history_menu
modifier: control
keycode: char_r
mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: history_menu }
}
{
name: help_menu
modifier: none
keycode: f1
mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: help_menu }
}
{
name: completion_previous_menu
modifier: shift
keycode: backtab
mode: [emacs, vi_normal, vi_insert]
event: { send: menuprevious }
}
{
name: next_page_menu
modifier: control
keycode: char_x
mode: emacs
event: { send: menupagenext }
}
{
name: undo_or_previous_page_menu
modifier: control
keycode: char_z
mode: emacs
event: {
until: [
{ send: menupageprevious }
{ edit: undo }
]
}
}
{
name: escape
modifier: none
keycode: escape
mode: [emacs, vi_normal, vi_insert]
event: { send: esc } # NOTE: does not appear to work
}
{
name: cancel_command
modifier: control
keycode: char_c
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrlc }
}
{
name: quit_shell
modifier: control
keycode: char_d
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrld }
}
{
name: clear_screen
modifier: control
keycode: char_l
mode: [emacs, vi_normal, vi_insert]
event: { send: clearscreen }
}
{
name: search_history
modifier: control
keycode: char_q
mode: [emacs, vi_normal, vi_insert]
event: { send: searchhistory }
}
{
name: open_command_editor
modifier: control
keycode: char_o
mode: [emacs, vi_normal, vi_insert]
event: { send: openeditor }
}
{
name: move_up
modifier: none
keycode: up
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: menuup }
{ send: up }
]
}
}
{
name: move_down
modifier: none
keycode: down
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: menudown }
{ send: down }
]
}
}
{
name: move_left
modifier: none
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: menuleft }
{ send: left }
]
}
}
{
name: move_right_or_take_history_hint
modifier: none
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: historyhintcomplete }
{ send: menuright }
{ send: right }
]
}
}
{
name: move_one_word_left
modifier: control
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: { edit: movewordleft }
}
{
name: move_one_word_right_or_take_history_hint
modifier: control
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: historyhintwordcomplete }
{ edit: movewordright }
]
}
}
{
name: move_to_line_start
modifier: none
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: { edit: movetolinestart }
}
{
name: move_to_line_start
modifier: control
keycode: char_a
mode: [emacs, vi_normal, vi_insert]
event: { edit: movetolinestart }
}
{
name: move_to_line_end_or_take_history_hint
modifier: none
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: historyhintcomplete }
{ edit: movetolineend }
]
}
}
{
name: move_to_line_end_or_take_history_hint
modifier: control
keycode: char_e
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: historyhintcomplete }
{ edit: movetolineend }
]
}
}
{
name: move_to_line_start
modifier: control
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: { edit: movetolinestart }
}
{
name: move_to_line_end
modifier: control
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: { edit: movetolineend }
}
{
name: move_up
modifier: control
keycode: char_p
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: menuup }
{ send: up }
]
}
}
{
name: move_down
modifier: control
keycode: char_t
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{ send: menudown }
{ send: down }
]
}
}
{
name: delete_one_character_backward
modifier: none
keycode: backspace
mode: [emacs, vi_insert]
event: { edit: backspace }
}
{
name: delete_one_word_backward
modifier: control
keycode: backspace
mode: [emacs, vi_insert]
event: { edit: backspaceword }
}
{
name: delete_one_character_forward
modifier: none
keycode: delete
mode: [emacs, vi_insert]
event: { edit: delete }
}
{
name: delete_one_character_forward
modifier: control
keycode: delete
mode: [emacs, vi_insert]
event: { edit: delete }
}
{
name: delete_one_character_backward
modifier: control
keycode: char_h
mode: [emacs, vi_insert]
event: { edit: backspace }
}
{
name: delete_one_word_backward
modifier: control
keycode: char_w
mode: [emacs, vi_insert]
event: { edit: backspaceword }
}
{
name: move_left
modifier: none
keycode: backspace
mode: vi_normal
event: { edit: moveleft }
}
{
name: newline_or_run_command
modifier: none
keycode: enter
mode: emacs
event: { send: enter }
}
{
name: move_left
modifier: control
keycode: char_b
mode: emacs
event: {
until: [
{ send: menuleft }
{ send: left }
]
}
}
{
name: move_right_or_take_history_hint
modifier: control
keycode: char_f
mode: emacs
event: {
until: [
{ send: historyhintcomplete }
{ send: menuright }
{ send: right }
]
}
}
{
name: redo_change
modifier: control
keycode: char_g
mode: emacs
event: { edit: redo }
}
{
name: undo_change
modifier: control
keycode: char_z
mode: emacs
event: { edit: undo }
}
{
name: paste_before
modifier: control
keycode: char_y
mode: emacs
event: { edit: pastecutbufferbefore }
}
{
name: cut_word_left
modifier: control
keycode: char_w
mode: emacs
event: { edit: cutwordleft }
}
{
name: cut_line_to_end
modifier: control
keycode: char_k
mode: emacs
event: { edit: cuttoend }
}
{
name: cut_line_from_start
modifier: control
keycode: char_u
mode: emacs
event: { edit: cutfromstart }
}
{
name: swap_graphemes
modifier: control
keycode: char_t
mode: emacs
event: { edit: swapgraphemes }
}
{
name: move_one_word_left
modifier: alt
keycode: left
mode: emacs
event: { edit: movewordleft }
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: right
mode: emacs
event: {
until: [
{ send: historyhintwordcomplete }
{ edit: movewordright }
]
}
}
{
name: move_one_word_left
modifier: alt
keycode: char_b
mode: emacs
event: { edit: movewordleft }
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: char_f
mode: emacs
event: {
until: [
{ send: historyhintwordcomplete }
{ edit: movewordright }
]
}
}
{
name: delete_one_word_forward
modifier: alt
keycode: delete
mode: emacs
event: { edit: deleteword }
}
{
name: delete_one_word_backward
modifier: alt
keycode: backspace
mode: emacs
event: { edit: backspaceword }
}
{
name: delete_one_word_backward
modifier: alt
keycode: char_m
mode: emacs
event: { edit: backspaceword }
}
{
name: cut_word_to_right
modifier: alt
keycode: char_d
mode: emacs
event: { edit: cutwordright }
}
{
name: upper_case_word
modifier: alt
keycode: char_u
mode: emacs
event: { edit: uppercaseword }
}
{
name: lower_case_word
modifier: alt
keycode: char_l
mode: emacs
event: { edit: lowercaseword }
}
{
name: capitalize_char
modifier: alt
keycode: char_c
mode: emacs
event: { edit: capitalizechar }
}
# The following bindings with `*system` events require that Nushell has
# been compiled with the `system-clipboard` feature.
# This should be the case for Windows, macOS, and most Linux distributions
# Not available for example on Android (termux)
# If you want to use the system clipboard for visual selection or to
# paste directly, uncomment the respective lines and replace the version
# using the internal clipboard.
{
name: copy_selection
modifier: control_shift
keycode: char_c
mode: emacs
event: { edit: copyselection }
# event: { edit: copyselectionsystem }
}
{
name: cut_selection
modifier: control_shift
keycode: char_x
mode: emacs
event: { edit: cutselection }
# event: { edit: cutselectionsystem }
}
# {
# name: paste_system
# modifier: control_shift
# keycode: char_v
# mode: emacs
# event: { edit: pastesystem }
# }
{
name: select_all
modifier: control_shift
keycode: char_a
mode: emacs
event: { edit: selectall }
}
]
}
def --env cx [arg] {
cd $arg
ls -l
}
alias l = ls --all
alias c = clear
alias ll = ls -l
alias lt = eza --tree --level=2 --long --icons --git
alias v = nvim
alias as = aerospace
alias asr = atuin scripts run
def ff [] {
aerospace list-windows --all | fzf --bind 'enter:execute(bash -c "aerospace focus --window-id {1}")+abort'
}
# Git
alias gc = git commit -m
alias gca = git commit -a -m
alias gp = git push origin HEAD
alias gpu = git pull origin
alias gst = git status
alias glog = git log --graph --topo-order --pretty='%w(100,0,6)%C(yellow)%h%C(bold)%C(black)%d %C(cyan)%ar %C(green)%an%n%C(bold)%C(white)%s %N' --abbrev-commit
alias gdiff = git diff
alias gco = git checkout
alias gb = git branch
alias gba = git branch -a
alias gadd = git add
alias ga = git add -p
alias gcoall = git checkout -- .
alias gr = git remote
alias gre = git reset
# K8s
alias k = kubectl
alias ka = kubectl apply -f
alias kg = kubectl get
alias kd = kubectl describe
alias kdel = kubectl delete
alias kl = kubectl logs
alias kgpo = kubectl get pod
alias kgd = kubectl get deployments
alias kc = kubectx
alias kns = kubens
alias kl = kubectl logs -f
alias ke = kubectl exec -it
# source ~/.zoxide.nu
source ~/.cache/carapace/init.nu
source ~/.local/share/atuin/init.nu
use ~/.cache/starship/init.nu
use ~/.cache/mise/init.nu
$env.DIRENV_LOG_FORMAT = ""
source ~/.config/nushell/vendor/autoload/wt.nu
+3 -22
View File
@@ -1,5 +1,5 @@
# config.nu # config.nu
# def --env cld [path: path = "~"] { clear; cd $path }
# Installed by: # Installed by:
# version = "0.103.0" # version = "0.103.0"
# #
@@ -151,28 +151,9 @@ let light_theme = {
shape_raw_string: light_purple shape_raw_string: light_purple
} }
# Example prompt with Nerd Font icons
def create_left_prompt [] {
let dir = ([
(char -u "e0b1"),
($env.PWD | str replace $nu.home-path "~")
] | str join)
let git_branch = (do -i { git rev-parse --abbrev-ref HEAD } | default "")
$"(ansi green)($dir)(ansi reset) (ansi purple)($git_branch)(ansi reset)"
}
$env.PROMPT_COMMAND = { create_left_prompt }
$env.GIT_DISCOVERY_ACROSS_FILESYSTEM = "1" # Allows Git to check parent dirs
def --wrapped git [...args] {
^git ...$args err> /dev/null
}
## Alias ## Alias
source ~/.alias.nu source ~/.config/nushell/.alias.nu
source ~/.config/nushell/.calias.nu
### autocompletion ### autocompletion
## zoxide ## zoxide
+153
View File
@@ -361,3 +361,156 @@ cld
exit exit
bat ~/.ssh/id_ed25519.pub bat ~/.ssh/id_ed25519.pub
exit exit
ls ~/.config
exit
y
yazi
cd ~/.config/nushell
ls
nvim config.nu
touch config-om.nu
nvim config-om.nu
exit
y
yazi
ls
q
cd ~/.config/nushell
touch om.env
nvim om.env
exit
cd ~/.config/nushell
nvim config-om.nu
exit
y
yazi
exit
y
yazi
exit
nvim ~/.config/nushell/config-om.nu
nvim ~/.config/nushell/config.nu
cd ~/.config/nushell
touch .alias.nu
nvim ~/.config/nushell/config.nu
nvim .alias.nu
y
yazi
y
yazi
y
exit
y
yazi
nvim ~/.config/nushell/config-om.nu
nvim ~/.config/nushell/.alias.nu
exit
y
gcc
n
nvim ~/.config/nushell/config.nu
exit
y
yazi
n
y
yazi
nvim .alias.nu
y
yazi
nvim ~/.config/nushell/.alias.nu
nv
mv
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
exit
y
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
exit
y
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/config.nu
source ~/.config/nushell/config.nu
exit
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/config.nu
source ~/.config/nushell/config.nu
exit
y
n
ls dotfiles/
nvim ~/.config/nushell/.alias.nu
exit
source ~/.config/nushell/config.nu
cld
cd dotfiles/
cld
nvim ~/.config/nushell/.alias.nu
exit
cld
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
exit
source ~/.config/nushell/config.nu
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
cd
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
nvim ~/.config/nushell/.alias.nu
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
exit
cd ~/.config/nushell
cd
cd ~/.config/nushell
cld
y
eix
exit
y
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
y
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
y
exit
cd ~/.config/nushell
cld
cd
cd ~/.config/nushell
y
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
y
source ~/.config/nushell/config.nu
cd ~/.config/nushell
cld
y
source ~/.config/nushell/.alias.nu
n ~/.config/nushell/.alias.nu
source ~/.config/nushell/.alias.nu
n
cld
exit
ls dotfiles
cld
ls -la ~/dotfiles/
ls ~/dotfiles/
exit
+116
View File
@@ -0,0 +1,116 @@
#
# Nushell Environment Config File
#
# version = "0.95.0"
def create_left_prompt [] {
let dir = match (do -i { $env.PWD | path relative-to $nu.home-path }) {
null => $env.PWD
'' => '~'
$relative_pwd => ([~ $relative_pwd] | path join)
}
let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold })
let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold })
let path_segment = $"($path_color)($dir)"
$path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)"
}
def create_right_prompt [] {
# create a right prompt in magenta with green separators and am/pm underlined
let time_segment = ([
(ansi reset)
(ansi magenta)
(date now | format date '%x %X') # try to respect user's locale
] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" |
str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}")
let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([
(ansi rb)
($env.LAST_EXIT_CODE)
] | str join)
} else { "" }
([$last_exit_code, (char space), $time_segment] | str join)
}
# Use nushell functions to define your right and left prompt
$env.PROMPT_COMMAND = {|| create_left_prompt }
# FIXME: This default is not implemented in rust code as of 2023-09-08.
$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
# The prompt indicators are environmental variables that represent
# the state of the prompt
$env.PROMPT_INDICATOR = {|| "> " }
$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " }
$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " }
$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " }
# If you want previously entered commands to have a different prompt from the usual one,
# you can uncomment one or more of the following lines.
# This can be useful if you have a 2-line prompt and it's taking up a lot of space
# because every command entered takes up 2 lines instead of 1. You can then uncomment
# the line below so that previously entered commands show with a single `🚀`.
# $env.TRANSIENT_PROMPT_COMMAND = {|| "🚀 " }
# $env.TRANSIENT_PROMPT_INDICATOR = {|| "" }
# $env.TRANSIENT_PROMPT_INDICATOR_VI_INSERT = {|| "" }
# $env.TRANSIENT_PROMPT_INDICATOR_VI_NORMAL = {|| "" }
# $env.TRANSIENT_PROMPT_MULTILINE_INDICATOR = {|| "" }
# $env.TRANSIENT_PROMPT_COMMAND_RIGHT = {|| "" }
# Specifies how environment variables are:
# - converted from a string to a value on Nushell startup (from_string)
# - converted from a value back to a string when running external commands (to_string)
# Note: The conversions happen *after* config.nu is loaded
$env.ENV_CONVERSIONS = {
"PATH": {
from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
}
"Path": {
from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
}
}
# Directories to search for scripts when calling source or use
# The default for this is $nu.default-config-dir/scripts
$env.NU_LIB_DIRS = [
($nu.default-config-dir | path join 'scripts') # add <nushell-config-dir>/scripts
($nu.data-dir | path join 'completions') # default home for nushell completions
]
# Directories to search for plugin binaries when calling register
# The default for this is $nu.default-config-dir/plugins
$env.NU_PLUGIN_DIRS = [
($nu.default-config-dir | path join 'plugins') # add <nushell-config-dir>/plugins
]
# To add entries to PATH (on Windows you might use Path), you can use the following pattern:
# $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
# An alternate way to add entries to $env.PATH is to use the custom command `path add`
# which is built into the nushell stdlib:
use std "path add"
path add "/opt/homebrew/bin"
path add "/opt/homebrew/sbin"
path add ($env.HOME | path join ".turso")
path add ($env.HOME | path join ".local/share/mise/shims")
path add "/Users/omerxx/.local/bin"
# To load from a custom file you can use:
# source ($nu.default-config-dir | path join 'custom.nu')
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
zoxide init nushell | save -f ~/.zoxide.nu
mkdir ~/.cache/mise
^mise activate nu | save -f ~/.cache/mise/init.nu
$env.STARSHIP_CONFIG = "/Users/omerxx/.config/starship/starship.toml"
$env.CARAPACE_BRIDGES = 'zsh,fish,bash,inshellisense' # optional
mkdir ~/.cache/carapace
carapace _carapace nushell | save --force ~/.cache/carapace/init.nu
$env.EDITOR = "nvim"
+2 -2
View File
@@ -41,11 +41,11 @@ return {
"stylelint", "stylelint",
"htmlhint", "htmlhint",
"hadolint", "hadolint",
"eslint_d", -- "eslint_d",
"rubocop", "rubocop",
"markdownlint", "markdownlint",
-- formatters (optional) -- formatters (optional)
"black", -- "black",
"stylua", "stylua",
"shfmt", "shfmt",
"prettier", "prettier",
+51
View File
@@ -0,0 +1,51 @@
-- Pull the wezterm API
local wezterm = require("wezterm")
-- This will hold the configuration.
local config = wezterm.config_builder()
-- General
config.font_size = 11
config.line_height = 1.22
config.font = wezterm.font("JetBrainsMono Nerd Font")
config.color_scheme = "Gruvbox Material (Gogh)"
config.colors = {
cursor_bg = "#89B482",
cursor_border = "#89B482",
}
config.inactive_pane_hsb = {
saturation = 1.0,
brightness = 1.0,
}
config.window_background_opacity = 0.9
config.window_decorations = "NONE"
config.enable_tab_bar = false
-- Key bindings
config.keys = {
{
key = "w",
mods = "CMD",
action = wezterm.action.CloseCurrentPane({ confirm = false }),
},
{
key = "d",
mods = "CMD",
action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }),
},
{
key = "d",
mods = "CMD|SHIFT",
action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }),
},
{
key = "k",
mods = "CMD",
action = wezterm.action.SendString("clear\n"),
},
}
return config
@@ -557,6 +557,7 @@ local EXTS = {
nsc = "application/conference", nsc = "application/conference",
nsf = "application/lotus-notes", nsf = "application/lotus-notes",
ntf = "application/nitf", ntf = "application/nitf",
nu = "text/nu",
nzb = "application/nzb", nzb = "application/nzb",
oa2 = "application/fujitsu.oasys2", oa2 = "application/fujitsu.oasys2",
oa3 = "application/fujitsu.oasys3", oa3 = "application/fujitsu.oasys3",
@@ -689,7 +690,7 @@ local EXTS = {
ram = "audio/pn-realaudio", ram = "audio/pn-realaudio",
rar = "application/rar", rar = "application/rar",
ras = "image/cmu-raster", ras = "image/cmu-raster",
rb = "text/ruby", rb = "text/nu",
rcprofile = "application/ipunplugged.rcprofile", rcprofile = "application/ipunplugged.rcprofile",
rdf = "application/rdf+xml", rdf = "application/rdf+xml",
rdz = "application/data-vision.rdz", rdz = "application/data-vision.rdz",
@@ -1,5 +1,6 @@
zshrc /home/liph/dotfiles/zshrc z zshrc /home/liph/dotfiles/zshrc z
yazi /home/liph/dotfiles/yazi/.config/yazi y yazi /home/liph/dotfiles/yazi/.config/yazi y
wezterm /home/liph/dotfiles/wezterm/.config/wezterm d,w
tmux /home/liph/dotfiles/tmux d,t tmux /home/liph/dotfiles/tmux d,t
tex /home/liph/Documents/tex D,t tex /home/liph/Documents/tex D,t
tank /mnt/tank t,t tank /mnt/tank t,t
@@ -21,4 +22,5 @@ Downloads /home/liph/Downloads D,d
dotfiles /home/liph/dotfiles d,d dotfiles /home/liph/dotfiles d,d
Documents /home/liph/Documents D,D Documents /home/liph/Documents D,D
.config /home/liph/.config c .config /home/liph/.config c
cloud /home/liph/cloud C
aerc /home/liph/dotfiles/aerc/.config/aerc d,a aerc /home/liph/dotfiles/aerc/.config/aerc d,a
+12 -6
View File
@@ -114,12 +114,18 @@ alias ripp='rip search tidal album'
alias ripc='nvim ~/.config/streamrip/config.toml' alias ripc='nvim ~/.config/streamrip/config.toml'
# paru # paru
alias ys='$AUR_HELPER -S' # install packoz alias ys='paru -S' # install packoz
alias yr='$AUR_HELPER -Rn' # remove package alias yr='paru -Rn' # remove package
alias yy='$AUR_HELPER -Ss' # paru search for package alias yy='paru -Ss' # paru search for package
alias yay='$AUR_HELPER' alias yay='paru'
alias yi='$AUR_HELPER -Si' # aur info alias yi='paru -Si' # aur info
alias which-aur="echo 'Currently using: $AUR_HELPER'" # alias which-aur="echo 'Currently using: paru'"
# alias ys='$AUR_HELPER -S' # install packoz
# alias yr='$AUR_HELPER -Rn' # remove package
# alias yy='$AUR_HELPER -Ss' # paru search for package
# alias yay='$AUR_HELPER'
# alias yi='$AUR_HELPER -Si' # aur info
# alias which-aur="echo 'Currently using: $AUR_HELPER'"
# trash-cli # trash-cli
alias te='trash-empty' alias te='trash-empty'
+6 -3
View File
@@ -2,17 +2,20 @@
#zinit ice depth=1; zinit light romkatv/powerlevel10k #zinit ice depth=1; zinit light romkatv/powerlevel10k
# Add in plugins # Add in plugins
zinit light zsh-users/zsh-syntax-highlighting # zinit light zsh-users/zsh-syntax-highlighting
# zinit light zdharma-continuum/fast-syntax-highlighting zinit light Aloxaf/fzf-tab
zinit light zdharma-continuum/fast-syntax-highlighting
zinit light zsh-users/zsh-completions zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions zinit light zsh-users/zsh-autosuggestions
zinit light Aloxaf/fzf-tab
zinit light hlissner/zsh-autopair zinit light hlissner/zsh-autopair
zinit light ajeetdsouza/zoxide zinit light ajeetdsouza/zoxide
zinit ice lucid wait as"completion" zinit ice lucid wait as"completion"
zinit snippet https://github.com/eza-community/eza/blob/main/completions/zsh/_eza zinit snippet https://github.com/eza-community/eza/blob/main/completions/zsh/_eza
zinit light MichaelAquilina/zsh-you-should-use zinit light MichaelAquilina/zsh-you-should-use
zinit light wfxr/forgit zinit light wfxr/forgit
zinit load atuinsh/atuin
zinit load 'zsh-users/zsh-history-substring-search'
# zinit light trapd00r/zsh-syntax-highlighting-filetypes # zinit light trapd00r/zsh-syntax-highlighting-filetypes
# Add in snippets from "OhMyZsh“ # Add in snippets from "OhMyZsh“
+32 -73
View File
@@ -1,99 +1,56 @@
# set the directory we want to store zinit and plugins # Set the directory to store zinit and plugins
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.locale/share}/zinit/zinit.git" ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.locale/share}/zinit/zinit.git"
# Download Zinit # Download Zinit if not present
if [ ! -d "$ZINIT_HOME" ]; then if [ ! -d "$ZINIT_HOME" ]; then
mkdir -p "$(dirname $ZINIT_HOME)" mkdir -p "$(dirname $ZINIT_HOME)"
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi fi
# Initialization settings for zsh-vi-mode
ZVM_INIT_MODE=sourcing ZVM_INIT_MODE=sourcing
# Fix zsh-vi-mode conflicts with fzf
# CONSOLIDATED FUNCTION: All zsh-vi-mode logic must be in one place [2]
function zvm_after_init() { function zvm_after_init() {
# Fix fzf interaction
source <(fzf --zsh) source <(fzf --zsh)
# Bind Atuin search for both Insert and Normal modes [9]
zvm_bindkey viins '^R' atuin-search
zvm_bindkey vicmd '^R' atuin-search
# Re-bind autosuggest-accept
bindkey '^@' autosuggest-accept
} }
# Source zsh, alias
source "${ZINIT_HOME}/zinit.zsh"
source ~/.aliases.zsh
source ~/.plugins.zsh
source ~/.export.zsh
# https://github.com/jungunn/fzf-git.sh
# source ~/scripts/fzf-git.sh
# you should unse
# source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh
# Set up fzf key bindings and fuzzy completion
## hydroxide
#source ~/scripts/hydroxide.sh
# env aur helper
if command -v paru &> /dev/null; then
export AUR_HELPER="paru"
elif command -v yay &> /dev/null; then
export AUR_HELPER="yay"
else
export AUR_HELPER="pacman" # Fallback to pacman
fi
#export AUR_HELPER="paru"
# Load completions # Load completions
autoload -U compinit && compinit autoload -U compinit && compinit
## zinit cdreplay -q # Oh My Posh initialization
eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/zen.toml)" eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/zen.toml)"
#eval "$(ssh-agent -s)" # Pyenv setup
#if ! pgrep -u "$USER" ssh-agent > /dev/null; then
# ssh-agent > ~/.ssh-agent.env
#fi
#if [[ -z "$SSH_AUTH_SOCK" ]]; then
# source ~/.ssh-agent.env > /dev/null
#fi
# pyenv
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
# Bindkey # Custom Keybinds
# bindkey -e
# bindkey '^p' history-search-backward
# bindkey '^n' history-search-forward
bindkey -s '^T' ' tea^M ^M' bindkey -s '^T' ' tea^M ^M'
# History
HISTSIZE=5000
HISTFILE=~/.zsh_history
SAVEHIST=$HISTSIZE
HISTDUP=erase
setopt appendhistory
setopt sharehistory
setopt hist_ignore_space
setopt hist_ignore_all_dups
setopt hist_save_no_dups
setopt hist_ignore_dups
setopt hist_find_no_dups
# Completion styling # Completion styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
# Shell integration # Tool initializations
eval "$(fzf --zsh)" eval "$(fzf --zsh)"
eval "$(zoxide init --cmd cd zsh)" eval "$(zoxide init --cmd cd zsh)"
eval "$(thefuck --alias)" eval "$(thefuck --alias)"
eval "$(navi widget zsh)" eval "$(navi widget zsh)"
# pyenv https://github.com/pyenv/pyenv-virtualenv
# eval "$(pyenv init --path)"
eval "$(pyenv init -)" eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
# starship
# eval "$(starship init zsh)"
# FZF Run command customizations
_fzf_comprun() { _fzf_comprun() {
local command=$1 local command=$1
shift shift
case "$command" in case "$command" in
cd) fzf --preview 'eza --tree --color=always {} | head -200' "$@" ;; cd) fzf --preview 'eza --tree --color=always {} | head -200' "$@" ;;
export|unset) fzf --preview "eval 'echo \$' {}" "$@" ;; export|unset) fzf --preview "eval 'echo \$' {}" "$@" ;;
@@ -102,6 +59,7 @@ _fzf_comprun() {
esac esac
} }
# Yazi function
function y() { function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp" yazi "$@" --cwd-file="$tmp"
@@ -111,23 +69,24 @@ function y() {
rm -f -- "$tmp" rm -f -- "$tmp"
} }
# Load a few important annexes, without Turbo # Zinit Annexes
# (this is currently required for annexes)
zinit light-mode for \ zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \ zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \ zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \ zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust zdharma-continuum/zinit-annex-rust
### End of Zinit's installer chunk # Path exports
# . "$HOME/.local/bin/env"
# In .zshrc, after zinit loads
function zvm_after_init() {
# Re-bind ctrl+space for autosuggestions if needed
bindkey '^@' autosuggest-accept
}
export PATH="$HOME/.local/bin:$PATH" export PATH="$HOME/.local/bin:$PATH"
# opencode
export PATH=/home/liph/.opencode/bin:$PATH export PATH=/home/liph/.opencode/bin:$PATH
# Source Zinit and your other configuration files
source "${ZINIT_HOME}/zinit.zsh"
source ~/.aliases.zsh
source ~/.plugins.zsh
source ~/.export.zsh
# Atuin Initialization [10]
# Must be at the very end to ensure hooks are applied correctly [1]
. "$HOME/.atuin/bin/env"
eval "$(atuin init zsh)"