This commit is contained in:
The-Repo-Club 2022-10-07 11:25:26 +01:00
parent 94d646ce22
commit 93ed33f1b4
No known key found for this signature in database
GPG Key ID: E30EC2FBFB05C44F
25 changed files with 243 additions and 2684 deletions

View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019-2021 Dylan Araps
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.

View File

@ -197,7 +197,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Lighting\Keys\y=#ffffff
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Lighting\Keys\z=#ffffff
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Modified=fd44203a
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Modified=d20ed5f
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Name=Rainbow
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\0\Performance\DPI\0=@Point(400 400)
@ -425,7 +425,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Lighting\Keys\y=#ff0000
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Lighting\Keys\z=#ff0000
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Modified=ff29d844
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Modified=80f14940
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Name=Breathing
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\1\Performance\DPI\0=@Point(400 400)
@ -675,7 +675,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Lighting\Keys\y=#aa00ff
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Lighting\Keys\z=#aa00ff
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Modified=871229c3
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Modified=d32b1742
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Name=Trippy
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\2\Performance\DPI\0=@Point(400 400)
@ -733,7 +733,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\CurrentMode={51EB6E3A-27A0-4AD6-A35C-6B67E0329A3D}
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\HwModified=7ffd
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\ModeCount=3
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\Modified=9b78c45f
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\Modified=d432a6b9
0E029022AF4C18835CBDCC7EF5001BC3\%7B5B1E2E81-ED4F-4F79-9EB5-F8ACA67D1BF0%7D\Name=Multi
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Binding\KeyMap=K68 GB
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Binding\UseRealNames=true
@ -929,7 +929,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Keys\y=#ffffff
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Keys\z=#ffffff
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Modified=71c5d0ae
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Modified=63c03057
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Name=Rainbow
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Performance\DPI\0=@Point(400 400)
@ -1157,7 +1157,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Keys\y=#ff0000
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Keys\z=#ff0000
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Modified=7bc31922
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Modified=ab8dbc14
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Name=Breathing
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Performance\DPI\0=@Point(400 400)
@ -1407,7 +1407,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\Keys\y=#aa00ff
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\Keys\z=#aa00ff
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\UseRealNames=true
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Modified=5cf781a5
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Modified=5122903c
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Name=Trippy
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Performance\AngleSnap=false
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Performance\DPI\0=@Point(400 400)
@ -1465,7 +1465,7 @@
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\CurrentMode={11C11AE3-3195-4DFC-B8AC-2FEA703414E5}
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\HwModified=40b6f054
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\ModeCount=3
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Modified=c1f1d839
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Modified=8b25e8b6
0E029022AF4C18835CBDCC7EF5001BC3\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Name=Demo
[Popups]

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,96 +0,0 @@
#!/bin/sh -ef
# Enter a kiss chroot
log() {
printf '\033[32m->\033[m %s.\n' "$*"
}
die() {
log "$*" >&2
exit 1
}
run() {
printf '%s\n' "$*"
"$@" || return "${_ret:=0}"
}
clean() {
log Unmounting host filesystems; {
run umount "$1/dev/shm"
run umount "$1/dev/pts"
run umount "$1/dev"
run umount "$1/proc"
run umount "$1/run"
run umount "$1/sys/firmware/efi/efivars" 2>/dev/null
run umount "$1/sys"
run umount "$1/tmp"
}
log Cleaning leftover host files; {
run rm -f "$1/etc/resolv.conf"
}
}
mounted() {
# This is a pure shell mountpoint implementation. We're dealing
# with basic (and fixed/known) input so this doesn't need to
# handle more complex cases.
[ -e "$1" ] || return 1
[ -e /proc/mounts ] || return 1
while read -r _ target _; do
[ "$target" = "$1" ] && return 0
done < /proc/mounts
return 1
}
mmount() {
dest=$1
shift
mounted "$dest" || run mount "$@" "$dest"
}
main() {
# Ensure input does not end in '/'.
set -- "${1%"${1##*[!/]}"}"
[ "$1" ] || die Need a path to the chroot
[ -d "$1" ] || die Given path does not exist
[ "$(id -u)" = 0 ] || die Script needs to be run as root
trap 'clean "${1%"${1##*[!/]}"}"' EXIT INT
log Mounting host filesystems; {
mmount "$1/dev" -o bind /dev
mmount "$1/dev/pts" -o bind /dev/pts
mmount "$1/dev/shm" -t tmpfs shmfs
mmount "$1/proc" -t proc proc
mmount "$1/run" -t tmpfs tmpfs
mmount "$1/sys" -t sysfs sys
mmount "$1/sys/firmware/efi/efivars" -t efivarfs efivarfs 2>/dev/null
mmount "$1/tmp" -o mode=1777,nosuid,nodev -t tmpfs tmpfs
}
log Copying /etc/resolv.conf from host; {
run cp -f /etc/resolv.conf "$1/etc"
}
log Entering chroot; {
_ret=1
run chroot "$1" /usr/bin/env -i \
HOME=/root \
TERM="$TERM" \
SHELL=/bin/sh \
USER=root \
LOGNAME=root \
CFLAGS="${CFLAGS:--march=x86-64 -mtune=generic -pipe -O2}" \
CXXFLAGS="${CXXFLAGS:--march=x86-64 -mtune=generic -pipe -O2}" \
MAKEFLAGS="${MAKEFLAGS:--j$(nproc 2>/dev/null || echo 1)}" \
/bin/sh -l
}
}
main "$1"

View File

@ -1,13 +0,0 @@
#!/bin/sh -ef
# Display a package's dependencies
pkg=${1:-"${PWD##*/}"}
kiss list "$pkg" >/dev/null || {
printf 'usage: kiss-depends [pkg]\n' >&2
exit 1
}
while read -r dep mak || [ "$dep" ]; do
printf '%s%s\n' "$dep" "${mak:+ "$mak"}"
done 2>/dev/null < "$KISS_ROOT/var/db/kiss/installed/$pkg/depends"

View File

@ -1,33 +0,0 @@
#!/bin/sh -ef
# Turn an installed package into a KISS tarball
db=$KISS_ROOT/var/db/kiss/installed
pkg=${1:-"${PWD##*/}"}
kiss list "$pkg" >/dev/null || {
printf 'usage: kiss-export [pkg]\n'
exit 1
}
read -r ver rel 2>/dev/null < "$db/$1/version"
set --
while read -r file; do
[ -d "$KISS_ROOT/$file" ] || set -- "$@" ".$file"
done < "$db/$pkg/manifest"
cd "$KISS_ROOT/"
dest="$OLDPWD/$pkg@$ver-$rel.tar.${KISS_COMPRESS:-gz}"
tar cf - "$@" | case ${KISS_COMPRESS:-gz} in
bz2) bzip2 -z ;;
gz) gzip -6 ;;
lzma) lzma -z ;;
lz) lzip -z ;;
xz) xz -zT 0 ;;
zst) zstd -z ;;
esac > "$dest"
printf 'created %s\n' "$dest"

