Hacker Newsnew | past | comments | ask | show | jobs | submit | FrenchTouch42's commentslogin

Try https://starship.rs then. Starship gives you the same "drop in and go" experience but without the 200ms+ prompt lag. One curl -> one line in your rc file, works on zsh/bash/fish/whatever.

Configuration is straightforward and easy imo: https://starship.rs/config/

Give it a spin, I think you won't regret it.


Also oh-my-posh supports transient prompt and AFAIK starship.rs does not.

"Transient prompt, when enabled, replaces the prompt with a simpler one to allow more screen real estate." https://ohmyposh.dev/docs/configuration/transient

Here is my config for oh-my-posh https://github.com/rofrol/dotfiles/blob/master/.config/oh-my...


I'm so glad I switched to fish, I'd rather have genuinely good settings out of the box rather than endless configuration, and honestly it's much better out of the box than any configuration I've ever had.

Only drawback is that it's not POSIX, no issue for me, but maybe for people who have a lot of muscle memory with bash.


I tried fish for a while but as someone who heavily used bash before I couldn't get used to the new language. I also didn't feel they the language was much better than bash, at least for my usage. But I loved the default automatic coloring of arguments, underlining of files, etc.

Later I found fizsh, which I love and still use as default shell now. It's basically a configuration around zsh adding the colors, completions, and other good stuff inspired by fish to zsh. Can really recommend it for those who are used to zsh or bash but want their CLI to be more readable. Colors especially help with big command line arguments to show where they start and end, and keeping track of complex stuff like loops and conditional logic in your commands.


fizsh sounds really cool, but the last commit was 7+ years ago. do you run into any issues? https://github.com/zsh-users/fizsh

I never noticed any issues, actually. I guess the zsh base is solid and stable.

Fish is just excellent out of the box. It's a little tragic how path dependent we are on flawed terminal experiences designed 40 years ago.

For POSIX: I leave Bash as the system shell and then shim into Fish only for interactive terminals. This works surprisingly well, and any POSIX env initialisation will be inherited. I very rarely need to do something complicated enough in the REPL of the terminal and can start a subshell if needed.

Fish is nicer to script in by far, and you can keep those isolated with shebang lines and still run Bash scripts (with a proper shebang line). The only thing that’s tricky is `source` and equivalents, but I don’t think I’ve ever needed this in my main shell and not a throw-away sub shell.


I often write multi-line commands in my zsh shell, like while-loops. The nice thing is that I can readily put them in a script if needed.

I guess that somewhat breaks with fish: either you use bash -c '...' from the start, or you adopt the fish syntax, which means you need to convert again when you switch to a (bash) script.


I guess my workflow for this is more fragmented. Either I’m prototyping a script (and edit and test it directly) or just need throwaway loop (in which case fish is nicer).

I also don’t trust myself to not screw up anything more complex than running a command on Bash, without the guard rails of something like shellcheck!


I used to do it this way, but then having the mentally switch from the one to the other became too much of a hassle. Since I realized I only had basic needs, zsh with incremental history search and the like was good enough.

I don't care for mile-long prompts displaying everything under the sun, so zsh is plenty fast.


After 10 years on zsh I finally switched 6 months ago and I haven't looked back. If I need POSIX, I'll just run scripts with the right shebang or pipe it to sh.

I've been using fish for nearly 10 years.

First, there are some ways to make fish more compatible with bash.

If you want to do some shell scripting in fish, or running other people's shell scripts (or commands) this may aid you since you wouldn't have to port them (or take less time to port them over).

You can achieve this with a plugin system such as 'oh my fish' or 'fisher'. But, as always, it adds complexity (and bloat :P), you'll need it on every fish shell (including remote systems), etc.

It is a bit akin to having nvim with plugins versus being able to use vi. Sometimes, you're going to need to be able to use the latter.

Also, to people who recently adopted fish: fish has been made more and more compatible with bash throughout those years.

FWIW, I use fish with starship these days.


When I'm in fish and I want to run a bash script I just... call it with bash :-)

./script.sh

and script.sh just starts with #/bin/bash

I'm simple


If I use fish, I want to make use of it, and that means I will want to convert scripts, or simply learn to write scripts compatible with fish.

Shell scripts from third parties stick with whatever shell they were written for (ie. /bin/sh or /usr/bin/env bash), and commands copy/pasted from the internet are either quickly executed with bash (one-off) or ported over. Because I like to have such in my history (fish is configured to use atuin), I want to keep using the same shell, so I try to stick with fish. If I cannot convert a command (usually a bunch of commands) to fish, it is PEBCAK and a learning curve/experience.

As for tmux, that is solid advice, because it also allows to stick with a shell which is known to work. I've come to like zellij with alacritty, with zellij the option is default_shell. But now that I use ghostty, I don't use a terminal multiplexer locally any more; only remotely. And there I still use tmux.


