y, p, paste, and hist now try win32yank.exe after wl-copy/wl-paste and xclip, so clipboard access works under WSL2 once win32yank is installed and reachable through WSL interop. Updates the OS compatibility docs accordingly.
60 lines
1.8 KiB
Fish
60 lines
1.8 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# CATEGORY
|
|
# 09-clipboard
|
|
#
|
|
# SYNOPSIS
|
|
# p [args...]
|
|
#
|
|
# DESCRIPTION
|
|
# Outputs clipboard contents to stdout. Uses wl-paste on Wayland, xclip on
|
|
# X11, or win32yank on WSL2. Supports -h/--help for usage info.
|
|
#
|
|
# ARGUMENTS
|
|
# -h, --help Show usage help
|
|
# args... Arguments forwarded to the clipboard tool
|
|
#
|
|
# EXIT STATUS
|
|
# 0 Clipboard contents read successfully
|
|
# 1 No supported clipboard tool found
|
|
#
|
|
# RETURNS
|
|
# The clipboard contents, printed to stdout
|
|
#
|
|
# EXAMPLE
|
|
# p | grep foo
|
|
# p > file.txt
|
|
function p --description 'Put from clipboard'
|
|
# Check for help flag
|
|
if contains -- -h $argv; or contains -- --help $argv
|
|
__fish_palette
|
|
echo "$c_head""Usage:$c_reset $c_cmd""p$c_reset $c_flag""[OPTIONS]$c_reset"
|
|
echo ""
|
|
echo " Pastes content from the system clipboard to stdout."
|
|
echo ""
|
|
echo "$c_head""Examples:$c_reset"
|
|
echo " $c_cmd""p$c_reset "$c_dim"Print clipboard content"$c_reset
|
|
echo " $c_cmd""p$c_reset > file.txt "$c_dim"Save clipboard to a file"$c_reset
|
|
echo " $c_cmd""p$c_reset | grep 'foo' "$c_dim"Pipe clipboard content to another command"$c_reset
|
|
echo " cat ($c_cmd""p$c_reset) "$c_dim"Use clipboard content as a filename for cat"$c_reset
|
|
return 0
|
|
end
|
|
|
|
# Determine the clipboard provider
|
|
set -l paste_cmd
|
|
if type -q wl-paste
|
|
set paste_cmd wl-paste
|
|
else if type -q xclip
|
|
set paste_cmd xclip -selection clipboard -o
|
|
else if type -q win32yank.exe
|
|
set paste_cmd win32yank.exe -o --lf
|
|
else
|
|
echo "Error: No clipboard provider (wl-paste, xclip, or win32yank) found." >&2
|
|
return 1
|
|
end
|
|
|
|
# Execute the paste command with any provided arguments
|
|
$paste_cmd $argv
|
|
end
|