script
This commit is contained in:
parent
b1f7b8ff68
commit
7c63d6d420
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
gamermode_off(){
|
||||
notify-send -t 1600 'disabled gamermode' --icon=video-display
|
||||
picom -b --log-file /var/log/picom.log --log-level INFO
|
||||
}
|
||||
|
||||
gamermode_on(){
|
||||
notify-send -t 1600 'enabled gamermode' --icon=video-display
|
||||
killall picom;
|
||||
}
|
||||
|
||||
if [ `pgrep -x picom` ]; then
|
||||
gamermode_on
|
||||
else
|
||||
gamermode_off
|
||||
fi
|
||||
exit
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
git add -A
|
||||
if [ "$#" -ne 1 ]; then
|
||||
git commit -m "a"
|
||||
else
|
||||
git commit -m $@
|
||||
fi
|
||||
git push
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/sh
|
||||
|
||||
go install github.com/klauspost/asmfmt/cmd/asmfmt@latest
|
||||
go install github.com/go-delve/delve/cmd/dlv@latest
|
||||
go install github.com/kisielk/errcheck@latest
|
||||
go install github.com/davidrjenni/reftools/cmd/fillstruct@master
|
||||
go install github.com/rogpeppe/godef@latest
|
||||
go install golang.org/x/tools/cmd/goimports@master
|
||||
go install github.com/mgechev/revive@latest
|
||||
go install golang.org/x/tools/gopls@latest
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||
go install honnef.co/go/tools/cmd/staticcheck@latest
|
||||
go install github.com/fatih/gomodifytags@latest
|
||||
go install golang.org/x/tools/cmd/gorename@master
|
||||
go install github.com/jstemmer/gotags@master
|
||||
go install golang.org/x/tools/cmd/guru@master
|
||||
go install github.com/josharian/impl@main
|
||||
go install honnef.co/go/tools/cmd/keyify@master
|
||||
go install github.com/fatih/motion@latest
|
||||
go install github.com/koron/iferr@master
|
||||
go install golang.org/x/perf/cmd/benchstat@latest
|
||||
go install github.com/Quasilyte/go-benchrun@latest
|
||||
go install github.com/tmrts/boilr@latest
|
||||
go install github.com/goreleaser/goreleaser@latest
|
||||
go install github.com/wader/bump/cmd/bump@latest
|
||||
go install mvdan.cc/gofumpt@latest
|
||||
go install github.com/jackc/tern/v2@latest
|
||||
|
||||
asdf reshim golang
|
|
@ -0,0 +1,128 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Get the procs sorted by the number of inotify watches
|
||||
# @author Carl-Erik Kopseng
|
||||
# @latest https://github.com/fatso83/dotfiles/blob/master/utils/scripts/inotify-consumers
|
||||
# Discussion leading up to answer: https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
|
||||
#
|
||||
#
|
||||
########################################## Notice ##########################################
|
||||
### Since Fall 2022 you should prefer using the following C++ version ###
|
||||
### https://github.com/mikesart/inotify-info ###
|
||||
############################################################################################
|
||||
#
|
||||
#
|
||||
# The fastest version of this script is here: https://github.com/fatso83/dotfiles/commit/inotify-consumers-v1-fastest
|
||||
# Later PRs introduced significant slowdowns at the cost of better output, but it is insignificant on most machines
|
||||
# See this for details: https://github.com/fatso83/dotfiles/pull/10#issuecomment-1122374716
|
||||
|
||||
main(){
|
||||
printf "\n%${WLEN}s %${WLEN}s\n" "INOTIFY" "INSTANCES"
|
||||
printf "%${WLEN}s %${WLEN}s\n" "WATCHES" "PER "
|
||||
printf "%${WLEN}s %${WLEN}s %s\n" " COUNT " "PROCESS " "PID USER COMMAND"
|
||||
printf -- "------------------------------------------------------------\n"
|
||||
generateData
|
||||
}
|
||||
|
||||
usage(){
|
||||
cat << EOF
|
||||
Usage: $0 [--help|--limits]
|
||||
-l, --limits Will print the current related limits and how to change them
|
||||
-h, --help Show this help
|
||||
|
||||
FYI: Check out Michael Sartain's C++ take on this script. The resulting native executable
|
||||
is much faster, modern and feature rich. It can be found at
|
||||
https://github.com/mikesart/inotify-info
|
||||
|
||||
Requires building, but is well worth the few seconds :)
|
||||
EOF
|
||||
}
|
||||
|
||||
limits(){
|
||||
printf "\nCurrent limits\n-------------\n"
|
||||
sysctl fs.inotify.max_user_instances fs.inotify.max_user_watches
|
||||
|
||||
cat <<- EOF
|
||||
Changing settings permanently
|
||||
-----------------------------
|
||||
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
|
||||
sudo sysctl -p # re-read config
|
||||
EOF
|
||||
}
|
||||
|
||||
generateData() {
|
||||
local -i PROC
|
||||
local -i PID
|
||||
local -i CNT
|
||||
local -i INSTANCES
|
||||
local -i TOT
|
||||
local -i TOTINSTANCES
|
||||
# read process list into cache
|
||||
local PSLIST="$(ps ax -o pid,user=WIDE-COLUMN,command $COLSTRING)"
|
||||
local INOTIFY="$(find /proc/[0-9]*/fdinfo -type f 2>/dev/null | xargs grep ^inotify 2>/dev/null)"
|
||||
local INOTIFYCNT="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3 |uniq -c | sed -e 's/:.*//')"
|
||||
# unique instances per process is denoted by number of inotify FDs
|
||||
local INOTIFYINSTANCES="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3,5 | sed -e 's/:.*//'| uniq |awk '{print $1}' |uniq -c)"
|
||||
local INOTIFYUSERINSTANCES="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3,5 | sed -e 's/:.*//' | uniq |
|
||||
while read PID FD; do echo $PID $FD $(grep -e "^ *${PID} " <<< "$PSLIST"|awk '{print $2}'); done | cut -d" " -f 3 | sort | uniq -c |sort -nr)"
|
||||
set -e
|
||||
|
||||
cat <<< "$INOTIFYCNT" |
|
||||
{
|
||||
while read -rs CNT PROC; do # count watches of processes found
|
||||
echo "${PROC},${CNT},$(echo "$INOTIFYINSTANCES" | grep " ${PROC}$" |awk '{print $1}')"
|
||||
done
|
||||
} |
|
||||
grep -v ",0," | # remove entires without watches
|
||||
sort -n -t "," -k 2,3 -r | # sort to begin with highest numbers
|
||||
{ # group commands so that $TOT is visible in the printf
|
||||
IFS=","
|
||||
while read -rs PID CNT INSTANCES; do # show watches and corresponding process info
|
||||
printf "%$(( WLEN - 2 ))d %$(( WLEN - 2 ))d %s\n" "$CNT" "$INSTANCES" "$(grep -e "^ *${PID} " <<< "$PSLIST")"
|
||||
TOT=$(( TOT + CNT ))
|
||||
TOTINSTANCES=$(( TOTINSTANCES + INSTANCES))
|
||||
done
|
||||
# These stats should be per-user as well, since inotify limits are per-user..
|
||||
printf "\n%$(( WLEN - 2 ))d %s\n" "$TOT" "WATCHES TOTAL COUNT"
|
||||
# the total across different users is somewhat meaningless, not printing for now.
|
||||
# printf "\n%$(( WLEN - 2 ))d %s\n" "$TOTINSTANCES" "TOTAL INSTANCES COUNT"
|
||||
}
|
||||
echo ""
|
||||
echo "INotify instances per user (e.g. limits specified by fs.inotify.max_user_instances): "
|
||||
echo ""
|
||||
(
|
||||
echo "INSTANCES USER"
|
||||
echo "----------- ------------------"
|
||||
echo "$INOTIFYUSERINSTANCES"
|
||||
) | column -t
|
||||
echo ""
|
||||
exit 0
|
||||
}
|
||||
|
||||
# get terminal width
|
||||
declare -i COLS=$(tput cols 2>/dev/null || echo 80)
|
||||
declare -i WLEN=10
|
||||
declare COLSTRING="--columns $(( COLS - WLEN ))" # get terminal width
|
||||
|
||||
if [ "$1" = "--limits" -o "$1" = "-l" ]; then
|
||||
limits
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "--help" -o "$1" = "-h" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# added this line and moved some declarations to allow for the full display instead of a truncated version
|
||||
if [ "$1" = "--full" -o "$1" = "-f" ]; then
|
||||
unset COLSTRING
|
||||
main
|
||||
fi
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
printf "\nUnknown parameter '$1'\n" >&2
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
main
|
|
@ -0,0 +1,121 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
ssh_node() {
|
||||
node=$1
|
||||
if [ "$node" = "" ]; then
|
||||
node=$(kubectl get node -o name | sed 's/node\///' | tr '\n' ' ')
|
||||
node=${node::-1}
|
||||
|
||||
if [[ "$node" =~ " " ]]; then
|
||||
echo "Node name must be specified. Choose one of: [$node]"
|
||||
exit 1
|
||||
else
|
||||
echo "Single-node cluster detected. Defaulting to node $node"
|
||||
fi
|
||||
fi
|
||||
|
||||
pod=$(
|
||||
kubectl create -o name -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
generateName: ssh-node-
|
||||
labels:
|
||||
plugin: ssh-node
|
||||
spec:
|
||||
nodeName: $node
|
||||
containers:
|
||||
- name: ssh-node
|
||||
image: busybox
|
||||
imagePullPolicy: IfNotPresent
|
||||
command: ["chroot", "/host"]
|
||||
tty: true
|
||||
stdin: true
|
||||
stdinOnce: true
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- name: host
|
||||
mountPath: /host
|
||||
volumes:
|
||||
- name: host
|
||||
hostPath:
|
||||
path: /
|
||||
hostNetwork: true
|
||||
hostIPC: true
|
||||
hostPID: true
|
||||
restartPolicy: Never
|
||||
EOF
|
||||
)
|
||||
|
||||
deletePod() {
|
||||
kubectl delete $pod --wait=false
|
||||
}
|
||||
trap deletePod EXIT
|
||||
|
||||
echo "Created $pod"
|
||||
echo "Waiting for container to start..."
|
||||
kubectl wait --for=condition=Ready $pod >/dev/null
|
||||
kubectl attach -it $pod -c ssh-node
|
||||
|
||||
}
|
||||
|
||||
ssh_pod() {
|
||||
# TODO: improve this
|
||||
if [ "$1" == "" ]; then
|
||||
echo "Pod name must be specified."
|
||||
exit 1
|
||||
fi
|
||||
kubectl exec -it "$@" bash || (
|
||||
echo "Running bash in pod failed; trying with sh"
|
||||
kubectl exec -it "$@" sh
|
||||
)
|
||||
}
|
||||
|
||||
print_usage() {
|
||||
echo "Provider-agnostic way of opening a remote shell to a Kubernetes node."
|
||||
echo
|
||||
echo "Enables you to access a node even when it doesn't run an SSH server or"
|
||||
echo "when you don't have the required credentials. Also, the way you log in"
|
||||
echo "is always the same, regardless of what provides the Kubernetes cluster"
|
||||
echo "(e.g. Minikube, Kind, Docker Desktop, GKE, AKS, EKS, ...)"
|
||||
echo
|
||||
echo "You must have cluster-admin rights to use this plugin."
|
||||
echo
|
||||
echo "The primary focus of this plugin is to provide access to nodes, but it"
|
||||
echo "also provides a quick way of running a shell inside a pod."
|
||||
echo
|
||||
echo "Examples: "
|
||||
echo " # Open a shell to node of a single-node cluster (e.g. Docker Desktop)"
|
||||
echo " kubectl ssh node"
|
||||
echo
|
||||
echo " # Open a shell to node of a multi-node cluster (e.g. GKE)"
|
||||
echo " kubectl ssh node my-worker-node-1"
|
||||
echo
|
||||
echo " # Open a shell to a pod"
|
||||
echo " kubectl ssh pod my-pod"
|
||||
echo
|
||||
echo "Usage:"
|
||||
echo " kubectl ssh node [nodeName]"
|
||||
echo " kubectl ssh pod [podName] [-n namespace] [-c container]"
|
||||
exit 0
|
||||
}
|
||||
|
||||
if [ "$1" == "--help" ]; then
|
||||
print_usage
|
||||
fi
|
||||
|
||||
if [[ "$1" == node/* ]]; then
|
||||
ssh_node ${1:5}
|
||||
elif [ "$1" == "node" ]; then
|
||||
ssh_node $2
|
||||
elif [[ "$1" == pod/* ]]; then
|
||||
ssh_pod "$@"
|
||||
elif [ "$1" == "pod" ]; then
|
||||
shift
|
||||
ssh_pod "$@"
|
||||
else
|
||||
print_usage
|
||||
fi
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
first=$1
|
||||
shift
|
||||
|
||||
fly -c "fly.${first}.toml" $@
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Usage:
|
||||
# proton program.exe
|
||||
#
|
||||
# Example Env Vars:
|
||||
# PROTONPREFIX="$HOME/proton_316"
|
||||
# PROTONVERSION="Proton 3.16"
|
||||
|
||||
# Folder name of the Proton version found under "steamapps/common/".
|
||||
# proton_version="Proton - Experimental"
|
||||
proton_version="Proton 7.0"
|
||||
|
||||
# Path to installation directory of Steam.
|
||||
# Alternate path: "$HOME/.steam/steam"
|
||||
client_dir="$HOME/.steam/steam"
|
||||
|
||||
# Default data folder for Proton/WINE environment. Folder must exist.
|
||||
# If the environmental variable PROTONPREFIX is set, it will overwrite env_dir.
|
||||
mkdir -p "$HOME/.proton/$proton_version"
|
||||
env_dir="$HOME/.proton/$proton_version"
|
||||
WINEPREFIX=protontricks
|
||||
|
||||
# Proton modes to run
|
||||
# run = start target app
|
||||
# waitforexitandrun = wait for wineserver to shut down
|
||||
# getcompatpath = linux -> windows path
|
||||
# getnativepath = windows -> linux path
|
||||
mode=run
|
||||
|
||||
# ENVIRONMENTAL VARIABLES
|
||||
if [ -n "${PROTONPREFIX+1}" ]
|
||||
then
|
||||
env_dir=$PROTONPREFIX
|
||||
fi
|
||||
|
||||
if [ -n "${PROTONVERSION+1}" ]
|
||||
then
|
||||
proton_version=$PROTONVERSION
|
||||
fi
|
||||
|
||||
# EXECUTE
|
||||
export STEAM_COMPAT_CLIENT_INSTALL_PATH=$client_dir
|
||||
export STEAM_COMPAT_DATA_PATH=$env_dir
|
||||
"$client_dir/steamapps/common/$proton_version/proton" $mode $*
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
|
||||
echo "use tool ruplacer instead"
|
||||
|
||||
echo "eget your-tools/ruplacer"
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/zsh
|
||||
|
||||
ROOT_PREFIX="${REPO_ROOT_DIR:-$HOME/repo}"
|
||||
GIT_USER="${REPO_GIT_USER:-git}"
|
||||
|
||||
clean_path()
|
||||
{
|
||||
stripped=$1
|
||||
prefix="http://"
|
||||
stripped="${stripped#"$prefix"}"
|
||||
prefix="https://"
|
||||
stripped="${stripped#"$prefix"}"
|
||||
prefix="git@"
|
||||
stripped="${stripped#"$prefix"}"
|
||||
stripped=$(echo "$stripped" | sed -e "s/:/\//1")
|
||||
echo $stripped
|
||||
}
|
||||
|
||||
show_help()
|
||||
{
|
||||
printf "Usage: repo <get|goto> <repo>\n"
|
||||
}
|
||||
|
||||
do_get()
|
||||
{
|
||||
cleaned=$(clean_path $1)
|
||||
output_path="$ROOT_PREFIX/$cleaned"
|
||||
mkdir -p $output_path
|
||||
if [ ! -d $output_path/.git ]; then
|
||||
repourl=$(echo "$GIT_USER@$cleaned" | sed -e "s/\//:/1")
|
||||
git clone $repourl $output_path
|
||||
fi
|
||||
cd $output_path
|
||||
}
|
||||
|
||||
do_goto()
|
||||
{
|
||||
cleaned=$(clean_path $1)
|
||||
output_path="$ROOT_PREFIX/$cleaned"
|
||||
cd $output_path
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
'get' )
|
||||
do_get $2
|
||||
do_goto $2
|
||||
;;
|
||||
'go' | "goto")
|
||||
do_goto $2
|
||||
;;
|
||||
'help' | "-h"| "-help" | "--help")
|
||||
show_help
|
||||
esac
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
scrot --freeze '/home/a/shots/%F_%T_$wx$h.png' -s -e 'xclip -selection clipboard -t image/png -i $f'
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
#!/usr/local/bin/gentee
|
||||
|
||||
const : URL = "https://wttr.in/"
|
||||
const : URLV2 = "https://v2.wttr.in/"
|
||||
const : URLV3 = "https://v3.wttr.in/"
|
||||
const : MOONURL = "https://wttr.in/moon@"
|
||||
|
||||
func dirs() arr.str {
|
||||
arr.str res = {
|
||||
GetEnv("HOME")+"/.config/wttr/default-city.txt",
|
||||
GetEnv("HOME")+"/.wttr",
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func help() str {
|
||||
return Format(`
|
||||
Usage: wttr <region>
|
||||
-v2
|
||||
Use v2 (%s)
|
||||
-v3
|
||||
Use v3 (%s)
|
||||
-m
|
||||
display moon (%s)
|
||||
-c
|
||||
Use metric units
|
||||
-f
|
||||
Use imperial units
|
||||
-t -today
|
||||
Display today's weather
|
||||
`,
|
||||
URLV2,
|
||||
URLV3,
|
||||
MOONURL,
|
||||
)
|
||||
}
|
||||
|
||||
func request(str url) str {
|
||||
map empty
|
||||
map headers = {"User-Agent":"curl/7.87"}
|
||||
return HTTPRequest(url, "GET", empty, headers)
|
||||
}
|
||||
|
||||
run {
|
||||
if IsArg("h") || IsArg("help") {
|
||||
Println(help())
|
||||
return
|
||||
}
|
||||
str loc = Arg("")
|
||||
str url = URL
|
||||
for fl in dirs() {
|
||||
if ExistFile(fl): loc = TrimSpace(ReadFile(fl)); break;
|
||||
}
|
||||
if IsArg("v2"): url = URLV2
|
||||
if IsArg("v3"): url = URLV3
|
||||
if IsArg("m"): url = MOONURL
|
||||
switch Arg("")
|
||||
case "":
|
||||
default: loc = Arg("")
|
||||
switch loc
|
||||
case "": url = url + "?"
|
||||
default: url = url + loc +"?"
|
||||
if IsArg("c"): url = url + "&m"
|
||||
if IsArg("f"): url = url + "&u"
|
||||
if (IsArg("t")||IsArg("today")): url = url + "&1n"
|
||||
//Print(request(url))
|
||||
Run(`head`,"-n","-1", stdin: buf(request(url)))
|
||||
}
|
||||
|
Loading…
Reference in New Issue