-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeckclock
More file actions
executable file
·93 lines (81 loc) · 2.73 KB
/
Copy pathdeckclock
File metadata and controls
executable file
·93 lines (81 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/data/data/com.termux/files/usr/bin/bash
# deckclock — Multi-timezone world clock for DeckDroid
# Usage: deckclock [--json] [--log] [--ntp]
LOG_DIR="$HOME/.deckdroid/logs"
JSON_OUT=false
DO_LOG=false
CHECK_NTP=false
i=1
while [ $i -le $# ]; do
eval "arg=\${$i}"
case $arg in
--json) JSON_OUT=true ;;
--log) DO_LOG=true ;;
--ntp) CHECK_NTP=true ;;
esac
i=$((i+1))
done
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# Timezones to display
ZONES=("UTC" "America/New_York" "Europe/London" "Asia/Tokyo" "Australia/Sydney")
ZONE_LABELS=("UTC" "New York" "London" "Tokyo" "Sydney")
# Get local time
LOCAL_TIME=$(date +"%H:%M:%S %Z" 2>/dev/null || date +"%H:%M:%S")
# NTP check
NTP_STATUS="N/A"
if $CHECK_NTP; then
if command -v ntpdate &>/dev/null; then
NTP_OUT=$(ntpdate -q pool.ntp.org 2>/dev/null | tail -1)
if echo "$NTP_OUT" | grep -q "offset"; then
NTP_STATUS="synced"
else
NTP_STATUS="unsynced"
fi
elif command -v sntp &>/dev/null; then
sntp -s pool.ntp.org &>/dev/null && NTP_STATUS="synced" || NTP_STATUS="unsynced"
else
NTP_STATUS="no tool"
fi
fi
if $JSON_OUT; then
python3 -c "
import json
from datetime import datetime
import pytz
zones = {'UTC': 'UTC', 'America/New_York': 'New York', 'Europe/London': 'London', 'Asia/Tokyo': 'Tokyo', 'Australia/Sydney': 'Sydney'}
times = {}
for tz_name, label in zones.items():
try:
tz = pytz.timezone(tz_name)
t = datetime.now(tz)
times[label] = t.strftime('%H:%M:%S')
except:
times[label] = 'N/A'
d = {'timestamp': '$TIMESTAMP', 'local': '$LOCAL_TIME', 'ntp': '$NTP_STATUS', 'times': times}
print(json.dumps(d, indent=2))
"
else
R='\033[0;31m'; G='\033[0;32m'; Y='\033[0;33m'; C='\033[0;36m'; N='\033[0m'; B='\033[1m'
echo -e "${B}${C}╔══════════════════════════════════╗${N}"
echo -e "${B}${C}║ deckclock v1.1 ║${N}"
echo -e "${B}${C}╚══════════════════════════════════╝${N}"
echo -e " ${B}Local :${N} $LOCAL_TIME"
for i in "${!ZONES[@]}"; do
tz="${ZONES[$i]}"
label="${ZONE_LABELS[$i]}"
time=$(TZ="$tz" date +"%H:%M:%S" 2>/dev/null || echo "N/A")
echo -e " ${B}${label:<10}:${N} ${C}${time}${N}"
done
if $CHECK_NTP; then
if [ "$NTP_STATUS" = "synced" ]; then
echo -e " ${B}NTP :${N} ${G}synced${N}"
else
echo -e " ${B}NTP :${N} ${R}${NTP_STATUS}${N}"
fi
fi
echo -e " ${B}Time :${N} $TIMESTAMP"
fi
if $DO_LOG; then
mkdir -p "$LOG_DIR"
echo "{\"ts\":\"$TIMESTAMP\",\"tool\":\"deckclock\",\"ntp\":\"$NTP_STATUS\",\"local\":\"$LOCAL_TIME\"}" >> "$LOG_DIR/tools.log"
fi