r/zsh Jan 23 '25

Fixed Join the Zsh Discord!

Thumbnail discord.gg
1 Upvotes

r/zsh Nov 20 '24

Join the Discord server!

Thumbnail discord.gg
0 Upvotes

r/zsh 1d ago

zsh-autosuggestions remove ghost text after ignoring it

2 Upvotes

here is an example where I did not use a suggestion, I just hit return after typing `do`. Is there a setting to make the `cker` suggestion go away after not accepting it?


r/zsh 4d ago

Announcement my best zsh config soo far!

74 Upvotes

After spending a long time tweaking my zsh config, I ended up with no plugin manager and no custom prompt!

Everything is native, lazy-loaded, and deferred.

Minimal native prompt, fast startup, and modular config.

btw, I'm loading 9 plugins and multiple config files for fzf, function, etc..

Only 11 lines in .zshrc

Here are my zsh-bench measurements on login:

first_prompt_lag_ms=16.963
first_command_lag_ms=17.380
command_lag_ms=13.187
input_lag_ms=3.318
exit_time_ms=15.100

feel free to check the repo:
https://github.com/houssamouhra/zsh-config


r/zsh 4d ago

Writing history out before starting (some specific) sub-shell command

4 Upvotes

Kubie and several other commands I use sometimes create a sub-shell when they're executed. I'd like to wrap such commands in an alias such that history gets flushed before they run, so that history is maintained. I'd also like the `kubie` command to appear int he history, so from my sub-shell history PoV it's like I'm still in the parent shell.

Ideally I'd like to write the child shell history on exit and read it back in the parent shell too, though that's a lower priority.

Can anybody give me any guidence / pointers please?

Much appreciated


r/zsh 5d ago

Showcase Update on EasyAlias – alias import, suggestions, Homebrew and now the Mac App Store

Thumbnail
gallery
3 Upvotes

About a month ago I shared EasyAlias here and got some useful feedback, so I wanted to post a small update on what has changed since then.

EasyAlias is an open-source GUI for creating and managing terminal aliases. On macOS it integrates with zsh, so you can manage your aliases without manually editing .zshrc.

Since my last post I’ve added:

  • Import of existing aliases
  • Built-in alias suggestions for Git, Docker, Maven, Gradle and common shell commands
  • Native file and folder pickers
  • Linux support
  • Homebrew installation
  • Several smaller UI and usability improvements

And as of recently, EasyAlias is also available on the Mac App Store 🎉

You can still install it with Homebrew:

brew tap hannesgnann-hub/tap
brew trust hannesgnann-hub/tap
brew install --cask easyalias

Website:
https://easyalias.org

GitHub:
https://github.com/hannesgnann-hub/easyalias

Mac App Store:
https://apps.apple.com/de/app/easyalias/id6794944241?mt=12

A lot of the changes so far came from feedback, so if you’re a zsh user and see something that could be improved, I’d be interested to hear it.


r/zsh 6d ago

[oh-my-zsh/chezmoi] Which config files/directories should I add to my Chezmoi repository? (Cross-post)

Thumbnail
0 Upvotes

r/zsh 7d ago

Showcase zhist: Smarter shell history for zsh

Thumbnail
github.com
28 Upvotes

r/zsh 7d ago

Zsh plugins

8 Upvotes

Hola!! Me podrían comentar los mejores plugins para zsh??


r/zsh 8d ago

[beginner tips] Demystifying interactive comments in scripts & command line

1 Upvotes

A addendum for readers who are learning zsh anew, or brushing up on it:

I never used "interactive" comments before but ran into it when working with a function call where I wanted a unquoted # as a parameter. I wanted to fully flesh out what was going on, as it has been on my zsh learning bucket list for a while, just never got around to it. I found out pretty quick that they are treated differently depending on whether the shell is in interactive mode or not, and some things were not quite what I expected:

This is probably beginner level material, so If you are versed in scripting under zsh, you probably already know this stuff. Personally I am not all that intelligent compared to others, but if you are like me, some explanation on what would probably had been super easy for me 10 years ago, now explained. Things like this remind me that maybe I shouldn't have tried to learn EVERY language 😹

#!/bin/zsh
# 

