ENH update readme

This commit is contained in:
Nathan Dwarshuis 2022-07-31 21:04:19 -04:00
parent f84407b793
commit cd53449266
1 changed files with 106 additions and 2 deletions

108
README.md
View File

@ -3,7 +3,25 @@
These are some personal programs that use the These are some personal programs that use the
[rofi](https://github.com/davatorium/rofi) interface. [rofi](https://github.com/davatorium/rofi) interface.
## Rofi-Bitwarden ## Installation
Clone this repo and run the following in the repo root.
Install packages needed for building:
```
pacman -S --needed - < make_pkgs
```
Build and install (choose individual targets as needed):
```
stack install
```
See individual sections for other dependencies to install.
## Bitwarden (rofi-bw)
[Bitwarden](https://bitwarden.com/) is an open-source password management server [Bitwarden](https://bitwarden.com/) is an open-source password management server
and this program functions as a client. Unlike many other similar clients, this and this program functions as a client. Unlike many other similar clients, this
@ -40,7 +58,7 @@ Any options after `-c` will be passed to rofi.
- dbus - dbus
- libnotify: desktop notifications - libnotify: desktop notifications
## Rofi-Devices ## Device Mounting (rofi-dev)
This is a manual mounting helper for removable drives, MTP devices, and fstab This is a manual mounting helper for removable drives, MTP devices, and fstab
entries. It will transparently handle mountpoint creation/destruction. entries. It will transparently handle mountpoint creation/destruction.
@ -75,6 +93,19 @@ To specifify that `/media/USER/foo` should use `secret-tool` to find its
password, specify the `-s` option. This would lookup a password for the entry password, specify the `-s` option. This would lookup a password for the entry
whose `username` is `bar` and `hostname` is `example.com`: whose `username` is `bar` and `hostname` is `example.com`:
### Veracrypt
This tool can mount veracrypt vaults...with some hacky effort. Since veracrypt
works at the block device level, it needs root permissions to mount a volume
(which actually involves mounting several devices). The easiest way to make sure
this works is to give veracrypt sudo access like so:
```
<user> ALL=(root) NOPASSWD: /usr/bin/veracrypt,/usr/bin/uptime
```
No idea why `uptime` is also needed for this.
``` sh ``` sh
rofi-dev -s '/media/USER/foo:username=bar,hostname=example.com' rofi-dev -s '/media/USER/foo:username=bar,hostname=example.com'
``` ```
@ -89,6 +120,79 @@ rofi-dev -p '/media/USER/foo'
- udisks2: removable drive mounting - udisks2: removable drive mounting
- sshfs: mounting network devices in fstab over ssh - sshfs: mounting network devices in fstab over ssh
- cifs-utils: mounting network devices in fstab using CIFS/Samba - cifs-utils: mounting network devices in fstab using CIFS/Samba
- veracrypt: to mount veracrypt vaults
- [jmtpfs](https://github.com/JasonFerrara/jmtpfs): mounting MTP devices - [jmtpfs](https://github.com/JasonFerrara/jmtpfs): mounting MTP devices
- libnotify: desktop notifications - libnotify: desktop notifications
- libsecret: password lookup with `secret-tool` - libsecret: password lookup with `secret-tool`
- libnotify
## Autorandr (rofi-autorandr)
This allows selection of the
[autorandr](https://github.com/phillipberndt/autorandr) configuration via a rofi
menu.
### Dependencies
- autorandr
## Bluetooth (rofi-bw)
This presents a nice menu to select the current bluetooth device.
### Dependencies
- bluez (which should provide the dbus interface for this to work)
## ExpressVPN (rofi-evpn)
This presents a menu to select the current ExpressVPN gateway.
### Dependencies
- expressvpn (from AUR)
- libnotify
## Pinentry (pinentry-rofi)
Analogous to the default [pinentry](https://github.com/gpg/pinentry) prompts,
this presents a rofi prompt for a password with the GPG keyring is unlocked.
Requires the following in `gpg-agent.conf`:
```
pinentry-program /path/to/pinentry-rofi
```
Unlike the other pinentry programs, this one can integrate with bitwarden (via
the above client) by retrieving the password for the gpg keyring if it is stored
in bitwarden. This requires a yaml configuration in the gpg home directoring as
such:
```
bitwarden-name: <name of GPG bitwarden entry>
```
### Dependencies
- rofi-bw (see above): bitwarden integration
## Putting Rofi on the correct screen (current-output)
This is a total hack...actually it isn't because it's written in Haskell and not
bash.
The problem is that when used with xmonad, rofi doesn't place itself on the
"current" workspace since the concept of a "workspace" is weird and specific to
xmonad. The solution is to use this program to query `_NET_DESKTOP_VIEWPORT`
(which my xmonad config sets) and use this determine the name of the active
workspace which can then be fed to rofi using the `-m` flag.
See comments of this binary for details.
### Dependencies
- X11