Skip to content

Commit b4a9c6c

Browse files
committed
feat: add set-wallpaper command, configure default apps via xdg-mime
1 parent 9a35dbc commit b4a9c6c

2 files changed

Lines changed: 99 additions & 0 deletions

File tree

install.sh

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2449,6 +2449,83 @@ EOF
24492449
fi
24502450
}
24512451

2452+
# Configure default applications via xdg-settings
2453+
configure_default_apps() {
2454+
print_step "Setting default applications..."
2455+
2456+
# Source environment.d to get default app names
2457+
if [ -f "$HOME/.config/environment.d/defaults.conf" ]; then
2458+
# shellcheck source=/dev/null
2459+
. "$HOME/.config/environment.d/defaults.conf"
2460+
fi
2461+
2462+
# Helper to check if desktop file exists
2463+
desktop_exists() {
2464+
local desktop="$1"
2465+
[ -f "/usr/share/applications/$desktop" ] || \
2466+
[ -f "$HOME/.local/share/applications/$desktop" ]
2467+
}
2468+
2469+
# Helper to set xdg-mime default
2470+
set_mime_default() {
2471+
local desktop="$1"
2472+
shift
2473+
if desktop_exists "$desktop"; then
2474+
for mime in "$@"; do
2475+
xdg-mime default "$desktop" "$mime" 2>/dev/null || true
2476+
done
2477+
fi
2478+
}
2479+
2480+
local browser="${BROWSER:-brave-browser}"
2481+
local file_manager="${FILE_MANAGER:-thunar}"
2482+
local player="${PLAYER:-mpv}"
2483+
local ide="${IDE:-code}"
2484+
2485+
# Set default browser via xdg-settings
2486+
if command -v xdg-settings &>/dev/null; then
2487+
local browser_desktop="${browser}.desktop"
2488+
if desktop_exists "$browser_desktop"; then
2489+
# Temporarily unset BROWSER to allow xdg-settings to work
2490+
local saved_browser="$BROWSER"
2491+
unset BROWSER
2492+
if xdg-settings set default-web-browser "$browser_desktop" 2>/dev/null; then
2493+
print_step "Default browser set: $browser"
2494+
fi
2495+
export BROWSER="$saved_browser"
2496+
fi
2497+
fi
2498+
2499+
# Set defaults via xdg-mime
2500+
if command -v xdg-mime &>/dev/null; then
2501+
# File manager
2502+
set_mime_default "${file_manager}.desktop" "inode/directory"
2503+
2504+
# Video player
2505+
set_mime_default "${player}.desktop" \
2506+
"video/mp4" "video/x-matroska" "video/webm" "video/avi" \
2507+
"video/quicktime" "video/x-msvideo"
2508+
2509+
# Audio player
2510+
set_mime_default "${player}.desktop" \
2511+
"audio/mpeg" "audio/mp3" "audio/flac" "audio/ogg" \
2512+
"audio/wav" "audio/x-wav"
2513+
2514+
# Image viewer (feh)
2515+
set_mime_default "feh.desktop" \
2516+
"image/png" "image/jpeg" "image/gif" "image/webp" "image/bmp"
2517+
2518+
# Text/code editor
2519+
set_mime_default "${ide}.desktop" \
2520+
"text/plain" "application/json" "text/x-python" \
2521+
"text/x-shellscript" "application/javascript"
2522+
2523+
print_step "MIME associations configured"
2524+
fi
2525+
2526+
print_success "Default applications configured"
2527+
}
2528+
24522529
# Configure battery charging limit (if supported)
24532530
# Supports: ThinkPad, ASUS, Dell, Lenovo IdeaPad, Huawei, LG, MSI, Samsung, Framework, System76
24542531
configure_battery_limit() {
@@ -3283,6 +3360,7 @@ main() {
32833360
configure_gammastep_location # Auto-detect location for blue light filter
32843361
configure_power_management # Handle TLP vs power-profiles-daemon conflict
32853362
configure_lightdm
3363+
configure_default_apps
32863364
configure_battery_limit
32873365
create_marker
32883366
install_update_script

update.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,6 +1403,27 @@ do_draphyos_update() {
14031403
chmod +x "$HOME/.config/i3/scripts/cheatsheet.sh" 2>/dev/null || true
14041404
chmod +x "$HOME/.config/polybar/launch.sh" 2>/dev/null || true
14051405

1406+
# Re-apply default app associations (in case environment.d changed)
1407+
if [ -f "$HOME/.config/environment.d/defaults.conf" ]; then
1408+
print_step "Updating default app associations..."
1409+
# shellcheck source=/dev/null
1410+
. "$HOME/.config/environment.d/defaults.conf"
1411+
1412+
if command -v xdg-mime &>/dev/null; then
1413+
# File manager
1414+
xdg-mime default "${FILE_MANAGER:-thunar}.desktop" inode/directory 2>/dev/null || true
1415+
# Video/Audio player
1416+
for mime in video/mp4 video/x-matroska audio/mpeg audio/flac; do
1417+
xdg-mime default "${PLAYER:-mpv}.desktop" "$mime" 2>/dev/null || true
1418+
done
1419+
# Image viewer
1420+
for mime in image/png image/jpeg image/gif; do
1421+
xdg-mime default "feh.desktop" "$mime" 2>/dev/null || true
1422+
done
1423+
fi
1424+
print_step "Default app associations updated"
1425+
fi
1426+
14061427
# Cleanup temp directory
14071428
rm -rf "$original_configs_dir"
14081429

0 commit comments

Comments
 (0)