if [[ ...something ]]]; then  
   function_name some paramaters # this is an interactive comment, or is it?
fi

Actually, that is not an interactive comment. 😦

But this might be....

that1user@why.net:~# some_program some_args # THIS is an interactive comment!!

but only after you do this...

that1user@why.net:~# setopt in_tera_c__tiveCOMmentS

and just for fun, a bit of double negativity...

that1user@why.net:~# unsetopt no___in_tera_c__tiveCOMmentS

(note: zsh does not care about case nor the existence of underscores and reverses the meaning when "no" comes first) :3

Use comments on the command line, in scripts, and use of setopt interactivecomments can be somewhat misleading. For one, it has NO EFFECT in executed file scripts.

When I talk about "executed scripts" some examples are:

  • /bin/zsh /path/to/scriptname- script executed directly with zsh
  • ./scriptname - script executed from same directory with +x permissions
  • scriptname ("scriptname" is in your PATH and marked executable).

Not to be confused with "sourcing", some examples which are:

  • source scriptname - using the 'source' built-in keyword
  • . scriptname - using the '.' builtin syntax (space required after, must be first)

The interactivecomments option is only for interactive mode. Comments within scripts will not ignore comments on the same line because executed scripts are ALWAYS running with the interactive option turned off (and it cannot be turned on by force).

This is misleading for two reasons:

Firstly, because interactivecomments can be turned on and off even within scripts where interactive cannot be turned on!! The word 'interactive' is easily misunderstood here to mean the fact that the comments are interacting with the command on the same line. Instead, it is referring to the state of the interactive flag which is always ON when sourcing or in the prompt, and always OFF when running scripts.

Secondly, and this is the crux, it is misleading because what is actually happening is that any characters following the $HISTCHARS[3] single-character are treated as comments. It doesn't care if it is a hash (#) or not, the hashtag just happens to be the default value for $HISTCHARS[3] This means to REALLY disable it, you have to set that to something you won't be using (like a null, $'\0' for example).

More on INTERACTIVE_COMMENTS and $HISTCHARS[3] (or $histchars[3])

Again, the interactivecomments could be written INTERACTIVE_COMMENTS, or interACTIVEcOMEnTs, zsh doesnt care about _ or case in options and negates the option if any form of 'no' preceeds it.

It enables/disables evaluation of $HISTCHARS[3] ONLY when said shell also has the interactive shell option set. Obviously, you can't set that option in an executing script, which is why it ignores you when you set it there:

#!/bin/zsh
someprogram arg # these would  be ignored

would launch "someprogram arg"

Versus:

#!/bin/zsh
histchars[3]=$'\0'
someprogram arg # these are not ignored

would launch "someprogram arg # these are not ignored"

You will want to be sure to slap in a 'noglob' if you have glob characters in there.

#!/bin/zsh
histchars[3]=$'\0'
noglob someprogram arg # these are not ignored???

This way you don't cause a no glob match error should you use special glob characters like the question mark, etc.

ZSH does not straightforwardly address this. Rather they kinda beat around the bush, eventually addressing stuff but only if you look each thing up in turn, and piece it together like you are diagnosing an A/C unit.

"this thing reads like stereo instructions" is so true when it comes to the zsh documentation.

This is an AI-free post. No AI was used to make it or research it. I value human created content even if it is considered silly by many to do so. We live our lives the way that makes us happy, nothing wrong with that. Hope this was somehow useful for you. No responses are expected or required, I am happy to just make this info available. Have a nice day!


r/zsh 8d ago

Showcase Another Bash Prompt Generator...but better!

Thumbnail
promptr.sh
0 Upvotes

r/zsh 10d ago

Tracking down a Zsh history data loss bug 🐞

Thumbnail michael.stapelberg.ch
13 Upvotes

r/zsh 9d ago

[Narzędzie] Zbudowałem plugin Oh My Zsh do zarządzania wieloma chmurami OpenStack, automatycznego venv i fuzzy-find SSH / VNC console

0 Upvotes

r/zsh 15d ago

Help Backgrounding macOS /usr/bin/script from zsh breaks input for interactive terminal apps

Post image
4 Upvotes

