Merge branch 'master' into synchronize-panes

This commit is contained in:
Janno Tjarks 2022-10-28 22:03:06 +02:00 committed by GitHub
commit 92583ed8b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 155 additions and 38 deletions

View file

@ -48,7 +48,8 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file,
The order that you define the plugins will be the order on the status bar left to right. The order that you define the plugins will be the order on the status bar left to right.
```bash ```bash
# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, weather, time, synchronize-panes # available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, weather, time, synchronize-panes
set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" set -g @dracula-plugins "cpu-usage gpu-usage ram-usage"
``` ```
@ -119,6 +120,23 @@ Customize label
set -g @dracula-cpu-usage-label "CPU" set -g @dracula-cpu-usage-label "CPU"
``` ```
Show system load average instead of CPU usage percentage (default)
```bash
set -g @dracula-cpu-display-load true
```
CPU usage percentage (default) - in percentage (output: %)
Load average is the average system load calculated over a given period of time of 1, 5 and 15 minutes (output: x.x x.x x.x)
#### battery options
Customize label
```bash
set -g @dracula-battery-label "Battery"
```
#### gpu-usage options #### gpu-usage options
Customize label Customize label
@ -135,6 +153,15 @@ Customize label
set -g @dracula-ram-usage-label "RAM" set -g @dracula-ram-usage-label "RAM"
``` ```
#### network-ping options
You can configure which server (hostname, IP) you want to ping and at which rate (in seconds). Default is google.com at every 5 seconds.
```bash
set -g @dracula-ping-server "google.com"
set -g @dracula-ping-rate 5
```
#### time options #### time options
Disable timezone Disable timezone
@ -180,6 +207,11 @@ Set symbol or message to use when the current pane has no git repo
set -g @dracula-git-no-repo-message "" set -g @dracula-git-no-repo-message ""
``` ```
Hide untracked files from being displayed as local changes
```bash
# default is false
set -g @dracula-git-no-untracked-files true
```
#### weather options #### weather options
@ -189,6 +221,17 @@ Switch from default fahrenheit to celsius
set -g @dracula-show-fahrenheit false set -g @dracula-show-fahrenheit false
``` ```
Set your location manually
```bash
set -g @dracula-fixed-location "Some City"
```
Hide your location
```bash
set -g @dracula-show-location false
```
#### synchronize-panes options #### synchronize-panes options
@ -196,4 +239,4 @@ Customize label
```bash ```bash
set -g @dracula-synchronize-panes-label "Sync" set -g @dracula-synchronize-panes-label "Sync"
``` ```

View file

@ -14,22 +14,22 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul
## Features ## Features
* Support for powerline - Support for powerline
* Day, date, time, timezone - Day, date, time, timezone
* Current location based on network with temperature and forecast icon (if available) - Current location based on network with temperature and forecast icon (if available)
* Network connection status, bandwidth and SSID - Network connection status, bandwidth and SSID
* Git branch and status - Git branch and status
* Battery percentage and AC power connection status - Battery percentage and AC power connection status
* Refresh rate control - Refresh rate control
* CPU usage - CPU usage (percentage or load average)
* RAM usage - RAM usage
* GPU usage - GPU usage
* Color code based on if prefix is active or not - Color code based on if prefix is active or not
* List of windows with current window highlighted - List of windows with current window highlighted
* When prefix is enabled smiley face turns from green to yellow - When prefix is enabled smiley face turns from green to yellow
* When charging, 'AC' is displayed - When charging, 'AC' is displayed
* If forecast information is available, a ☀, ☁, ☂, or ❄ unicode character corresponding with the forecast is displayed alongside the temperature - If forecast information is available, a ☀, ☁, ☂, or ❄ unicode character corresponding with the forecast is displayed alongside the temperature
* Info if the Panes are synchronized - Info if the Panes are synchronized
## Compatibility ## Compatibility
@ -40,9 +40,15 @@ FreeBSD compatibility is in development
This theme is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/dracula/tmux/graphs/contributors). This theme is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/dracula/tmux/graphs/contributors).
[![Dane Williams](https://avatars2.githubusercontent.com/u/22798229?s=70&v=4",)](https://github.com/danerwilliams) | [![Ethan Edwards](https://avatars1.githubusercontent.com/u/60861925?s=70&v=4)](https://github.com/ethancedwards8) | | [![Dane Williams](https://avatars2.githubusercontent.com/u/22798229?s=70&v=4",)](https://github.com/danerwilliams) | [![Ethan Edwards](https://avatars1.githubusercontent.com/u/60861925?s=70&v=4)](https://github.com/ethancedwards8) |
--- | --- | | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
[Dane Williams](https://github.com/danerwilliams) | [Ethan Edwards](https://github.com/ethancedwards8) | | [Dane Williams](https://github.com/danerwilliams) | [Ethan Edwards](https://github.com/ethancedwards8) |
## Community
- [Twitter](https://twitter.com/draculatheme) - Best for getting updates about themes and new stuff.
- [GitHub](https://github.com/dracula/dracula-theme/discussions) - Best for asking questions and discussing issues.
- [Discord](https://draculatheme.com/discord-invite) - Best for hanging out with the community.
## License ## License

View file

@ -2,6 +2,9 @@
# setting the locale, some users have issues with different locales, this forces the correct one # setting the locale, some users have issues with different locales, this forces the correct one
export LC_ALL=en_US.UTF-8 export LC_ALL=en_US.UTF-8
current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $current_dir/utils.sh
linux_acpi() { linux_acpi() {
arg=$1 arg=$1
BAT=$(ls -d /sys/class/power_supply/BAT* | head -1) BAT=$(ls -d /sys/class/power_supply/BAT* | head -1)
@ -86,10 +89,10 @@ battery_status()
discharging|Discharging) discharging|Discharging)
echo '' echo ''
;; ;;
high) high|Full)
echo '' echo ''
;; ;;
charging) charging|Charging)
echo 'AC' echo 'AC'
;; ;;
*) *)
@ -108,15 +111,16 @@ battery_status()
main() main()
{ {
bat_label=$(get_tmux_option "@dracula-battery-label" "♥")
bat_stat=$(battery_status) bat_stat=$(battery_status)
bat_perc=$(battery_percent) bat_perc=$(battery_percent)
if [ -z "$bat_stat" ]; then # Test if status is empty or not if [ -z "$bat_stat" ]; then # Test if status is empty or not
echo " $bat_perc" echo "$bat_label $bat_perc"
elif [ -z "$bat_perc" ]; then # In case it is a desktop with no battery percent, only AC power elif [ -z "$bat_perc" ]; then # In case it is a desktop with no battery percent, only AC power
echo " $bat_stat" echo "$bat_label $bat_stat"
else else
echo " $bat_stat $bat_perc" echo "$bat_label $bat_stat $bat_perc"
fi fi
} }

