Skip to the content.

πŸ–₯️ Custom Welcome Message for Linux & macOS

screenshot

Easily add a beautiful, dynamic welcome message to your Linux or macOS shellβ€”complete with system stats, public IP, disk usage, weather, and multi-language support.

License: MIT

πŸš€ Features

βš™οΈ Installation

Run this command to install:

curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash

βœ… You can re-run this any time β€” it will only update the script if needed.

Installation Options

# Test mode - see what would be installed without making changes
curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash -s -- --test

# Skip dependency installation (if you already have curl and fastfetch)
curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash -s -- --no-deps

# Uninstall welcome message
curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash -s -- --uninstall

# Show help
curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash -s -- --help

🎨 Configuration

A default config file is created automatically at ~/.config/welcome.sh/config on first run. To change a setting, remove the # at the start of the line and set your value:

nano ~/.config/welcome.sh/config

Available Options

# Display toggles
SHOW_FASTFETCH=true          # Show fastfetch system info
SHOW_WEATHER=true            # Show weather from wttr.in
SHOW_PUBLIC_IP=true          # Show your public IP address
SHOW_PRIVATE_IP=false        # Show your private/local IP address
SHOW_UPTIME=true             # Show uptime and load average
SHOW_DISK_USAGE=true         # Show disk usage for all mounted volumes
SHOW_MEMORY=true             # Show memory usage
SHOW_CPU_TEMP=true           # Show CPU temperature (not available on macOS)
SHOW_TOP_CPU=true            # Show top CPU process
SHOW_ASCII_ART=false         # Show ASCII art banner
QUIET_MODE=false             # Minimal output for faster loading

# Customization
WEATHER_LOCATION=""          # Set your city (e.g., "New+York", "London")
WEATHER_FORMAT="3"           # wttr.in format (see https://wttr.in/:help)
GREETING=""                  # Custom greeting (overrides language default)
CACHE_TIMEOUT=3600           # Cache duration in seconds (default: 1 hour)
REQUEST_TIMEOUT=3            # Timeout for external API calls (seconds)

Example configuration file: config.example

Quick Customization Examples

Enable ASCII art banner:

echo "SHOW_ASCII_ART=true" >> ~/.config/welcome.sh/config

Change weather location:

echo "WEATHER_LOCATION=\"Tokyo\"" >> ~/.config/welcome.sh/config

Speed up loading (disable slow features):

cat >> ~/.config/welcome.sh/config << EOF
SHOW_WEATHER=false
SHOW_PUBLIC_IP=false
QUIET_MODE=true
EOF

Clear cache (useful after config changes):

~/welcome.sh --clear-cache

πŸ—£οΈ Language Support

The installer detects your system language using LANG and fetches a matching welcome.sh.template.{lang}. Currently available: en, es, nl, fr, de. If no matching template is found, the script will display all available templates and automatically use English.

You can temporarily force a language without changing your system locale permanently:

LANG=fr_FR.UTF-8 LANGUAGE=fr \
bash <(curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh)

πŸš€ Performance Optimizations

Cache files are stored in: ~/.cache/welcome.sh/

πŸ§ͺ Safe, Smart, and Idempotent

🐧 Distribution Support

Supported Platforms

Supported Package Managers (Linux)

macOS Installation

On macOS, you’ll need Homebrew to install dependencies. If you don’t have Homebrew installed yet:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Then install the required dependencies:

brew install curl fastfetch

Finally, run the installer:

curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash

Note: The installer will automatically detect macOS and skip Linux-specific package managers. Just ensure curl and fastfetch are installed via Homebrew first.

Raspberry Pi

Improved detection using multiple methods:

πŸ“¦ Dependencies

These are installed automatically (unless --no-deps is used):

Ubuntu 22.04+ users benefit from a Fastfetch PPA for latest builds.

οΏ½ System Metrics Dashboard

Each metric has its own toggle:

Always shown (no toggle):

οΏ½πŸ“‚ Directory Layout

.
β”œβ”€β”€ install_welcome.sh
β”œβ”€β”€ config.example
└── templates/
    β”œβ”€β”€ welcome.sh.template.en
    β”œβ”€β”€ welcome.sh.template.es
    β”œβ”€β”€ welcome.sh.template.nl
    β”œβ”€β”€ welcome.sh.template.fr
    └── welcome.sh.template.de

Want to contribute a translation? Add a new welcome.sh.template.xx file!

🧠 Advanced Usage

Upgrading

To upgrade to the latest version, simply re-run the installer:

curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash

This will update ~/welcome.sh to the latest version while preserving your existing configuration. The installer will also add any new config options and remove deprecated ones from ~/.config/welcome.sh/config.

Testing Configuration Changes

After editing your config file, test it immediately:

~/welcome.sh

To force fresh data (bypass cache):

~/welcome.sh --clear-cache && ~/welcome.sh

Temporary Disable

Comment out the hook in your shell rc file:

# ~/.bashrc or ~/.zshrc
# ~/welcome.sh

Custom Installation

Download and modify the template locally:

curl -O https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/templates/welcome.sh.template.en
# Edit welcome.sh.template.en as desired
mv welcome.sh.template.en ~/welcome.sh
chmod +x ~/welcome.sh

Docker/VM Testing

To test in a clean shell environment, use Docker or a VM:

docker run -it ubuntu:22.04 bash -c "curl -s https://raw.githubusercontent.com/MichalAFerber/welcome-message/main/install_welcome.sh | bash && bash"

🀝 Contributing

Pull requests are welcome! Especially for:

Adding a New Language

  1. Copy an existing template: cp templates/welcome.sh.template.en templates/welcome.sh.template.xx
  2. Translate all user-facing strings
  3. Test the template: bash templates/welcome.sh.template.xx
  4. Submit a pull request

πŸ†˜ Troubleshooting

Welcome message doesn’t show

Slow loading

Temperature not showing

Fastfetch not found

Apt signature verification warnings

You may see warnings like W: An error occurred during signature verification during installation on systems with third-party repositories (e.g., NodeSource for Node.js). These warnings are:

These are system-level warnings from your package manager when updating repository metadata, not from this project.

πŸ“„ License

MIT License

πŸ™ Credits

For more info, read the full blog guide: Custom Linux Welcome Message

Enjoy your new login experience. Whiskey, Tango, Foxtrot ready. 🫑