From 7e8cc7201949ad75daca5520c57479229711ed31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Mon, 4 Apr 2022 15:54:26 +0200 Subject: Add flake.nix --- shellrc-desktop.d/desktop | 48 +++++++++++++++++++++++++++++++++++++++++++++ shellrc-desktop.d/shortcuts | 14 +++++++++++++ shellrc-desktop.d/ssh | 19 ++++++++++++++++++ shellrc-desktop.d/sway | 32 ++++++++++++++++++++++++++++++ shellrc-desktop.d/xorg | 27 +++++++++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 shellrc-desktop.d/desktop create mode 100644 shellrc-desktop.d/shortcuts create mode 100644 shellrc-desktop.d/ssh create mode 100644 shellrc-desktop.d/sway create mode 100644 shellrc-desktop.d/xorg (limited to 'shellrc-desktop.d') diff --git a/shellrc-desktop.d/desktop b/shellrc-desktop.d/desktop new file mode 100644 index 0000000..64f0431 --- /dev/null +++ b/shellrc-desktop.d/desktop @@ -0,0 +1,48 @@ +# vim: ft=sh: +# This is handy only on desktop and is useless on server + +alias sdcv='sdcv -c' + +# Following section is applicable for any desktop but only for graphics########## +# TODO add check for wayland +[ -z "$DISPLAY" ] && return + +alias feh='feh --conversion-timeout 10 -.' + + +# This function should not be called externaly +# It expects PID of surf instace as first argument and all other arguments should +# be command to be called before kill is sent. +__insurf_callback() { + local SPID=$1 + shift + "$@" + echo kill $SPID SIGHUP + kill -s SIGHUP $SPID || exit 1 +} + +# Same as inrun but it opens first argument it founds in surf and then reloads +# that instance automatically. +insurf() { + ( + set -e + # Run surf + surf "$1" & + local SPID=$! + trap "kill $SPID; trap '' EXIT; exit 0" EXIT INT QUIT TERM ABRT + # Insert our callback + local ISFIRST=true + for ARG in "$@"; do + if $ISFIRST; then + shift $# + ISFIRST=false + fi + set "$@" "$ARG" + if [ "$ARG" = "--" ]; then + set "$@" "__insurf_callback" "$SPID" + fi + done + # Run inrun + inrun "$@" + ) +} diff --git a/shellrc-desktop.d/shortcuts b/shellrc-desktop.d/shortcuts new file mode 100644 index 0000000..4be240a --- /dev/null +++ b/shellrc-desktop.d/shortcuts @@ -0,0 +1,14 @@ +# vim: ft=sh: +# There are desktop specific shortcuts + +turris() { + cd ~/turris/"$1" +} + +projects() { + cd ~/projects/"$1" +} + +admin() { + projects admin/"$1" +} diff --git a/shellrc-desktop.d/ssh b/shellrc-desktop.d/ssh new file mode 100644 index 0000000..7a1b71f --- /dev/null +++ b/shellrc-desktop.d/ssh @@ -0,0 +1,19 @@ +# vim: ft=sh: +# These are general ssh helpers that are most likely not usable on server side +# anyway thus they are deployed on desktop only. + +# SSHFS in client mode. In other words it is reverse sshfs mount. +sshcfs() { + local target="$1" + local local_dir="$2" + local remote_dir="$3" + shift 3 + [[ "$local_dir" = /* ]] || local_dir="$PWD/$local_dir" + + ssh "$@" "$target" mkdir -p "$remote_dir" + dpipe \ + /usr/lib64/misc/sftp-server \ + = \ + ssh "$@" "$target" sshfs -o idmap=user -o passive -o allow_other \ + ":$local_dir" "$remote_dir" +} diff --git a/shellrc-desktop.d/sway b/shellrc-desktop.d/sway new file mode 100644 index 0000000..1032a91 --- /dev/null +++ b/shellrc-desktop.d/sway @@ -0,0 +1,32 @@ +# vim: ft=sh: +# These are utility functions loaded when we are running in Sway +[ "$XDG_CURRENT_DESKTOP" = "sway" ] || return + +alias swm='swaymsg' + + +# Clip stdin to clipboard +clip() { + wl-copy --trim-newline +} + +# Clip current HEAD hash to clipboard +# Optionally you can pass commit as argument +gitclip() { + [ -n "$1" ] && local CMT="$1" || local CMT=HEAD + git rev-parse "$CMT"| clip +} +# Clip current head message to clipboard +# Optionally you can pass commit as argument +gitmclip() { + [ -n "$1" ] && local CMT="$1" || local CMT=HEAD + git log --format=%B -n 1 "$CMT" | clip +} + + +sway_outputs() { + swaymsg -t get_outputs +} +sway_inputs() { + swaymsg -t get_inputs +} diff --git a/shellrc-desktop.d/xorg b/shellrc-desktop.d/xorg new file mode 100644 index 0000000..91c9f07 --- /dev/null +++ b/shellrc-desktop.d/xorg @@ -0,0 +1,27 @@ +# vim: ft=sh: +# These are utility functions loaded when we are running in Xserver + +[ -n "$DISPLAY" ] || return # Ignore if there is no display set +[ -z "$WAYLAND_DISPLAY" ] || return + +alias i='i3-msg' + + +# Clip stdin to clipboard +clip() { + # Note: printf as magic to remove trailing new lines + printf %s "$(cat)" | xclip -selection clipboard +} + +# Clip current HEAD hash to clipboard +# Optionally you can pass commit as argument +gitclip() { + [ -n "$1" ] && local CMT="$1" || local CMT=HEAD + git rev-parse "$CMT"| clip +} +# Clip current head message to clipboard +# Optionally you can pass commit as argument +gitmclip() { + [ -n "$1" ] && local CMT="$1" || local CMT=HEAD + git log --format=%B -n 1 "$CMT" | clip +} -- cgit v1.2.3