diff options
| author | David T. Sadler <davidtsadler@googlemail.com> | 2026-06-21 19:01:25 +0100 |
|---|---|---|
| committer | David T. Sadler <davidtsadler@googlemail.com> | 2026-06-21 19:07:53 +0100 |
| commit | aebda32c2a09fcbdc1e645f55a0c6de3b9a2cfaf (patch) | |
| tree | bac91eea7c658a6836f5486da562e258e9a8aba0 | |
| parent | b2e8d5fc138d1ee9bb0eb0e4e3bf524a45d9fe25 (diff) | |
Add bookmark management scripts
| -rwxr-xr-x | bin/.bin/add-bookmark.sh | 36 | ||||
| -rwxr-xr-x | bin/.bin/open-bookmark.sh | 23 | ||||
| -rw-r--r-- | bookmarks.txt | 2 | ||||
| -rw-r--r-- | dunst/.config/dunst/dunstrc | 56 | ||||
| -rwxr-xr-x | install.sh | 3 | ||||
| -rw-r--r-- | oxwm/.config/oxwm/config.lua | 16 | ||||
| -rw-r--r-- | rofi/.config/rofi/config.rasi | 3 | ||||
| -rw-r--r-- | rofi/.config/rofi/themes/nord.rasi | 76 |
8 files changed, 212 insertions, 3 deletions
diff --git a/bin/.bin/add-bookmark.sh b/bin/.bin/add-bookmark.sh new file mode 100755 index 0000000..9a8ab6b --- /dev/null +++ b/bin/.bin/add-bookmark.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail + +BOOKMARKS_FILE="$DOTFILES_REPO/bookmarks.txt" + +mkdir -p "$(dirname "$BOOKMARKS_FILE")" +touch "$BOOKMARKS_FILE" + +xdotool key --delay 50 ctrl+l ctrl+c Escape + +sleep 0.15 + +URL=$(xclip -selection clipboard -o) + +if [[ "$URL" =~ ^https?:// ]]; then + NAME=$(zenity --entry \ + --title="Add Bookmark" \ + --text="Enter a name for this bookmark:" \ + --entry-text="" 2>/dev/null) + + if [ -z "$NAME" ]; then + notify-send "Bookmark Cancelled" "No name was provided." + exit 0 + fi + + CLEAN_NAME=$(echo "$NAME" | tr '|' '-') + + if ! grep -q "|$URL$" "$BOOKMARKS_FILE"; then + echo "$CLEAN_NAME|$URL" >>"$BOOKMARKS_FILE" + notify-send "Bookmark Saved" "$CLEAN_NAME\n$URL" + else + notify-send "Bookmark" "This exact URL already exists!" + fi +else + notify-send "Bookmark Error" "Clipboard did not contain a valid URL." +fi diff --git a/bin/.bin/open-bookmark.sh b/bin/.bin/open-bookmark.sh new file mode 100755 index 0000000..67e724b --- /dev/null +++ b/bin/.bin/open-bookmark.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -euo pipefail + +BOOKMARKS_FILE="$DOTFILES_REPO/bookmarks.txt" + +if [ ! -f "$BOOKMARKS_FILE" ] || [ ! -s "$BOOKMARKS_FILE" ]; then + notify-send "Bookmarks" "Your bookmarks file is empty or missing." + exit 1 +fi + +SELECTION=$(cut -d'|' -f1 "$BOOKMARKS_FILE" | rofi -dmenu -p "Go To:") + +if [ -z "$SELECTION" ]; then + exit 0 +fi + +URL=$(grep "^$SELECTION|" "$BOOKMARKS_FILE" | head -n 1 | cut -d'|' -f2) + +if [ -n "$URL" ]; then + firefox "$URL" & +else + notify-send "Error" "Could not resolve the URL for: $SELECTION" +fi diff --git a/bookmarks.txt b/bookmarks.txt new file mode 100644 index 0000000..d6954be --- /dev/null +++ b/bookmarks.txt @@ -0,0 +1,2 @@ +Gemini|https://gemini.google.com/app +davidtsadler.com|https://davidtsadler.com/ diff --git a/dunst/.config/dunst/dunstrc b/dunst/.config/dunst/dunstrc new file mode 100644 index 0000000..786d035 --- /dev/null +++ b/dunst/.config/dunst/dunstrc @@ -0,0 +1,56 @@ +[global] + ### Display Settings ### + monitor = 0 + follow = mouse + width = 300 + height = 150 + origin = top-right + offset = 10x50 + scale = 0 + notification_limit = 5 + + ### Progress Bar ### + progress_bar = true + progress_bar_height = 10 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 300 + + ### Styling ### + frame_width = 2 + separator_height = 2 + padding = 8 + horizontal_padding = 8 + text_icon_padding = 0 + + # Official Nord Accent Colors + frame_color = "#88c0d0" # Nord8 (Ice Blue Frame) + separator_color = "#4c566a" # Nord3 + + ### Text Properties ### + font = JetBrains Mono 10 + line_height = 0 + format = "<b>%s</b>\n%b" + alignment = left + show_age_threshold = 60 + ellipsize = middle + ignore_newline = no + stack_duplicates = true + hide_duplicate_count = false + +[urgency_low] + # Nord Night backgrounds with bright snow text + background = "#2e3440" # Nord0 + foreground = "#d8dee9" # Nord4 + timeout = 4 + +[urgency_normal] + background = "#3b4252" # Nord1 + foreground = "#eceff4" # Nord6 + timeout = 6 + +[urgency_critical] + background = "#bf616a" # Nord11 (Aurora Red for warnings) + foreground = "#eceff4" # Nord6 + frame_color = "#bf616a" + timeout = 0 @@ -6,10 +6,13 @@ dotfiles=( alacritty bash bat + bin + dunst git lazygit nvim oxwm + rofi ssh starship tmux diff --git a/oxwm/.config/oxwm/config.lua b/oxwm/.config/oxwm/config.lua index d899890..80b6d27 100644 --- a/oxwm/.config/oxwm/config.lua +++ b/oxwm/.config/oxwm/config.lua @@ -275,8 +275,18 @@ oxwm.key.bind({ modkey, "Control", "Shift" }, "9", oxwm.tag.toggletag(8)) -- Example: Press Mod4+Space, then release and press T to spawn a terminal without auto starting anything. oxwm.key.chord({ { { modkey }, "Space" }, - { {}, "T" } -}, oxwm.spawn({ "alacritty", "-e", "bash" })) + { {}, "B" } +}, oxwm.spawn({ "firefox" })) + +oxwm.key.chord({ + { { modkey }, "b" }, + { {}, "a" } +}, oxwm.spawn({ "add-bookmark.sh" })) + +oxwm.key.chord({ + { { modkey }, "b" }, + { {}, "o" } +}, oxwm.spawn({ "open-bookmark.sh" })) ------------------------------------------------------------------------------- -- Autostart @@ -286,7 +296,7 @@ oxwm.key.chord({ -- Keycode 108 was found using the exv command and pressing the AltGr key in the popup window. oxwm.autostart("xmodmap -e 'keycode 108 = Super_R' -e 'add mod4 = Super_R'") +oxwm.autostart("dunst") -- oxwm.autostart("picom") -- oxwm.autostart("feh --bg-scale ~/wallpaper.jpg") --- oxwm.autostart("dunst") -- oxwm.autostart("nm-applet") diff --git a/rofi/.config/rofi/config.rasi b/rofi/.config/rofi/config.rasi new file mode 100644 index 0000000..5d67754 --- /dev/null +++ b/rofi/.config/rofi/config.rasi @@ -0,0 +1,3 @@ +configuration { +} +@theme "~/.config/rofi/themes/nord.rasi" diff --git a/rofi/.config/rofi/themes/nord.rasi b/rofi/.config/rofi/themes/nord.rasi new file mode 100644 index 0000000..a98e108 --- /dev/null +++ b/rofi/.config/rofi/themes/nord.rasi @@ -0,0 +1,76 @@ +* { + /* Nord Color Palette Blueprint */ + nord0: #2e3440; /* Polar Night (Base Background) */ + nord1: #3b4252; /* Polar Night (Elevated Background) */ + nord2: #434c5e; /* Polar Night (Selection Element) */ + nord3: #4c566a; /* Polar Night (Comments/Muted Text) */ + nord4: #d8dee9; /* Snow Storm (Primary Text) */ + nord5: #e5e9f0; /* Snow Storm (Bright Text) */ + nord6: #eceff4; /* Snow Storm (Blinding Text) */ + nord7: #8fbcbb; /* Frost (Teal Accent) */ + nord8: #88c0d0; /* Frost (Ice Blue Highlight) */ + nord9: #81a1c1; /* Frost (Flat Blue) */ + nord10: #5e81ac; /* Frost (Deep Blue) */ + + background-color: transparent; + text-color: @nord4; + accent-color: @nord8; + + font: "JetBrains Mono 12"; +} + +window { + background-color: @nord0; + border-color: @accent-color; + border: 2px; + border-radius: 6px; + width: 550px; + location: center; + anchor: center; + padding: 14px; +} + +inputbar { + spacing: 12px; + padding: 0px 0px 10px 0px; + border: 0px 0px 1px 0px; + border-color: @nord3; + children: [ prompt, entry ]; +} + +prompt { + text-color: @accent-color; + font: "JetBrains Mono Bold 12"; +} + +entry { + text-color: @nord5; + placeholder: "Search..."; + placeholder-color: @nord3; +} + +listview { + lines: 12; + columns: 1; + fixed-height: false; + spacing: 4px; + padding: 8px 0px 0px 0px; +} + +element { + padding: 6px 10px; + border-radius: 4px; +} + +element normal text { + text-color: @nord4; +} + +element selected { + background-color: @nord2; /* Highlight bar color */ +} + +element selected text { + text-color: @nord6; /* Text inside the highlight bar */ + font: "JetBrains Mono Bold 12"; +} |
