diff --git a/machines/enka/nushell/configuration.nu b/machines/enka/nushell/configuration.nu index f6ef278..0cc64b7 100644 --- a/machines/enka/nushell/configuration.nu +++ b/machines/enka/nushell/configuration.nu @@ -1,25 +1,45 @@ -let theme = { - separator: white - leading_trailing_space_bg: { attr: n } - header: green_bold - empty: blue - bool: {|| if $in { "light_cyan" } else { "light_red" }} - int: white - filesize: cyan - duration: white - date: purple - range: white - float: white - string: white - nothing: white +if (tty) == /dev/tty1 { + Hyprland +} + +$env.config = { + bracketed_paste: true + buffer_editor: "" + datetime_format: {} + edit_mode: vi + error_style: "fancy" + float_precision: 2 + footer_mode: 25 + render_right_prompt_on_last_line: false + shell_integration: false + show_banner: false + use_ansi_coloring: true + use_grid_icons: true + use_kitty_protocol: false +} + +$env.config.color_config = { binary: white - cell-path: white - row_index: green_bold - record: white - list: white block: white + bool: {|| if $in { "light_cyan" } else { "light_red" }} + cell-path: white + date: purple + duration: white + empty: blue + filesize: cyan + float: white + header: green_bold hints: dark_gray + int: white + leading_trailing_space_bg: { attr: n } + list: white + nothing: white + range: white + record: white + row_index: green_bold search_result: { bg: red fg: white } + separator: white + string: white shape_and: purple_bold shape_binary: purple_bold @@ -53,652 +73,338 @@ let theme = { shape_string: green shape_string_interpolation: cyan_bold shape_table: blue_bold - shape_variable: purple shape_vardecl: purple + shape_variable: purple } -$env.config = { - show_banner: false +$env.config.ls = { + clickable_links: true + use_ls_colors: true +} - ls: { - use_ls_colors: true - clickable_links: true +$env.config.rm = { + always_trash: false +} + +$env.config.table = { + header_on_separator: false + index_mode: always + mode: heavy + padding: { left: 1, right: 1 } + show_empty: true + trim: { + methodology: wrapping + wrapping_try_keep_words: true + truncating_suffix: "..." } +} - rm: { - always_trash: false +$env.config.explore = { + command_bar_text: { fg: "#C4C9C6" } + highlight: { fg: black, bg: yellow } + status: { + error: { fg: white, bg: red } + warn: {} + info: {} } - + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" } table: { - mode: heavy - index_mode: always - show_empty: true - padding: { left: 1, right: 1 } - trim: { - methodology: wrapping - wrapping_try_keep_words: true - truncating_suffix: "..." - } - header_on_separator: false + split_line: { fg: "#404040" } + selected_cell: { bg: light_blue } + selected_row: {} + selected_column: {} } - - error_style: "fancy" - - 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: {} - }, - table: { - split_line: { fg: "#404040" } - selected_cell: { bg: light_blue } - selected_row: {} - selected_column: {} - }, - } - - history: { - max_size: 100_000 - sync_on_enter: true - file_format: plaintext - isolation: false - } - - completions: { - case_sensitive: false - quick: true - partial: true - algorithm: fuzzy - external: { - enable: true - max_results: 100 - completer: {|tokens| - let expanded_alias = scope aliases | where name == $tokens.0 | get --ignore-errors expansion.0 - - let tokens = if $expanded_alias != null { - $expanded_alias | split row " " | append ($tokens | skip 1) - } else { - $tokens - } - - let cmd = $tokens.0 | str trim --left --char "^" - - let completions = ^carapace $cmd nushell $tokens | from json | default [] - - if ($completions | is-empty) { - let path = $tokens | last - ls $"($path)*" | each {|it| - let choice = if ($path | str ends-with "/") { - $path | path join ($it.name | path basename) - } else { - $path | path dirname | path join ($it.name | path basename) - } - - let choice = if ($it.type == "dir") and (not ($choice | str ends-with "/")) { - $"($choice)/" - } else { - $choice - } - - if ($choice | str contains " ") { - $"`($choice)`" - } else { - $choice - } - } - } else if ($completions | where value =~ "^.*ERR$" | is-empty) { - $completions - } else { - null - } - } - } - } - - filesize: { - metric: true - format: auto - } - - cursor_shape: { - emacs: line - vi_insert: line - vi_normal: block - } - - color_config: $theme - use_grid_icons: true - footer_mode: 25 - float_precision: 2 - buffer_editor: "" - use_ansi_coloring: true - bracketed_paste: true - edit_mode: vi - shell_integration: false - render_right_prompt_on_last_line: false - use_kitty_protocol: false - - hooks: { - pre_prompt: [] - pre_execution: [] - env_change: {} - display_output: "if (term size).columns >= 100 { table --expand } else { table }" - command_not_found: {} - } - - menus: [ - { - name: completion_menu - only_buffer_difference: false - marker: "| " - type: { - layout: columnar - columns: 4 - col_width: 20 - col_padding: 2 - } - style: { - text: green - selected_text: green_reverse - description_text: yellow - } - } - { - 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 - col_padding: 2 - selection_rows: 4 - description_rows: 10 - } - style: { - text: green - selected_text: green_reverse - description_text: yellow - } - } - ] - - keybindings: [ - { - 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: 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 } - } - { - 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_forward - 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 } - } - ] } + +$env.config.history = { + file_format: plaintext + isolation: false + max_size: 100_000 + sync_on_enter: true +} + +$env.config.completions = { + algorithm: fuzzy + case_sensitive: false + partial: true + quick: true + external: { + enable: true + max_results: 100 + completer: {|tokens| + let expanded_alias = scope aliases | where name == $tokens.0 | get --ignore-errors expansion.0 + + let tokens = if $expanded_alias != null { + $expanded_alias | split row " " | append ($tokens | skip 1) + } else { + $tokens + } + + let cmd = $tokens.0 | str trim --left --char "^" + + let completions = ^carapace $cmd nushell $tokens | from json | default [] + + if ($completions | is-empty) { + let path = $tokens | last + ls $"($path)*" | each {|it| + let choice = if ($path | str ends-with "/") { + $path | path join ($it.name | path basename) + } else { + $path | path dirname | path join ($it.name | path basename) + } + + let choice = if ($it.type == "dir") and (not ($choice | str ends-with "/")) { + $"($choice)/" + } else { + $choice + } + + if ($choice | str contains " ") { + $"`($choice)`" + } else { + $choice + } + } + } else if ($completions | where value =~ "^.*ERR$" | is-empty) { + $completions + } else { + null + } + } + } +} + +$env.config.filesize = { + format: auto + metric: true +} + +$env.config.cursor_shape = { + vi_insert: line + vi_normal: block +} + +$env.config.hooks = { + command_not_found: {} + display_output: "if (term size).columns >= 100 { table --expand } else { table }" + env_change: {} + pre_execution: [] + pre_prompt: [] +} + +$env.config.menus = [ + { + marker: "| " + name: completion_menu + only_buffer_difference: false + style: { + description_text: yellow + selected_text: green_reverse + text: green + } + type: { + col_padding: 2 + col_width: 20 + columns: 4 + layout: columnar + } + } + { + marker: "? " + name: history_menu + only_buffer_difference: true + style: { + description_text: yellow + selected_text: green_reverse + text: green + } + type: { + layout: list + page_size: 10 + } + } + { + marker: "? " + name: help_menu + only_buffer_difference: true + style: { + description_text: yellow + selected_text: green_reverse + text: green + } + type: { + col_padding: 2 + col_width: 20 + columns: 4 + description_rows: 10 + layout: description + selection_rows: 4 + } + } +] + +$env.config.keybindings = [ + { + name: completion_menu + modifier: none + keycode: tab + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: history_menu + modifier: control + keycode: char_h + mode: [ vi_insert vi_normal ] + event: { send: menu name: history_menu } + } + { + name: escape + modifier: none + keycode: escape + mode: [ vi_normal vi_insert ] + event: { send: esc } + } + { + name: cancel_command + modifier: control + keycode: char_c + mode: [ vi_normal vi_insert ] + event: { send: ctrlc } + } + { + name: quit_shell + modifier: control + keycode: char_d + mode: [ vi_normal vi_insert ] + event: { send: ctrld } + } + { + name: clear_screen + modifier: control + keycode: char_l + mode: [ vi_normal vi_insert ] + event: { send: clearscreen } + } + { + name: open_command_editor + modifier: control + keycode: char_o + mode: [ vi_normal vi_insert ] + event: { send: openeditor } + } + { + name: move_up + modifier: none + keycode: up + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: none + keycode: down + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_left + modifier: none + keycode: left + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: none + keycode: right + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: move_one_word_left + modifier: control + keycode: left + mode: [ vi_normal vi_insert ] + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: control + keycode: right + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_to_line_start + modifier: control + keycode: char_a + mode: [ vi_normal vi_insert ] + event: { edit: movetolinestart } + } + { + name: move_to_line_end_or_take_history_hint + modifier: control + keycode: char_e + mode: [ vi_normal vi_insert ] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: delete_one_character_backward + modifier: none + keycode: backspace + mode: vi_insert + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: backspace + mode: vi_insert + event: { edit: backspaceword } + } + { + name: newline_or_run_command + modifier: none + keycode: enter + mode: vi_insert + event: { send: enter } + } +] diff --git a/machines/enka/nushell/environment.nu b/machines/enka/nushell/environment.nu index 5160d7d..2127877 100644 --- a/machines/enka/nushell/environment.nu +++ b/machines/enka/nushell/environment.nu @@ -19,7 +19,3 @@ def hx [...arguments] { kitty @ set-spacing padding=10 } - -if (tty) == /dev/tty1 { - Hyprland -}