summaryrefslogtreecommitdiff
path: root/dotfiles
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles')
-rwxr-xr-xdotfiles/common/.local/bin/aix23
-rw-r--r--dotfiles/hyprland/.config/waybar/config21
-rw-r--r--dotfiles/hyprland/.config/waybar/style.css15
-rw-r--r--dotfiles/hyprland/.config/waybar/worldclock.conf18
-rwxr-xr-xdotfiles/hyprland/.local/bin/waybar-date19
-rwxr-xr-xdotfiles/hyprland/.local/bin/waybar-worldclock35
6 files changed, 110 insertions, 21 deletions
diff --git a/dotfiles/common/.local/bin/aix b/dotfiles/common/.local/bin/aix
index a421139..ecbb24c 100755
--- a/dotfiles/common/.local/bin/aix
+++ b/dotfiles/common/.local/bin/aix
@@ -12,16 +12,6 @@ attach_session() {
fi
}
-# Attach directly to existing session
-if [ "$1" = "--attach" ]; then
- if ! tmux has-session -t "$SESSION" 2>/dev/null; then
- echo "No $SESSION session to attach to." >&2
- exit 1
- fi
- attach_session
- exit 0
-fi
-
# Dependency checks
for cmd in fzf tmux claude; do
if ! command -v "$cmd" &>/dev/null; then
@@ -100,6 +90,17 @@ sort_windows() {
fi
}
+# Attach directly to existing session
+if [ "$1" = "--attach" ]; then
+ if ! tmux has-session -t "$SESSION" 2>/dev/null; then
+ echo "No $SESSION session to attach to." >&2
+ exit 1
+ fi
+ sort_windows
+ attach_session
+ exit 0
+fi
+
# If session exists, add new windows to it
if tmux has-session -t "$SESSION" 2>/dev/null; then
# Get existing window names to filter duplicates
@@ -132,11 +133,11 @@ if tmux has-session -t "$SESSION" 2>/dev/null; then
[ -z "$first_wid" ] && first_wid="$wid"
done
- sort_windows
tmux select-window -t "$first_wid"
fi
fi
+ sort_windows
attach_session
exit 0
fi
diff --git a/dotfiles/hyprland/.config/waybar/config b/dotfiles/hyprland/.config/waybar/config
index 5582dc6..c8723d3 100644
--- a/dotfiles/hyprland/.config/waybar/config
+++ b/dotfiles/hyprland/.config/waybar/config
@@ -19,7 +19,8 @@
"pulseaudio",
"idle_inhibitor",
"tray",
- "clock"
+ "custom/date",
+ "custom/worldclock"
],
"group/sysmonitor": {
@@ -116,14 +117,16 @@
"spacing": 4
},
- "clock": {
- "format": "{:%a, %b %d %Y %I:%M %p %Z}",
- "tooltip-format": "<small>{calendar}</small>",
- "calendar": {
- "format": {
- "today": "<span color='#daa520'><b><u>{}</u></b></span>"
- }
- }
+ "custom/date": {
+ "exec": "waybar-date",
+ "return-type": "json",
+ "interval": 60
+ },
+
+ "custom/worldclock": {
+ "exec": "waybar-worldclock",
+ "return-type": "json",
+ "interval": 30
},
"pulseaudio": {
diff --git a/dotfiles/hyprland/.config/waybar/style.css b/dotfiles/hyprland/.config/waybar/style.css
index 4551de9..3f7814b 100644
--- a/dotfiles/hyprland/.config/waybar/style.css
+++ b/dotfiles/hyprland/.config/waybar/style.css
@@ -73,7 +73,8 @@ window#waybar {
#pulseaudio,
#idle_inhibitor,
#tray,
-#clock,
+#custom-date,
+#custom-worldclock,
#custom-layout,
#window {
padding: 0.45rem;
@@ -129,6 +130,18 @@ window#waybar {
color: #d47c59;
}
+#custom-date {
+ margin-left: 0;
+ padding-left: 0;
+ margin-right: 0;
+ padding-right: 0.2rem;
+}
+
+#custom-worldclock {
+ margin-left: 0;
+ padding-left: 0.2rem;
+}
+
#tray > .passive {
-gtk-icon-effect: dim;
}
diff --git a/dotfiles/hyprland/.config/waybar/worldclock.conf b/dotfiles/hyprland/.config/waybar/worldclock.conf
new file mode 100644
index 0000000..3790cfc
--- /dev/null
+++ b/dotfiles/hyprland/.config/waybar/worldclock.conf
@@ -0,0 +1,18 @@
+# World Clock Timezones — one per line, earliest to latest
+# Format: Timezone|Label
+# Lines starting with # are ignored
+Pacific/Honolulu|Honolulu
+America/Anchorage|Anchorage
+America/Los_Angeles|Berkeley
+America/Chicago|New Orleans
+America/New_York|New York
+Europe/London|London
+Europe/Paris|Paris
+Europe/Athens|Athens
+Europe/Istanbul|Istanbul
+Asia/Yerevan|Yerevan
+Asia/Kolkata|Delhi
+Asia/Shanghai|Shanghai
+Asia/Tokyo|Tokyo
+Australia/Sydney|Sydney
+Pacific/Auckland|Wellington
diff --git a/dotfiles/hyprland/.local/bin/waybar-date b/dotfiles/hyprland/.local/bin/waybar-date
new file mode 100755
index 0000000..72a0000
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/waybar-date
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Waybar date module with two-month calendar tooltip
+DATE=$(date '+%a, %b %d %Y')
+TODAY=$(date '+%-d')
+MONTH=$(date '+%B %Y')
+
+# Generate current month (with today highlighted) stacked above next month
+NEXT_M=$(date -d 'next month' '+%-m')
+NEXT_Y=$(date -d 'next month' '+%Y')
+CUR=$(cal | sed "s/\b${TODAY}\b/<span color='#daa520'><b><u>${TODAY}<\/u><\/b><\/span>/")
+NEXT=$(cal "$NEXT_M" "$NEXT_Y")
+HIGHLIGHTED=$(printf '%s\n%s' "$CUR" "$NEXT")
+
+TOOLTIP="<tt>${HIGHLIGHTED}</tt>"
+
+# Escape for JSON
+TOOLTIP=$(echo "$TOOLTIP" | sed ':a;N;$!ba;s/\n/\\n/g')
+
+printf '{"text": "%s", "tooltip": "%s"}\n' "$DATE" "$TOOLTIP"
diff --git a/dotfiles/hyprland/.local/bin/waybar-worldclock b/dotfiles/hyprland/.local/bin/waybar-worldclock
new file mode 100755
index 0000000..9801dad
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/waybar-worldclock
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Waybar world clock module with configurable timezone tooltip
+CONF="${HOME}/.config/waybar/worldclock.conf"
+
+# Local time for bar display
+TEXT=$(date '+%I:%M %p %Z')
+LOCAL_TZ=$(readlink /etc/localtime | sed 's|.*/zoneinfo/||')
+
+# Build tooltip from config file
+if [ -f "$CONF" ]; then
+ LINES=""
+ while IFS='|' read -r tz label; do
+ # Skip comments and blank lines
+ case "$tz" in \#*|"") continue ;; esac
+ TIME=$(TZ="$tz" date '+%I:%M %p %Z')
+ LINE=$(printf "%-16s %s" "$label" "$TIME")
+ # Highlight local timezone in gold
+ if [ "$tz" = "$LOCAL_TZ" ]; then
+ LINE="<span color='#daa520'>${LINE}</span>"
+ fi
+ if [ -z "$LINES" ]; then
+ LINES="$LINE"
+ else
+ LINES=$(printf "%s\n%s" "$LINES" "$LINE")
+ fi
+ done < "$CONF"
+ TOOLTIP="<tt>${LINES}</tt>"
+else
+ TOOLTIP="No worldclock.conf found"
+fi
+
+# Escape for JSON
+TOOLTIP=$(echo "$TOOLTIP" | sed ':a;N;$!ba;s/\n/\\n/g')
+
+printf '{"text": "%s", "tooltip": "%s"}\n' "$TEXT" "$TOOLTIP"