1let host_colors = {
2 higashi: {start: "0xEC5228", end: "0xEF9651"},
3 wolumonde: {start: "0x603F26", end: "0x6C4E31"},
4 chernobog: {start: "0xA94438", end: "0xD24545"},
5 "sd-148036": {start: "0x595CFF", end: "0xC6F8FF"},
6 dzwonek: {start: "0x595CFF", end: "0xC6F8FF"},
7 volsinii: {start: "0x595CFF", end: "0xC6F8FF"},
8}
9let user_colors = {
10 kirara: {start: "0xFF407D", end: "0xEE99C2"},
11 root: {start: "0xC5172E", end: "0xBF3131"},
12 dusk: {start: "0x640D5F", end: "0xD91656"},
13 dawn: {start: "0x640D5F", end: "0xD91656"},
14 mayer: {start: "0x640D5F", end: "0xD91656"},
15}
16
17def create_left_prompt [] {
18 let hostname = sys host | get hostname
19 # str replace handles whoami output on windows
20 let username = ^whoami | str replace $"($hostname)\\" ""
21
22 let c = $host_colors | get $hostname
23 let hostname_fmt = $hostname | ansi gradient --fgstart $c.start --fgend $c.end
24 let c = $user_colors | get $username
25 let username_fmt = $username | ansi gradient --fgstart $c.start --fgend $c.end
26
27 let dir = match (do -i { $env.PWD | path relative-to $nu.home-path }) {
28 null => $env.PWD
29 '' => '~'
30 $relative_pwd => ([~ $relative_pwd] | path join)
31 }
32
33 let separator_color = ansi light_cyan
34 let string_color = ansi light_yellow
35 $"($separator_color)//($hostname_fmt)($separator_color)/($username_fmt)($separator_color)/($string_color)cwd=\"($dir)\""
36}
37
38def create_right_prompt [] {
39 ()
40}
41
42# Use nushell functions to define your right and left prompt
43$env.PROMPT_COMMAND = {|| create_left_prompt }
44# FIXME: This default is not implemented in rust code as of 2023-09-08.
45$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
46
47# The prompt indicators are environmental variables that represent
48# the state of the prompt
49$env.PROMPT_INDICATOR = {|| "/ " }
50$env.PROMPT_INDICATOR_VI_INSERT = {|| "/: " }
51$env.PROMPT_INDICATOR_VI_NORMAL = {|| "/ " }
52$env.PROMPT_MULTILINE_INDICATOR = {|| "/::: " }