ohmyzsh/plugins/shell-proxy
jiayang lai cc0f7eee90 fix: Code review fixes for multiple Python files
Fixed the following issues:

1. gitstatus.py:
   - Fixed broad IOError exception handling to catch specific OSError/FileNotFoundError
   - Fixed unused variable warning by using _ for ignored stderr

2. proxy.py:
   - Fixed os.path.expandvars usage that doesn't expand ~, changed to os.path.expanduser
   - Fixed check_output call that was incorrectly passing a file path instead of command list
   - Fixed missing space in env variable assignment for aliases

3. update_emoji.py:
   - Fixed file handle leaks by using with statements for file operations
   - Removed unnecessary .keys() call in dict iteration

4. cheatsheet.py:
   - Fixed parse() function to handle lines without '=' character
   - Fixed inefficient list comprehension using any() instead
   - Fixed shadowing of built-in 'cheatsheet' function name

5. ssh-agent.py:
   - Modernized string formatting from .format() to f-string

6. ssh-proxy.py:
   - Fixed next() call without default value that crashes when no proxy env vars set
   - Fixed missing exit code propagation from subprocess.call

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-19 16:33:21 +08:00
..
.editorconfig fix(shell-proxy): make ssh-proxy compatible with macOS (#10640) 2022-04-12 13:26:22 +02:00
proxy.py fix: Code review fixes for multiple Python files 2026-04-19 16:33:21 +08:00
README.md feat(shell-proxy): allow excluding endpoints with NO_PROXY (#11924) 2023-10-02 20:58:42 +02:00
shell-proxy.plugin.zsh feat(shell-proxy): allow excluding endpoints with NO_PROXY (#11924) 2023-10-02 20:58:42 +02:00
ssh-agent.py fix: Code review fixes for multiple Python files 2026-04-19 16:33:21 +08:00
ssh-proxy.py fix: Code review fixes for multiple Python files 2026-04-19 16:33:21 +08:00

shell-proxy plugin

This a pure user-space program, shell-proxy setter, written in Python3 and Zsh.

To use it, add shell-proxy to the plugins array in your zshrc file:

plugins=(... shell-proxy)

Key features

  • Supports macOS and Linux (Ubuntu, Archlinux, etc.)
  • Supports git via setting $GIT_SSH
  • Supports ssh, sftp, scp, slogin and ssh-copy-id via setting aliases
  • Built-in autocomplete

Usage

Method 1

Set SHELLPROXY_URL environment variable to the URL of the proxy server:

SHELLPROXY_URL="http://127.0.0.1:8123"
SHELLPROXY_NO_PROXY="localhost,127.0.0.1"
proxy enable

Method 2

Write a program file in $HOME/.config/proxy so that the proxy URL is defined dynamically. Note that the program file must be executable.

Example:

#!/bin/bash

# HTTP Proxy
if [[ "$(uname)" = Darwin ]]; then
  echo "http://127.0.0.1:6152" # Surge Mac
else
  echo "http://127.0.0.1:8123" # polipo
fi

# No Proxy
echo "localhost,127.0.0.1"

Method 3

Use method 2 but define the location of the program file by setting the SHELLPROXY_CONFIG environment variable:

SHELLPROXY_CONFIG="$HOME/.dotfiles/proxy-config"

Reference

Maintainer