diff options
author | joe <rbo@gmx.us> | 2025-08-29 17:23:08 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-08-29 17:23:08 +0200 |
commit | 06549448c8e0c2e499bd12001b4ec56ba3752d89 (patch) | |
tree | ccee025bec7bd254ae2c4c31703f17d3c4d0b504 | |
parent | fuck good (diff) | |
download | hardflip-06549448c8e0c2e499bd12001b4ec56ba3752d89.tar.gz hardflip-06549448c8e0c2e499bd12001b4ec56ba3752d89.tar.bz2 hardflip-06549448c8e0c2e499bd12001b4ec56ba3752d89.tar.xz hardflip-06549448c8e0c2e499bd12001b4ec56ba3752d89.tar.zst hardflip-06549448c8e0c2e499bd12001b4ec56ba3752d89.zip |
fzf bin plus fix bad behaviour
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | README.md | 9 | ||||
-rw-r--r-- | conf/config.sample.yml | 6 | ||||
-rw-r--r-- | man/hf.1 | 53 | ||||
-rw-r--r-- | src/c_defs.go | 1 | ||||
-rw-r--r-- | src/c_fuzz.go | 12 | ||||
-rw-r--r-- | src/c_init.go | 3 | ||||
-rw-r--r-- | src/c_parse.go | 4 |
8 files changed, 73 insertions, 17 deletions
@@ -27,7 +27,7 @@ DEST := /usr .DEFAULT_GOAL := ${TARGET} run: ${SRC} - go run ${SRC_DIR} -s + go run ${SRC_DIR} ${TARGET}: ${SRC} go build -o ${TARGET} ${SRC_DIR} @@ -15,6 +15,7 @@ Install those if you need them: + `gpg` to crypt passwords, similarily to [pass](https://www.passwordstore.org/). You can store them in plain text if you prefer but I wouldn't recommend that option ++ `fzf` + `go` + GNU `make` @@ -89,6 +90,8 @@ that, it doesn't work at all, just leave that unset entered by default when adding a new SSH host or jump, saving a ton of time. Of course it can be changed when adding the host. Leave empty if you don't have a main key ++ `fuzzy_finder`: (`string`) custom path for the fuzzy search program. For you +`skim` nerds. Defaults to `fzf` if not set ### `colors.yml` @@ -140,9 +143,13 @@ keys, maybe in the future. On first start, you will be prompted to configure GnuPG and default SSH keys. +### Options + +`man hf` for more infos. + ## Next -Check `ROADMAP.md` to see the intended upgrades for `hardflip`. VNC hosts and +Check [ROADMAP.md](ROADMAP.md) to see the intended upgrades for `hardflip`. VNC hosts and fuzzysearch are big ones. But that's pretty much it. Enjoy. ## Bugs diff --git a/conf/config.sample.yml b/conf/config.sample.yml index d80eb1d..45cfd1a 100644 --- a/conf/config.sample.yml +++ b/conf/config.sample.yml @@ -19,5 +19,9 @@ percent: false # the command will replace hardflip #terminal: alacritty -# this will be entered by default when adding a new SSH or SSH jump host +# this will be entered by default when adding a new SSH or SSH jump host to win +# some time default_ssh_priv: path/to/key + +# fuzzy finder program used in search (keybind /) and -s mode +#fuzzy_finder: fzf @@ -1,6 +1,6 @@ .\" Manpage for hf .\" Contact rbo@gmx.us to correct errors and typos. -.TH hf 1 "20 May 2024" "hf 1.0" "hardflip Reference" +.TH hf 1 "28 August 2025" "hf 1.0" "hardflip Reference" .SH NAME hf \- super fast remote connection manager .SH SYNOPSYS @@ -14,11 +14,26 @@ Passwords are stored using \fBGnuPG\fR keys or plaintext (depending on your setup). .SH OPTIONS .TP -\fB\-h\fR, \fB\-\-help\fR -Prints the help +\fB\-h\fR +prints the usage and exit .TP -\fB\-v\fR, \fB\-\-version\fR -Prints the program version +\fB\-n\fR +disables loop mode, ignoring the \fBloop\fR setting from +.IR config.yml . +See +.B CONFIGURATION +.TP +\fB\-s\fR +starts in search mode using +.IR fzf (1). +The program will not run the TUI and search directly through the existing hosts. +Contrary to search mode from within the TUI, selecting an host will execute +the configuration directly. Using this option will exit the program at the end +of the session or if the search was cancelled. This option implies \fB\-n\fR. +.IR config.yml . +.TP +\fB\-v\fR +prints the program version and exit .SH CONFIGURATION .BR hf stores its configuration files in the @@ -33,46 +48,68 @@ Here are some options: .TP .BR icons : .I bool +.RS 4 shows or not icons +.RE .TP .BR loop : .I bool +.RS 4 the program will run again after exiting the host you connected to +.RE .TP .BR gpg : .I string +.RS 4 the gpg key ID you set at first boot. It is used to encrypt passwords. If set to **"plain"**, passwords will be stored in plaintext. I don't recommend this at all but you might not care +.RE .TP .BR percent : .I bool +.RS 4 shows percent of hosts the cursor is on in the bottom right of the window +.RE .TP .BR terminal : .I string +.RS 4 will spawn the command to connect to your host in a new instance of your set terminal. It was intended to open the connection in a new terminal in the background, allowing you to still be using the same .B hf while connected to one or several of your hosts. Turns out I can't code that, it doesn't work at all, just leave that unset +.RE .TP .BR default_ssh_priv : .I string +.RS 4 default SSH private key path. It will be entered by default when adding a new SSH host or jump, saving a ton of time. Of course it can be changed when adding the host. Leave empty if you don't have a main key +.RE +.TP +.BR fuzzy_finder : +.I string +.RS 4 +custom path for the fuzzy search program. For you +.IR skim +nerds. Defaults to +.IR fzf +if not set +.RE .SH BUGS Please note that .B hardflip -was tested only on Linux and FreeBSD at the moment. This is probably full of +was only tested on Linux and FreeBSD at the moment. This is probably full of bugs, so please report any bug to me, -.IR "Joe <rbo@gmx.us>" +.IR "joe <rbo@gmx.us>" or on GitHub at .IR https://github.com/JozanLeClerc/hardflip . .SH AUTHOR -Joe <rbo@gmx.us> +joe <rbo@gmx.us> .SH SEE ALSO .IR ssh (1), .IR xfreerdpd (1), diff --git a/src/c_defs.go b/src/c_defs.go index fc6c4c2..cc8a42f 100644 --- a/src/c_defs.go +++ b/src/c_defs.go @@ -240,6 +240,7 @@ var DEFAULT_OPTS = HardOpts{ false, "", "", + "fzf", "", } diff --git a/src/c_fuzz.go b/src/c_fuzz.go index 313b684..5dd7880 100644 --- a/src/c_fuzz.go +++ b/src/c_fuzz.go @@ -98,24 +98,30 @@ func c_fuzz(data *HardData, ui *HardUI) (bool) { return false } } - search := exec.Command("fzf") + search := exec.Command(data.opts.Fuzzer) stdin, stdout := c_fuzz_init_pipes(ui, search) if stdin == nil || stdout == nil { return false } if err := search.Start(); err != nil { if ui.s != nil { - c_error_mode("fzf", err, ui) + c_error_mode("fuzzy finder", err, ui) c_resume_or_die(ui) return false } else { - c_die("fzf", err) + c_die("fuzzy finder", err) } } go func() { defer stdin.Close() for ptr := data.litems.head; ptr != nil; ptr = ptr.next { if ptr.is_dir() == true { + // } else if data.litems.curr.Dirs != nil && + // data.folds[data.litems.curr.Dirs] == nil { + // e_fold_dir(data, data.litems.curr) + // } else { + // e_unfold_dir(data, data.litems.curr) + // } continue } io.WriteString(stdin, ptr.path()[1:] + ptr.Host.Name + "\n") diff --git a/src/c_init.go b/src/c_init.go index c2c7779..555fb96 100644 --- a/src/c_init.go +++ b/src/c_init.go @@ -66,6 +66,7 @@ type HardOpts struct { Perc bool `yaml:"percent"` Term string `yaml:"terminal"` DefSSH string `yaml:"default_ssh_priv"` + Fuzzer string `yaml:"fuzzy_finder"` file string } @@ -185,7 +186,7 @@ func c_get_options(dir string, load_err *[]error) HardOpts { opts.file = file return opts } - opts, err := c_parse_opts(file) + opts, err := c_parse_opts(file, opts) opts.file = file if err != nil { *load_err = append(*load_err, err) diff --git a/src/c_parse.go b/src/c_parse.go index 5f788e9..2b5950f 100644 --- a/src/c_parse.go +++ b/src/c_parse.go @@ -59,8 +59,8 @@ import ( "gopkg.in/yaml.v3" ) -func c_parse_opts(file string) (HardOpts, error) { - var opts HardOpts +func c_parse_opts(file string, defaults HardOpts) (HardOpts, error) { + opts := defaults yaml_file, err := os.ReadFile(file) if err != nil { |