dotter: Restructure global file

This commit is contained in:
Marty Oehme 2023-10-03 15:23:23 +02:00
parent a3b54a155e
commit 38c64fe9cf
Signed by: Marty
GPG Key ID: EDBF2ED917B2EF6A
2 changed files with 64 additions and 107 deletions

View File

@ -1,26 +1,72 @@
[helpers]
# BASE: A base system. Sets up a nice xdg (zsh) shell environment, utility scripts and
# a development environment based on git and nvim.
[base]
depends = ["shell", "git", "nvim", "scripts", "ssh", "terminal"]
[linux]
depends = [
"base",
"disks",
"pass",
"office",
"services",
"social",
"writing",
]
[workstation]
depends = ["linux", "desktop", "multimedia", "qutebrowser"]
[shell.files]
"sh/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
sh = "~"
[git.files]
"git/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
git = "~"
[nvim.files]
"nvim/.config/nvim/spell/de.utf-8.add.spl" = { target = "~/.config/nvim/spell/de.utf-8.add.spl", type = "symbolic" }
"nvim/.config/nvim/spell/en.utf-8.add.spl" = { target = "~/.config/nvim/spell/en.utf-8.add.spl", type = "symbolic" }
nvim = "~"
[scripts.files]
"scripts/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
scripts = "~"
[ssh.files]
ssh = "~"
[terminal.files]
"terminal/.config/vifm" = { target = "~/.config/vifm", type = "symbolic" }
terminal = "~"
# LINUX: A linux machine, with systemd enabled, auto-mounting set up and a nice productivity suite.
[linux]
depends = ["base", "disks", "pass", "office", "services", "social", "writing"]
[disks.files]
"disks/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
disks = "~"
[pass.files]
"pass/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"pass/.local/share/pass-pick/assets/rofi-menu.gif" = { target = "~/nowhere", type = "symbolic", if = "false" }
pass = "~"
[office.files]
"office/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"office/.config/glow/email.json" = { target = "~/.config/glow/email.json", type = "symbolic" }
office = "~"
[services.files]
"services/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
services = "~"
[social.files]
social = "~"
[writing.files]
"writing/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"writing/.config/papis/papistui.yaml" = { target = "~/.config/papis/papistui.yaml", type = "symbolic" }
"writing/.config/sioyek/prefs_user.config" = { target = "~/.config/sioyek/prefs_user.config", type = "template", prepend = "# TEMPLATED BY DOTTER\n" }
writing = "~"
# WORKSTATION: A desktop machine, with wayland environment and display attached.
[workstation]
depends = ["linux", "desktop", "multimedia", "qutebrowser"]
[desktop.files]
"desktop/.config/flavours/templates" = { target = "~/.config/flavours/templates", type = "symbolic" }
"desktop/.config/waybar/config" = { target = "~/.config/waybar/config", type = "symbolic" }
@ -28,14 +74,6 @@ sh = "~"
"desktop/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
desktop = "~"
[disks.files]
"disks/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
disks = "~"
[git.files]
"git/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
git = "~"
[multimedia.files]
"multimedia/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"multimedia/.config/mpv/scripts" = { target = "~/.config/mpv/scripts", type = "symbolic" }
@ -44,50 +82,10 @@ git = "~"
"multimedia/.config/mpv/fonts/uosc_textures.ttf" = { target = "~/.config/mpv/fonts/uosc_textures.ttf", type = "symbolic" }
multimedia = "~"
[nvim.files]
"nvim/.config/nvim/spell/de.utf-8.add.spl" = { target = "~/.config/nvim/spell/de.utf-8.add.spl", type = "symbolic" }
"nvim/.config/nvim/spell/en.utf-8.add.spl" = { target = "~/.config/nvim/spell/en.utf-8.add.spl", type = "symbolic" }
nvim = "~"
[office.files]
"office/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"office/.config/glow/email.json" = { target = "~/.config/glow/email.json", type = "symbolic" }
office = "~"
[pass.files]
"pass/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"pass/.local/share/pass-pick/assets/rofi-menu.gif" = { target = "~/nowhere", type = "symbolic", if = "false" }
pass = "~"
[qutebrowser.files]
"qutebrowser/config" = "~/.config/qutebrowser"
"qutebrowser/scripts" = "~/.local/bin"
"qutebrowser/data" = "~/.local/share/qutebrowser"
[scripts.files]
"scripts/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
scripts = "~"
[services.files]
"services/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
services = "~"
[social.files]
social = "~"
[ssh.files]
ssh = "~"
[terminal.files]
"terminal/.config/vifm" = { target = "~/.config/vifm", type = "symbolic" }
terminal = "~"
[writing.files]
"writing/README.md" = { target = "~/README.md", type = "symbolic", if = "false" }
"writing/.config/papis/papistui.yaml" = { target = "~/.config/papis/papistui.yaml", type = "symbolic" }
"writing/.config/sioyek/prefs_user.config" = { target = "~/.config/sioyek/prefs_user.config", type = "template", prepend = "# TEMPLATED BY DOTTER\n" }
writing = "~"
[system.files]
"bootstrap/system-packages" = { target = "/", type = "symbolic", owner = "root" }