View file

@ -9,7 +9,7 @@ get_percent()
{ {
case $(uname -s) in case $(uname -s) in
Linux) Linux)
percent=$(LC_NUMERIC=en_US.UTF-8 top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}') percent=$(LC_NUMERIC=en_US.UTF-8 top -bn2 -d 0.01 | grep "Cpu(s)" | tail -1 | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')
normalize_percent_len $percent normalize_percent_len $percent
;; ;;
@ -27,13 +27,30 @@ get_percent()
esac esac
} }
main() get_load() {
{ case $(uname -s) in
Linux | Darwin)
loadavg=$(uptime | awk -F'[a-z]:' '{ print $2}' | sed 's/,//g')
echo $loadavg
;;
CYGWIN* | MINGW32* | MSYS* | MINGW*)
# TODO - windows compatability
;;
esac
}
main() {
# storing the refresh rate in the variable RATE, default is 5 # storing the refresh rate in the variable RATE, default is 5
RATE=$(get_tmux_option "@dracula-refresh-rate" 5) RATE=$(get_tmux_option "@dracula-refresh-rate" 5)
cpu_label=$(get_tmux_option "@dracula-cpu-usage-label" "CPU") cpu_load=$(get_tmux_option "@dracula-cpu-display-load" false)
cpu_percent=$(get_percent) if [ "$cpu_load" = true ]; then
echo "$cpu_label $cpu_percent" echo "$(get_load)"
else
cpu_label=$(get_tmux_option "@dracula-cpu-usage-label" "CPU")
cpu_percent=$(get_percent)
echo "$cpu_label $cpu_percent"
fi
sleep $RATE sleep $RATE
} }

View file

@ -12,6 +12,7 @@ main()
# set configuration option variables # set configuration option variables
show_fahrenheit=$(get_tmux_option "@dracula-show-fahrenheit" true) show_fahrenheit=$(get_tmux_option "@dracula-show-fahrenheit" true)
show_location=$(get_tmux_option "@dracula-show-location" true) show_location=$(get_tmux_option "@dracula-show-location" true)
fixed_location=$(get_tmux_option "@dracula-fixed-location")
show_powerline=$(get_tmux_option "@dracula-show-powerline" false) show_powerline=$(get_tmux_option "@dracula-show-powerline" false)
show_flags=$(get_tmux_option "@dracula-show-flags" false) show_flags=$(get_tmux_option "@dracula-show-flags" false)
show_left_icon=$(get_tmux_option "@dracula-show-left-icon" smiley) show_left_icon=$(get_tmux_option "@dracula-show-left-icon" smiley)
@ -66,7 +67,7 @@ main()
# start weather script in background # start weather script in background
if [[ "${plugins[@]}" =~ "weather" ]]; then if [[ "${plugins[@]}" =~ "weather" ]]; then
$current_dir/sleep_weather.sh $show_fahrenheit $show_location & $current_dir/sleep_weather.sh $show_fahrenheit $show_location $fixed_location &
fi fi
# Set timezone unless hidden by configuration # Set timezone unless hidden by configuration
@ -163,6 +164,11 @@ main()
script="#($current_dir/network_bandwidth.sh)" script="#($current_dir/network_bandwidth.sh)"
fi fi
if [ $plugin = "network-ping" ]; then
IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-network-ping-colors" "cyan dark_gray")
script="#($current_dir/network_ping.sh)"
fi
if [ $plugin = "weather" ]; then if [ $plugin = "weather" ]; then
# wait unit $datafile exists just to avoid errors # wait unit $datafile exists just to avoid errors
# this should almost never need to wait unless something unexpected occurs # this should almost never need to wait unless something unexpected occurs

