diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2024-08-20 20:07:05 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2024-08-20 20:07:05 -0300 |
commit | a09a77ee87df69b1e9fe9fba98c21b11983d0150 (patch) | |
tree | 2f68ed8570bb4ed2f000471c88c58e101e617c6d | |
parent | d3ae2029e3f50b63c2adaee12422348e7dd379c2 (diff) | |
download | utils-x11-a09a77ee87df69b1e9fe9fba98c21b11983d0150.tar.gz utils-x11-a09a77ee87df69b1e9fe9fba98c21b11983d0150.tar.bz2 |
Add some commands from the scripts repository
-rwxr-xr-x | screenshot | 13 | ||||
-rwxr-xr-x | xclip-ssh | 106 | ||||
-rwxr-xr-x | xdg-add | 16 |
3 files changed, 135 insertions, 0 deletions
diff --git a/screenshot b/screenshot new file mode 100755 index 0000000..75a9895 --- /dev/null +++ b/screenshot @@ -0,0 +1,13 @@ +#!/bin/sh +# +# Wrapper around scrot + +# Workaround +# See https://bbs.archlinux.org/viewtopic.php?id=86507 +# https://groups.google.com/forum/#!msg/linux.debian.bugs.dist/_tmJIFYBfZo/F7x5WFEQCMsJ +if echo "$*" | grep -q -- '-s'; then + sleep 0.2 +fi + +# Take a screenshot +scrot '%Y-%m-%d-%H:%M:%S_$wx$h.png' -e 'mv $f ~/load/' $* diff --git a/xclip-ssh b/xclip-ssh new file mode 100755 index 0000000..46c94b3 --- /dev/null +++ b/xclip-ssh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +# +# Intersystem communication via clipboard over SSH! +# Transmits data using the clipboard via SSH session. +# +# Description: +# +# xclip-ssh does what the same says - xclip over SSH. +# Works even with a remote host in a .onion service! +# And even between virtual machines! +# +# Works around the following PoC: +# +# ssh -X <server> # log in the remote system +# DISPLAY=:0 xclip -o # extracts remote's clipboard +# +# Usage: +# +# xclip-ssh send <server> [stdin|data] +# xclip-ssh receive <server> [stdout|xclip] +# +# Examples: +# +# cat /path/to/file | xclip-ssh send server +# xclip-ssh send server "some text" +# xclip-ssh receive server stdout > saved.txt + +# Parameters +BASENAME="`basename $0`" +ACTION="$1" +SERVER="$2" +STORE="$3" + +# Display usage +function xclip_ssh_usage { + echo "usage: $BASENAME <send|receive> <server> [data]" + exit 1 +} + +# Send data +function xclip_ssh_send { + if [ -z "$STORE" ]; then + STORE="xclip" + fi + + if [ "$STORE" == "xclip" ]; then + CONTENT="`xclip -o`" + elif [ "$STORE" == "stdin" ]; then + mapfile -t CONTENT + #printf '%s\n' "${CONTENT[@]}" + else + shift 2 + CONTENT="$*" + fi + + # See https://askubuntu.com/questions/804095/how-do-i-disable-the-message-of-the-day-motd-on-ubuntu-14-04 + ssh -q -X $SERVER bash <<EOF + ##### BEGIN REMOTE SCRIPT ##### + if ! which xclip &> /dev/null; then + echo "$BASENAME: missing xclip in the remote server" + else + echo ${CONTENT[@]} | DISPLAY=:0 xclip + fi + ##### END REMOTE SCRIPT ####### +EOF +} + +# Receive data helper +function xclip_ssh_helper { + ssh -q -X $SERVER bash <<EOF + ##### BEGIN REMOTE SCRIPT ##### + if ! which xclip &> /dev/null; then + echo "$BASENAME: missing xclip in the remote server" + else + DISPLAY=:0 xclip -o + fi + ##### END REMOTE SCRIPT ####### +EOF +} + +# Receive data +function xclip_ssh_receive { + if [ -z "$STORE" ]; then + STORE="xclip" + fi + + if [ "$STORE" == "stdout" ]; then + xclip_ssh_helper + echo "" + else + xclip_ssh_helper | xclip -i + fi +} + +# Check +if [ -z "$2" ]; then + xclip_ssh_usage +elif [ "$ACTION" != "send" ] && [ "$ACTION" != "receive" ]; then + xclip_ssh_usage +elif ! which xclip &> /dev/null; then + echo "$BASENAME: please install xclip" + exit 1 +fi + +# Dispatch +xclip_ssh_$ACTION $* @@ -0,0 +1,16 @@ +#!/bin/bash +# +# A xdg-mime shortcut. +# + +# Parameters +APP="$1" +FILETYPE="$2" + +# Check if second param is a file +if [ -e "$FILETYPE" ]; then + FILETYPE="`xdg-mime query filetype $FILETYPE`" +fi + +# Make association +xdg-mime default ${APP}.desktop $FILETYPE |