added option to type password directly in textbox
This commit is contained in:
		
							parent
							
								
									740f579d61
								
							
						
					
					
						commit
						275e2c6c58
					
				@ -756,6 +756,25 @@
 | 
				
			|||||||
  #!/usr/bin/env fish
 | 
					  #!/usr/bin/env fish
 | 
				
			||||||
  #+END_SRC
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Let’s  parse all  the  arguments passed  to  the  script. If  one  of them  is
 | 
				
			||||||
 | 
					  =--type=, =-t= or =type=, the script will  attempt to type the password to the
 | 
				
			||||||
 | 
					  text area already selected without pasting the password to the clipboard.
 | 
				
			||||||
 | 
					  #+BEGIN_SRC fish
 | 
				
			||||||
 | 
					    for arg in $argv
 | 
				
			||||||
 | 
					        switch $arg
 | 
				
			||||||
 | 
					            case '--type'
 | 
				
			||||||
 | 
					                set -g TYPE "yes"
 | 
				
			||||||
 | 
					            case '-t'
 | 
				
			||||||
 | 
					                set -g TYPE "yes"
 | 
				
			||||||
 | 
					            case 'type'
 | 
				
			||||||
 | 
					                set -g TYPE "yes"
 | 
				
			||||||
 | 
					            case '*'
 | 
				
			||||||
 | 
					                printf 'Unknown argument: %s\n.' $arg
 | 
				
			||||||
 | 
					                exit 1
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Now, let’s get the list of the passwords that exist in our =pass= repository.
 | 
					  Now, let’s get the list of the passwords that exist in our =pass= repository.
 | 
				
			||||||
  #+BEGIN_SRC fish
 | 
					  #+BEGIN_SRC fish
 | 
				
			||||||
    set passwords (find $HOME/.password-store -type f -name "*.gpg" | \
 | 
					    set passwords (find $HOME/.password-store -type f -name "*.gpg" | \
 | 
				
			||||||
@ -778,12 +797,39 @@
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  #+END_SRC
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Finally, let’s copy the password for 45 seconds in the clipboard.
 | 
					  Depending  on the  arguments  passed  earlier, we  might  want some  different
 | 
				
			||||||
  #+BEGIN_SRC fish
 | 
					  behavior.
 | 
				
			||||||
 | 
					  #+BEGIN_SRC fish :noweb yes
 | 
				
			||||||
 | 
					    if test $TYPE = "yes"
 | 
				
			||||||
 | 
					        <<rofi-pass-type>>
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        <<rofi-pass-copy>>
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  The default behavior is to copy the  password to the clipboard for 45 seconds,
 | 
				
			||||||
 | 
					  so let’s do that.
 | 
				
			||||||
 | 
					  #+NAME: rofi-pass-copy
 | 
				
			||||||
 | 
					  #+BEGIN_SRC fish :noweb yes :tangle no
 | 
				
			||||||
    pass show -c $password 2> /dev/null
 | 
					    pass show -c $password 2> /dev/null
 | 
				
			||||||
  #+END_SRC
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  And we’re done!
 | 
					  Else, if we passed  =--type=, =-t= or =type= as an argument  of the script, we
 | 
				
			||||||
 | 
					  want it to attempt to type our  password in the currently selected text input.
 | 
				
			||||||
 | 
					  Let’s do that.
 | 
				
			||||||
 | 
					  #+NAME: rofi-pass-type
 | 
				
			||||||
 | 
					  #+BEGIN_SRC fish :noweb yes :tangle no
 | 
				
			||||||
 | 
					    set -l IFS
 | 
				
			||||||
 | 
					    <<rofi-pass-type-get-password>>
 | 
				
			||||||
 | 
					    printf %s $pass | xvkbd -file -
 | 
				
			||||||
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  To correctly  get the password  from =pass=, we need  to parse the  output and
 | 
				
			||||||
 | 
					  only get the first line, hence the following command.
 | 
				
			||||||
 | 
					  #+NAME: rofi-pass-type-get-password
 | 
				
			||||||
 | 
					  #+BEGIN_SRC fish :tangle no
 | 
				
			||||||
 | 
					  set pass (pass show $password | string split -n \n)[1]
 | 
				
			||||||
 | 
					  #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Rofi-umount
 | 
					* Rofi-umount
 | 
				
			||||||
  :PROPERTIES:
 | 
					  :PROPERTIES:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,19 @@
 | 
				
			|||||||
#!/usr/bin/env fish
 | 
					#!/usr/bin/env fish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for arg in $argv
 | 
				
			||||||
 | 
					    switch $arg
 | 
				
			||||||
 | 
					        case '--type'
 | 
				
			||||||
 | 
					            set -g TYPE "yes"
 | 
				
			||||||
 | 
					        case '-t'
 | 
				
			||||||
 | 
					            set -g TYPE "yes"
 | 
				
			||||||
 | 
					        case 'type'
 | 
				
			||||||
 | 
					            set -g TYPE "yes"
 | 
				
			||||||
 | 
					        case '*'
 | 
				
			||||||
 | 
					            printf 'Unknown argument: %s\n.' $arg
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set passwords (find $HOME/.password-store -type f -name "*.gpg" | \
 | 
					set passwords (find $HOME/.password-store -type f -name "*.gpg" | \
 | 
				
			||||||
string replace -r ".*.password-store/" "" | \
 | 
					string replace -r ".*.password-store/" "" | \
 | 
				
			||||||
string replace -r ".gpg" "" | sort)
 | 
					string replace -r ".gpg" "" | sort)
 | 
				
			||||||
@ -12,4 +26,10 @@ if test -z $password
 | 
				
			|||||||
    exit
 | 
					    exit
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test $TYPE = "yes"
 | 
				
			||||||
 | 
					    set -l IFS
 | 
				
			||||||
 | 
					    set pass (pass show $password | string split -n \n)[1]
 | 
				
			||||||
 | 
					    printf %s $pass | xvkbd -file -
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
    pass show -c $password 2> /dev/null
 | 
					    pass show -c $password 2> /dev/null
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user