View File

@ -1,30 +0,0 @@
#!/bin/sh -ef
# Copy a package's repository files into the current directory
pkg=${1:-"${PWD##*/}"}
num=$(printf %d "${2:-0}")
dir=$(kiss search "$pkg" 2>/dev/null) || {
printf 'usage: [kiss-fork [pkg]] [index]\n'
exit 1
}
# Globbing is disabled and word splitting is intentional.
# shellcheck disable=2086
set -- $dir
[ "$num" -ge "$#" ] && {
printf 'index exceeds maximum\n'
exit 1
}
shift "$num"
[ "$1" ] || [ -d "$1" ] || {
printf 'failed to locate package\n'
exit 1
}
printf 'found package in %s\n' "$1"
cp -Lrf "$1" .
printf 'forked package to %s\n' "$PWD/$pkg"

View File

@ -1,28 +0,0 @@
#!/bin/sh -ef
# Read KISS documentation
cd "$KISS_ROOT/usr/share/doc/kiss" 2>/dev/null || {
printf 'Documentation is missing from /usr/share/doc/kiss\n'
exit 1
}
! [ -f "${1:-.}/index.txt" ] || file=./${1:-.}/index.txt
! [ -f "${1:-.}.txt" ] || file=./${1:-.}.txt
! [ -f "${1:-:}" ] || file=./${1:-.}
# Fallback to search (allows 'kiss help firefox' to work).
# False positive, intended behavior.
# shellcheck disable=2046
[ "$file" ] || {
set -f
set +f -- $(find . -name "${1##*/}.txt")
file=$1
}
: "${file:=404.txt}"
cat <<EOF - "$file" | "${PAGER:-less}"
Reading $PWD/${file#./}
________________________________________________________________________________
EOF

View File

@ -1,46 +0,0 @@
#!/bin/sh -ef
# Link a repository file to another repository
[ "$1" ] || {
printf 'usage: kiss-link file\n'
exit 1
}
[ -f "${file:=$1}" ] || {
printf 'file %s does not exist in the current directory\n' "$1"
exit 1
}
oPWD=$PWD
# Check if the package exists in a repository and error out here
# if it does not. The error message from the package manager will
# be displayed.
kiss search "${PWD##*/}" >/dev/null
# Disable this warning as globbing is disabled and word splitting
# is intentional. This grabs the location of the package's files.
# shellcheck disable=2046
{
# Generate a list of repositories in which the package
# exists. Then 'cd' to the first found directory to do a
# comparison.
set -- $(kiss search "${PWD##*/}"); cd "$1"
# Error if the package exists nowhere but the current
# directory and this script would create a broken symlink.
[ -z "$2" ] && [ "$PWD" = "$oPWD" ] && {
printf 'error: cannot symlink file to itself\n'
exit 1
}
# If the first repository in '$KISS_PATH' is the current
# directory, use the second repository in the list.
[ "$PWD" = "$oPWD" ] && shift
# Finally, make the link to the file in whatever repository
# it was found in.
ln -sf "$1/$file" "$oPWD/$file"
}
printf 'linked %s to %s\n' "$file" "$1"

View File

@ -1,18 +0,0 @@
#!/bin/sh -ef
# Find the maintainer of a package
# Use the current directory as the package name if no package is given.
[ "$1" ] || {
export KISS_PATH=${PWD%/*}:$KISS_PATH
set -- "${PWD##*/}"
}
kiss search "$@" | uniq -u | while read -r repo; do cd "$repo"
m=$(git log -1 version 2>/dev/null) ||:
m=${m##*Author: }
m=${m%%>*}
[ "$m" ] || continue
printf '=> %s\n%s>\n' "$PWD" "$m"
done

View File

@ -1,11 +0,0 @@
#!/bin/sh -ef
# Display all files owned by a package
pkg=${1:-"${PWD##*/}"}
kiss list "$pkg" >/dev/null || {
printf 'usage: kiss-manifest [pkg]\n' >&2
exit 1
}
cat "$KISS_ROOT/var/db/kiss/installed/$pkg/manifest" 2>/dev/null

View File

@ -1,31 +0,0 @@
#!/bin/sh -ef
# Create a boilerplate package
die() {
printf '%s\n' "$*"
exit 1
}
log() {
printf '=> %s.\n' "$1"
}
[ "$1" ] || die "usage: kiss-new [name] [version] [source]"
[ -d "$1" ] && die "error: Package $1 already exists"
mkdir -p "$1" || die "error: Couldn't create directory in $PWD"
cd "$1" || die "error: Couldn't enter directory $1/"
log "Creating build file"; {
printf '#!/bin/sh -e\n' > build
chmod +x build
}
log "Creating version file with '${2%% *} 1'"; {
printf '%s\n' "${2%% *} 1" > version
}
log "Creating sources file with '$3'"; {
printf '%s\n' "$3" > sources
}
log "Package $1 created in $PWD"

View File

@ -1,16 +0,0 @@
#!/bin/sh -ef
# List orphaned packages
cd "$KISS_ROOT/var/db/kiss/installed/"
for pkg in *; do
case $pkg in
# Exemptions for orphans which aren't really
# orphans. Exclude them from the list.
baseinit|baselayout|gcc|e2fsprogs|musl|\
make|busybox|bzip2|grub|kiss|git)
continue
esac
grep -q "^$pkg$" ./*/depends || printf '%s\n' "$pkg"
done

View File

@ -1,289 +0,0 @@
#!/bin/sh -ef
# Check repository for outdated packages
repology_version() {
# Grab the package's version as known by repology.org by downloading the
# svg latest-version badge and extracting the version from the xml.
repology_name "$1"
r=$(curl -Ss "https://repology.org/badge/latest-versions/$remote.svg") && {
remote_ver=${r%</text>*}
remote_ver=${remote_ver##*>}
}
}
repology_name() {
# Fix any known naming inconsistences between packages and Repology.
remote=$(
# Strip unrelated suffixes.
remote=${1%%-bin}
remote=${remote%%-git}
printf %s "$remote" |
# Remote names are all lowercase.
tr '[:upper:]' '[:lower:]' |
# Remote always uses -.
tr _ -
)
case $remote in
baseinit|baselayout|kiss)
remote=-
;;
clang)
remote=llvm
;;
dash)
remote=dash-shell
;;
dejavu-ttf)
remote=fonts:dejavu
;;
dsp)
remote=dsp-audio-processing
;;
emacs-nox)
# TODO [community]: Make default emacs no x11?
remote=emacs
;;
fd)
remote=fd-find
;;
fetsh)
# TODO [community]: Rename package?
remote=fet.sh
;;
firefox-esr)
remote=firefox
;;
font-awesome-ttf)
remote=fonts:fontawesome
;;
gc)
remote=boehm-gc
;;
gnugrep)
# shell-check is dumb here so this must be quoted.
remote='grep'
;;
gnupg[12])
# Reported to repology.org.
# https://github.com/repology/repology-rules/issues/285
remote=gnupg
;;
gtk+3)
remote=gtk3+classic
;;
gst-*)
remote=gstreamer:${remote##*-}
;;
gtar)
remote=tar
;;
eiwd)
remote=iwd
;;
hack)
# It might be nice to adopt Repology's naming scheme for
# fonts as it also makes them self-documenting and easy
# to search for ('kiss s font:\*).
remote=fonts:hack
;;
harfbuzz-icu)
# TODO: Report to repology.org?
# Package split.
remote=harfbuzz
;;
libelf)
remote=elfutils
;;
liberation-fonts)
remote=fonts:liberation
;;
libmupdf | libxaw3d)
# TODO [community]: Rename packages?
remote=${remote##lib}
;;
links2)
# TODO [community]: Rename package?
remote=links
;;
linux-headers)
remote=linux
;;
lux)
remote=lux-brightness-ventto
;;
man-pages)
# TODO: Report to repology.org.
# man-pages -> manpages
# man-pages-posix -> man-pages-posix
remote=manpages
;;
netsurf-fb)
remote=netsurf
;;
openjpeg2)
# TODO [community]: Rename package?
remote=openjpeg
;;
osh)
remote=oil-shell
;;
pinentry-dmenu)
remote=pinentry-dmenu-cemkeylan
;;
pyqt5)
# TODO [community]: Rename package?
remote=python-qt
;;
python2)
remote=python
;;
qt5*)
remote=qt
;;
rage)
remote=rage-encryption-tool
;;
sane)
remote=sane-backends
;;
spleen-font)
remote=fonts:spleen
;;
sshfs)
remote=fusefs:sshfs
;;
surf)
remote=surf-browser
;;
st)
remote=st-term
;;
terminus-font)
remote=fonts:terminus
;;
tiv)
remote=tiv-unclassified
;;
unifont)
remote=fonts:unifont
;;
webkit2gtk)
# TODO [community]: Rename package?
remote=webkitgtk
;;
xf86-*)
remote=xdrv:${remote##*-}
;;
xmlsec1)
# TODO [community]: Rename package?
remote=xmlsec
;;
esac
}
main() {
printf '\n[Checking Repology for outdated packages in %s]\n\n' "${1%%/}" >&2
for pkg in */; do
pkg=${pkg%%/}
read -r ver _ 2>/dev/null < "$pkg/version" || {
printf '%-30s local version not found\n' "$pkg" >&2
continue
}
[ "$ver" = git ] &&
continue
repology_version "$pkg" || {
printf '%-30s network error\n' "$pkg" >&2
continue
}
case $remote_ver in
*", $ver"* | *"$ver,"* | "$ver")
# Package up-to-date, do nothing.
;;
'' | ' ')
printf '\n%s: empty response\n' "$pkg" >&2
printf 'possible causes:\n' >&2
printf ' package name differs from repology name,\n' >&2
printf ' package not tracked by repology,\n' >&2
printf ' network error\n\n' >&2
;;
'-')
# No version scheme, do nothing.
;;
*)
printf '%-30s %s -> %s\n' "$pkg" "$ver" "$remote_ver"
;;
esac
done
}
for repo do
[ "$repo" ] || {
printf 'usage: kiss outdated /path/to/repo\n' >&2
exit 1
}
cd "$repo" 2>/dev/null || {
printf 'repository %s is inaccessible\n' "$repo" >&2
exit 1
}
main "$repo"
cd "$OLDPWD" || exit 1
done

