mirror of
https://github.com/lukasbestle/welcome.git
synced 2026-10-01 18:40:19 +02:00
Support for $XDG_CONFIG_HOME
This commit is contained in:
@@ -20,6 +20,10 @@ The information below the fancy dynamic ASCII art comes from a modular informati
|
||||
|
||||
The `welcome` script from the `bin` directory can be installed anywhere in your `$PATH`. `~/bin` makes sense, but it can be any directory.
|
||||
|
||||
### Setup a configuration directory
|
||||
|
||||
The configuration of `welcome` can either be stored in `~/.welcome` or in `$XDG_CONFIG_HOME/welcome` (which defaults to `~/.config/welcome`). Please create this directory and place all files from the following steps into it.
|
||||
|
||||
### Install figlet, a dependency of welcome
|
||||
|
||||
[figlet](http://www.figlet.org) is a command line tool to generate fancy ASCII art from text and is a required depencency of welcome.
|
||||
@@ -29,7 +33,7 @@ The `welcome` script from the `bin` directory can be installed anywhere in your
|
||||
toast arm ftp://ftp.figlet.org/pub/figlet/program/unix/figlet-2.2.5.tar.gz
|
||||
```
|
||||
|
||||
2. Get colossal, a figlet ASCII font that looks great but is not included by default: Download the file [colossal.flf](http://www.figlet.org/fonts/colossal.flf) from the figlet website and place it in `~/.welcome/colossal.flf`.
|
||||
2. Get colossal, a figlet ASCII font that looks great but is not included by default: Download the file [colossal.flf](http://www.figlet.org/fonts/colossal.flf) from the figlet website and place it in `.welcome/colossal.flf`.
|
||||
|
||||
### Create your own information providers
|
||||
|
||||
@@ -39,7 +43,7 @@ The reason welcome is so flexible is the modular information provider system. Th
|
||||
|
||||
A summarizer is a function that returns one or more lines of text. Summarizers are expected to always output information and are therefore useful for information like the current date, the system uptime etc.
|
||||
|
||||
You can place as many summarizers as you need in `~/.welcome/summarizers`. Each summarizer is a shell script with a specific structure:
|
||||
You can place as many summarizers as you need in `.welcome/summarizers`. Each summarizer is a shell script with a specific structure:
|
||||
|
||||
```bash
|
||||
function helloWorldSummarizer() {
|
||||
@@ -54,17 +58,17 @@ This summarizer will output a simple `Hello: World`.
|
||||
|
||||
The order of the summarizers gets defined by the order in the file system. So to force a specific order, simply prepend numbers, like so: `01-helloworld.sh`.
|
||||
|
||||
**There is one thing you need to do before this can work: Your summarizers must actually be executable files to make sure only files you wanted to run are run, so please set `chmod +x ~/.welcome/summarizers/*`**.
|
||||
**There is one thing you need to do before this can work: Your summarizers must actually be executable files to make sure only files you wanted to run are run, so please set `chmod +x .welcome/summarizers/*`**.
|
||||
|
||||
#### Warners
|
||||
|
||||
Warners are the second kind of information provider. The difference to summarizers is that a warner does not have to output anything. They are useful for information that is only relevant in specific situations (for example when a package update is available like in the screenshot above).
|
||||
|
||||
You can place as many warners as you need in `~/.welcome/warners`. Warners are arbitrary binaries that simply output text.
|
||||
You can place as many warners as you need in `.welcome/warners`. Warners are arbitrary binaries that simply output text.
|
||||
|
||||
The order of the warners also gets defined by the order in the file system. So to force a specific order, simply prepend numbers, like so: `01-helloworld.sh`.
|
||||
|
||||
**Same here: Please set `chmod +x ~/.welcome/warners/*` to make sure only files you wanted to run are run**.
|
||||
**Same here: Please set `chmod +x .welcome/warners/*` to make sure only files you wanted to run are run**.
|
||||
|
||||
#### Examples
|
||||
|
||||
|
||||
+17
-9
@@ -4,7 +4,7 @@
|
||||
########################################################################
|
||||
# Prints a login welcome message with status information and ASCII art
|
||||
# This tool relies on a modular information provider setup in ~/.welcome
|
||||
# See README for detailed information
|
||||
# or $XDG_CONFIG_HOME/welcome; see README for detailed information
|
||||
#
|
||||
# Usage: welcome
|
||||
########################################################################
|
||||
@@ -12,6 +12,14 @@
|
||||
# Define indentation
|
||||
indentation=' '
|
||||
|
||||
# Detect configuration path
|
||||
configPath=${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
if [[ -d "$configPath/welcome" ]]; then
|
||||
configPath="$configPath/welcome"
|
||||
else
|
||||
configPath="$HOME/.welcome"
|
||||
fi
|
||||
|
||||
# -----------------------------------------
|
||||
# Check for availability of files and tools
|
||||
|
||||
@@ -22,15 +30,15 @@ if ! command -v figlet &> /dev/null; then
|
||||
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d ~/.welcome ]]; then
|
||||
echo -e "\033[34m~/.welcome\033[31m does not exist.\033[0m"
|
||||
if [[ ! -d "$configPath" ]]; then
|
||||
echo -e "\033[31mCould not find configuration directory.\033[0m"
|
||||
echo -e "\033[31mPlease follow the installation instructions in \033[34mREADME\033[31m.\033[0m"
|
||||
echo
|
||||
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -f ~/.welcome/colossal.flf ]]; then
|
||||
echo -e "\033[34m~/.welcome/colossal.flf\033[31m does not exist.\033[0m"
|
||||
if [[ ! -f "$configPath/colossal.flf" ]]; then
|
||||
echo -e "\033[34m$configPath/colossal.flf\033[31m does not exist.\033[0m"
|
||||
echo -e "\033[31mPlease follow the installation instructions in \033[34mREADME\033[31m.\033[0m"
|
||||
echo
|
||||
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||
@@ -56,7 +64,7 @@ function echoPrepare() {
|
||||
computerName=${HOSTNAME%%.*}
|
||||
|
||||
# Generate ASCII art and indent every line of it
|
||||
ascii=$(figlet -k -f ~/.welcome/colossal.flf -w 150 "$USER@$computerName")
|
||||
ascii=$(figlet -k -f "$configPath/colossal.flf" -w 150 "$USER@$computerName")
|
||||
asciiIndented=$(echo "$ascii" | sed "s/^/$indentation/")
|
||||
|
||||
# Generate user and hostname string (colored for output, uncolored for length determination)
|
||||
@@ -89,7 +97,7 @@ echoPrepare "$indentation$userAndHostnameCentered"
|
||||
# --------------------
|
||||
# Load env summarizers
|
||||
|
||||
if ls ~/.welcome/summarizers/*.sh &> /dev/null; then
|
||||
if ls "$configPath/summarizers/"*.sh &> /dev/null; then
|
||||
echoPrepare
|
||||
|
||||
# Store for summarizers
|
||||
@@ -120,7 +128,7 @@ if ls ~/.welcome/summarizers/*.sh &> /dev/null; then
|
||||
}
|
||||
|
||||
# Load the summarizer files and let them register themselves
|
||||
for summarizer in ~/.welcome/summarizers/*.sh; do
|
||||
for summarizer in "$configPath/summarizers/"*.sh; do
|
||||
# Check if the file is executable (security check)
|
||||
if [[ ! -x "$summarizer" ]]; then
|
||||
continue
|
||||
@@ -151,7 +159,7 @@ fi
|
||||
# Load warners
|
||||
|
||||
# Load the warner files
|
||||
for warner in ~/.welcome/warners/*; do
|
||||
for warner in "$configPath/warners/"*; do
|
||||
# Check if the file is executable (security check)
|
||||
if [[ ! -x "$warner" ]]; then
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user