This wouldn't work if the script is meant to be sourced (to set environment variables) isn't it?

No, it doesn't.

The way I actually have things setup, in case it helps. I don't change my default shell. I actually default to pretty much working within tmux. So, I kept my default shell to what the OS brings, then in my tmux config, I have,

    # set shell
    set -g default-shell /opt/homebrew/bin/fish
This means, that when I start my terminal, it drops me to zsh (macOS default). Then when I run tmux, it opens fish. The nice thing is that I inherit the environment of zsh.

I have my .zshrc and my .bashrc sourcing a .shellrc file which contains most of my env stuff. This keeps random utilities that write to .bashrc and zshrc working within fish too.


It’s only takes a second to run a child bash shell when you need something posix

I have been using fish for 10 years now as my main shell and it is just perfect.

I'm surprised Starship is so popular. It's missing really basic powerlevel10k features like empty segments. If you look at some examples:

https://starship.rs/presets/gruvbox-rainbow

You can see that when the segments are empty, they still appear as a 1-width segment, rather than entirely disappearing.

It also makes you configure many things by hand. powerlevel10k has an interactive wizard that lets you design your prompt one option at a time (do you want a nerd font? do you want it one line or two? etc) but Starship makes you manually write escape codes if your preferences don't match one of the presets.

No judgment, but I do wonder what people like about Starship that makes up for these things.


Starship allows empty segments, I in this specific case it's just how the preset/theme works as it uses the Unicode character as separator and it needs to set the background and foreground colors depending on which modules is surrounded by

Every preset with powerlevel10k-style segments don't support hiding empty segments. Look at Pastel Powerline, Tokyo Night, Gruvbox Rainbow, Catppucin Powerline...

https://starship.rs/presets/#pastel-powerline

I tried making my own and the config TOML syntax isn't expressive enough to support hiding empty segments.

You're right that it's the thing with the Unicode character as separator, which all the alternatives handle just fine: powerlevel10k, tide, oh-my-posh... it's just everyone seems to love Starship, and that's what confuses me.


Also oh-my-posh supports transient prompt and AFAIK starship.rs does not.

"Transient prompt, when enabled, replaces the prompt with a simpler one to allow more screen real estate." https://ohmyposh.dev/docs/configuration/transient

Here is my config for oh-my-posh https://github.com/rofrol/dotfiles/blob/master/.config/oh-my...


Just tried Starship, even though it wasn't the first time I'd heard about it. I would not say it is a 'drop-in and go' experience. Let me explain.

After installing and adding it to my bashrc, I was wondering was those version numbers and cloud symbols meant. Turns out: Since NodeJS and Python were installed, it found a good idea to print the respective versions. I could not care less about those versions. The other part was that it thought that I would like to see my AWS region. Well, I mean, I have built something with AWS a few years back, and the config file for that still exists, but no, I don't want to see that region every time I open a shell. Finally, the default is to have the prompt in a new line. I think when you have a long prompt that makes sense, and it might also be a taste thing. However, the documentation has this example at the beginning about newlines:

  # Inserts a blank line between shell prompts
  add_newline = true
So I thought `add_newline = false` should do the trick, but it didn't.

Luckily, the AI (GPT-5.2) was pretty good at explaining and giving instructions for changing things. So after 30 minutes, everything was understood and configured to my liking. I like the result, but the default was pretty weird.


I tried using Starship, and it’s clearly faster than Oh My Zsh, but my issue was that I relied on some useful Oh My Zsh features that I didn’t know how to replicate in Starship. One of these is history filtering - for example, when I type source and press the up arrow, I only see previously run source commands, which makes it easy to find what I’m looking for. I tried to get this working in Starship, but had no luck.

I haven't checked out starship yet, but if I understand what you are using, that is Zle functionality. It's part of OMZs configuration (here: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/key-bindi...) but doesn't use other OMZ features.

I don't know if starship is still using Zle. If so, this should be possible to configure without OMZ.


Oh thank you, I was looking for this. Will try it.

Control r. This is a zsh feature not a starship/oh my zsh feature

Oh my god! How did I not know about this! Thank you! Are there any other useful tips like this one?

I think that's just a standard readline functionality. It's available on bash, out of the box.

Absolutely and in zsh too, out of the box. It kind of blows my mind that people think they need all this additional bloatware for things which have always just worked (at least as far back as like 96 or so which is when I started using Linux) but it wasn’t new then.

Wait till people learn they can use rlwrap to get the benefit of readline even in things like commandline sql clients, which often lack this.


I think convenience inherently comes with bloat. This is true for many things in life. Most people use cars simply to drive to work and back, yet they don’t use 90% of the features sold to them by salespeople.

Ob Linux it's actually handled by inputrc

mirzap was probably using some omz plugin to do that, so if starship fully replaced omz, that functionality went away, too.