View File

@ -1,35 +0,0 @@
#!/bin/sh -ef
# Check which package owns a file
# Follow symlinks to any paths.
case $1 in
/*)
cd -P "$KISS_ROOT${1%/*}"
;;
*/*)
cd -P "${1%/*}"
;;
*)
cd -P .
;;
esac
[ -f "$PWD/${1##*/}" ] || {
printf 'usage: kiss-owns [/path/to/file]\n' >&2
exit 1
}
# Print the full path to the manifest file which contains
# the match to our search.
pkg_owns=$(grep -lFx \
"$PWD/${1##*/}" \
"$KISS_ROOT/var/db/kiss/installed/"*/manifest)
# Extract the package name from the path above.
pkg_owns=${pkg_owns%/*}
pkg_owns=${pkg_owns##*/}
printf '%s\n' "$pkg_owns"

View File

@ -1,12 +0,0 @@
#!/bin/sh -ef
# Lists the owners of all files with conflicts
kiss a | while read -r _ path; do
if owner=$(kiss owns "$path" 2>/dev/null) && [ "$owner" ]; then
printf '%s %s\n' "$owner" "$path"
else
printf 'warning: %s has no owner\n' "$path" >&2
fi
done

View File

@ -1,20 +0,0 @@
#!/bin/sh -ef
# List packages which aren't present in any repository.
cd "$KISS_ROOT/var/db/kiss/installed"
kiss s ./* | while IFS=/ read -r _ path; do
pkg=${path##*/}
case $seen in *" $pkg "*)
continue
esac
case $path in "$PWD/$pkg")
printf '%s\n' "$pkg"
esac
seen="$seen $pkg "
done

