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.
|
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
|
### 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.
|
[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
|
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
|
### 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.
|
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
|
```bash
|
||||||
function helloWorldSummarizer() {
|
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`.
|
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
|
||||||
|
|
||||||
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).
|
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`.
|
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
|
#### Examples
|
||||||
|
|
||||||
|
|||||||
+17
-9
@@ -4,7 +4,7 @@
|
|||||||
########################################################################
|
########################################################################
|
||||||
# Prints a login welcome message with status information and ASCII art
|
# Prints a login welcome message with status information and ASCII art
|
||||||
# This tool relies on a modular information provider setup in ~/.welcome
|
# 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
|
# Usage: welcome
|
||||||
########################################################################
|
########################################################################
|
||||||
@@ -12,6 +12,14 @@
|
|||||||
# Define indentation
|
# Define indentation
|
||||||
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
|
# 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"
|
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ ! -d ~/.welcome ]]; then
|
if [[ ! -d "$configPath" ]]; then
|
||||||
echo -e "\033[34m~/.welcome\033[31m does not exist.\033[0m"
|
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 -e "\033[31mPlease follow the installation instructions in \033[34mREADME\033[31m.\033[0m"
|
||||||
echo
|
echo
|
||||||
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ ! -f ~/.welcome/colossal.flf ]]; then
|
if [[ ! -f "$configPath/colossal.flf" ]]; then
|
||||||
echo -e "\033[34m~/.welcome/colossal.flf\033[31m does not exist.\033[0m"
|
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 -e "\033[31mPlease follow the installation instructions in \033[34mREADME\033[31m.\033[0m"
|
||||||
echo
|
echo
|
||||||
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
echo -e "\033[31mWelcome anyway. :)\033[0m"
|
||||||
@@ -56,7 +64,7 @@ function echoPrepare() {
|
|||||||
computerName=${HOSTNAME%%.*}
|
computerName=${HOSTNAME%%.*}
|
||||||
|
|
||||||
# Generate ASCII art and indent every line of it
|
# 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/")
|
asciiIndented=$(echo "$ascii" | sed "s/^/$indentation/")
|
||||||
|
|
||||||
# Generate user and hostname string (colored for output, uncolored for length determination)
|
# Generate user and hostname string (colored for output, uncolored for length determination)
|
||||||
@@ -89,7 +97,7 @@ echoPrepare "$indentation$userAndHostnameCentered"
|
|||||||
# --------------------
|
# --------------------
|
||||||
# Load env summarizers
|
# Load env summarizers
|
||||||
|
|
||||||
if ls ~/.welcome/summarizers/*.sh &> /dev/null; then
|
if ls "$configPath/summarizers/"*.sh &> /dev/null; then
|
||||||
echoPrepare
|
echoPrepare
|
||||||
|
|
||||||
# Store for summarizers
|
# Store for summarizers
|
||||||
@@ -120,7 +128,7 @@ if ls ~/.welcome/summarizers/*.sh &> /dev/null; then
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Load the summarizer files and let them register themselves
|
# 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)
|
# Check if the file is executable (security check)
|
||||||
if [[ ! -x "$summarizer" ]]; then
|
if [[ ! -x "$summarizer" ]]; then
|
||||||
continue
|
continue
|
||||||
@@ -151,7 +159,7 @@ fi
|
|||||||
# Load warners
|
# Load warners
|
||||||
|
|
||||||
# Load the warner files
|
# Load the warner files
|
||||||
for warner in ~/.welcome/warners/*; do
|
for warner in "$configPath/warners/"*; do
|
||||||
# Check if the file is executable (security check)
|
# Check if the file is executable (security check)
|
||||||
if [[ ! -x "$warner" ]]; then
|
if [[ ! -x "$warner" ]]; then
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user