pkgs: borderlessBrowser
This commit is contained in:
parent
de6a416958
commit
97bb4b6327
3 changed files with 175 additions and 0 deletions
91
pkgs/borderlessBrowser/borderlessBrowser
Normal file
91
pkgs/borderlessBrowser/borderlessBrowser
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
function die {
|
||||||
|
supress_generic_error=1
|
||||||
|
if [ -v bin_ZENITY ] && [ ! -z "$bin_ZENITY" ]; then
|
||||||
|
"$bin_ZENITY" --error --text="$*"
|
||||||
|
else
|
||||||
|
echo "error: $*" 2>&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function absolute_binary {
|
||||||
|
bin="$(command -v "$@" 2>&-)"
|
||||||
|
if [ -z "$bin" ]; then
|
||||||
|
die "No such commands: $@"
|
||||||
|
fi
|
||||||
|
echo $bin | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanup {
|
||||||
|
if [ $? != 0 ] && [ ! -v supress_generic_error ]; then
|
||||||
|
die "Errors happened during runtime. See this script logs for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
CHROME_BINARIES=(chromium)
|
||||||
|
|
||||||
|
if [ ! -v bin_ZENITY ]; then
|
||||||
|
bin_ZENITY="$(absolute_binary zenity)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -v bin_CHROMIUM ]; then
|
||||||
|
bin_CHROMIUM="$(absolute_binary chromium)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -v text_QUERY ]; then
|
||||||
|
text_QUERY="Link to be opened"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -v text_NOURL ]; then
|
||||||
|
text_NOURL="No URL specified"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
URL="$("$bin_ZENITY" --entry --text="$text_QUERY" || true)"
|
||||||
|
else
|
||||||
|
URL="$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$URL" ]; then
|
||||||
|
die $text_NOURL
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$URL" =~ ^~ ]]; then
|
||||||
|
URL=$(echo $URL | sed -E s:^~\/?::)
|
||||||
|
URL="file://$HOME/$URL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$URL" =~ ^\/ ]]; then
|
||||||
|
URL="file://$URL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! "$URL" =~ ^(file|https?)?:\/\/ ]]; then
|
||||||
|
URL="https://$URL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo final url: $URL
|
||||||
|
|
||||||
|
chromeFlags=()
|
||||||
|
|
||||||
|
if [ ! -v CHROME_DONT_BORDERLESS ]; then
|
||||||
|
chromeFlags+=(--app="$URL")
|
||||||
|
else
|
||||||
|
chromeFlags+=("$URL")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -v profileToplevel ]; then
|
||||||
|
profileToplevel=~/.config/borderless-browser-profiles
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -v CHROME_PROFILE ] && [[ "$CHROME_PROFILE" =~ ^[a-zA-Z_0-9-]*$ ]]; then
|
||||||
|
profileDir=$profileToplevel/$CHROME_PROFILE
|
||||||
|
chromeFlags+=(--user-data-dir="$profileDir")
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${chromeFlags[@]}"
|
||||||
|
"$bin_CHROMIUM" "${chromeFlags[@]}"
|
83
pkgs/borderlessBrowser/default.nix
Normal file
83
pkgs/borderlessBrowser/default.nix
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
{ lib
|
||||||
|
, stdenvNoCC
|
||||||
|
, chromium
|
||||||
|
, gnome3
|
||||||
|
, zenity ? gnome3.zenity
|
||||||
|
, makeDesktopItem
|
||||||
|
, copyDesktopItems
|
||||||
|
, makeWrapper
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
mkWebapp =
|
||||||
|
{ name ? "webapp"
|
||||||
|
, desktopName ? "Web Application"
|
||||||
|
, browser ? lib.getExe chromium
|
||||||
|
, icon ? "applications-internet"
|
||||||
|
, url ? null
|
||||||
|
, queryText ? "Link to be opened"
|
||||||
|
, noURLSpecifiedText ? "No URL specified"
|
||||||
|
, profile ? null
|
||||||
|
, passthru ? { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
makeWrapperArgs = [
|
||||||
|
"--set-default"
|
||||||
|
"text_QUERY"
|
||||||
|
queryText
|
||||||
|
"--set-default"
|
||||||
|
"text_NOURL"
|
||||||
|
noURLSpecifiedText
|
||||||
|
"--set"
|
||||||
|
"bin_CHROMIUM"
|
||||||
|
browser
|
||||||
|
"--set"
|
||||||
|
"bin_ZENITY"
|
||||||
|
(lib.getExe zenity)
|
||||||
|
]
|
||||||
|
++ (lib.optionals (profile != null) [ "--set" "CHROME_PROFILE" profile ])
|
||||||
|
++ (lib.optionals (url != null) [ "--add-flags" url ])
|
||||||
|
;
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenvNoCC.mkDerivation (attrs: {
|
||||||
|
name = "webapp-${name}";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ copyDesktopItems makeWrapper ];
|
||||||
|
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
makeWrapper ${./borderlessBrowser} $out/bin/$name ${lib.escapeShellArgs makeWrapperArgs}
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
substituteInPlace $out/share/applications/$name.desktop --replace @bin@ $out/bin/$name
|
||||||
|
'';
|
||||||
|
|
||||||
|
desktopItems = [
|
||||||
|
(makeDesktopItem {
|
||||||
|
inherit (attrs) name;
|
||||||
|
inherit desktopName icon;
|
||||||
|
type = "Application";
|
||||||
|
exec = "@bin@";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = passthru // { inherit makeWrapperArgs; };
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
mkWebapp {
|
||||||
|
passthru = {
|
||||||
|
wrap = mkWebapp;
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,4 +5,5 @@ in
|
||||||
{
|
{
|
||||||
wrapWine = callDefaultPackage ./wrapWine;
|
wrapWine = callDefaultPackage ./wrapWine;
|
||||||
writeXrandrScriptBin = callDefaultPackage ./writeXrandrScriptBin;
|
writeXrandrScriptBin = callDefaultPackage ./writeXrandrScriptBin;
|
||||||
|
borderlessBrowser = callDefaultPackage ./writeXrandrScriptBin;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue