mirror of
https://github.com/librephoenix/nixos-config
synced 2025-01-19 07:05:51 +05:30
64 lines
2 KiB
Nix
64 lines
2 KiB
Nix
{ config, lib, pkgs, dmenuCmd ? "rofi -dmenu", ... }:
|
|
let
|
|
dmenuScript = ''
|
|
#!/bin/sh
|
|
choice="$(\ls ~/.config/hyprprofiles | ''+dmenuCmd+'')";
|
|
hyprprofile $choice;
|
|
'';
|
|
in
|
|
{
|
|
home.packages = [
|
|
(pkgs.writeScriptBin "hyprprofile" ''
|
|
#!/bin/sh
|
|
prevprofile="$(cat ~/.hyprprofile)"
|
|
newprofile="$1"
|
|
if [ $# -eq 1 ]; then
|
|
if [ $newprofile = "Default" ]; then
|
|
echo "" > ~/.hyprprofile;
|
|
else
|
|
echo $newprofile > ~/.hyprprofile;
|
|
fi
|
|
if [ -f ~/.config/hyprprofiles/$prevprofile/exit-hook.sh ]; then
|
|
~/.config/hyprprofiles/$prevprofile/exit-hook.sh;
|
|
fi
|
|
if [ -f ~/.config/hyprprofiles/$newprofile/start-hook.sh ]; then
|
|
~/.config/hyprprofiles/$newprofile/start-hook.sh;
|
|
fi
|
|
fi
|
|
'')
|
|
(pkgs.writeScriptBin "qutebrowser-hyprprofile" ''
|
|
#!/bin/sh
|
|
profile="$(cat ~/.hyprprofile)"
|
|
if [[ $profile ]]; then
|
|
container-open $profile $1;
|
|
else
|
|
qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 $1;
|
|
fi
|
|
'')
|
|
(pkgs.makeDesktopItem {
|
|
name = "qutebrowser-hyprprofile";
|
|
desktopName = "Qutebrowser Hyprprofile";
|
|
exec = "qutebrowser-hyprprofile %u";
|
|
categories = ["Network" "WebBrowser"];
|
|
keywords = ["Browser"];
|
|
terminal = false;
|
|
type = "Application";
|
|
noDisplay = false;
|
|
icon = "qutebrowser";
|
|
})
|
|
(pkgs.writeScriptBin "hyprprofile-dmenu" dmenuScript)
|
|
];
|
|
xdg.mimeApps.defaultApplications = lib.mkForce {
|
|
"text/html" = "qutebrowser-hyprprofile.desktop";
|
|
"x-scheme-handler/http" = "qutebrowser-hyprprofile.desktop";
|
|
"x-scheme-handler/https" = "qutebrowser-hyprprofile.desktop";
|
|
"x-scheme-handler/about" = "qutebrowser-hyprprofile.desktop";
|
|
"x-scheme-handler/unknown" = "qutebrowser-hyprprofile.desktop";
|
|
};
|
|
home.file.".config/hyprprofiles/" = {
|
|
source = ./profiles;
|
|
recursive = true;
|
|
executable = true;
|
|
};
|
|
}
|