View File

@ -13,51 +13,10 @@ foregoing some of its more advanced quality of life features.
The general functionality of password management should not be affected.
The last working `rofi-gopass` implementation before the switch can be found [here](https://gitlab.com/marty-oehme/dotfiles/-/tree/7456bb14ab18ee09bd8b9332faa43d35b22e9e55/gopass).
## rofi-pass
## pass-pick
To make accessing secrets easy, it uses the `rofi-pass` script, which creates a small rofi menu displaying all your secrets (names only), and from which you have quick access to copy, fill, or open the individual entries. An example of the menu in action:
To make accessing secrets easy, it uses the `pass-pick` script, which creates a small selection menu displaying all your secrets (names only), and from which you have quick access to copy, fill, or open the individual entries. An example of the menu in action:
![rofi-gopass demonstration](.assets/gopass/rofi-menu.gif)
![pass-pick demonstration](.assets/gopass/rofi-menu.gif)
There are several keybindings available, to either fill or copy to clipboard the username, password, or open the full view to an individual entry. For every send to clipboard action, the clipboard will be automatically cleared after the time specified in your pass settings. For auto-filling to work correctly, the username field will (by default) have to be highlighted on the entry webpage or form.
| keybinding | function | setting name |
| -------- | -------- | ---------- |
| Return | Auto-fill username & password | KEY_AUTOFILL |
| Alt+Return | Open individual entry | KEY_OPEN_ENTRY |
| Alt+u | Auto-fill username | KEY_FILL_USER |
| Alt+p | Auto-fill password | KEY_FILL_PASS |
| Ctrl+Alt+u | Send username to clipboard | KEY_CLIP_USER |
| Ctrl+Alt+p | Send password to clipboard | KEY_CLIP_PASS |
| From opened entry: | | |
| Return | Auto-fill selected field | KEY_ENTRYMENU_FILL |
| Alt+Return | Send selected field to clipboard | KEY_ENTRYMENU_CLIP |
| Alt+s | Reveal contents of the password field | KEY_ENTRYMENU_SHOWFIELD |
| Alt+BackSpace | Close individual entry, return to overview | KEY_ENTRYMENU_QUIT |
These keys, as well as the additional configuration can be changed by setting the corresponding environment variable, through a configuration file, or at the top of the script file itself. The script tries to follow xdg-specification, meaning it looks for a configuration file in the following directories (in descending order):
* `XDG_CONFIG_HOME/rofi-pass/rofi-pass.conf`
* `~/.config/rofi-pass/rofi-pass.conf`
* `~/.rofi-pass.conf`
* `/etc/rofi-pass.conf`
or, alternatively, a custom directory if the `RP_CONFIGURATION_FILE` variable points to a configuration file.
To use environment variables to configure any of these options or keys, prefix them with `RP_`, so that e.g. `KEY_AUTOFILL` becomes `RP_KEY_AUTOFILL`. Environment variables take precedence over configuration file settings.
Additional configuration options:
* `AUTOFILL_BACKEND`
:sets the auto-filling tool used, only tested with `xdotool` currently.
* `AUTOFILL_CHAIN`
:sets the chain of keys that should be sent to auto-fill an entry. Can use the following special fields: `:tab`, `:space`, `:return`, `username`, `password`.
The default chain is `username :tab password`, which will enter the username, simulate the tab-key to switch from the username to the password field, and enter the password. This can be changed to suit your needs. To, for example, log in fully automatically at the end of the sequence, change it to `username :tab password :return`, and there will be no further user input for the login required.
* `AUTOFILL_DELAY`
:sets the time for xdotool to wait in-between simulated actions, if some letters appear missing or the fields are not switched between quickly enough, it can usually be fixed by increasing this delay (though typing will also take longer)
* `PASS_USERNAME_FIELD`
:sets the name of the field in pass secrets which contain the username. Usually, the default setting should be fine (it will look for `user`, then `username`, then `login`) but custom field names can be supplied. If multiple field names are given, it will use the first supplied field name a secret contains.
For pass-pick configuration and setup refer to the external program itself.