View file

@ -7,6 +7,7 @@ IFS=' ' read -r -a hide_status <<< $(get_tmux_option "@dracula-git-disable-statu
IFS=' ' read -r -a current_symbol <<< $(get_tmux_option "@dracula-git-show-current-symbol" "✓") IFS=' ' read -r -a current_symbol <<< $(get_tmux_option "@dracula-git-show-current-symbol" "✓")
IFS=' ' read -r -a diff_symbol <<< $(get_tmux_option "@dracula-git-show-diff-symbol" "!") IFS=' ' read -r -a diff_symbol <<< $(get_tmux_option "@dracula-git-show-diff-symbol" "!")
IFS=' ' read -r -a no_repo_message <<< $(get_tmux_option "@dracula-git-no-repo-message" "") IFS=' ' read -r -a no_repo_message <<< $(get_tmux_option "@dracula-git-no-repo-message" "")
IFS=' ' read -r -a no_untracked_files <<< $(get_tmux_option "@dracula-git-no-untracked-files" "false")
# Get added, modified, updated and deleted files from git status # Get added, modified, updated and deleted files from git status
getChanges() getChanges()
@ -16,7 +17,7 @@ getChanges()
declare -i updated=0; declare -i updated=0;
declare -i deleted=0; declare -i deleted=0;
for i in $(git -C $path status -s) for i in $(git -C $path --no-optional-locks status -s)
do do
case $i in case $i in
@ -77,8 +78,9 @@ checkEmptySymbol()
# check to see if the current repo is not up to date with HEAD # check to see if the current repo is not up to date with HEAD
checkForChanges() checkForChanges()
{ {
[ $no_untracked_files == "false" ] && no_untracked="" || no_untracked="-uno"
if [ "$(checkForGitDir)" == "true" ]; then if [ "$(checkForGitDir)" == "true" ]; then
if [ "$(git -C $path status -s)" != "" ]; then if [ "$(git -C $path --no-optional-locks status -s $no_untracked)" != "" ]; then
echo "true" echo "true"
else else
echo "false" echo "false"

35
scripts/network_ping.sh Normal file
View file

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# setting the locale, some users have issues with different locales, this forces the correct one
export LC_ALL=en_US.UTF-8
# configuration
# @dracula-ping-server "example.com"
# @dracula-ping-rate 5
current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source $current_dir/utils.sh
ping_function() {
case $(uname -s) in
Linux | Darwin)
# storing the hostname/IP in the variable PINGSERVER, default is google.com
pingserver=$(get_tmux_option "@dracula-ping-server" "google.com")
pingtime=$(ping -c 1 "$pingserver" | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
echo "$pingtime ms"
;;
CYGWIN* | MINGW32* | MSYS* | MINGW*)
# TODO - windows compatability
;;
esac
}
main() {
echo $(ping_function)
RATE=$(get_tmux_option "@dracula-ping-rate" 5)
sleep $RATE
}
# run main driver
main

View file

@ -6,6 +6,7 @@ export LC_ALL=en_US.UTF-8
fahrenheit=$1 fahrenheit=$1
location=$2 location=$2
fixedlocation=$3
LOCKFILE=/tmp/.dracula-tmux-weather.lock LOCKFILE=/tmp/.dracula-tmux-weather.lock
DATAFILE=/tmp/.dracula-tmux-data DATAFILE=/tmp/.dracula-tmux-data
@ -31,7 +32,7 @@ main()
while tmux has-session &> /dev/null while tmux has-session &> /dev/null
do do
$current_dir/weather.sh $fahrenheit $location > $DATAFILE $current_dir/weather.sh $fahrenheit $location $fixedlocation > $DATAFILE
if tmux has-session &> /dev/null if tmux has-session &> /dev/null
then then
sleep 1200 sleep 1200

View file

@ -4,10 +4,13 @@ export LC_ALL=en_US.UTF-8
fahrenheit=$1 fahrenheit=$1
location=$2 location=$2
fixedlocation=$3
display_location() display_location()
{ {
if $location; then if $location && [[ ! -z "$fixedlocation" ]]; then
echo " $fixedlocation"
elif $location; then
city=$(curl -s https://ipinfo.io/city 2> /dev/null) city=$(curl -s https://ipinfo.io/city 2> /dev/null)
region=$(curl -s https://ipinfo.io/region 2> /dev/null) region=$(curl -s https://ipinfo.io/region 2> /dev/null)
echo " $city, $region" echo " $city, $region"
@ -20,7 +23,7 @@ fetch_weather_information()
{ {
display_weather=$1 display_weather=$1
# it gets the weather condition textual name (%C), and the temperature (%t) # it gets the weather condition textual name (%C), and the temperature (%t)
curl -sL wttr.in\?format="%C+%t$display_weather" curl -sL wttr.in/$fixedlocation\?format="%C+%t$display_weather"
} }
#get weather display #get weather display