I have never used Oh My Zsh, but I use Atuin to do this and it works excellently at that. You can even make it filter by what folder you're in and whether you want to search only this session or host (you can sync shell history across hosts). It never occurred to me that this is something I'd want from a shell prompt, which is what Starship is.

check atuin for history search

From what I can tell, this doesn't nearly fill the gap that OMZ occupies

Nice history, command auto complete, and similar beyond just the looks, out of the box


Oh my zsh makes installing extension so easy, just edit .zshrc and add extract, fzf, z, etc. To the list of plugins

What? You still have to install the binary via your package manager. Most OMZ plugins are basically a bunch of shell completions or aliases.

starship is great. I use it with a powerlevel10k fallback in my dotfiles for systems, starship is not installed yet to not break the shell entirely.

Starship is a single binary, pretty easy to carry around even the first time you ssh somewhere.

I'm totally aware... However p10k is the thing I used before so fallback was a low hanging fruit.

I'll second this. I've had a really pleasant experience using Starship across development environments.

Never heard of this, looks pretty good. Are there any community themes based on starship like powerlevel9k/10k?

It requires a nerd font.

Minus web browsers. I read your comment and literally zoomed haha. Totally blanked out.


They mean holding the Command key when pressing the comma key, which should work.


Ah I just replied to someone else but I totally understand the feeling.


Thank you for sharing, your story really hit home for me.

For years, I've been one of the people to step up: solving problems, hitting crazy deadlines, being the "hero" etc. I thought if I just kept pushing, it would pay off. But somewhere along the way, I realized that no matter how much impact I truly had, I was still just another employee, not truly breaking through to the level where I could make the difference I wanted. And the worst part is that I'm fully aware of it, yet I still deal with it because I haven't found the success I'm looking for.

Burnout doesn't hit all at once: it sneaks up on you when you're too busy solving everyone else's problems. I ignored it for too long, thinking it was just part of the job. For those of us who thrive on tackling the "impossible", it's easy to forget that you need to take care of yourself. Being the one who makes things happen shouldn't come at the cost of your well-being. It's okay to step back and prioritize yourself. You're worth so much more than just the work you do.

Combine Cassandra and savior syndromes, and it's been a terrible recipe for my health. I've learned that no amount of foresight or effort can substitute for the need for balance and self-care.

To anyone reading this, especially those in leadership, it's important to recognize the people truly making a difference. And for those who feel like they're giving everything and it's still not enough, sometimes stepping back and valuing yourself is the most powerful move you can make.

True leadership isn't about being the hero; it's about knowing when to put your own mask on first. You can't pour from an empty cup.


This all hits home for me, too. A lot of great points. It’s somewhat reassuring to read that others have such similar experiences. It’s not nice to know others are struggling, but nice to know that it all makes sense, I guess. There’s a pattern, something to work with, we’re not just crazy, etc.

The empty cup analogy is great one. When burn out first started to cause problems for me I went and spoke with someone, and they used this analogy. I thought it was a bit silly for the first 5 minutes and then it hit me. I really did feel empty. I felt exactly like I had nothing to give other people. I was the empty cup, craving something to fill it. That was a strange day for sure. Since then the analogy has stuck with me and crosses my mind regularly.


Eloquent Ruby


Comes in handy for opening Hearthstone packs so you don't need to continuously press space.


For such simple and repetitive tasks I would suggest giving TinyTasks a try (https://www.tinytask.net/). There's no coding, you just press record do what ever needs to be done, stop recording, select how many times to repeat and play!


iirc ahk has a recording mode too; it's the feature of modifying what was recorded to make more robust and useful


Thank you Miah for all your contributions (beyond InSpec)


What about Expensify?


> I have never heard a Nomad success story

There's a lot of Nomad at , just won't get any publicity but that's different.


Can you share more information about the schema you're mentioning? Thank you!


Not OP but they might be referring to Uber moving from ES to ClickHouse to store their schema-flexible, structured logs, mostly to improve ingestion performance: https://archive.is/bFsTF / https://www.uber.com/blog/logging/

The gist of it is:

- Structured logs (json) are stored as kv pairs in parallel arrays, along side metadata (host, timestamp, id, geo, namespace, etc).

- Log fields (ie kv pairs) are materialized (indexed) depending on query patterns, and vaccummed up if unused.

- Authoring queries and Kibana dashboard support is not trivial but handled with a query translation layer.


What do you mean by parallel arrays here?

Do you mean something like two arrays [k1, ..., kN] and [v1, ..., vN] in two different columns?

Is there a way in Clickhouse to filter such a pair of arrays such that you can do a search akin to vals[indexOfKey("foo")] == "bar"?


Yep. If you read the blog post I linked to it does talk a tonne about ClickHouse and what it can do (like indexOf, for example).


Ah, of course. Thanks!


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: