aboutsummaryrefslogtreecommitdiff
path: root/home-manager/i3
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/i3')
-rw-r--r--home-manager/i3/config4
-rw-r--r--home-manager/i3/default.nix1
-rw-r--r--home-manager/i3/i3-commands.nix18
-rw-r--r--home-manager/i3/rofi-passmenu.nix72
4 files changed, 86 insertions, 9 deletions
diff --git a/home-manager/i3/config b/home-manager/i3/config
index 554d7bd..fc0afae 100644
--- a/home-manager/i3/config
+++ b/home-manager/i3/config
@@ -47,7 +47,7 @@ set $left h
set $right l
##STARTUP
-#exec_always --no-startup-id "feh --bg-scale ~/Wallpapers/val.png"
+exec_always --no-startup-id "feh --bg-scale ~/Wallpapers/val.png"
#exec_always --no-startup-id nitrogen --restore
#exec_always --no-startup-id "picom --backend glx -fD 3 --vsync"
exec_always --no-startup-id "~/.config/polybar/launch.sh"
@@ -105,7 +105,7 @@ bindsym XF86AudioNext exec --no-startup-id playerctl next
bindsym XF86AudioPrev exec --no-startup-id playerctl previous
bindxym XF86AudioStop exec --no-startup-id playerctl stop
-bindsym $mod+bracketleft exec --no-startup-id playerctl -p zen-twilight play-pause
+bindsym $mod+bracketleft exec --no-startup-id playerctl -p firefox play-pause
bindsym $mod+bracketright exec --no-startup-id playerctl -p spotify play-pause
#Emoji picker
diff --git a/home-manager/i3/default.nix b/home-manager/i3/default.nix
index 5fba6e1..0272d79 100644
--- a/home-manager/i3/default.nix
+++ b/home-manager/i3/default.nix
@@ -37,5 +37,6 @@
nitrogen
pamixer
(pkgs.callPackage ./i3-commands.nix { })
+ (pkgs.callPackage ./rofi-passmenu.nix { })
];
}
diff --git a/home-manager/i3/i3-commands.nix b/home-manager/i3/i3-commands.nix
index 9b8705d..68cf7b6 100644
--- a/home-manager/i3/i3-commands.nix
+++ b/home-manager/i3/i3-commands.nix
@@ -1,16 +1,20 @@
{
- stdenv
+ stdenv,
+ lib
}:
stdenv.mkDerivation {
pname = "i3-commands";
version = "0.0.1";
- srcs = builtins.path { name = "scripts"; path = ./scripts/.; };
+ srcs = lib.cleanSourceWith {
+ src = ./scripts;
+ filter = path: type: baseNameOf path != "rofi-passmenu";
+ };
installPhase = ''
-runHook preInstall
-mkdir -p $out/bin
-install -D -m 755 ./* $out/bin
-runHook postInstall
-'';
+ runHook preInstall
+ mkdir -p $out/bin
+ install -D -m 755 ./* $out/bin
+ runHook postInstall
+ '';
}
diff --git a/home-manager/i3/rofi-passmenu.nix b/home-manager/i3/rofi-passmenu.nix
new file mode 100644
index 0000000..153ffc3
--- /dev/null
+++ b/home-manager/i3/rofi-passmenu.nix
@@ -0,0 +1,72 @@
+{
+ pkgs
+}:
+
+pkgs.writeShellApplication {
+ name = "rofi-passmenu";
+
+ runtimeInputs = with pkgs; [
+ pass
+ rofi
+ xclip
+ xdotool
+ gnugrep
+ gawk
+ coreutils
+ libnotify
+ ];
+
+ text = ''
+ #!/usr/bin/env bash
+
+ store_dir="''${PASSWORD_STORE_DIR:-$HOME/.password-store}"
+
+ get_passwords() {
+ echo "[+] Add New Password"
+ if [ -d "$store_dir" ]; then
+ find "$store_dir" -name "*.gpg" | sort | while IFS= read -r file; do
+ pass="''${file#"$store_dir"/}"
+ echo "''${pass%.gpg}"
+ done
+ fi
+ }
+
+ selected=$(get_passwords | rofi -dmenu -i -p "pass")
+ [[ -z "$selected" ]] && exit 0
+
+ if [[ "$selected" == "[+] Add New Password" ]]; then
+ new_path=$(rofi -dmenu -p "Enter path/name for new password:")
+ [[ -z "$new_path" ]] && exit 0
+
+ choice=$(echo -e "Generate\nManual" | rofi -dmenu -p "Password method:")
+ if [[ "$choice" == "Generate" ]]; then
+ pass generate "$new_path" 20
+ notify-send "Pass" "Generated password for $new_path"
+ elif [[ "$choice" == "Manual" ]]; then
+ new_pass=$(rofi -dmenu -p "Enter password:" -password)
+ [[ -n "$new_pass" ]] && echo "$new_pass" | pass insert -m "$new_path"
+ fi
+ exit 0
+ fi
+
+ action=$(echo -e "1. Type Password\n2. Type Username\n3. Copy Password\n4. Copy Username\n5. Show Password" | rofi -dmenu -i -p "$selected")
+
+ case "$action" in
+ "1. Type Password")
+ pass show "$selected" | head -n 1 | tr -d '\n' | xdotool type --clearmodifiers -fi -
+ ;;
+ "2. Type Username")
+ pass show "$selected" | grep -i "^username:" | sed 's/^[^:]*:[[:space:]]*//' | tr -d '\n' | xdotool type --clearmodifiers -fi -
+ ;;
+ "3. Copy Password")
+ pass show -c "$selected"
+ ;;
+ "4. Copy Username")
+ pass show "$selected" | grep -i "^username:" | sed 's/^[^:]*:[[:space:]]*//' | xclip -selection clipboard
+ ;;
+ "5. Show Password")
+ pass show "$selected" | head -n 1 | rofi -dmenu -p "Password for $selected"
+ ;;
+ esac
+ '';
+}