View File

@ -1,8 +0,0 @@
#!/bin/sh -ef
# Display packages which depend on package
[ "$1" ] || set -- "${PWD##*/}"
cd "$KISS_ROOT/var/db/kiss/installed"
grep "^$1" -- */depends

View File

@ -1,47 +0,0 @@
#!/bin/sh -ef
# Show the size on disk for a package
get_size() {
# Naive function to convert bytes to human readable
# sizes (MB, KB, etc). This is probably wrong in places
# though we can fix this over time. It's a start.
case ${#1} in
[0-3]) hum=$(($1))KB ;;
[4-6]) hum=$(($1 / 1024))MB ;;
[7-9]) hum=$(($1 / 1024 / 1024))GB ;;
*) hum=$(($1)) ;;
esac
printf '%s\t%s\n' "$hum" "$2"
}
# Use the current directory as the package name if no package is given.
[ "$1" ] || set -- "${PWD##*/}"
# Ignore shellcheck as we want the warning's behavior.
# shellcheck disable=2015
kiss list "${1:-null}" >/dev/null || {
printf 'usage: kiss-size [pkg]\n'
exit 1
}
# Filter directories from manifest and leave only files.
# Directories in the manifest end in a trailing '/'.
files=$(sed -e "s|^|$KISS_ROOT|" -e 's|.*/$||' \
"$KISS_ROOT/var/db/kiss/installed/$1/manifest")
# Send the file list to 'du'.
# This unquoted variable is safe as word splitting is intended
# and globbing is globally disabled in this script.
# shellcheck disable=2086
du -sk -- $files 2>/dev/null |
# Iterate over each line and convert the byte output to human
# readable (MB, KB, GB, etc).
while read -r size file || {
get_size "$tot" total >&2
break
} do
get_size "$size" "$file"
tot=$((tot + size))
done

