i3-gaps, polybar
This commit is contained in:
3
bin/fan_auto
Executable file
3
bin/fan_auto
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
sudo echo level auto > /proc/acpi/ibm/fan
|
4
bin/fan_full
Executable file
4
bin/fan_full
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo level disengaged > /proc/acpi/ibm/fan
|
||||
|
287
bin/gitea
Executable file
287
bin/gitea
Executable file
@ -0,0 +1,287 @@
|
||||
#!/usr/bin/env bash
|
||||
# ---
|
||||
# This file is automatically generated from gitea.md - DO NOT EDIT
|
||||
# ---
|
||||
|
||||
# MIT License
|
||||
#
|
||||
# Copyright (c) 2017 PJ Eby
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
|
||||
# files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
|
||||
# modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
|
||||
# is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
#!/usr/bin/env bash
|
||||
|
||||
realpath.location(){ realpath.follow "$1"; realpath.absolute "$REPLY" ".."; }
|
||||
realpath.resolved(){ realpath.follow "$1"; realpath.absolute "$REPLY"; }
|
||||
realpath.dirname() { if [[ $1 =~ /+[^/]+/*$ ]]; then REPLY="${1%${BASH_REMATCH[0]}}"; REPLY=${REPLY:-/}; else REPLY=.; fi }
|
||||
realpath.basename(){ if [[ $1 =~ /*([^/]+)/*$ ]]; then REPLY="${BASH_REMATCH[1]}"; else REPLY=/; fi }
|
||||
|
||||
realpath.follow() {
|
||||
local target
|
||||
while [[ -L "$1" ]] && target=$(readlink -- "$1"); do
|
||||
realpath.dirname "$1"
|
||||
# Resolve relative to symlink's directory
|
||||
[[ $REPLY != . && $target != /* ]] && REPLY=$REPLY/$target || REPLY=$target
|
||||
# Break out if we found a symlink loop
|
||||
for target; do [[ $REPLY == "$target" ]] && break 2; done
|
||||
# Add to the loop-detect list and tail-recurse
|
||||
set -- "$REPLY" "$@"
|
||||
done
|
||||
REPLY="$1"
|
||||
}
|
||||
|
||||
realpath.absolute() {
|
||||
REPLY=$PWD; local eg=extglob; ! shopt -q $eg || eg=; ${eg:+shopt -s $eg}
|
||||
while (($#)); do case $1 in
|
||||
/*) REPLY=/; set -- "${1##+(/)}" "${@:2}" ;;
|
||||
*/*) set -- "${1%%/*}" "${1##${1%%/*}+(/)}" "${@:2}" ;;
|
||||
''|.) shift ;;
|
||||
..) realpath.dirname "$REPLY"; shift ;;
|
||||
*) REPLY="${REPLY%/}/$1"; shift ;;
|
||||
esac; done; ${eg:+shopt -u $eg}
|
||||
}
|
||||
|
||||
realpath.canonical() {
|
||||
realpath.follow "$1"; set -- "$REPLY" # $1 is now resolved
|
||||
realpath.basename "$1"; set -- "$1" "$REPLY" # $2 = basename $1
|
||||
realpath.dirname "$1"
|
||||
[[ $REPLY != "$1" ]] && realpath.canonical "$REPLY"; # recurse unless root
|
||||
realpath.absolute "$REPLY" "$2"; # combine canon parent w/basename
|
||||
}
|
||||
|
||||
realpath.relative() {
|
||||
local target=""
|
||||
realpath.absolute "$1"; set -- "$REPLY" "${@:2}"; realpath.absolute "${2-$PWD}" X
|
||||
while realpath.dirname "$REPLY"; [[ "$1" != "$REPLY" && "$1" == "${1#${REPLY%/}/}" ]]; do
|
||||
target=../$target
|
||||
done
|
||||
[[ $1 == "$REPLY" ]] && REPLY=${target%/} || REPLY="$target${1#${REPLY%/}/}"
|
||||
REPLY=${REPLY:-.}
|
||||
}
|
||||
# For documentation, see https://github.com/bashup/loco
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
fn_exists() { declare -F -- "$1"; } >/dev/null
|
||||
fn_copy() { REPLY="$(declare -f "$1")"; eval "$2 ${REPLY#$1}"; }
|
||||
findup() { walkup "${1:-$PWD}" reply_if_exists "${@:2}"; }
|
||||
|
||||
reply_if_exists() {
|
||||
local pat dir=$1 IFS= ; shift
|
||||
for pat; do
|
||||
for REPLY in ${dir%/}/$pat; do [[ -f "$REPLY" ]] && return 0; done
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
walkup() {
|
||||
realpath.absolute "$1"
|
||||
until set -- "$REPLY" "${@:2}"; "$2" "$1" "${@:3}"; do
|
||||
[[ "$1" != "/" ]] || return 1; realpath.dirname "$1"
|
||||
done
|
||||
}
|
||||
|
||||
_loco_usage() { loco_error "Usage: $LOCO_COMMAND command args..."; }
|
||||
_loco_error() { echo "$@" >&2; exit 64; }
|
||||
_loco_cmd() { REPLY="$LOCO_NAME.$1"; }
|
||||
_loco_exec() { loco_error "Unrecognized command: $1"; }
|
||||
_loco_exists() { type -t "$1"; } >/dev/null
|
||||
|
||||
_loco_do() {
|
||||
[[ "${1-}" ]] || loco_usage # No command given, exit w/usage
|
||||
REPLY=""; loco_cmd "$1"; local cmd="$REPLY"
|
||||
[[ "$cmd" ]] || loco_usage # Unrecognized command, exit w/usage
|
||||
|
||||
if loco_exists "$cmd"; then
|
||||
# Command, alias, function, or builtin exists
|
||||
shift; "$cmd" "$@"
|
||||
else
|
||||
# Invoke the default command interpreter
|
||||
loco_exec "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
_loco_findproject() {
|
||||
# shellcheck disable=SC2015 # plain var assign can't be false
|
||||
findup "$LOCO_PWD" "${LOCO_FILE[@]}" && LOCO_PROJECT=$REPLY ||
|
||||
loco_error "Can't find $LOCO_FILE here";
|
||||
}
|
||||
_loco_preconfig() { true; }
|
||||
_loco_postconfig() { true; }
|
||||
_loco_findroot() { realpath.dirname "$LOCO_PROJECT"; LOCO_ROOT=$REPLY; }
|
||||
_loco_loadproject() { cd "$LOCO_ROOT"; $LOCO_LOAD "$1"; }
|
||||
_loco_site_config() { source "$1"; }
|
||||
_loco_user_config() { source "$1"; }
|
||||
|
||||
|
||||
# Find our configuration, exposing relevant paths and defaults
|
||||
|
||||
# shellcheck disable=SC2034 # some vars are only used by extending scripts
|
||||
_loco_config() {
|
||||
LOCO_ARGS=("$@")
|
||||
loco_preconfig "$@"
|
||||
${LOCO_COMMAND:+:} realpath.basename "$LOCO_SCRIPT"; LOCO_COMMAND="${LOCO_COMMAND-$REPLY}"
|
||||
LOCO_NAME="${LOCO_NAME-${LOCO_COMMAND}}"
|
||||
LOCO_PWD="${LOCO_PWD-$PWD}"
|
||||
|
||||
LOCO_SITE_CONFIG="${LOCO_SITE_CONFIG-/etc/$LOCO_NAME/config}"
|
||||
[ -f "$LOCO_SITE_CONFIG" ] && loco_site_config "$LOCO_SITE_CONFIG"
|
||||
LOCO_RC="${LOCO_RC-.${LOCO_NAME}rc}"
|
||||
LOCO_USER_CONFIG="${LOCO_USER_CONFIG-$HOME/$LOCO_RC}"
|
||||
[ -f "$LOCO_USER_CONFIG" ] && loco_user_config "$LOCO_USER_CONFIG"
|
||||
|
||||
[[ ${LOCO_FILE-} ]] || LOCO_FILE=(".$LOCO_NAME")
|
||||
LOCO_LOAD="${LOCO_LOAD-source}"
|
||||
loco_postconfig "$@"
|
||||
}
|
||||
|
||||
_loco_main() {
|
||||
loco_config "$@"
|
||||
fn_exists "$LOCO_NAME" || eval "$LOCO_NAME() { loco_do \"\$@\"; }"
|
||||
${LOCO_PROJECT:+:} loco_findproject "$@"
|
||||
${LOCO_ROOT:+:} loco_findroot "$@"
|
||||
loco_loadproject "$LOCO_PROJECT"
|
||||
loco_do "$@"
|
||||
}
|
||||
|
||||
# Initialize default function implementations
|
||||
for f in $(compgen -A function _loco_); do
|
||||
fn_exists "${f#_}" || fn_copy "$f" "${f#_}"
|
||||
done
|
||||
|
||||
# Clear all LOCO_* variables before beginning
|
||||
for lv in ${!LOCO_@}; do unset "$lv"; done
|
||||
|
||||
LOCO_SCRIPT=$0
|
||||
GITEA_CREATE=()
|
||||
gitea.--with() {
|
||||
local GITEA_CREATE=(${GITEA_CREATE[@]+"${GITEA_CREATE[@]}"} "${@:1:2}")
|
||||
gitea "${@:3}"
|
||||
}
|
||||
gitea.--description() { gitea --with description "$1" "${@:2}"; }
|
||||
gitea.--desc() { gitea --description "$@"; }
|
||||
gitea.-d() { gitea --description "$@"; }
|
||||
gitea.--public() { gitea --with private= false "$@"; }
|
||||
gitea.-p() { gitea --public "$@"; }
|
||||
gitea.--private() { gitea --with private= true "$@"; }
|
||||
gitea.-P() { gitea --private "$@"; }
|
||||
gitea.--repo() {
|
||||
split_repo "$1"; local PROJECT_ORG="${REPLY[1]}" PROJECT_NAME="${REPLY[2]}"; gitea "${@:2}"
|
||||
}
|
||||
gitea.-r() { gitea --repo "$@"; }
|
||||
gitea.--tag() { local PROJECT_TAG="$1"; gitea "${@:2}" ; }
|
||||
gitea.-t() { gitea --tag "$@"; }
|
||||
gitea.exists() { split_repo "$1" && auth api 200 404 "repos/$REPLY" ; }
|
||||
gitea.delete() { split_repo "$1" && auth api 204 "" "/repos/$REPLY" -X DELETE; }
|
||||
gitea.deploy-key() {
|
||||
split_repo "$1"
|
||||
jmap title "$2" key "$3" read_only= "${4-true}" | json auth api 201 "" /repos/$REPLY/keys
|
||||
}
|
||||
gitea.new() {
|
||||
split_repo "$1"; local org="${REPLY[1]}" repo="${REPLY[2]}"
|
||||
if [[ $org == "$GITEA_USER" ]]; then org=user; else org="org/$org"; fi
|
||||
jmap name "$repo" ${GITEA_CREATE[@]+"${GITEA_CREATE[@]}"} "${@:2}" |
|
||||
json api "200|201" "" "$org/repos?token=$GITEA_API_TOKEN"
|
||||
[[ ! "${GITEA_DEPLOY_KEY-}" ]] ||
|
||||
gitea deploy-key "$1" "${GITEA_DEPLOY_KEY_TITLE:-default}" \
|
||||
"$GITEA_DEPLOY_KEY" "${GITEA_DEPLOY_READONLY:-true}"
|
||||
}
|
||||
gitea.vendor-merge() { :; }
|
||||
|
||||
branch-exists() { git rev-parse --verify "$1" &>/dev/null; }
|
||||
|
||||
gitea.vendor() {
|
||||
[[ ! -d .git ]] || loco_error ".git repo must not exist here";
|
||||
[[ -n "${PROJECT_ORG-}" ]] || PROJECT_ORG=$GITEA_USER
|
||||
[[ -n "${PROJECT_NAME-}" ]] || loco_error "PROJECT_NAME not set"
|
||||
|
||||
local GITEA_GIT_URL=${GITEA_GIT_URL-$GITEA_URL}
|
||||
[[ $GITEA_GIT_URL == *: ]] || GITEA_GIT_URL="${GITEA_GIT_URL%/}/";
|
||||
local GIT_REPO="$GITEA_GIT_URL$PROJECT_ORG/$PROJECT_NAME.git"
|
||||
|
||||
if gitea exists "$PROJECT_ORG/$PROJECT_NAME"; then
|
||||
[[ -n "${PROJECT_TAG-}" ]] || loco_error "PROJECT_TAG not set"
|
||||
local MESSAGE="Vendor update to $PROJECT_TAG"
|
||||
git clone --bare -b vendor "$GIT_REPO" .git ||
|
||||
git clone --bare "$GIT_REPO" .git # handle missing-branch case
|
||||
else
|
||||
local MESSAGE="Initial import"
|
||||
gitea new "$PROJECT_ORG/$PROJECT_NAME" "$@"
|
||||
git clone --bare "$GIT_REPO" .git
|
||||
fi
|
||||
|
||||
git config --local --bool core.bare false
|
||||
git config --local user.name "${GITEA_VENDOR_NAME:-Vendor}"
|
||||
git config --local user.email "${GITEA_VENDOR_EMAIL:-vendor@example.com}"
|
||||
|
||||
git add .; git commit -m "$MESSAGE" # commit to master or vendor
|
||||
branch-exists vendor || git checkout -b vendor # split off vendor branch if needed
|
||||
git push --all
|
||||
|
||||
[[ -z "${PROJECT_TAG-}" ]] || { git tag "vendor-$PROJECT_TAG"; git push --tags; }
|
||||
|
||||
git checkout master
|
||||
gitea vendor-merge
|
||||
}
|
||||
split_repo() {
|
||||
[[ "$1" == */* ]] || set -- "$GITEA_USER/$1";
|
||||
REPLY=("$1" "${1%/*}" "${1##*/}")
|
||||
}
|
||||
jmap() {
|
||||
local filter='{}' opts=(-n) arg=1
|
||||
while (($#)); do
|
||||
if [[ $1 == *= ]]; then
|
||||
filter+=" | .$1 $2"
|
||||
else
|
||||
filter+=" | .$1=\$__$arg"
|
||||
opts+=(--arg "__$arg" "$2")
|
||||
((arg++))
|
||||
fi
|
||||
shift 2
|
||||
done
|
||||
jq "${opts[@]}" "$filter"
|
||||
}
|
||||
json() { "$@" -X POST -H "Content-Type: application/json" -d @-; }
|
||||
auth() { "$@" -H "Authorization: token $GITEA_API_TOKEN"; }
|
||||
api() {
|
||||
if ! shopt -q extglob; then
|
||||
# extglob is needed for pattern matching
|
||||
local r=0; shopt -s extglob; api "$@" || r=$?; shopt -u extglob; return $r
|
||||
fi
|
||||
read-curl --silent --write-out '%{http_code}' --output /dev/null "${@:4}" "${GITEA_URL%/}/api/v1/${3#/}"
|
||||
local true="@($1)" false="@($2)"
|
||||
# shellcheck disable=2053 # glob matching is what we want!
|
||||
if [[ $REPLY == $true ]]; then return 0; elif [[ $2 && $REPLY == $false ]]; then return 1
|
||||
else case $REPLY in
|
||||
000) fail "Invalid server response: check GITEA_URL" 78 ;; # EX_PROTOCOL
|
||||
401) fail "Unauthorized: check GITEA_USER and GITEA_API_TOKEN" 77 ;; # EX_NOPERM
|
||||
404) fail "Server returned 404 Not Found" 69 ;; # EX_UNAVAILABLE
|
||||
*) fail "Failure: HTTP code $REPLY (expected $1${2:+ or $2})" 70 ;; # EX_SOFTWARE
|
||||
esac
|
||||
fi
|
||||
}
|
||||
read-curl() { REPLY=$(curl "$@"); }
|
||||
fail() { echo "$1" >&2; return "${2-64}"; }
|
||||
loco_preconfig() {
|
||||
LOCO_SCRIPT=$BASH_SOURCE
|
||||
LOCO_SITE_CONFIG=/etc/gitea-cli/gitearc
|
||||
LOCO_USER_CONFIG=$HOME/.config/gitearc
|
||||
LOCO_NAME=gitea
|
||||
LOCO_FILE=(.gitearc)
|
||||
PROJECT_NAME="${PROJECT_NAME-$(basename "$PWD")}"
|
||||
}
|
||||
loco_findproject() {
|
||||
findup "$LOCO_PWD" "${LOCO_FILE[@]}" && LOCO_PROJECT=$REPLY || LOCO_PROJECT=/dev/null
|
||||
}
|
||||
loco_findroot() { LOCO_ROOT=$LOCO_PWD; }
|
||||
if [[ $0 == "${BASH_SOURCE-}" ]]; then loco_main "$@"; fi
|
3
bin/i3lock.sh
Executable file
3
bin/i3lock.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
xset dpms force off && i3lock -d -i ~/Wallpapers/nebula_!.png
|
||||
|
4
bin/make_drone_secrets
Executable file
4
bin/make_drone_secrets
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
args=("$@")
|
||||
cat ${args[0]} |awk -F\= '{system(" drone secret add --repository='${args[1]}' --name="$1 " --data="$2)}'
|
8
bin/resolv.sh
Executable file
8
bin/resolv.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
cat > /etc/resolv.conf <<EOF
|
||||
# ParaConsul
|
||||
|
||||
nameserver 127.0.0.1
|
||||
|
||||
EOF
|
Reference in New Issue
Block a user