#!/bin/bash
-# Copyright (C) 2019 Ian Kelling
-# SPDX-License-Identifier: AGPL-3.0-or-later
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# usage:
#
#
if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
-source /a/bin/errhandle/err
+source /a/bin/bash-bear-trap/bash-bear
shopt -s nullglob
shopt -s dotglob
+tmp_focus1=$(mktemp)
+tmp_focus2=$(mktemp)
+
mins=0
half_hours=0
-fast_blocks=30
start=$EPOCHSECONDS
domins=false
printf '['
+ if [[ -e /dev/shm/iank-status && ! -e /tmp/quiet-status ]]; then
+ ps_char=
+ eval "$(< /dev/shm/iank-status)"
+ fi
+
+ touch --date="10 minutes ago" $tmp_focus1
+ touch --date="30 minutes ago" $tmp_focus2
+ f=/tmp/focus-last-input
+
+ # We output a reminder to do input to the focus app if we haven't done
+ # it less 10 minutes ago (but dont bother if its been more than 30
+ # minutes, maybe we aren't running it anymore.)
+ if [[ -e $f && $tmp_focus2 -ot $f && $tmp_focus1 -nt $f ]]; then
+ ps_char="=======FOCUS====== $ps_char"
+ fi
+
+ if [[ -e /tmp/iank-i3-no-auto ]]; then
+ ps_char="$ps_char I"
+ fi
+ if [[ -e /tmp/no-obs-auto-scene-switch ]]; then
+ ps_char="$ps_char O"
+ fi
+
+
+ printf '{ "name":"status", "color":"#ED297D", "full_text": "%s' "$ps_char"
+ printf '"},'
+
if [[ $start2 ]]; then
time2=$((EPOCHSECONDS - start2))
# there are 9 spark levels, 1/9 = .111.... In order to keep it in bash math, we upscale
# the number and divide by 111, 3 digits is good enough accuracy.
- spark_index="$(( (1000000 -($EPOCHSECONDS - $day_start)*1000000 / (16*60*60) ) % 1000 / 111 ))"
+ spark_index="$(( (1000000 -(EPOCHSECONDS - day_start)*1000000 / (16*60*60) ) % 1000 / 111 ))"
spark=" ▁▂▃▄▅▆▇█"
# note: 960 minutes, so 10 minutes is about 1%
day_thousandth=$(( 1000 - (EPOCHSECONDS - day_start)*1000 / (16*60*60) ))
else
printf '{ "version": 1, "click_events": true }\n['
while true; do
- main
- line=
- read -r -t 3 line ||:
+ if [[ -e /tmp/noi3bar ]]; then
+ sleep 10
+ else
+ main
+ line=
+ read -r -t 3 line ||:
+ fi
done
fi
+
+rm -f $tmp_focus1 $tmp_focus2