View File

@ -28,6 +28,7 @@ gnome-icon-theme-symbolic
gotop
humanity-icon-theme
husky-hooks
husky-packagemanager
i3-cheat
i3-gaps
i3-session
@ -116,4 +117,3 @@ yaru-session
yaru-sound-theme
yaru-unity-theme
yaru-xfwm4-theme
yay

View File

@ -0,0 +1,220 @@
#!/usr/bin/env python
# Copyright 2022 The-Repo-Club <wayne6324@gmail.com>
# 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.
from libqtile import bar, layout, widget
from libqtile.config import Click, Drag, Group, Key, Match, Screen
from libqtile.lazy import lazy
from libqtile.utils import guess_terminal
mod = "mod4"
terminal = guess_terminal()
keys = [
# A list of available commands that can be bound to keys can be found
# at https://docs.qtile.org/en/latest/manual/config/lazy.html
# Switch between windows
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
Key([mod], "l", lazy.layout.right(), desc="Move focus to right"),
Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
Key([mod],
"space",
lazy.layout.next(),
desc="Move window focus to other window"),
# Move windows between left/right columns or move up/down in current stack.
# Moving out of range in Columns layout will create new column.
Key([mod, "shift"],
"h",
lazy.layout.shuffle_left(),
desc="Move window to the left"),
Key([mod, "shift"],
"l",
lazy.layout.shuffle_right(),
desc="Move window to the right"),
Key([mod, "shift"],
"j",
lazy.layout.shuffle_down(),
desc="Move window down"),
Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"),
# Grow windows. If current window is on the edge of screen and direction
# will be to screen edge - window would shrink.
Key([mod, "control"],
"h",
lazy.layout.grow_left(),
desc="Grow window to the left"),
Key([mod, "control"],
"l",
lazy.layout.grow_right(),
desc="Grow window to the right"),
Key([mod, "control"],
"j",
lazy.layout.grow_down(),
desc="Grow window down"),
Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"),
Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"),
# Toggle between split and unsplit sides of stack.
# Split = all windows displayed
# Unsplit = 1 window displayed, like Max layout, but still with
# multiple stack panes
Key(
[mod, "shift"],
"Return",
lazy.layout.toggle_split(),
desc="Toggle between split and unsplit sides of stack",
),
Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"),
# Toggle between different layouts as defined below
Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"),
Key([mod], "w", lazy.window.kill(), desc="Kill focused window"),
Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"),
Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
Key([mod],
"r",
lazy.spawncmd(),
desc="Spawn a command using a prompt widget"),
]
groups = [Group(i) for i in "123456789"]
for i in groups:
keys.extend([
# mod1 + letter of group = switch to group
Key(
[mod],
i.name,
lazy.group[i.name].toscreen(),
desc="Switch to group {}".format(i.name),
),
# mod1 + shift + letter of group = switch to & move focused window to group
Key(
[mod, "shift"],
i.name,
lazy.window.togroup(i.name, switch_group=True),
desc="Switch to & move focused window to group {}".format(i.name),
),
# Or, use below if you prefer not to switch to that group.
# # mod1 + shift + letter of group = move focused window to group
# Key([mod, "shift"], i.name, lazy.window.togroup(i.name),
# desc="move focused window to group {}".format(i.name)),
])
layouts = [
layout.Columns(border_focus_stack=["#d75f5f", "#8f3d3d"], border_width=4),
layout.Max(),
# Try more layouts by unleashing below layouts.
# layout.Stack(num_stacks=2),
# layout.Bsp(),
# layout.Matrix(),
# layout.MonadTall(),
# layout.MonadWide(),
# layout.RatioTile(),
# layout.Tile(),
# layout.TreeTab(),
# layout.VerticalTile(),
# layout.Zoomy(),
]
widget_defaults = dict(
font="sans",
fontsize=12,
padding=3,
)
extension_defaults = widget_defaults.copy()
screens = [
Screen(
bottom=bar.Bar(
[
widget.CurrentLayout(),
widget.GroupBox(),
widget.Prompt(),
widget.WindowName(),
widget.Chord(
chords_colors={
"launch": ("#ff0000", "#ffffff"),
},
name_transform=lambda name: name.upper(),
),
widget.TextBox("default config", name="default"),
widget.TextBox("Press &lt;M-r&gt; to spawn",
foreground="#d75f5f"),
# NB Systray is incompatible with Wayland, consider using StatusNotifier instead
# widget.StatusNotifier(),
widget.Systray(),
widget.Clock(format="%Y-%m-%d %a %I:%M %p"),
widget.QuickExit(),
],
24,
# border_width=[2, 0, 2, 0], # Draw top and bottom borders
# border_color=["ff00ff", "000000", "ff00ff", "000000"] # Borders are magenta
), ),
]
# Drag floating layouts.
mouse = [
Drag([mod],
"Button1",
lazy.window.set_position_floating(),
start=lazy.window.get_position()),
Drag([mod],
"Button3",
lazy.window.set_size_floating(),
start=lazy.window.get_size()),
Click([mod], "Button2", lazy.window.bring_to_front()),
]
dgroups_key_binder = None
dgroups_app_rules = [] # type: list
follow_mouse_focus = True
bring_front_click = False
cursor_warp = False
floating_layout = layout.Floating(float_rules=[
# Run the utility of `xprop` to see the wm class and name of an X client.
*layout.Floating.default_float_rules,
Match(wm_class="confirmreset"), # gitk
Match(wm_class="makebranch"), # gitk
Match(wm_class="maketag"), # gitk
Match(wm_class="ssh-askpass"), # ssh-askpass
Match(title="branchdialog"), # gitk
Match(title="pinentry"), # GPG key password entry
])
auto_fullscreen = True
focus_on_window_activation = "smart"
reconfigure_screens = True
# If things like steam games want to auto-minimize themselves when losing
# focus, should we respect this or not?
auto_minimize = True
# When using the Wayland backend, this can be used to configure input devices.
wl_input_rules = None
# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this
# string besides java UI toolkits; you can see several discussions on the
# mailing lists, GitHub issues, and other WM documentation that suggest setting
# this string if your java app doesn't work correctly. We may as well just lie
# and say that we're a working one by default.
#
# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in
# java that happens to be on java's whitelist.
wmname = "LG3D"

