Added optinal clipboard support
This commit is contained in:
@@ -19,6 +19,7 @@ Improvements over the original Bopher from that post:
|
||||
- status bar with currently opened resource name
|
||||
- ability to accept `gopher://` URLs from the command line
|
||||
- ability to save the URL to the currently viewed resource into the stash text file
|
||||
- optional clipboard support when stashing (only if you set `BOPHER_CLIP` envvar)
|
||||
- ability to force-download pages instead of viewing regardless of their type
|
||||
- ability to display 8-type Gophermap entries as `telnet://` URIs (not opening anything for security reasons)
|
||||
|
||||
@@ -78,10 +79,21 @@ No. Besides the ambiguity problem, it will also introduce huge external dependen
|
||||
|
||||
## What is the link stash?
|
||||
|
||||
Link stash is a viable and interoperable alternative to both bookmarks and clipboard that can be implemented with pure Bash. Essentially, it's an append-only text file at a fixed location (`~/.bopher-links.txt` by default) where the user can instruct Bopher-NG to save the link to the currently viewed resource. For your convenience, links are stashed with a UTC-based timestamp and in the `gopher://` format, so they can be copied from the file later and used in other browsers. As of now, every stash file line is a valid Gophermap line, so can easily share your findings on the Gopherspace if you need to.
|
||||
Link stash is a viable and interoperable alternative to both bookmarks and clipboard that can be implemented with pure Bash. Essentially, it's an append-only text file at a fixed location (`~/.bopher-links.txt` by default) where the user can instruct Bopher-NG to save the link to the currently viewed resource. For your convenience, links are stashed with a UTC-based timestamp and in the `gopher://` format, so they can be copied from the file later and used in other browsers. As of now, every stash file line is a valid Gophermap line, so can easily share your findings on the Gopherspace whenever you want.
|
||||
|
||||
You can override the `BOPHER_LINKSTASH` environment variable to change the location and name of this file if you need to.
|
||||
|
||||
## What about the "normal" system clipboard?
|
||||
|
||||
This functionality is too OS/environment-specific and thus can't be built **into** Bopher-NG. Since April 2023, however, Bopher-NG supports copying the current URL to the OS/env clipboard at the same time as stashing, if **and only if** you set the `BOPHER_CLIP` environment variable before invocation. This variable must be set to a valid command that performs copying the standard input to the system clipboard. If you plan on using it constantly, I suggest to add one of the following values to your `.bashrc`:
|
||||
|
||||
- for Linux + X11 GUI: `export BOPHER_CLIP='xsel -bi'`
|
||||
- for Linux + Wayland (with `wl-clipboard` package): `export BOPHER_CLIP=wlcopy`
|
||||
- for macOS: `export BOPHER_CLIP=pbcopy`
|
||||
- for GNU Screen environment (on any OS): `export BOPHER_CLIP='(read -rsd$'\x04' x; screen -X register . "$x")`
|
||||
|
||||
Even then, this functionality isn't guaranteed to work on any system. Please verify by yourselves how your operating environment handles the clipboard and adjust this variable accordingly.
|
||||
|
||||
## Where do the downloads go?
|
||||
|
||||
By default, they go to your current working directory, i.e. the directory you are running this script from. To override this with a fixed path, set the `BOPHER_DLDIR` environment variable.
|
||||
@@ -95,7 +107,7 @@ Bopher-NG's mouse input is supported on any terminals that support the 1000 **an
|
||||
- macOS Terminal;
|
||||
- OpenGL-based xterm-compatible terminal emulators like WezTerm, Kitty, Alacritty etc.
|
||||
|
||||
Note that this support is required at the client side only. For instance, you can safely run `bopher-ng.sh` on any compatible Bash version in an SSH session on your terminal and still be able to use mouse there.
|
||||
Note that, unlike clipboard, this support is required at the client side only. For instance, you can safely run `bopher-ng.sh` on any compatible Bash version in an SSH session on your terminal and still be able to use mouse there.
|
||||
|
||||
## What is the license on this?
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
# - status bar with currently opened resource name
|
||||
# - ability to accept gopher:// URLs from the command line
|
||||
# - ability to save the URL to the currently viewed resource into the stash text file
|
||||
# - optional clipboard support when stashing (only if you set BOPHER_CLIP envvar)
|
||||
# - ability to force-download pages instead of viewing regardless of their type
|
||||
# - displaying type 8 entries (as per RFC1436) as the telnet:// URI scheme
|
||||
|
||||
@@ -312,6 +313,7 @@ stashlink() { # stash the link to the currently viewed resource
|
||||
[[ -z "$desc" ]] && desc='Unnamed'
|
||||
printf '%s [%s] %s - %s\t%s\t%s\t%s\r\n' "${fields[5]}" "$(date -u '+%F %T')" "$desc" "$gopherlink" "${fields[4]}" "${fields[2]}" "${fields[3]}" >> $BOPHER_LINKSTASH
|
||||
printf 'Stashed %s - %s%s' "$desc" "$gopherlink" "$ERESET${ESC}[$TERMROWS;0H" # just reset the cursor to the last line
|
||||
[[ ! -z "$BOPHER_CLIP" ]] && (printf '%s' "$gopherlink" | $BOPHER_CLIP) # run an external clipboard command if it's explicitly specified
|
||||
}
|
||||
|
||||
# Focus and click a link on a Gophermap
|
||||
|
||||
Reference in New Issue
Block a user