Introduction
Introduction Statistics Contact Development Disclaimer Help
bw-dmenu-fill - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
bw-dmenu-fill (2440B)
---
1 #!/bin/sh
2 # bitwarden dmenu script - based off of the autofill userscript from qut…
3 # requires the fifo patch
4 # $1: winid
5 #
6 # add something like this to your config.h:
7 # #define BITWARDEN_DMENU { .v = (char *[]){ "/bin/sh", "-c", "bw-dmenu-…
8 #
9 # and this to your keybindings:
10 # { MODKEY, GDK_KEY_z, spawn, BITWARDEN_DMENU },
11
12 fifo=~/.surf/fifo/"$1"
13 url=$(xprop -id "$1" _SURF_URI | awk '{ print $3 }' | sed 's/"//g')
14
15 username=""
16 password=""
17
18 output=$(bitwarden-dmenu \
19 --bw-list-args="--url=$url" \
20 --dmenu-args="-l 5 -w $1" \
21 --dmenu-pswd-args="-w $1" \
22 --stdout)
23
24 if [ ! -z "$output" ]; then
25 username=$(echo "$output" | awk 'FNR == 1 {print}')
26 password=$(echo "$output" | awk 'FNR == 2 {print}')
27 else
28 exit
29 fi
30
31 javascript_escape() {
32 sed "s,[\\\\'\"],\\\\&,g" <<< "$1"
33 }
34
35 js() {
36 cat <<EOF
37 function isVisible(elem) {
38 var style = elem.ownerDocument.defaultView.getComputedStyle(elem…
39 if (style.getPropertyValue("visibility") !== "visible" ||
40 style.getPropertyValue("display") === "none" ||
41 style.getPropertyValue("opacity") === "0") {
42 return false;
43 }
44 return elem.offsetWidth > 0 && elem.offsetHeight > 0;
45 };
46 function hasPasswordField(form) {
47 var inputs = form.getElementsByTagName("input");
48 for (var j = 0; j < inputs.length; j++) {
49 var input = inputs[j];
50 if (input.type == "password") {
51 return true;
52 }
53 }
54 return false;
55 };
56 function loadData2Form (form) {
57 var inputs = form.getElementsByTagName("input");
58 for (var j = 0; j < inputs.length; j++) {
59 var input = inputs[j];
60 if (isVisible(input) && (input.type == "text" || input.type …
61 input.focus();
62 input.value = "$(javascript_escape "${username}")";
63 input.blur();
64 }
65 if (input.type == "password") {
66 input.focus();
67 input.value = "$(javascript_escape "${password}")";
68 input.blur();
69 }
70 }
71 };
72 var forms = document.getElementsByTagName("form");
73 for (i = 0; i < forms.length; i++) {
74 if (hasPasswordField(forms[i])) {
75 loadData2Form(forms[i]);
76 }
77 }
78 EOF
79 }
80
81 printjs() {
82 js | sed 's,//.*$,,' | tr '\n' ' '
83 }
84
85 echo "inject $(printjs)" >> "$fifo"
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.