View File

@ -1 +1 @@
{"first-time": false, "version": "2.2.2-0extras19.04.1", "is_working": false, "autostart": true, "on_mouse_plugged": true, "on_start": -1, "on_end": 1, "disable_on_typing": true, "interval": 800.0, "start_hidden": false, "show_notifications": true, "theme": "light", "touchpad_enabled": false, "natural_scrolling": true, "speed": 0.0, "tapping": true, "two_finger_scrolling": true, "edge_scrolling": false, "cicular_scrolling": true, "right-top-corner": 0, "right-bottom-corner": 0, "left-top-corner": 0, "left-bottom-corner": 0, "one-finger-tap": 0, "two-finger-tap": 0, "three-finger-tap": 0, "faulty-devices": ["3/46d/c08b/111", "18/4f3/3140/100", "11/2/5/7326", "11/2/1/0", "3/1b1c/1b4f/324", "11/2/6/0", "11/2/a/0"]}
{"first-time": false, "version": "2.2.2-0extras19.04.1", "is_working": false, "autostart": true, "on_mouse_plugged": true, "on_start": -1, "on_end": 1, "disable_on_typing": true, "interval": 800.0, "start_hidden": false, "show_notifications": true, "theme": "light", "touchpad_enabled": false, "natural_scrolling": true, "speed": 0.0, "tapping": true, "two_finger_scrolling": true, "edge_scrolling": false, "cicular_scrolling": true, "right-top-corner": 0, "right-bottom-corner": 0, "left-top-corner": 0, "left-bottom-corner": 0, "one-finger-tap": 0, "two-finger-tap": 0, "three-finger-tap": 0, "faulty-devices": ["11/2/6/0", "11/2/5/7326", "18/4f3/3140/100", "11/2/1/0", "11/2/a/0", "3/1b1c/1b4f/324", "3/30fa/301/111", "3/46d/c08b/111"]}

View File

@ -9,6 +9,19 @@ if [ -f "$xprofile" ]; then
source "$xprofile"
fi
if [ -d "/usr/bin/husky" ]; then
export HUSKY_PATH=""
HUSKY_PATH="$HOME/.local/share/husky-repo/core"
HUSKY_PATH="$HOME/.local/share/husky-repo/extra:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/xorg:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/wayland:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/community:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/games:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/bin:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/git:$HUSKY_PATH"
HUSKY_PATH="$HOME/.local/share/husky-repo/testing:$HUSKY_PATH"
fi
# enable XDG_CONFIG_HOME
if [[ -z "$XDG_CONFIG_HOME" ]]; then
export XDG_CONFIG_HOME="$HOME/.config/"