mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Download the current page's video with yt-dlp via Alt+Shift+D or a click on the toolbar icon. A native-messaging host runs the download, shows live progress on the Quickshell OSD, and posts a clickable "Download complete" toast that opens the file in mpv. - Extension: pinned key for a stable id, green download-video icon, keyboard command + toolbar action (reads the active tab URL). - Native host (omarchy-chromium-ytdlp-host): verifies the URL with yt-dlp --simulate (else "No video found"), streams progress to the OSD (time-throttled to ~4/s), saves to ~/Videos, opens mpv on click. - Installer (omarchy-install-chromium-ytdlp) writes the native-messaging manifest into installed Chromium/Chrome/Brave/Edge profiles; wired into browser install and chromium refresh, with a migration for existing users. - omarchy-osd: add -d/--duration so the OSD can persist during a download. - Add yt-dlp to base packages, load the extension via --load-extension, and document the Alt+Shift+D binding. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
959 B
Bash
Executable File
30 lines
959 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Install the native messaging host for the yt-dlp Chromium extension
|
|
|
|
set -euo pipefail
|
|
|
|
HOST_NAME="com.omarchy.ytdlp"
|
|
HOST_PATH="$OMARCHY_PATH/bin/omarchy-chromium-ytdlp-host"
|
|
TEMPLATE="$OMARCHY_PATH/default/chromium/native-messaging-hosts/$HOST_NAME.json"
|
|
|
|
# Chromium-based browser profile roots that use the NativeMessagingHosts layout.
|
|
browser_dirs=(
|
|
"$HOME/.config/chromium"
|
|
"$HOME/.config/google-chrome"
|
|
"$HOME/.config/google-chrome-beta"
|
|
"$HOME/.config/google-chrome-unstable"
|
|
"$HOME/.config/BraveSoftware/Brave-Browser"
|
|
"$HOME/.config/BraveSoftware/Brave-Browser-Beta"
|
|
"$HOME/.config/BraveSoftware/Brave-Browser-Nightly"
|
|
"$HOME/.config/microsoft-edge"
|
|
"$HOME/.config/microsoft-edge-dev"
|
|
)
|
|
|
|
manifest=$(sed "s|__HOST_PATH__|$HOST_PATH|g" "$TEMPLATE")
|
|
|
|
for dir in "${browser_dirs[@]}"; do
|
|
mkdir -p "$dir/NativeMessagingHosts"
|
|
printf '%s\n' "$manifest" >"$dir/NativeMessagingHosts/$HOST_NAME.json"
|
|
done
|