@@ -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
24542531configure_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
0 commit comments