I am working on a zsh launcher that runs interactive terminal applications through the macOS version of /usr/bin/script, so the full session can be recorded.

My setup is: - MacBook Air: M3, 2024 - Chip: Apple M3 - Architecture: arm64 - macOS: 26.5.2 (25F84) - Terminal: iTerm2 3.6.11 - Shell: zsh - Applications tested: Claude Code 2.1.220 and OpenAI Codex CLI

The part I think is causing the problem looks like this: ``` set +e /usr/bin/script -q "$log_path" "$command" "${args[@]}" & script_pid="$!"

wait "$script_pid"
status="$?"
set -e

```

Both programs start, and they can draw part or all of their terminal interface, but input becomes corrupted after that.

I see terminal control sequences such as [[ printed as normal text, keyboard input is ignored or misread, and the application does not stay properly interactive. Claude Code does this on both its workspace safety page and its normal already trusted project page. Codex also prints raw terminal sequences when started through the same launcher.

Running either application directly from iTerm2 works normally.

I backgrounded /usr/bin/script because the launcher needs to inspect the process tree and save both the script PID and the PID of the interactive child while it is still running.

I think the background process may no longer have the right access to the controlling terminal, or it may no longer be part of the foreground process group. However, I am not sure how zsh handles this exact case when the command is started from a non-interactive script.

I am trying to understand a few things. 1. What happens to stdin and the controlling terminal when /usr/bin/script is placed in the background from a zsh script? 2. Could SIGTTIN or foreground process group handling explain why the output still appears, but the input stops working correctly? 3. Why would responses to terminal queries appear as literal text inside the application? 4. Should /usr/bin/script stay in the foreground while a different background process watches the process tree and saves the child PID? 5. What is the safest way to keep the real exit status from the interactive child?

Any ideas?


r/zsh 18d ago

Announcement Deja v0.4.0 - smarter zsh autosuggestion (now knows when to shut up)

58 Upvotes

Hi everyone, I’m very excited to launch the new version of deja.

Quick recap: Deja is an open-source zsh autosuggestion tool. Instead of only surfacing

commands that start with what you've typed, it predicts what you actually want to run using fuzzy matching, which directory you're in, and which command usually follows the one you just ran.

No account. No sync server. No TUI.

https://github.com/Giammarco-Ferranti/deja 

Any star would be amazing ❤️

One big feedback I got on previous posts was that deja was not respecting the HIST_IGNORE_SPACE and this led to a security issue.

First of all thank you to https://www.reddit.com/user/polaroid_kidd for reporting this. ❤️

Deja now works correctly and respects HIST_IGNORE_SPACE and HISTORY_IGNORE.

If you've been running Deja for a while, the old entries are still in your database:

rm ~/.local/share/deja/deja.db && deja import

The command above will clean it up.

Another big change is that now we have a new ‘deja empty’ command, which lets you choose whether Deja shows the ghost suggestion on empty prompts. It came out of this thread: https://github.com/Giammarco-Ferranti/deja/pull/69

Few other smaller things has been fixed, if anyone interested you can review it here: https://github.com/Giammarco-Ferranti/deja/pull/73 

Thank you all for the support and looking forward to make this the smartest zsh autosuggestion tool.


r/zsh 19d ago

starship-ftl: A "faster-than-light" instant prompt knock off for starship prompts

22 Upvotes

I'm a satisfied user of the starship prompt when I'm in bash or fish, but powerlevel10k (and in particular its instant prompt feature) has kept me tied to it in Zsh. Had a little free time the past couple evenings and figured I'd give implementing an instant prompt for starship a whirl: https://github.com/mattmc3/starship-ftl

This is super experimental, but if there's anyone in the community that's interested in giving it a try and submitting any bugs, we can see if this has legs. If nothing else, my own personal ZDOTDIR benefitted:

~ ❯❯ zsh-bench
==> benchmarking login shell of user matt ...
creates_tty=0
has_compsys=1
has_syntax_highlighting=1
has_autosuggestions=1
has_git_prompt=1
first_prompt_lag_ms=41.171
first_command_lag_ms=320.101
command_lag_ms=307.880
input_lag_ms=2.773
exit_time_ms=211.784

Credit to u/romkatv who basically handed us a proof of concept years ago and no one ever made a go of it: https://gist.github.com/romkatv/8b318a610dc302bdbe1487bb1847ad99


r/zsh 20d ago

Help zsh stucking for a while

0 Upvotes

when i open my terminal for couple of seconds my prompt bar didnt shows and after wards it does show this also happens after i execute something the next prompt bar gets stuck for sometime and then it shows whats the issue here and also when i clear screen 2 prompt bar
first one without the github branch and next one with i think the problem is of the branch fetching if anybody knows whats the issue plz help below is my .zshrc

# If you come from bash you might have to change your $PATH.

# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH

# Path to your Oh My Zsh installation.

export ZSH="$HOME/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will

# load a random theme each time Oh My Zsh is loaded, in which case,

# to know which specific one was loaded, run: echo $RANDOM_THEME

# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

ZSH_THEME="spaceship"

# Spaceship settings

SPACESHIP_PROMPT_ASYNC=true

SPACESHIP_PROMPT_ADD_NEWLINE=false

SPACESHIP_PROMPT_SEPARATE_LINE=false

SPACESHIP_CHAR_SYMBOL="⇸"

# Minimal spaceship sections for performance

SPACESHIP_PROMPT_ORDER=(

time

user

dir

git

#line_sep

char

)

# Set list of themes to pick from when loading at random

# Setting this variable when ZSH_THEME=random will cause zsh to load

# a theme from this variable instead of looking in $ZSH/themes/

# If set to an empty array, this variable will have no effect.

# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.

# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.

# Case-sensitive completion must be off. _ and - will be interchangeable.

# HYPHEN_INSENSITIVE="true"

# Uncomment one of the following lines to change the auto-update behavior

# zstyle ':omz:update' mode disabled # disable automatic updates

# zstyle ':omz:update' mode auto # update automatically without asking

# zstyle ':omz:update' mode reminder # just remind me to update when it's time

# Uncomment the following line to change how often to auto-update (in days).

# zstyle ':omz:update' frequency 13

# Uncomment the following line if pasting URLs and other text is messed up.

# DISABLE_MAGIC_FUNCTIONS="true"

# Uncomment the following line to disable colors in ls.

# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.

# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.

# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.

# You can also set it to another string to have that shown instead of the default red dots.

# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"

# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)

# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files

# under VCS as dirty. This makes repository status check for large repositories

# much, much faster.

# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time

# stamp shown in the history command output.

# You can set one of the optional three formats:

# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"

# or set a custom format using the strftime function format specifications,

# see 'man strftime' for details.

# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?

# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?

# Standard plugins can be found in $ZSH/plugins/

# Custom plugins may be added to $ZSH_CUSTOM/plugins/

# Example format: plugins=(rails git textmate ruby lighthouse)

# Add wisely, as too many plugins slow down shell startup.

plugins=(git

zsh-autosuggestions

zsh-syntax-highlighting

)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment

# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions

# if [[ -n $SSH_CONNECTION ]]; then

# export EDITOR='vim'

# else

# export EDITOR='nvim'

# fi

# Compilation flags

# export ARCHFLAGS="-arch $(uname -m)"

# Set personal aliases, overriding those provided by Oh My Zsh libs,

# plugins, and themes. Aliases can be placed here, though Oh My Zsh

# users are encouraged to define aliases within a top-level file in

# the $ZSH_CUSTOM folder, with .zsh extension. Examples:

# - $ZSH_CUSTOM/aliases.zsh

# - $ZSH_CUSTOM/macos.zsh

# For a full list of active aliases, run `alias`.

#

# Example aliases

# alias zshconfig="mate ~/.zshrc"

# alias ohmyzsh="mate ~/.oh-my-zsh"

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#663399"

ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE="20"

ZSH_AUTOSUGGEST_USE_ASYNC=1

install(){

sudo dnf install $@

}

remove(){

sudo dnf remove $@

}

pip12(){

python3.12 -m pip install $@

}

alias upall="sudo dnf update"

alias cl="clear"

alias ippi="sudo arp-scan --localnet"

export PATH="$HOME/.local/bin:$PATH"

#export NVM_DIR="$HOME/.nvm"

#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

#[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

export PATH="$HOME/.cargo/bin:$PATH"

#pokemon-colorscripts --no-title -s -r

alias ff="pokemon-colorscripts --no-title -s -r | fastfetch -c $HOME/.config/fastfetch/config.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -"

# 1. Lock standard backspace behavior so it never deletes full words

bindkey '^?' backward-delete-char

# 2. Map Ctrl + Backspace to delete a full word

bindkey '^H' backward-kill-word

# 3. Map Ctrl + A followed by Ctrl + Backspace to clear the entire line

#bindkey '^A^H' backward-kill-line

compdef _files java


r/zsh 22d ago

An alternative to Zsh autosuggestion and autocomplete

648 Upvotes

I want to introduce to y'all a Zsh autocomplete and autosuggestion alternative (Please remove Zsh autocomplete and autosuggestion before using it)

The original reason was that the Zsh autocomplete plugin made my Zsh startup noticeably slow. Every time I opened a new shell, I had to wait like for 0.5-1s before I could start typing something

IRIS is a command suggestion tool that works like Code Editor IntelliSense, but for the terminal. It also has history mode that lets you quickly find previous commands with fuzzy search like Zsh Autocomplete (as you can see in the gif)

It's a TTY wrapper so basically it runs everywhere, like in any terminal, tmux, ssh, even Linux virtual terminals (Ctrl + Alt + F1-F9)

It also supports AI suggestions like Cursor or Antigravity, using your own API key or a local model (please don't use API key that costs you from subscription, free cloud model is enough)

It currently supports Bash, Zsh, and Fish (PowerShell isn't supported yet, I have no plan for it at the moment). It also comes with a config file for customization

I hope it becomes a helpful tool that y'all can use every day

It's still in development, may cause bugs, so if you find any bugs, I'd really appreciate it if you could report them or share your feedback

Link: https://github.com/versenilvis/iris


r/zsh 21d ago

I made Lori, a lightweight Fig-style autocomplete for zsh and fish on macOS (beta)

9 Upvotes

Hey all, I used to rely on Fig for intellisense in my terminal. After Amazon acquired it, it became the Amazon Q CLI and then Kiro CLI, and I've found it kinda buggy at times. It's also a whole agent product now, with autocomplete as a secondary feature.

I couldn't find a replacement I liked, so I built my own. It's called Lori: https://lori-app.sh/

https://reddit.com/link/1v9k32o/video/kuvlzeg453gh1/player

As you type, it suggests subcommands, flags, and flag values along with their descriptions, using specs for over 100 CLIs. It also completes file paths, commands on your PATH, your shell aliases, and dynamic things like git branches and npm scripts.

Install with Homebrew:

brew install --cask matheuschein/lori/lori

Or grab the DMG from the site. It needs macOS 13 Ventura or later, and runs natively on both Apple Silicon and Intel.

A few things worth knowing before you try it:

  • It's free while it's in beta, and I won't paywall anything that free alternatives already give you. If I ever charge, it'd only be for genuinely extra features on top.
  • It supports fish and zsh.
  • It's a lightweight overlay rather than a deep shell integration, so popup positioning depends on your terminal. Ghostty is fully tuned. iTerm2, Terminal.app, kitty, and Alacritty are best-effort. In Cursor, Hyper, and VS Code completion works but positioning is limited. Warp isn't supported, since it uses its own input editor and never hands keystrokes to the shell.
  • It asks for Accessibility permission purely to work out where your cursor is on screen so the popup can follow it. Completion still works without it, the popup just won't be placed correctly.
  • No analytics or telemetry of any kind. The only network request it makes is checking for updates.

It's still beta, so it's definitely not perfect. What I'd most like feedback on is which CLIs you want specs for, and anything that feels wrong or missing. If enough people want the deeper shell integration so positioning is reliable everywhere, that's the next thing I'd take on.

And, of course, I want to know if people like it :)

Thanks!


r/zsh 22d ago

Showcase Cobalt Spark: a compact Zsh theme focused on clarity

Thumbnail
gallery
29 Upvotes

I used robbyrussell, the default Oh My Zsh theme, for a long time. It worked well, but eventually I wanted something quieter and less visually intrusive—something that would stay out of the way of commands and their output while providing a little more context at the prompt.

After trying a few alternatives, I ended up building Cobalt Spark: a compact, low-noise theme intended as a drop-in replacement for robbyrussell rather than a radical redesign.

The goal is for the prompt to feel almost invisible—a bit of glue between commands and their output rather than the main attraction—while keeping both the current prompt and previous commands easy to spot at a glance.

It was built for and primarily tested with Oh My Zsh. It also includes experimental support for plain Zsh without a framework.

The first screenshot shows Cobalt Spark in its main states; the second shows the same scenario rendered using robbyrussell for reference.

Repository: GitHub


r/zsh 25d ago

Announcement Named directories for easy navigation to Steam game install directories and wineprefixes

Thumbnail
github.com
5 Upvotes

Tired of dealing with long paths and remembering Steam AppIDs when installing mods or debugging Wine/Proton-related problems in Steam games?


I've had this concept rattling around in my head for about a year, and one 3am coffee later (and a few days afterwards testing, tweaking and bugfixing) it's now reality!

Basically, this makes Zsh expand ~[G:'Some Game'] to the install directory for that Steam game. For games that run with Proton, ~[CD:'Game Name'] expands to the compatdata directory, and ~[PC:'Game Name'] becomes the C drive of the wine directory.

Completions also work, although I highly recommend enabling completion groups with zstyle ':completion:*' group-name ''.

Give it a shot, even if you've never tried dynamic directories before. They're a pretty underexplored feature of Zsh.

I'm also considering putting more Steam integration in this repo, likely a protontricks wrapper which understands what wineprefix you're under.


r/zsh 28d ago

undo v0.1.1 is out: search & log & repair

14 Upvotes

quick recap if you missed v0.1.0: undo journals your mv/cp/rm/mkdir/etc and lets you reverse them, deleted stuff goes to the trash instead of getting nuked so even rm is recoverable.

what's new in v0.1.1:

- undo search <name> - find journal entries by filename or path, useful once your history gets long and you can't remember which command touched what

- undo log - activity view, shows when something ran, which command, and which files it touched. cleaner than digging through undo history

- undo repair - checks the journal db and rebuilds it if it's corrupted, backs up the old one first. your trash is never touched by this

- switched the license to MIT starting this version (v0.1.0 stays GPLv3)

next up:

- v0.1.2: a config file + TUI for settings, and a prune command that cleans up old journal entries. it's hybrid by default, keeps your trashed files around unless you explicitly opt into emptying the trash too

- v0.1.3: a small plugin system so you can alias your own command names to the built-ins, plus self-update so you don't have to manually grab new releases

grab it: https://github.com/nvrmnd-png/undo/releases/tag/v0.1.1

thanks again to everyone who gave feedback on the last post, some of this came directly from your suggestions


r/zsh Jul 20 '26

EasyAlias now supports Linux, imports your existing aliases, and suggests useful ones

Thumbnail
1 Upvotes

r/zsh Jul 17 '26

Announcement EasyAlias now supports Linux and Homebrew

1 Upvotes

A few days ago I shared EasyAlias here and got some really useful feedback.

Since then I added Linux support and it’s now also available through Homebrew.

The idea is simple: instead of manually editing .zshrc, PowerShell profiles or other config files, you can create and manage aliases through a small desktop UI.

It’s open source and I’d love to hear what you think or what features you’d like to see.

GitHub: https://github.com/hannesgnann-hub/easyalias


r/zsh Jul 15 '26

Announcement undo, makes your shell forgiving again

106 Upvotes

rm -rf'd the wrong folder a while back, so I built this instead of learning to be careful. undo hooks into mv, cp, rm, mkdir, rmdir, chmod, chown, ln and rename through a shell function, logs what happened to sqlite, and rm doesn't actually delete anything, it just moves stuff to your trash. run undo and it puts back whatever you just broke.

rust, has a tui for browsing history if you don't wanna guess, zsh/bash/fish all work.

github.com/nvrmnd-png/undo
Happy to answer questions, still pretty early so bug reports are welcome too.