diff --git a/lib-core.sh b/lib-core.sh index e06154f2..328b31ad 100755 --- a/lib-core.sh +++ b/lib-core.sh @@ -195,6 +195,10 @@ has_command() { command -v "$1" &> /dev/null } +has_flatpak_app() { + flatpak list --columns=application 2> /dev/null | grep "${1}" &> /dev/null || return 1 +} + is_my_distro() { [[ "$(cat '/etc/os-release' | awk -F '=' '/ID/{print $2}')" =~ "${1}" ]] } @@ -253,6 +257,7 @@ check_param() { local has_any_ambiguity_error="false" local variant_found="false" + if [[ "${has_set["${global_param}"]}" == "true" ]]; then need_dialog["${global_param}"]="true" diff --git a/lib-install.sh b/lib-install.sh index ee969d13..85e982d0 100755 --- a/lib-install.sh +++ b/lib-install.sh @@ -433,19 +433,35 @@ revert_gdm_theme() { ############################################################################### install_firefox_theme() { + #TODO: add support for Snap + + if has_flatpak_app org.mozilla.firefox; then + local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}" + else + local TARGET_DIR="${FIREFOX_THEME_DIR}" + fi + remove_firefox_theme - [[ ! -d "${FIREFOX_THEME_DIR}" ]] && mkdir -p ${FIREFOX_THEME_DIR} - userify cp -rf "${FIREFOX_SRC_DIR}"/* "${FIREFOX_THEME_DIR}" + userify mkdir -p "${TARGET_DIR}" + userify cp -rf "${FIREFOX_SRC_DIR}"/* "${TARGET_DIR}" config_firefox } config_firefox() { - killall "firefox" &> /dev/null || true + if has_flatpak_app org.mozilla.firefox; then + local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}" + local FIREFOX_DIR="${FIREFOX_FLATPAK_DIR_HOME}" + else + local TARGET_DIR="${FIREFOX_THEME_DIR}" + local FIREFOX_DIR="${FIREFOX_DIR_HOME}" + fi - for d in "${FIREFOX_DIR_HOME}/"*"default"*; do + killall "firefox" "firefox-bin" &> /dev/null || true + + for d in "${FIREFOX_DIR}/"*"default"*; do if [[ -f "${d}/prefs.js" ]]; then rm -rf "${d}/chrome" - userify ln -sf "${FIREFOX_THEME_DIR}" "${d}/chrome" + userify ln -sf "${TARGET_DIR}" "${d}/chrome" userify_file "${d}/prefs.js" echo "user_pref(\"toolkit.legacyUserProfileCustomizations.stylesheets\", true);" >> "${d}/prefs.js" echo "user_pref(\"browser.tabs.drawInTitlebar\", true);" >> "${d}/prefs.js" @@ -457,14 +473,25 @@ config_firefox() { } edit_firefox_theme_prefs() { - [[ ! -d "${FIREFOX_THEME_DIR}" ]] && install_firefox_theme ; config_firefox - userify ${EDITOR:-nano} "${FIREFOX_THEME_DIR}/userChrome.css" - userify ${EDITOR:-nano} "${FIREFOX_THEME_DIR}/customChrome.css" + if has_flatpak_app org.mozilla.firefox; then + local TARGET_DIR="${FIREFOX_FLATPAK_THEME_DIR}" + else + local TARGET_DIR="${FIREFOX_THEME_DIR}" + fi + + [[ ! -d "${TARGET_DIR}" ]] && install_firefox_theme ; config_firefox + userify ${EDITOR:-nano} "${TARGET_DIR}/userChrome.css" + userify ${EDITOR:-nano} "${TARGET_DIR}/customChrome.css" } remove_firefox_theme() { - # rm -rf "${FIREFOX_DIR_HOME}/"*"default"*"/chrome" - rm -rf "${FIREFOX_THEME_DIR}/WhiteSur" + # We need to remove this linked folder to avoid unwanted file overriding in + # the next installation + rm -rf "${FIREFOX_DIR_HOME}/"*"default"*"/chrome" + rm -rf "${FIREFOX_THEME_DIR}" # Sorry, we need to remove ".../WhiteSur" to keep anything clean + # This too + rm -rf "${FIREFOX_FLATPAK_DIR_HOME}/"*"default"*"/chrome" + rm -rf "${FIREFOX_FLATPAK_THEME_DIR}" } ############################################################################### diff --git a/tweaks.sh b/tweaks.sh index 056e578d..26c4f21b 100755 --- a/tweaks.sh +++ b/tweaks.sh @@ -67,20 +67,14 @@ while [[ $# -gt 0 ]]; do edit_firefox="true" ;; esac - if [[ -d "${FIREFOX_FLATPAK_DIR_HOME}" ]]; then - FIREFOX_DIR_HOME=${FIREFOX_FLATPAK_DIR_HOME} - [[ ! -d "${FIREFOX_FLATPAK_THEME_DIR}" ]] && mkdir -p ${FIREFOX_FLATPAK_THEME_DIR} - FIREFOX_THEME_DIR=${FIREFOX_FLATPAK_THEME_DIR} - fi; - - if [[ ! -d "${FIREFOX_FLATPAK_DIR_HOME}" ]] && ! has_command firefox; then + if ! has_command firefox && ! has_flatpak_app org.mozilla.firefox; then prompt -e "'${1}' ERROR: There's no Firefox installed in your system" has_any_error="true" - elif [[ ! -d "${FIREFOX_DIR_HOME}" ]]; then + elif [[ ! -d "${FIREFOX_DIR_HOME}" && ! -d "${FIREFOX_FLATPAK_DIR_HOME}" ]]; then prompt -e "'${1}' ERROR: Firefox is installed but not yet initialized." prompt -w "'${1}': Don't forget to close it after you run/initialize it" has_any_error="true" - elif pidof "firefox" &> /dev/null; then + elif pidof "firefox" &> /dev/null || pidof "firefox-bin" &> /dev/null; then prompt -e "'${1}' ERROR: Firefox is running, please close it" has_any_error="true" fi; shift ;;