72 lines
2.1 KiB
Bash
72 lines
2.1 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# Setting default browser using xdg utils
|
||
|
#
|
||
|
# This program is free software: you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation, either version 3 of the License, or
|
||
|
# (at your option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||
|
#
|
||
|
# 2021-11-20
|
||
|
# @linux-aarhus (c) root.nix.dk
|
||
|
# https://root.nix.dk/en/utility-scripts/set-browser-script
|
||
|
#
|
||
|
|
||
|
print_usage(){
|
||
|
echo "Usage:"
|
||
|
echo " Supply browser desktop file as the first argument"
|
||
|
echo " e.g. set-browser.sh firefox.desktop"
|
||
|
echo ""
|
||
|
}
|
||
|
|
||
|
show_available_browsers(){
|
||
|
echo "Available browsers (installed)"
|
||
|
echo "---"
|
||
|
# funny thing with cut when splitting a path
|
||
|
# one would expect the column to be number 4 but it is 5
|
||
|
# as string starts with `/` and therefore first column is empty
|
||
|
# e.g. /usr/share/applications/firefox.desktop
|
||
|
grep -rl 'internet' /usr/share/applications | cut -d'/' -f5
|
||
|
echo "---"
|
||
|
}
|
||
|
|
||
|
set_browser() {
|
||
|
# set scheme handlers
|
||
|
xdg-mime default "$1" x-scheme-handler/https
|
||
|
xdg-mime default "$1" x-scheme-handler/http
|
||
|
# set default browser
|
||
|
xdg-settings set default-web-browser "$1"
|
||
|
echo "Default browser set using $1"
|
||
|
}
|
||
|
|
||
|
# check if argument is supplied
|
||
|
if [[ "$1" == "" ]]; then
|
||
|
print_usage
|
||
|
show_available_browsers
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# check if desktop file
|
||
|
if [[ "$1" =~ ".desktop" ]]; then
|
||
|
# check if the file exist
|
||
|
if [[ -f "/usr/share/applications/$1" ]]; then
|
||
|
set_browser "$1"
|
||
|
else
|
||
|
echo "$1 - file not found"
|
||
|
show_available_browsers
|
||
|
exit 1
|
||
|
fi
|
||
|
else
|
||
|
echo "$1 is not a .desktop file"
|
||
|
show_available_browsers
|
||
|
exit 1
|
||
|
fi
|