Good thinking. I've merged something similar (and will push it to the git repo when the airplane lands).<div><br></div><div><br><div><br></div><div><div>commit 9715ddcd2b2a3f3ed0f27398048191ac2de60c8b</div><div>Author: Jason A. Donenfeld <<a href="mailto:Jason@zx2c4.com">Jason@zx2c4.com</a>></div><div>Date:   Fri Feb 5 21:28:26 2016 +0100</div><div><br></div><div>    generate: have a default length of 25</div><div>    </div><div>    Folks are lazy and don't want to type very much, so they'd like to have</div><div>    a default password length to generate that can be configured via</div><div>    environment variables per usual. I'm making the default 25.</div><div>    </div><div>    If the user forbids the use of symbols, pwgen will use a-zA-Z0-9,</div><div>    ensuring that at least one A-Z and at least one 0-9 is used. We want to</div><div>    have a password of at least 128-bits, so factoring in the issue with "at</div><div>    least one of this character type", 25 gets us there squarely.</div><div>    </div><div>    Signed-off-by: Jason A. Donenfeld <<a href="mailto:Jason@zx2c4.com">Jason@zx2c4.com</a>></div><div><br></div><div>diff --git a/man/pass.1 b/man/pass.1</div><div>index e1fe605..161350f 100644</div><div>--- a/man/pass.1</div><div>+++ b/man/pass.1</div><div>@@ -111,10 +111,11 @@ ensure that temporary files are created in \fI/dev/shm\fP in order to avoid writ</div><div> difficult-to-erase disk sectors. If \fI/dev/shm\fP is not accessible, fallback to</div><div> the ordinary \fITMPDIR\fP location, and print a warning.</div><div> .TP</div><div>-\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--clip\fP, \fI-c\fP ] [ \fI--in-place\fP, \fI-i\fP | \fI--force\fP, \fI-f\fP ] \fIpass-name pass-length\fP</div><div>+\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--clip\fP, \fI-c\fP ] [ \fI--in-place\fP, \fI-i\fP | \fI--force\fP, \fI-f\fP ] \fIpass-name [pass-length]\fP</div><div> Generate a new password using</div><div> .BR pwgen (1)</div><div>-of length \fIpass-length\fP and insert into \fIpass-name\fP. If \fI--no-symbols\fP or \fI-n\fP</div><div>+of length \fIpass-length\fP (or \fIPASSWORD_STORE_GENERATED_LENGTH\fP if unspecified)</div><div>+and insert into \fIpass-name\fP. If \fI--no-symbols\fP or \fI-n\fP</div><div> is specified, do not use any non-alphanumeric characters in the generated password.</div><div> If \fI--clip\fP or \fI-c\fP is specified, do not print the password but instead copy</div><div> it to the clipboard using</div><div>@@ -415,6 +416,10 @@ Specifies the number of seconds to wait before restoring the clipboard, by defau</div><div> .I PASSWORD_STORE_UMASK</div><div> Sets the umask of all files modified by pass, by default \fI077\fP.</div><div> .TP</div><div>+.I PASSWORD_STORE_GENERATED_LENGTH</div><div>+The default password length if the \fIpass-length\fP parameter to \fBgenerate\fP</div><div>+is unspecified.</div><div>+.TP</div><div> .I EDITOR</div><div> The location of the text editor used by \fBedit\fP.</div><div> .SH SEE ALSO</div><div>diff --git a/src/password-store.sh b/src/password-store.sh</div><div>index 6f85d3b..1425a59 100755</div><div>--- a/src/password-store.sh</div><div>+++ b/src/password-store.sh</div><div>@@ -15,6 +15,7 @@ which gpg2 &>/dev/null && GPG="gpg2"</div><div> PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}"</div><div> X_SELECTION="${PASSWORD_STORE_X_SELECTION:-clipboard}"</div><div> CLIP_TIME="${PASSWORD_STORE_CLIP_TIME:-45}"</div><div>+GENERATED_LENGTH="${PASSWORD_STORE_GENERATED_LENGTH:-25}"</div><div> </div><div> export GIT_DIR="${PASSWORD_STORE_GIT:-$PREFIX}/.git"</div><div> export GIT_WORK_TREE="${PASSWORD_STORE_GIT:-$PREFIX}"</div><div>@@ -234,8 +235,8 @@ cmd_usage() {</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>        overwriting existing password unless forced.</div><div> <span class="Apple-tab-span" style="white-space:pre">   </span>    $PROGRAM edit pass-name</div><div> <span class="Apple-tab-span" style="white-space:pre">      </span>        Insert a new password or edit an existing password using ${EDITOR:-vi}.</div><div>-<span class="Apple-tab-span" style="white-space:pre"> </span>    $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i | --force,-f] pass-name pass-length</div><div>-<span class="Apple-tab-span" style="white-space:pre">    </span>        Generate a new password of pass-length with optionally no symbols.</div><div>+<span class="Apple-tab-span" style="white-space:pre">      </span>    $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i | --force,-f] pass-name [pass-length]</div><div>+<span class="Apple-tab-span" style="white-space:pre">  </span>        Generate a new password of pass-length (or $GENERATED_LENGTH if unspecified) with optionally no symbols.</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>        Optionally put it on the clipboard and clear board after $CLIP_TIME seconds.</div><div> <span class="Apple-tab-span" style="white-space:pre">   </span>        Prompt before overwriting existing password unless forced.</div><div> <span class="Apple-tab-span" style="white-space:pre">     </span>        Optionally replace only the first line of an existing file with a new password.</div><div>@@ -441,9 +442,9 @@ cmd_generate() {</div><div> <span class="Apple-tab-span" style="white-space:pre">             </span>--) shift; break ;;</div><div> <span class="Apple-tab-span" style="white-space:pre">        </span>esac done</div><div> </div><div>-<span class="Apple-tab-span" style="white-space:pre">  </span>[[ $err -ne 0 || $# -ne 2 || ( $force -eq 1 && $inplace -eq 1 ) ]] && die "Usage: $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c] [--in-place,-i | --force,-f] pass-name pass-length"</div><div>+<span class="Apple-tab-span" style="white-space:pre">     </span>[[ $err -ne 0 || ( $# -ne 2 && $# -ne 1 ) || ( $force -eq 1 && $inplace -eq 1 ) ]] && die "Usage: $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c] [--in-place,-i | --force,-f] pass-name [pass-length]"</div><div> <span class="Apple-tab-span" style="white-space:pre">  </span>local path="$1"</div><div>-<span class="Apple-tab-span" style="white-space:pre">   </span>local length="$2"</div><div>+<span class="Apple-tab-span" style="white-space:pre"> </span>local length="${2:-$GENERATED_LENGTH}"</div><div> <span class="Apple-tab-span" style="white-space:pre">   </span>check_sneaky_paths "$path"</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>[[ ! $length =~ ^[0-9]+$ ]] && die "Error: pass-length \"$length\" must be a number."</div><div> <span class="Apple-tab-span" style="white-space:pre">  </span>mkdir -p -v "$PREFIX/$(dirname "$path")"</div></div><div><br></div></div><br><br>-- <br>Jason A. Donenfeld<br>Deep Space Explorer<br>fr: +33 6 51 90 82 66<br>us: +1 513 476 1200<br><a href="http://www.jasondonenfeld.com" target="_blank">www.jasondonenfeld.com</a><br><a href="http://www.zx2c4.com" target="_blank">www.zx2c4.com</a><br><a href="http://zx2c4.com/keys/AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc" target="_blank">zx2c4.com/keys/AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc</a><br>