Skip to main content

max / alloy

Put who and where back in the prompt The prompt showed a bare glyph and the directory. Both hostname and username were disabled here as "noise for Alloy's audience", on the reading that a laptop user knows which machine they are sitting at. That reading does not survive an installed test machine. fw12 and fw13 give the identical prompt, an ssh session is indistinguishable from a local one, and the first thing anyone wants from a console on a box they just installed is which box it is. ssh_only stays off on purpose. Showing the host only over ssh keeps the prompt silent in exactly the case where the machine is new and unfamiliar. Muted, so they read as context: the directory stays the only bold thing on the line. Root gets the danger color instead, which is the one time the prompt should be saying something about who you are. The username module takes style_user and style_root, not style. A plain `style` key is accepted by the parser, warned about at runtime, and ignored, falling back to starship's own bold yellow -- off-palette, and reading as a warning about nothing. That was in the first version of this change and was caught by rendering the template through skelgen and running `starship prompt` against the result, which is the check worth keeping for anything here that a test cannot see.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-14 18:47 UTC
Signed with PGP, not checked
Commit: 2d00dd20905bb75f6a47ce2aa281ede4a73ba230
Parent: d49e67e
1 file changed, +37 insertions, -6 deletions
@@ -10,6 +10,8 @@
10 10 # color slots by function, not by name.
11 11
12 12 format = """
13 + $username\
14 + $hostname\
13 15 $directory\
14 16 $git_branch\
15 17 $git_status\
@@ -107,18 +109,47 @@
107 109 time_format = "%H:%M"
108 110 style = "@{content.muted}"
109 111
112 + # -------------------------------------------------------------------
113 + # Who and where — the two facts a prompt is for
114 + # -------------------------------------------------------------------
115 + # Both were disabled here as "noise for Alloy's audience", on the reading that
116 + # a laptop user knows which machine they are sitting at. That reading did not
117 + # survive an installed test machine: fw12 and fw13 both show a bare `▸`, an
118 + # ssh session looks identical to a local one, and the first thing anyone needs
119 + # from a console on a box they just installed is which box it is.
120 + #
121 + # ssh_only stays off deliberately. Showing the host only over ssh means the
122 + # prompt is silent in exactly the case where a machine is new and unfamiliar,
123 + # and it makes two sessions that behave differently look the same.
124 + #
125 + # Muted, so they read as context rather than as the line's subject. The
126 + # directory stays the only bold thing here.
127 + [hostname]
128 + disabled = false
129 + ssh_only = false
130 + format = "[$hostname]($style) "
131 + style = "@{content.secondary}"
132 +
133 + [username]
134 + disabled = false
135 + show_always = true
136 + format = "[$user]($style)[@](@{content.muted})"
137 + # Not `style`. This module resolves `$style` to one of these two by who you
138 + # are, and a plain `style` key is silently ignored: starship warns and falls
139 + # back to its own bold yellow, which is off-palette and reads as a warning
140 + # about nothing. Caught by rendering the config and running `starship prompt`
141 + # against it, not by reading it.
142 + style_user = "@{content.muted}"
143 + # Root gets the danger color rather than the muted one. This is the one time
144 + # the prompt should be saying something about who you are.
145 + style_root = "@{status.danger}"
146 +
110 147 # -------------------------------------------------------------------
111 148 # Disabled modules — noise for Alloy's audience
112 149 # -------------------------------------------------------------------
113 150 [package]
114 151 disabled = true
115 152
116 - [hostname]
117 - disabled = true
118 -
119 - [username]
120 - disabled = true
121 -
122 153 [aws]
123 154 disabled = true
124 155