Initial import
This commit is contained in:
commit
3779fdce2c
113
COPYING
Normal file
113
COPYING
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator and
|
||||||
|
subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||||
|
purpose of contributing to a commons of creative, cultural and scientific
|
||||||
|
works ("Commons") that the public can reliably and without fear of later
|
||||||
|
claims of infringement build upon, modify, incorporate in other works, reuse
|
||||||
|
and redistribute as freely as possible in any form whatsoever and for any
|
||||||
|
purposes, including without limitation commercial purposes. These owners may
|
||||||
|
contribute to the Commons to promote the ideal of a free culture and the
|
||||||
|
further production of creative, cultural and scientific works, or to gain
|
||||||
|
reputation or greater distribution for their Work in part through the use and
|
||||||
|
efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any expectation
|
||||||
|
of additional consideration or compensation, the person associating CC0 with a
|
||||||
|
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||||
|
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||||
|
and publicly distribute the Work under its terms, with knowledge of his or her
|
||||||
|
Copyright and Related Rights in the Work and the meaning and intended legal
|
||||||
|
effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not limited
|
||||||
|
to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||||
|
and translate a Work;
|
||||||
|
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||||
|
depicted in a Work;
|
||||||
|
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data in
|
||||||
|
a Work;
|
||||||
|
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation thereof,
|
||||||
|
including any amended or successor version of such directive); and
|
||||||
|
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the world
|
||||||
|
based on applicable law or treaty, and any national implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||||
|
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||||
|
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||||
|
and Related Rights and associated claims and causes of action, whether now
|
||||||
|
known or unknown (including existing as well as future claims and causes of
|
||||||
|
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||||
|
duration provided by applicable law or treaty (including future time
|
||||||
|
extensions), (iii) in any current or future medium and for any number of
|
||||||
|
copies, and (iv) for any purpose whatsoever, including without limitation
|
||||||
|
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
|
||||||
|
the Waiver for the benefit of each member of the public at large and to the
|
||||||
|
detriment of Affirmer's heirs and successors, fully intending that such Waiver
|
||||||
|
shall not be subject to revocation, rescission, cancellation, termination, or
|
||||||
|
any other legal or equitable action to disrupt the quiet enjoyment of the Work
|
||||||
|
by the public as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||||
|
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||||
|
shall be preserved to the maximum extent permitted taking into account
|
||||||
|
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
|
||||||
|
is so judged Affirmer hereby grants to each affected person a royalty-free,
|
||||||
|
non transferable, non sublicensable, non exclusive, irrevocable and
|
||||||
|
unconditional license to exercise Affirmer's Copyright and Related Rights in
|
||||||
|
the Work (i) in all territories worldwide, (ii) for the maximum duration
|
||||||
|
provided by applicable law or treaty (including future time extensions), (iii)
|
||||||
|
in any current or future medium and for any number of copies, and (iv) for any
|
||||||
|
purpose whatsoever, including without limitation commercial, advertising or
|
||||||
|
promotional purposes (the "License"). The License shall be deemed effective as
|
||||||
|
of the date CC0 was applied by Affirmer to the Work. Should any part of the
|
||||||
|
License for any reason be judged legally invalid or ineffective under
|
||||||
|
applicable law, such partial invalidity or ineffectiveness shall not
|
||||||
|
invalidate the remainder of the License, and in such case Affirmer hereby
|
||||||
|
affirms that he or she will not (i) exercise any of his or her remaining
|
||||||
|
Copyright and Related Rights in the Work or (ii) assert any associated claims
|
||||||
|
and causes of action with respect to the Work, in either case contrary to
|
||||||
|
Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||||
|
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||||
|
including without limitation warranties of title, merchantability, fitness
|
||||||
|
for a particular purpose, non infringement, or the absence of latent or
|
||||||
|
other defects, accuracy, or the present or absence of errors, whether or not
|
||||||
|
discoverable, all to the greatest extent permissible under applicable law.
|
||||||
|
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without limitation
|
||||||
|
any person's Copyright and Related Rights in the Work. Further, Affirmer
|
||||||
|
disclaims responsibility for obtaining any necessary consents, permissions
|
||||||
|
or other rights required for any use of the Work.
|
||||||
|
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to this
|
||||||
|
CC0 or use of the Work.
|
66
Makefile
Normal file
66
Makefile
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
PREFIX= $(HOME)
|
||||||
|
|
||||||
|
DIRS= bin dotfiles spoon themes utils xdg-config-dir
|
||||||
|
|
||||||
|
all: install
|
||||||
|
|
||||||
|
clean: clean-bin clean-dotfiles clean-themes
|
||||||
|
rm -f env.tgz
|
||||||
|
|
||||||
|
clean-bin:
|
||||||
|
cd bin && $(MAKE) clean
|
||||||
|
|
||||||
|
clean-dotfiles:
|
||||||
|
cd dotfiles && $(MAKE) clean
|
||||||
|
|
||||||
|
clean-themes:
|
||||||
|
cd themes && $(MAKE) clean
|
||||||
|
|
||||||
|
diff: diff-dotfiles diff-xdg-config-dir
|
||||||
|
|
||||||
|
diff-dotfiles:
|
||||||
|
-cd dotfiles && $(MAKE) diff
|
||||||
|
|
||||||
|
diff-xdg-config-dir:
|
||||||
|
-cd xdg-config-dir && $(MAKE) diff
|
||||||
|
|
||||||
|
dist: clean
|
||||||
|
mkdir -p env.dist-tmp
|
||||||
|
cp -fr Makefile $(DIRS) env.dist-tmp
|
||||||
|
pax -ws "/.dist-tmp//" env.dist-tmp | gzip >env.tgz
|
||||||
|
rm -fr env.dist-tmp
|
||||||
|
|
||||||
|
install: install-bin install-dotfiles install-xdg-config-dir
|
||||||
|
|
||||||
|
install-bin:
|
||||||
|
cd bin && $(MAKE) install
|
||||||
|
|
||||||
|
install-dotfiles:
|
||||||
|
cd dotfiles && $(MAKE) install
|
||||||
|
|
||||||
|
install-xdg-config-dir:
|
||||||
|
cd xdg-config-dir && $(MAKE) install
|
||||||
|
|
||||||
|
uninstall: uninstall-bin uninstall-dotfiles uninstall-xdg-config-dir
|
||||||
|
|
||||||
|
uninstall-bin:
|
||||||
|
cd bin && $(MAKE) uninstall
|
||||||
|
|
||||||
|
uninstall-dotfiles:
|
||||||
|
cd dotfiles && $(MAKE) uninstall
|
||||||
|
|
||||||
|
uninstall-xdg-config-dir:
|
||||||
|
cd xdg-config-dir && $(MAKE) uninstall
|
30
bin/Makefile
Normal file
30
bin/Makefile
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .sh .c
|
||||||
|
|
||||||
|
PREFIX= $(HOME)
|
||||||
|
BIN= ZZZ browser credentials fetch imgresize invidious rfcopen screenshot \
|
||||||
|
tor-browser w3m-copy-link xsekrit
|
||||||
|
|
||||||
|
all: $(BIN)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(BIN)
|
||||||
|
|
||||||
|
install: all
|
||||||
|
mkdir -p $(PREFIX)/bin
|
||||||
|
cp -f $(BIN) $(PREFIX)/bin
|
||||||
|
cd $(PREFIX)/bin && chmod 555 $(BIN)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
cd $(PREFIX)/bin && rm -f $(BIN)
|
23
bin/ZZZ.sh
Normal file
23
bin/ZZZ.sh
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
doas true || exit $?
|
||||||
|
|
||||||
|
printf "Hibernating in";
|
||||||
|
for i in 3 2 1; do
|
||||||
|
printf " %d..." $i
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
printf " now!\n"
|
||||||
|
|
||||||
|
doas /usr/sbin/ZZZ "$@"
|
||||||
|
doas -L
|
15
bin/browser.sh
Normal file
15
bin/browser.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
scp ~/.Xauthority _browser@localhost:
|
||||||
|
ssh -n _browser@localhost -- \
|
||||||
|
env DISPLAY=${DISPLAY:-:0} /usr/local/bin/firefox "$@"
|
109
bin/credentials.sh
Normal file
109
bin/credentials.sh
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat - <<. >&2
|
||||||
|
Usage:
|
||||||
|
${0##*/} [-2pu] service
|
||||||
|
.
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
clip() { xclip -q -r -l 1 -sel clip 2>/dev/null; }
|
||||||
|
|
||||||
|
get_user() {
|
||||||
|
echo user
|
||||||
|
sekrit get services/"$1"/user | clip
|
||||||
|
}
|
||||||
|
|
||||||
|
get_pass() {
|
||||||
|
echo pass
|
||||||
|
sekrit get services/"$1"/pass | clip
|
||||||
|
}
|
||||||
|
|
||||||
|
get_2fa() {
|
||||||
|
echo 2fa
|
||||||
|
otpcli_opts=
|
||||||
|
case $1 in
|
||||||
|
isnic) otpcli_opts="-H sha512 -d 8"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
sekrit get services/"$1"/2fa | otpcli $otpcli_opts | clip
|
||||||
|
}
|
||||||
|
|
||||||
|
get_from_flags() {
|
||||||
|
user=$1
|
||||||
|
pass=$2
|
||||||
|
sfa=$3
|
||||||
|
s=$4
|
||||||
|
|
||||||
|
if [ $user = yes ] && ! sekrit has services/"$s"/user; then
|
||||||
|
printf "%s: service \"%s\" has no user.\n" \
|
||||||
|
"${0##*/}" "$s" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $pass = yes ] && ! sekrit has services/"$s"/pass; then
|
||||||
|
printf "%s: service \"%s\" has no pass.\n" \
|
||||||
|
"${0##*/}" "$s" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $sfa = yes ] && ! sekrit has services/"$s"/2fa; then
|
||||||
|
printf "%s: service \"%s\" has no 2fa.\n" \
|
||||||
|
"${0##*/}" "$s" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ $user = yes ] && get_user "$s"
|
||||||
|
[ $pass = yes ] && get_pass "$s"
|
||||||
|
[ $sfa = yes ] && get_2fa "$s"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_all() {
|
||||||
|
s=$1
|
||||||
|
if ! sekrit has services/"$s"/pass; then
|
||||||
|
printf "%s: Unknown service \"%s\".\n" \
|
||||||
|
"${0##*/}" "$s" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sekrit has services/"$s"/user && get_user "$s"
|
||||||
|
get_pass "$s"
|
||||||
|
sekrit has services/"$s"/2fa && get_2fa "$s"
|
||||||
|
}
|
||||||
|
|
||||||
|
sfa=no
|
||||||
|
pass=no
|
||||||
|
user=no
|
||||||
|
while getopts 2pu flag; do
|
||||||
|
case $flag in
|
||||||
|
2) sfa=yes
|
||||||
|
;;
|
||||||
|
p) pass=yes
|
||||||
|
;;
|
||||||
|
u) user=yes
|
||||||
|
;;
|
||||||
|
*) usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] || [ -z "$1" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
service=$1
|
||||||
|
|
||||||
|
if [ $sfa = yes ] || [ $pass = yes ] || [ $user = yes ]; then
|
||||||
|
get_from_flags $user $pass $sfa "$service"
|
||||||
|
else
|
||||||
|
get_all "$service"
|
||||||
|
fi
|
62
bin/fetch.sh
Normal file
62
bin/fetch.sh
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "Usage: %s [-T] URL [URLs...]\n" "${0##*/}">&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
torsocks=torsocks
|
||||||
|
while getopts T flag; do
|
||||||
|
case $flag in
|
||||||
|
T) torsocks=
|
||||||
|
;;
|
||||||
|
*) usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
: ${ARCHIVE_BASEDIR:=~/tmp/archive}
|
||||||
|
mkdir -p "$ARCHIVE_BASEDIR"
|
||||||
|
|
||||||
|
everything=$ARCHIVE_BASEDIR/everything
|
||||||
|
test -f "$everything" || touch "$everything"
|
||||||
|
|
||||||
|
dir=$ARCHIVE_BASEDIR/$(date +%Y/%m/%d)
|
||||||
|
mkdir -p "$dir" || exit 1
|
||||||
|
|
||||||
|
rc=0
|
||||||
|
for url; do
|
||||||
|
sha=$(printf "%s" "$url" | sha256)
|
||||||
|
outdir=$dir/$sha
|
||||||
|
|
||||||
|
if grep -q "^$url\$" "$everything"; then
|
||||||
|
printf "%s: \"%s\" already fetched.\n" "${0##*/}" "$url" >&2
|
||||||
|
printf "%s\n" "$outdir/file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$outdir"
|
||||||
|
|
||||||
|
{
|
||||||
|
$torsocks ftp -o "$outdir/file" "$url" \
|
||||||
|
&& printf "%s\n" "$url" >"$outdir/url" \
|
||||||
|
&& printf "%s\n" "$name" >"$outdir/name" \
|
||||||
|
&& printf "%s\n" "$url" >>"$everything" \
|
||||||
|
&& printf "%s\n" "$outdir/file"
|
||||||
|
} || rc=1
|
||||||
|
done
|
||||||
|
exit $rc
|
74
bin/imgresize.sh
Normal file
74
bin/imgresize.sh
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat - <<. >&2
|
||||||
|
Usage:
|
||||||
|
${0##*/} size in-file out-file
|
||||||
|
|
||||||
|
"size" is WxH or Wx or xH.
|
||||||
|
.
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
check_dimension_format() {
|
||||||
|
printf "%s\n" "$1" | grep -q "^[0-9]*x[0-9]*\$" \
|
||||||
|
&& [ "$1" != "x" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 3 ] || ! check_dimension_format "$1"; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
printf "%s: Input file name can't be empty.\n" \
|
||||||
|
"${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$3" ]; then
|
||||||
|
printf "%s: Output file name can't be empty.\n" \
|
||||||
|
"${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
size=$1
|
||||||
|
w=${size#x*}
|
||||||
|
h=${size%*x}
|
||||||
|
infile=$2
|
||||||
|
outfile=$3
|
||||||
|
|
||||||
|
inprog=
|
||||||
|
case $infile in
|
||||||
|
*.jpg | *.jpeg)
|
||||||
|
inprog=jpegtopnm
|
||||||
|
;;
|
||||||
|
*.png) inprog=pngtopam
|
||||||
|
;;
|
||||||
|
*) printf "%s: Unknown input format.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
outprog=
|
||||||
|
case $outfile in
|
||||||
|
*.jpg | *.jpeg)
|
||||||
|
outprog=pnmtojpeg
|
||||||
|
;;
|
||||||
|
*.png) outprog=pamtopng
|
||||||
|
;;
|
||||||
|
*) printf "%s: Unknown output format.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
"$inprog" <"$infile" \
|
||||||
|
| pamscale ${w:+-width "$w"} ${h:+-height "$h"} \
|
||||||
|
| "$outprog" >"$outfile"
|
54
bin/invidious.sh
Normal file
54
bin/invidious.sh
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Leslie
|
||||||
|
# Modified in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "Usage: %s url\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"https://invidio.us/watch?v="*)
|
||||||
|
;;
|
||||||
|
*) printf "%s: Not an invidio.us url.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
video_id=
|
||||||
|
for param in $(printf "%s\n" "${1##*"?"}" | tr "&" "\n"); do
|
||||||
|
k=${param%%=*}
|
||||||
|
[ "$k" = v ] || continue
|
||||||
|
|
||||||
|
v=${param#*=}
|
||||||
|
if [ ${#v} -ne 11 ]; then
|
||||||
|
printf "%s: "%s": not a video id.\n" "${0##*/}" "$v" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
video_id=$v
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$video_id" ]; then
|
||||||
|
printf "%s: no video ID in URL.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
dl_option=$(ftp -o - "$1" 2>/dev/null \
|
||||||
|
| grep "<option value='{" \
|
||||||
|
| head -n 1 | cut -d "\"" -f 8)
|
||||||
|
|
||||||
|
printf "https://invidio.us/latest_version?id=%s&itag=%s\n" \
|
||||||
|
"$video_id" "$dl_option"
|
49
bin/rfcopen.sh
Normal file
49
bin/rfcopen.sh
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "Usage: %s [-T] rfc-number\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
tonumber() {
|
||||||
|
printf "%u" "$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
: ${RFCDIR:=~/doc/rfc}
|
||||||
|
|
||||||
|
torsocks=torsocks
|
||||||
|
while getopts T flag; do
|
||||||
|
case $flag in
|
||||||
|
T) torsocks=
|
||||||
|
;;
|
||||||
|
*) usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] || [ -z "$1" ] || ! n=$(tonumber "$1"); then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
rfcfile=$RFCDIR/rfc$n.txt
|
||||||
|
url=https://tools.ietf.org/rfc/rfc$n.txt
|
||||||
|
|
||||||
|
mkdir -p "$RFCDIR"
|
||||||
|
if [ ! -f "$rfcfile" ]; then
|
||||||
|
if ! $torsocks ftp -Vo "$rfcfile" "$url"; then
|
||||||
|
printf "%s: Couldn't fetch RFC %u\n" "${0##*/}" "$n" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
${PAGER:-more} "$rfcfile"
|
52
bin/screenshot.sh
Normal file
52
bin/screenshot.sh
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat - <<. >&2
|
||||||
|
Usage:
|
||||||
|
${0##*/}
|
||||||
|
${0##*/} -id id
|
||||||
|
${0##*/} -name name
|
||||||
|
${0##*/} -window
|
||||||
|
.
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
save_screenshot() {
|
||||||
|
xwdtopnm | pnmtopng >~/media/ss/"$(date +%Y%m%d-%H%M%S)".png
|
||||||
|
}
|
||||||
|
|
||||||
|
case $# in
|
||||||
|
0) xwd -silent -root | save_screenshot
|
||||||
|
;;
|
||||||
|
1) if [ "$1" != "-window" ]; then
|
||||||
|
printf "%s: Unknown option \"%s\".\n" \
|
||||||
|
"${0##*/}" "$1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
xwd -silent | save_screenshot
|
||||||
|
;;
|
||||||
|
2) if [ "$1" != "-id" ] && [ "$1" != "-name" ]; then
|
||||||
|
printf "%s: Unknown option \"%s\".\n" \
|
||||||
|
"${0##*/}" "$1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
printf "%s: %s expects a non-empty parameter.\n" \
|
||||||
|
"${0##*/}" "$1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
xwd -silent "$1" "$2" | save_screenshot
|
||||||
|
;;
|
||||||
|
*) usage
|
||||||
|
;;
|
||||||
|
esac
|
15
bin/tor-browser.sh
Normal file
15
bin/tor-browser.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
scp ~/.Xauthority _browser@localhost:
|
||||||
|
ssh -n _browser@localhost -- \
|
||||||
|
env DISPLAY=${DISPLAY:-:0} /usr/local/bin/tor-browser "$@"
|
13
bin/w3m-copy-link.sh
Normal file
13
bin/w3m-copy-link.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
printf "%s" "$*" | xclip -sel clip
|
23
bin/xsekrit.sh
Normal file
23
bin/xsekrit.sh
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
clip() { xclip -q -l 1 -sel clip 2>/dev/null; }
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] || [ -z "$1" ]; then
|
||||||
|
printf "Usage: %s key\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! sekrit has "$1"; then
|
||||||
|
printf "%s: Unknown key \"%s\".\n" "${0##*/}" "$1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sekrit get "$1" | clip
|
31
dotfiles/Makefile
Normal file
31
dotfiles/Makefile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
PREFIX= $(HOME)
|
||||||
|
|
||||||
|
FILES= Xdefaults gitconfig mg nexrc profile shrc tmux.conf xinitrc
|
||||||
|
|
||||||
|
all: install
|
||||||
|
|
||||||
|
clean: ;
|
||||||
|
|
||||||
|
diff:
|
||||||
|
-for f in $(FILES); do diff -u "$$f" $(PREFIX)/."$$f"; done
|
||||||
|
|
||||||
|
install:
|
||||||
|
for f in $(FILES); do cp -fv "$$f" $(PREFIX)/."$$f"; done
|
||||||
|
ln -fs $(PREFIX)/.xinitrc $(PREFIX)/.xsession
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
for f in $(FILES); do rm -f $(PREFIX)/."$$f"; done
|
||||||
|
rm -f $(PREFIX)/.xsession
|
78
dotfiles/Xdefaults
Normal file
78
dotfiles/Xdefaults
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
! env
|
||||||
|
! Written in 2019 by Lucas
|
||||||
|
! CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
!
|
||||||
|
! To the extent possible under law, the author(s) have dedicated all
|
||||||
|
! copyright and related and neighboring rights to this software to the
|
||||||
|
! public domain worldwide. This software is distributed without any
|
||||||
|
! warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
! Dedication along with this software. If not, see
|
||||||
|
! <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
! xterm
|
||||||
|
XTerm.termName: xterm-256color
|
||||||
|
XTerm.VT100.loginShell: true
|
||||||
|
XTerm.VT100.backarrowKey: false
|
||||||
|
XTerm.VT100.backarrowKeyIsErase: true
|
||||||
|
XTerm.VT100.bellIsUrgent: true
|
||||||
|
XTerm.VT100.charClass: 33-47:48,58-64:48,91-96:48,123-126:48
|
||||||
|
XTerm.VT100.deleteIsDEL: false
|
||||||
|
XTerm.VT100.metaSendsEscape: true
|
||||||
|
XTerm.VT100.translations: #override \n\
|
||||||
|
Ctrl Alt <Key>C: copy-selection(CLIPBOARD) \n\
|
||||||
|
Ctrl Alt <Key>V: insert-selection(CLIPBOARD) \n\
|
||||||
|
Ctrl Shift <Key>C: copy-selection(SELECT) \n\
|
||||||
|
Ctrl Shift <Key>V: insert-selection(SELECT)
|
||||||
|
|
||||||
|
XTerm.VT100.saveLines: 2000
|
||||||
|
XTerm.VT100.scrollBar: false
|
||||||
|
XTerm.VT100.scrollTtyOutput: false
|
||||||
|
XTerm.VT100.scrollKey: true
|
||||||
|
|
||||||
|
!XTerm.VT100.font: -lucy-tewi-medium-r-normal--11-90-100-100-c-60-iso10646-1
|
||||||
|
!XTerm.VT100.boldFont: -lucy-tewi-bold-r-normal--11-80-100-100-c-60-iso10646-1
|
||||||
|
XTerm.VT100.font: -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
|
||||||
|
XTerm.VT100.boldFont: -misc-fixed-medium-r-bold--13-120-75-75-c-70-iso10646-1
|
||||||
|
XTerm.VT100.faceName: monospace:size=9
|
||||||
|
XTerm.VT100.faceNameDoublesize: M+ 2p:size=9
|
||||||
|
|
||||||
|
XTerm.VT100.color0: #000000
|
||||||
|
XTerm.VT100.color1: #cc2900
|
||||||
|
XTerm.VT100.color2: #29cc00
|
||||||
|
XTerm.VT100.color3: #cca300
|
||||||
|
XTerm.VT100.color4: #0029cc
|
||||||
|
XTerm.VT100.color5: #cc00a3
|
||||||
|
XTerm.VT100.color6: #00a3cc
|
||||||
|
XTerm.VT100.color7: #cccccc
|
||||||
|
XTerm.VT100.color8: #333333
|
||||||
|
XTerm.VT100.color9: #ff5c33
|
||||||
|
XTerm.VT100.color10: #5cff33
|
||||||
|
XTerm.VT100.color11: #ffd633
|
||||||
|
XTerm.VT100.color12: #335cff
|
||||||
|
XTerm.VT100.color13: #ff33d6
|
||||||
|
XTerm.VT100.color14: #33d6ff
|
||||||
|
XTerm.VT100.color15: #ffffff
|
||||||
|
XTerm.VT100.background: #0d0a00
|
||||||
|
XTerm.VT100.foreground: #fffcf2
|
||||||
|
|
||||||
|
! ssh-askpass
|
||||||
|
SshAskpass.grabKeyboard: False
|
||||||
|
SshAskpass.grabPointer: False
|
||||||
|
!SshAskpass*font: -lucy-tewi-medium-r-normal--11-90-100-100-c-60-iso10646-1
|
||||||
|
!SshAskpass*fixedFont: -lucy-tewi-bold-r-normal--11-80-100-100-c-60-iso10646-1
|
||||||
|
SshAskpass*font: -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
|
||||||
|
SshAskpass*fixedFont: -misc-fixed-medium-r-bold--13-120-75-75-c-70-iso10646-1
|
||||||
|
SshAskpass*foreground: #fffcf2
|
||||||
|
SshAskpass*background: #0d0a00
|
||||||
|
SshAskpass*bottomShadowColor: #cca300
|
||||||
|
SshAskpass*topShadowColor: #ffd633
|
||||||
|
SshAskpass.shadowThickness: 0
|
||||||
|
SshAskpass.Button.shadowThickness: 2
|
||||||
|
SshAskpass.Indicator.shadowThickness: 0
|
||||||
|
SshAskpass.Indicator.foreground: #33d6ff
|
||||||
|
SshAskpass.Indicator.background: #00a3cc
|
||||||
|
SshAskpass.Indicator.width: 4
|
||||||
|
SshAskpass.Indicator.height: 1
|
||||||
|
SshAskpass.Indicator.horizontalSpacing: 2
|
||||||
|
SshAskpass.Indicator.minimumCount: 10
|
||||||
|
SshAskpass.Indicator.maximumCount: 10
|
41
dotfiles/gitconfig
Normal file
41
dotfiles/gitconfig
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = Lucas
|
||||||
|
email = lucas@domain.invalid
|
||||||
|
|
||||||
|
[core]
|
||||||
|
editor = ed
|
||||||
|
excludesfile = ~/.gitignore
|
||||||
|
|
||||||
|
[color]
|
||||||
|
ui = never
|
||||||
|
|
||||||
|
[format]
|
||||||
|
coverletter = auto
|
||||||
|
thread = shallow
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
a = add -p
|
||||||
|
br = branch
|
||||||
|
ci = commit -v
|
||||||
|
cia = commit -v --amend
|
||||||
|
co = checkout
|
||||||
|
prb = pull --rebase
|
||||||
|
rb = rebase
|
||||||
|
rbc = rebase --continue
|
||||||
|
rbi = rebase -i --autosquash
|
||||||
|
st = status -s
|
||||||
|
tree = log --all --graph --pretty='%h%d %aN: %s'
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = simple
|
22
dotfiles/mg
Normal file
22
dotfiles/mg
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
global-set-key "\^w" backward-kill-word
|
||||||
|
global-set-key "\^x " set-mark-command
|
||||||
|
global-set-key "\^x\^z" suspend-emacs
|
||||||
|
global-set-key "\^xw" kill-region
|
||||||
|
global-set-key "\^z" undo
|
||||||
|
|
||||||
|
auto-indent-mode 1
|
||||||
|
backup-to-home-directory 1
|
||||||
|
column-number-mode 1
|
||||||
|
make-backup-files 1
|
||||||
|
set-default-mode indent
|
18
dotfiles/nexrc
Normal file
18
dotfiles/nexrc
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
" env
|
||||||
|
" Written in 2019 by Lucas
|
||||||
|
" CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
"
|
||||||
|
" To the extent possible under law, the author(s) have dedicated all
|
||||||
|
" copyright and related and neighboring rights to this software to the
|
||||||
|
" public domain worldwide. This software is distributed without any
|
||||||
|
" warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
" Dedication along with this software. If not, see
|
||||||
|
" <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
set autoindent
|
||||||
|
set iclower
|
||||||
|
set leftright
|
||||||
|
set ruler
|
||||||
|
set showmatch
|
||||||
|
set showmode
|
||||||
|
set wrapscan
|
24
dotfiles/profile
Normal file
24
dotfiles/profile
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
# Mostly taken from OpenBSD's stock .profile
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/games
|
||||||
|
PATH=$HOME/bin:$HOME/local/bin:$PATH
|
||||||
|
LC_CTYPE="en_US.UTF-8"
|
||||||
|
export PATH HOME TERM LC_CTYPE
|
||||||
|
|
||||||
|
case "$-" in
|
||||||
|
*i*)
|
||||||
|
case "$SHELL" in
|
||||||
|
/bin/bash) . ~/.shrc ;;
|
||||||
|
/bin/ksh | /bin/loksh | /bin/mksh) export ENV=~/.shrc ;;
|
||||||
|
esac
|
||||||
|
esac
|
47
dotfiles/shrc
Normal file
47
dotfiles/shrc
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
\unalias -a
|
||||||
|
|
||||||
|
EDITOR=ed
|
||||||
|
PAGER=less
|
||||||
|
VISUAL=ed
|
||||||
|
export EDITOR PAGER VISUAL
|
||||||
|
|
||||||
|
GPG_TTY=$(tty)
|
||||||
|
export GPG_TTY
|
||||||
|
|
||||||
|
alias cp="cp -i"
|
||||||
|
alias l="ls -F"
|
||||||
|
alias la="ls -aF"
|
||||||
|
alias ll="ls -lF"
|
||||||
|
alias mv="mv -i"
|
||||||
|
alias p="$PAGER"
|
||||||
|
|
||||||
|
if [ -d ~/local/man ]; then
|
||||||
|
alias man="/usr/bin/man -m ~/local/man"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $SHELL in
|
||||||
|
/bin/mksh)
|
||||||
|
PS1='${HOSTNAME:=$(hostname -s)}\$ '
|
||||||
|
;;
|
||||||
|
*) PS1='\h\$ '
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
export PS1
|
||||||
|
|
||||||
|
case $(uname -s) in
|
||||||
|
Linux) stty erase ^?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
set -o emacs
|
18
dotfiles/tmux.conf
Normal file
18
dotfiles/tmux.conf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
set -g default-terminal "tmux-256color"
|
||||||
|
set -g mouse off
|
||||||
|
set -g automatic-rename off
|
||||||
|
set -g base-index 1
|
||||||
|
|
||||||
|
bind A set -w synchronize-panes on
|
||||||
|
bind a set -w synchronize-panes off
|
27
dotfiles/xinitrc
Executable file
27
dotfiles/xinitrc
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
test -r ~/.profile && . ~/.profile
|
||||||
|
|
||||||
|
setxkbmap \
|
||||||
|
-layout us \
|
||||||
|
-variant altgr-intl \
|
||||||
|
-option compose:menu -option ctrl:nocaps
|
||||||
|
xset r rate 330 75
|
||||||
|
|
||||||
|
xset b off
|
||||||
|
test -d /usr/local/share/fonts/bitmaps \
|
||||||
|
&& xset +fp /usr/local/share/fonts/bitmaps \
|
||||||
|
&& xset fp rehash
|
||||||
|
test -r ~/.Xresources && xrdb -merge ~/.Xresources
|
||||||
|
|
||||||
|
exec herbstluftwm -l >~/local/var/log/herbstluftwm 2>&1
|
11
spoon/config.h-Linux
Normal file
11
spoon/config.h-Linux
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* delay between each update in seconds */
|
||||||
|
int delay = 1;
|
||||||
|
|
||||||
|
struct ent ents[] = {
|
||||||
|
/* reorder/remove these as you see fit */
|
||||||
|
/*{ .fmt = "%s | ", .read = mpdread, .arg = &(struct mpdarg){ .host = NULL, .port = 0 } },*/
|
||||||
|
{ .fmt = "%%{r}i7 %s'C | ", .read = tempread, .arg = "/sys/class/hwmon/hwmon0/temp1_input" },
|
||||||
|
{ .fmt = "%s | ", .read = netspeedread, .arg = "enp11s0" },
|
||||||
|
{ .fmt = "V%s%% | ", .read = mixread, .arg = NULL },
|
||||||
|
{ .fmt = "%s", .read = dateread, .arg = &(struct datearg){ .fmt = "%a %d %b %T", .tz = "UTC" } },
|
||||||
|
};
|
30
spoon/config.h-OpenBSD
Normal file
30
spoon/config.h-OpenBSD
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* delay between each update in seconds */
|
||||||
|
int delay = 1;
|
||||||
|
|
||||||
|
#define lbc0 "%%{F#000000}"
|
||||||
|
#define lbc1 "%%{F#cc2900}"
|
||||||
|
#define lbc2 "%%{F#29cc00}"
|
||||||
|
#define lbc3 "%%{F#cca300}"
|
||||||
|
#define lbc4 "%%{F#0029cc}"
|
||||||
|
#define lbc5 "%%{F#cc00a3}"
|
||||||
|
#define lbc6 "%%{F#00a3cc}"
|
||||||
|
#define lbc7 "%%{F#cccccc}"
|
||||||
|
#define lbc8 "%%{F#333333}"
|
||||||
|
#define lbc9 "%%{F#ff5c33}"
|
||||||
|
#define lbc10 "%%{F#5cff33}"
|
||||||
|
#define lbc11 "%%{F#ffd633}"
|
||||||
|
#define lbc12 "%%{F#335cff}"
|
||||||
|
#define lbc13 "%%{F#ff33d6}"
|
||||||
|
#define lbc14 "%%{F#33d6ff}"
|
||||||
|
#define lbc15 "%%{F#ffffff}"
|
||||||
|
#define lbreset "%%{F-}"
|
||||||
|
|
||||||
|
struct ent ents[] = {
|
||||||
|
/* reorder/remove these as you see fit */
|
||||||
|
{ .fmt = "%%{r}i5 %s'C " lbc14 "| " lbreset, .read = tempread, .arg = NULL },
|
||||||
|
{ .fmt = "%s ", .read = wifiread, .arg = NULL },
|
||||||
|
{ .fmt = "%s " lbc14 "| " lbreset, .read = netspeedread, .arg = "trunk0" },
|
||||||
|
{ .fmt = "B%s%% ", .read = battread, .arg = NULL },
|
||||||
|
{ .fmt = "V%s%% " lbc14 "| " lbreset, .read = mixread, .arg = NULL },
|
||||||
|
{ .fmt = "%s", .read = dateread, .arg = &(struct datearg){ .fmt = "%a %d %b %T", .tz = "UTC" } },
|
||||||
|
};
|
34
themes/Makefile
Normal file
34
themes/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .in .txt .png
|
||||||
|
|
||||||
|
LDLIBS= -lm
|
||||||
|
THEMES= blueie brightie brightie2 brightie3 brightie4
|
||||||
|
|
||||||
|
.c:
|
||||||
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
|
||||||
|
|
||||||
|
.in.txt:
|
||||||
|
./colorscheme <"$<" >"$@"
|
||||||
|
|
||||||
|
.in.png:
|
||||||
|
./colorscheme -i <"$<" | pnmtopng >"$@"
|
||||||
|
|
||||||
|
all: colorscheme
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f colorscheme $(THEMES:=.png) $(THEMES:=.txt)
|
||||||
|
|
||||||
|
show: $(THEMES:=.png) $(THEMES:=.txt)
|
||||||
|
|
||||||
|
$(THEMES:=.png) $(THEMES:=.txt): all
|
19
themes/blueie.in
Normal file
19
themes/blueie.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
rgbhex 00 00 11
|
||||||
|
rgbhex 00 00 11
|
||||||
|
rgbhex cc 22 22
|
||||||
|
rgbhex 22 88 22
|
||||||
|
rgbhex dd aa 44
|
||||||
|
rgbhex 22 66 cc
|
||||||
|
rgbhex 99 66 cc
|
||||||
|
rgbhex 66 aa dd
|
||||||
|
rgbhex cc cc cc
|
||||||
|
|
||||||
|
rgbhex ff ff ee
|
||||||
|
rgbhex 33 33 44
|
||||||
|
rgbhex ff 22 22
|
||||||
|
rgbhex 44 cc 44
|
||||||
|
rgbhex ff cc 44
|
||||||
|
rgbhex 44 88 ff
|
||||||
|
rgbhex cc 66 ff
|
||||||
|
rgbhex 88 cc ff
|
||||||
|
rgbhex ff ff ff
|
18
themes/brightie-old
Normal file
18
themes/brightie-old
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
XTerm.VT100.color0: #000000
|
||||||
|
XTerm.VT100.color1: #99503d
|
||||||
|
XTerm.VT100.color2: #4f993d
|
||||||
|
XTerm.VT100.color3: #99873d
|
||||||
|
XTerm.VT100.color4: #3d5099
|
||||||
|
XTerm.VT100.color5: #993d87
|
||||||
|
XTerm.VT100.color6: #3d8799
|
||||||
|
XTerm.VT100.color7: #bfbfbf
|
||||||
|
XTerm.VT100.color8: #404040
|
||||||
|
XTerm.VT100.color9: #ff5c33
|
||||||
|
XTerm.VT100.color10: #5cff33
|
||||||
|
XTerm.VT100.color11: #ffd633
|
||||||
|
XTerm.VT100.color12: #335cff
|
||||||
|
XTerm.VT100.color13: #ff33d6
|
||||||
|
XTerm.VT100.color14: #33d6ff
|
||||||
|
XTerm.VT100.color15: #ffffff
|
||||||
|
XTerm.VT100.foreground: #fffcf2
|
||||||
|
XTerm.VT100.background: #0d0a00
|
19
themes/brightie.in
Normal file
19
themes/brightie.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
hsv 48 1.0 0.05
|
||||||
|
hsv 0 0.0 0.0
|
||||||
|
hsv 12 0.6 0.6
|
||||||
|
hsv 108 0.6 0.6
|
||||||
|
hsv 48 0.6 0.6
|
||||||
|
hsv 228 0.6 0.6
|
||||||
|
hsv 312 0.6 0.6
|
||||||
|
hsv 192 0.6 0.6
|
||||||
|
hsv 0 0.0 0.75
|
||||||
|
|
||||||
|
hsv 48 0.05 1.0
|
||||||
|
hsv 0 0.0 0.25
|
||||||
|
hsv 12 0.8 1.0
|
||||||
|
hsv 108 0.8 1.0
|
||||||
|
hsv 48 0.8 1.0
|
||||||
|
hsv 228 0.8 1.0
|
||||||
|
hsv 312 0.8 1.0
|
||||||
|
hsv 192 0.8 1.0
|
||||||
|
hsv 0 0.0 1.0
|
19
themes/brightie2.in
Normal file
19
themes/brightie2.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
hsv 48 1.0 0.05
|
||||||
|
hsv 0 0.0 0.0
|
||||||
|
hsv 12 1.0 0.6
|
||||||
|
hsv 108 1.0 0.6
|
||||||
|
hsv 48 1.0 0.6
|
||||||
|
hsv 228 1.0 0.6
|
||||||
|
hsv 312 1.0 0.6
|
||||||
|
hsv 192 1.0 0.6
|
||||||
|
hsv 0 0.0 0.75
|
||||||
|
|
||||||
|
hsv 48 0.05 1.0
|
||||||
|
hsv 0 0.0 0.25
|
||||||
|
hsv 12 0.8 1.0
|
||||||
|
hsv 108 0.8 1.0
|
||||||
|
hsv 48 0.8 1.0
|
||||||
|
hsv 228 0.8 1.0
|
||||||
|
hsv 312 0.8 1.0
|
||||||
|
hsv 192 0.8 1.0
|
||||||
|
hsv 0 0.0 1.0
|
19
themes/brightie3.in
Normal file
19
themes/brightie3.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
hsv 48 1.0 0.05
|
||||||
|
hsv 0 0.0 0.0
|
||||||
|
hsv 12 1.0 0.7
|
||||||
|
hsv 108 1.0 0.7
|
||||||
|
hsv 48 1.0 0.7
|
||||||
|
hsv 228 1.0 0.7
|
||||||
|
hsv 312 1.0 0.7
|
||||||
|
hsv 192 1.0 0.7
|
||||||
|
hsv 0 0.0 0.7
|
||||||
|
|
||||||
|
hsv 48 0.05 1.0
|
||||||
|
hsv 0 0.0 0.25
|
||||||
|
hsv 12 0.8 1.0
|
||||||
|
hsv 108 0.8 1.0
|
||||||
|
hsv 48 0.8 1.0
|
||||||
|
hsv 228 0.8 1.0
|
||||||
|
hsv 312 0.8 1.0
|
||||||
|
hsv 192 0.8 1.0
|
||||||
|
hsv 0 0.0 1.0
|
19
themes/brightie4.in
Normal file
19
themes/brightie4.in
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
hsv 48 1.0 0.05
|
||||||
|
hsv 0 0.0 0.0
|
||||||
|
hsv 12 1.0 0.8
|
||||||
|
hsv 108 1.0 0.8
|
||||||
|
hsv 48 1.0 0.8
|
||||||
|
hsv 228 1.0 0.8
|
||||||
|
hsv 312 1.0 0.8
|
||||||
|
hsv 192 1.0 0.8
|
||||||
|
hsv 0 0.0 0.8
|
||||||
|
|
||||||
|
hsv 48 0.05 1.0
|
||||||
|
hsv 0 0.0 0.2
|
||||||
|
hsv 12 0.8 1.0
|
||||||
|
hsv 108 0.8 1.0
|
||||||
|
hsv 48 0.8 1.0
|
||||||
|
hsv 228 0.8 1.0
|
||||||
|
hsv 312 0.8 1.0
|
||||||
|
hsv 192 0.8 1.0
|
||||||
|
hsv 0 0.0 1.0
|
198
themes/colorscheme.c
Normal file
198
themes/colorscheme.c
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
/*
|
||||||
|
* env
|
||||||
|
* Written in 2019 by Lucas
|
||||||
|
* CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
*
|
||||||
|
* To the extent possible under law, the author(s) have dedicated all
|
||||||
|
* copyright and related and neighboring rights to this software to the
|
||||||
|
* public domain worldwide. This software is distributed without any
|
||||||
|
* warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
* Dedication along with this software. If not, see
|
||||||
|
* <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
*/
|
||||||
|
#include <errno.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define LENGTH 50
|
||||||
|
|
||||||
|
#define INRANGE(x, a, b) ((a) <= (x) && (x) <= (b))
|
||||||
|
|
||||||
|
static void
|
||||||
|
hsvtorgb(double hsv[3], uint8_t rgb[3])
|
||||||
|
{
|
||||||
|
double c, hh, m, x;
|
||||||
|
double r, g, b;
|
||||||
|
|
||||||
|
c = hsv[2] * hsv[1];
|
||||||
|
hh = hsv[0] / 60.0;
|
||||||
|
x = c * (1.0 - fabs(fmod(hh, 2.0) - 1.0));
|
||||||
|
|
||||||
|
switch ((int)floor(hh == 6.0 ? 0.0 : hh)) {
|
||||||
|
case 0: r = c; g = x; b = 0; break;
|
||||||
|
case 1: r = x; g = c; b = 0; break;
|
||||||
|
case 2: r = 0; g = c; b = x; break;
|
||||||
|
case 3: r = 0; g = x; b = c; break;
|
||||||
|
case 4: r = x; g = 0; b = c; break;
|
||||||
|
case 5: r = c; g = 0; b = x; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
m = hsv[2] - c;
|
||||||
|
r += m; g += m; b += m;
|
||||||
|
|
||||||
|
rgb[0] = round(255 * r);
|
||||||
|
rgb[1] = round(255 * g);
|
||||||
|
rgb[2] = round(255 * b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
hsltorgb(double hsl[3], uint8_t rgb[3])
|
||||||
|
{
|
||||||
|
double c, hh, m, x;
|
||||||
|
double r, g, b;
|
||||||
|
|
||||||
|
c = (1.0 - fabs(2.0 * hsl[2] - 1.0)) * hsl[1];
|
||||||
|
hh = hsl[0] / 60.0;
|
||||||
|
x = c * (1.0 - fabs(fmod(hh, 2.0) - 1.0));
|
||||||
|
|
||||||
|
switch ((int)floor(hh == 6.0 ? 0.0 : hh)) {
|
||||||
|
case 0: r = c; g = x; b = 0; break;
|
||||||
|
case 1: r = x; g = c; b = 0; break;
|
||||||
|
case 2: r = 0; g = c; b = x; break;
|
||||||
|
case 3: r = 0; g = x; b = c; break;
|
||||||
|
case 4: r = x; g = 0; b = c; break;
|
||||||
|
case 5: r = c; g = 0; b = x; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
m = hsl[2] - c / 2.0;
|
||||||
|
r += m; g += m; b += m;
|
||||||
|
|
||||||
|
rgb[0] = round(255 * r);
|
||||||
|
rgb[1] = round(255 * g);
|
||||||
|
rgb[2] = round(255 * b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parsecolorline(const char *s, size_t n, uint8_t rgb[3])
|
||||||
|
{
|
||||||
|
double d[3];
|
||||||
|
unsigned int u[3];
|
||||||
|
|
||||||
|
if (sscanf(s, "hsv %lf %lf %lf", &d[0], &d[1], &d[2]) == 3) {
|
||||||
|
if (!INRANGE(d[0], 0, 360) || !INRANGE(d[1], 0, 1)
|
||||||
|
|| !INRANGE(d[2], 0, 1))
|
||||||
|
goto err;
|
||||||
|
hsvtorgb(d, rgb);
|
||||||
|
} else if (sscanf(s, "hsl %lf %lf %lf", &d[0], &d[1], &d[2]) == 3) {
|
||||||
|
if (!INRANGE(d[0], 0, 360) || !INRANGE(d[1], 0, 1)
|
||||||
|
|| !INRANGE(d[2], 0, 1))
|
||||||
|
goto err;
|
||||||
|
hsltorgb(d, rgb);
|
||||||
|
} else if (sscanf(s, "rgb %u %u %u", &u[0], &u[1], &u[2]) == 3) {
|
||||||
|
if (!INRANGE(u[0], 0, 255) || !INRANGE(u[1], 0, 255)
|
||||||
|
|| !INRANGE(u[2], 0, 255))
|
||||||
|
goto err;
|
||||||
|
rgb[0] = u[0]; rgb[1] = u[1]; rgb[2] = u[2];
|
||||||
|
} else if (sscanf(s, "rgbhex %x %x %x", &u[0], &u[1], &u[2]) == 3) {
|
||||||
|
if (!INRANGE(u[0], 0, 255) || !INRANGE(u[1], 0, 255)
|
||||||
|
|| !INRANGE(u[2], 0, 255))
|
||||||
|
goto err;
|
||||||
|
rgb[0] = u[0]; rgb[1] = u[1]; rgb[2] = u[2];
|
||||||
|
} else {
|
||||||
|
err:
|
||||||
|
fprintf(stderr, "Invalid input: \"%s\".", s);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
readcolorscheme(uint8_t colorscheme[18][3])
|
||||||
|
{
|
||||||
|
char *line = NULL;
|
||||||
|
size_t linesize = 0;
|
||||||
|
ssize_t linelen;
|
||||||
|
int nlines = 0;
|
||||||
|
|
||||||
|
while ((linelen = getline(&line, &linesize, stdin)) != -1
|
||||||
|
&& nlines < 18) {
|
||||||
|
if (linelen == 0 || line[0] == '\n' || line[0] == '#')
|
||||||
|
continue;
|
||||||
|
parsecolorline(line, linelen, colorscheme[nlines]);
|
||||||
|
nlines++;
|
||||||
|
}
|
||||||
|
free(line);
|
||||||
|
if (ferror(stdin)) {
|
||||||
|
fputs("Input error.\n", stderr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if (nlines < 18) {
|
||||||
|
fputs("Not enought colors.\n", stderr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
writecolor(uint8_t rgb[3], int l)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < l; i++) {
|
||||||
|
if (fwrite(rgb, sizeof(rgb[0]), 3, stdout) != 3) {
|
||||||
|
fputs("Short write.\n", stderr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
do_image(uint8_t colorscheme[18][3])
|
||||||
|
{
|
||||||
|
int i, n;
|
||||||
|
|
||||||
|
printf("P6\n%u %u 255\n", 9 * LENGTH, 2 * LENGTH);
|
||||||
|
for (i = 0; i < LENGTH; i++)
|
||||||
|
for (n = 0; n < 9; n++)
|
||||||
|
writecolor(colorscheme[n], LENGTH);
|
||||||
|
for (i = 0; i < LENGTH; i++)
|
||||||
|
for (n = 9; n < 18; n++)
|
||||||
|
writecolor(colorscheme[n], LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
do_colors(uint8_t colorscheme[18][3])
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
for (n = 0; n < 18; n++)
|
||||||
|
printf("#%02x%02x%02x\n", colorscheme[n][0],
|
||||||
|
colorscheme[n][1], colorscheme[n][2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
uint8_t colorscheme[18][3];
|
||||||
|
int iflag = 0;
|
||||||
|
|
||||||
|
if (argc > 2)
|
||||||
|
goto usage;
|
||||||
|
if (argc == 2) {
|
||||||
|
if (strncmp(argv[1], "-i", 3) != 0)
|
||||||
|
goto usage;
|
||||||
|
iflag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
readcolorscheme(colorscheme);
|
||||||
|
|
||||||
|
if (iflag)
|
||||||
|
do_image(colorscheme);
|
||||||
|
else
|
||||||
|
do_colors(colorscheme);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
usage:
|
||||||
|
fprintf(stderr, "Usage: %s [-i]\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
27
themes/showcase.sh
Normal file
27
themes/showcase.sh
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "Usage: %s theme-name [theme-name...]\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
make
|
||||||
|
for theme; do
|
||||||
|
if [ ! -f "$theme".in ]; then
|
||||||
|
printf "%s: No \"%s.in\" file.\n" "${0##*}" "$theme" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
./colorscheme <"$theme".in >"$theme".txt
|
||||||
|
./colorscheme -i <"$theme".in | pnmtopng >"$theme".png
|
||||||
|
done
|
BIN
utils/bg/FreeHugsBSD.png
Normal file
BIN
utils/bg/FreeHugsBSD.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 536 KiB |
BIN
utils/bg/cyberia-cafe-club.png
Normal file
BIN
utils/bg/cyberia-cafe-club.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
34
utils/bg/generate-FreeHugsBSD.sh
Normal file
34
utils/bg/generate-FreeHugsBSD.sh
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
: ${CANVAS_BGCOLOR:="#0d0a00"}
|
||||||
|
: ${CANVAS_HEIGHT:=768}
|
||||||
|
: ${CANVAS_WIDTH:=1366}
|
||||||
|
: ${IMAGE_HEIGHT:=500}
|
||||||
|
: ${IMAGE_WIDTH:=500}
|
||||||
|
|
||||||
|
pos_x=$(($CANVAS_WIDTH - $IMAGE_WIDTH))
|
||||||
|
pos_y=$((($CANVAS_HEIGHT - $IMAGE_HEIGHT) / 2))
|
||||||
|
|
||||||
|
if ! tmpfile=$(mktemp -t bg.XXXXXXXXXX); then
|
||||||
|
printf "%s: Can't create temporary file.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap 'rm -f "$tmpfile"' EXIT INT QUIT TERM
|
||||||
|
|
||||||
|
pngtopam -alphapam FreeHugsBSD.png \
|
||||||
|
| pamscale -width="$IMAGE_WIDTH" -height="$IMAGE_HEIGHT" \
|
||||||
|
>"$tmpfile"
|
||||||
|
ppmmake "$CANVAS_BGCOLOR" "$CANVAS_WIDTH" "$CANVAS_HEIGHT" \
|
||||||
|
| pamcomp -xoff="$pos_x" -yoff="$pos_y" "$tmpfile" \
|
||||||
|
| pamtopng >FreeHugsBSD-bg.png
|
34
utils/bg/generate-cyberia.sh
Normal file
34
utils/bg/generate-cyberia.sh
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
: ${CANVAS_BGCOLOR:="#0d0a00"}
|
||||||
|
: ${CANVAS_HEIGHT:=768}
|
||||||
|
: ${CANVAS_WIDTH:=1366}
|
||||||
|
: ${IMAGE_HEIGHT:=768}
|
||||||
|
: ${IMAGE_WIDTH:=1080}
|
||||||
|
|
||||||
|
pos_x=$((($CANVAS_WIDTH - $IMAGE_WIDTH) / 2))
|
||||||
|
pos_y=$((($CANVAS_HEIGHT - $IMAGE_HEIGHT) / 2))
|
||||||
|
|
||||||
|
if ! tmpfile=$(mktemp -t bg.XXXXXXXXXX); then
|
||||||
|
printf "%s: Can't create temporary file.\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap 'rm -f "$tmpfile"' EXIT INT QUIT TERM
|
||||||
|
|
||||||
|
pngtopam -alphapam cyberia-cafe-club.png \
|
||||||
|
| pamscale -width="$IMAGE_WIDTH" -height="$IMAGE_HEIGHT" \
|
||||||
|
>"$tmpfile"
|
||||||
|
ppmmake "$CANVAS_BGCOLOR" "$CANVAS_WIDTH" "$CANVAS_HEIGHT" \
|
||||||
|
| pamcomp -xoff="$pos_x" -yoff="$pos_y" "$tmpfile" \
|
||||||
|
| pamtopng >cyberia-cafe-club-bg.png
|
28
utils/openbsd/hotplug/Makefile
Normal file
28
utils/openbsd/hotplug/Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .sh
|
||||||
|
|
||||||
|
BIN= attach detach trunk_urndis_hotplug
|
||||||
|
DEST= /etc/hotplug
|
||||||
|
|
||||||
|
all: $(BIN)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(BIN)
|
||||||
|
|
||||||
|
install: all
|
||||||
|
cp $(BIN) $(DEST)
|
||||||
|
cd $(DEST) && chmod 555 $(BIN)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
cd $(DEST) && rm -f $(BIN)
|
26
utils/openbsd/hotplug/attach.sh
Normal file
26
utils/openbsd/hotplug/attach.sh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
DEVCLASS=$1
|
||||||
|
DEVNAME=$2
|
||||||
|
|
||||||
|
case $DEVCLASS in
|
||||||
|
3) case $DEVNAME in
|
||||||
|
urndis*)
|
||||||
|
if [ -x /etc/hotplug/trunk_urndis_hotplug ]; then
|
||||||
|
/etc/hotplug/trunk_urndis_hotplug \
|
||||||
|
attach trunk0 "$DEVNAME"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
26
utils/openbsd/hotplug/detach.sh
Normal file
26
utils/openbsd/hotplug/detach.sh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
DEVCLASS=$1
|
||||||
|
DEVNAME=$2
|
||||||
|
|
||||||
|
case $DEVCLASS in
|
||||||
|
3) case $DEVNAME in
|
||||||
|
urndis*)
|
||||||
|
if [ -x /etc/hotplug/trunk_urndis_hotplug ]; then
|
||||||
|
/etc/hotplug/trunk_urndis_hotplug \
|
||||||
|
detach trunk0 "$DEVNAME"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
49
utils/openbsd/hotplug/trunk_urndis_hotplug.sh
Normal file
49
utils/openbsd/hotplug/trunk_urndis_hotplug.sh
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat - <<. >&2
|
||||||
|
Usage:
|
||||||
|
${0##*/} attach TRUNK_DEV URNDIS_DEV
|
||||||
|
${0##*/} detach TRUNK_DEV URNDIS_DEV
|
||||||
|
.
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
renew_dhcp_if_needed() {
|
||||||
|
iface=$1
|
||||||
|
hostname_if=/etc/hostname."$iface"
|
||||||
|
[ ! -r "$hostname_if" ] && return
|
||||||
|
while read -r line; do
|
||||||
|
[ "$line" = dhcp ] && dhclient "$iface" && break
|
||||||
|
done <"$hostname_if"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 3 ] || [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
cmd=$1
|
||||||
|
trunk=$2
|
||||||
|
urndis=$3
|
||||||
|
|
||||||
|
case $cmd in
|
||||||
|
attach) ifconfig "$urndis" up
|
||||||
|
ifconfig "$trunk" trunkport "$urndis"
|
||||||
|
renew_dhcp_if_needed "$trunk"
|
||||||
|
;;
|
||||||
|
detach) # $urndis could be already removed
|
||||||
|
ifconfig "$trunk" -trunkport "$urndis" 2>/dev/null || true
|
||||||
|
renew_dhcp_if_needed "$trunk"
|
||||||
|
;;
|
||||||
|
*) usage
|
||||||
|
;;
|
||||||
|
esac
|
49
utils/shgit
Normal file
49
utils/shgit
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
shgit() {
|
||||||
|
if ! gitdir=$(git rev-parse --git-dir 2>/dev/null) \
|
||||||
|
|| [ -z "$gitdir" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
symbolic=$(git symbolic-ref --short HEAD 2>/dev/null)
|
||||||
|
hash=$(git rev-parse --short HEAD 2>/dev/null)
|
||||||
|
name=${symbolic:-${hash:-"?"}}
|
||||||
|
|
||||||
|
rb=
|
||||||
|
rbdir="$gitdir/rebase-merge"
|
||||||
|
if [ -d "$rbdir" ]; then
|
||||||
|
rb="REBASE"
|
||||||
|
read -r name <"$rbdir/head-name"
|
||||||
|
name=${name##*/}
|
||||||
|
[ -f "$rbdir/interactive" ] && rb="$rb-i"
|
||||||
|
rbcount=$(wc -l <"$rbdir/done")
|
||||||
|
read -r rbtotal <"$rbdir/end"
|
||||||
|
rb="$rb ${rbcount##* }/$rbtotal"
|
||||||
|
fi
|
||||||
|
|
||||||
|
status=
|
||||||
|
if [ -z "$(git status --porcelain)" ]; then
|
||||||
|
status="*"
|
||||||
|
fi
|
||||||
|
|
||||||
|
commits=$(git rev-list --left-right --count @{upstream}...HEAD \
|
||||||
|
2>/dev/null | {
|
||||||
|
t=
|
||||||
|
IFS=" " read -r behind ahead
|
||||||
|
[ ${behind:-0} -gt 0 ] && t=$t"v$behind"
|
||||||
|
[ ${ahead:-0} -gt 0 ] && t=$t"^$ahead"
|
||||||
|
printf "%s" "$t"
|
||||||
|
})
|
||||||
|
|
||||||
|
printf "%s" "$name${rb:+:$rb}${status:+:$status}${commits:+:$commits}"
|
||||||
|
}
|
29
utils/termcolors.sh
Normal file
29
utils/termcolors.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
printf " fg on bg "
|
||||||
|
for i in 0 1 2 3 4 5 6 7; do
|
||||||
|
tput setab $i 0 0
|
||||||
|
printf " "
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
tput sgr0
|
||||||
|
|
||||||
|
tput rev
|
||||||
|
printf " bg on fg "
|
||||||
|
tput sgr0
|
||||||
|
for i in 0 1 2 3 4 5 6 7; do
|
||||||
|
tput setab $(($i + 8)) 0 0
|
||||||
|
printf " "
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
tput sgr0
|
28
xdg-config-dir/Makefile
Normal file
28
xdg-config-dir/Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
.POSIX:
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
PREFIX= $(HOME)
|
||||||
|
|
||||||
|
DIRS= herbstluftwm
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(PREFIX)/.config
|
||||||
|
cp -fr $(DIRS) $(PREFIX)/.config
|
||||||
|
|
||||||
|
diff:
|
||||||
|
-for d in $(DIRS); do for f in "$$d"/*; do \
|
||||||
|
diff -u "$$f" $(PREFIX)/.config/"$$f"; \
|
||||||
|
done; done
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
cd $(PREFIX)/.config && rm -fr $(DIRS)
|
176
xdg-config-dir/herbstluftwm/autostart
Executable file
176
xdg-config-dir/herbstluftwm/autostart
Executable file
@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
if [ -f ~/.config/herbstluftwm/theme ]; then
|
||||||
|
. ~/.config/herbstluftwm/theme
|
||||||
|
fi
|
||||||
|
|
||||||
|
hc() { herbstclient "$@"; }
|
||||||
|
|
||||||
|
hc emit_hook reload
|
||||||
|
|
||||||
|
# remove all existing keybindings
|
||||||
|
hc keyunbind --all
|
||||||
|
|
||||||
|
# keybindings
|
||||||
|
Mod=Mod4
|
||||||
|
|
||||||
|
hc keybind $Mod-Shift-q quit
|
||||||
|
hc keybind $Mod-Shift-r reload
|
||||||
|
hc keybind $Mod-Shift-c close
|
||||||
|
|
||||||
|
# programs
|
||||||
|
hc keybind $Mod-g spawn plumb
|
||||||
|
hc keybind $Mod-p spawn dmenu_run \
|
||||||
|
-p run -fn "$hlwm_face" \
|
||||||
|
-nb "$hlwm_background" -nf "$hlwm_foreground" \
|
||||||
|
-sb "$hlwm_background" -sf "$hlwm_color14"
|
||||||
|
hc keybind $Mod-Shift-Return spawn xterm
|
||||||
|
hc keybind $Mod-Control-Return spawn xterm -geometry 80x40
|
||||||
|
hc keybind $Mod-Control-l spawn xlock
|
||||||
|
hc keybind $Mod-Print spawn screenshot
|
||||||
|
|
||||||
|
# basic movement
|
||||||
|
# focusing clients
|
||||||
|
hc keybind $Mod-Left focus left
|
||||||
|
hc keybind $Mod-Down focus down
|
||||||
|
hc keybind $Mod-Up focus up
|
||||||
|
hc keybind $Mod-Right focus right
|
||||||
|
|
||||||
|
# moving clients
|
||||||
|
hc keybind $Mod-Shift-Left shift left
|
||||||
|
hc keybind $Mod-Shift-Down shift down
|
||||||
|
hc keybind $Mod-Shift-Up shift up
|
||||||
|
hc keybind $Mod-Shift-Right shift right
|
||||||
|
|
||||||
|
# splitting frames
|
||||||
|
# create an empty frame at the specified direction
|
||||||
|
hc keybind $Mod-u split bottom 0.5
|
||||||
|
hc keybind $Mod-o split right 0.5
|
||||||
|
# let the current frame explode into subframes
|
||||||
|
hc keybind $Mod-Control-space split explode
|
||||||
|
|
||||||
|
# resizing frames
|
||||||
|
resizestep=0.05
|
||||||
|
hc keybind $Mod-Control-Left resize left +$resizestep
|
||||||
|
hc keybind $Mod-Control-Down resize down +$resizestep
|
||||||
|
hc keybind $Mod-Control-Up resize up +$resizestep
|
||||||
|
hc keybind $Mod-Control-Right resize right +$resizestep
|
||||||
|
|
||||||
|
# tags
|
||||||
|
hc try rename default 1
|
||||||
|
for tag in 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 0:0; do
|
||||||
|
name=${tag%:*}
|
||||||
|
key=${tag#*:}
|
||||||
|
hc try add $name
|
||||||
|
hc keybind $Mod-$key use $name
|
||||||
|
hc keybind $Mod-Shift-$key move $name
|
||||||
|
done
|
||||||
|
hc load 2 "(split horizontal:0.5:1 (clients max:0) (clients max:0))"
|
||||||
|
hc load 3 "(clients max:0)"
|
||||||
|
|
||||||
|
# cycle through tags
|
||||||
|
hc keybind $Mod-period use_index +1 --skip-visible
|
||||||
|
hc keybind $Mod-comma use_index -1 --skip-visible
|
||||||
|
|
||||||
|
# layouting
|
||||||
|
hc keybind $Mod-v set_layout vertical
|
||||||
|
hc keybind $Mod-h set_layout horizontal
|
||||||
|
hc keybind $Mod-m set_layout max
|
||||||
|
hc keybind $Mod-r remove
|
||||||
|
hc keybind $Mod-s floating toggle
|
||||||
|
hc keybind $Mod-f fullscreen toggle
|
||||||
|
hc keybind $Mod-Shift-s pseudotile toggle
|
||||||
|
# The following cycles through the available layouts within a frame, but skips
|
||||||
|
# layouts, if the layout change wouldn't affect the actual window positions.
|
||||||
|
# I.e. if there are two windows within a frame, the grid layout is skipped.
|
||||||
|
hc keybind $Mod-space \
|
||||||
|
or , and . compare tags.focus.curframe_wcount = 2 \
|
||||||
|
. cycle_layout +1 vertical horizontal max vertical grid \
|
||||||
|
, cycle_layout +1
|
||||||
|
|
||||||
|
# mouse
|
||||||
|
hc mouseunbind --all
|
||||||
|
hc mousebind $Mod-Button1 move
|
||||||
|
hc mousebind $Mod-Button2 zoom
|
||||||
|
hc mousebind $Mod-Button3 resize
|
||||||
|
|
||||||
|
# focus
|
||||||
|
hc keybind $Mod-BackSpace cycle_monitor
|
||||||
|
hc keybind $Mod-Tab cycle_all +1
|
||||||
|
hc keybind $Mod-j cycle +1
|
||||||
|
hc keybind $Mod-Shift-Tab cycle_all -1
|
||||||
|
hc keybind $Mod-k cycle -1
|
||||||
|
hc keybind $Mod-c cycle
|
||||||
|
hc keybind $Mod-i jumpto urgent
|
||||||
|
|
||||||
|
# theme
|
||||||
|
hc attr theme.tiling.reset 1
|
||||||
|
hc attr theme.floating.reset 1
|
||||||
|
hc set frame_border_width 0
|
||||||
|
hc set always_show_frame 0
|
||||||
|
hc set frame_bg_transparent 1
|
||||||
|
hc set frame_transparent_width 0
|
||||||
|
hc set frame_gap 0
|
||||||
|
|
||||||
|
hc attr theme.active.color "$hlwm_color11"
|
||||||
|
hc attr theme.normal.color "$hlwm_color8"
|
||||||
|
hc attr theme.urgent.color "$hlwm_color9"
|
||||||
|
hc attr theme.inner_width 0
|
||||||
|
hc attr theme.outer_width 0
|
||||||
|
hc attr theme.border_width 2
|
||||||
|
hc attr theme.background_color "$hlwm_background"
|
||||||
|
|
||||||
|
hc set window_gap 0
|
||||||
|
hc set frame_padding 4
|
||||||
|
hc set smart_window_surroundings 0
|
||||||
|
hc set smart_frame_surroundings 0
|
||||||
|
hc set mouse_recenter_gap 0
|
||||||
|
|
||||||
|
# rules
|
||||||
|
hc unrule -F
|
||||||
|
#hc rule class=XTerm tag=3 # move all xterms to tag 3
|
||||||
|
hc rule focus=on # normally focus new clients
|
||||||
|
#hc rule focus=off # normally do not focus new clients
|
||||||
|
# give focus to most common terminals
|
||||||
|
#hc rule class~"(.*[Rr]xvt.*|.*[Tt]erm|Konsole)" focus=on
|
||||||
|
hc rule windowtype~"_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)" pseudotile=on
|
||||||
|
hc rule windowtype="_NET_WM_WINDOW_TYPE_DIALOG" focus=on
|
||||||
|
hc rule windowtype~"_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)" manage=off
|
||||||
|
|
||||||
|
hc rule class=XTerm pseudotile=on
|
||||||
|
hc rule class=Firefox instance=Navigator fullscreen=on tag=3
|
||||||
|
hc rule class="Tor Browser" pseudotile=on tag=3
|
||||||
|
hc rule class=SshAskpass pseudotile=on
|
||||||
|
hc rule class=Snes9x-gtk pseudotile=on
|
||||||
|
|
||||||
|
hc set tree_style "╾│ ├└╼─┐"
|
||||||
|
#hc set tree_style "-| |'>-."
|
||||||
|
|
||||||
|
# unlock, just to be sure
|
||||||
|
hc unlock
|
||||||
|
|
||||||
|
hc detect_monitors
|
||||||
|
|
||||||
|
if [ -f ~/.config/herbstluftwm/herbstpanel.sh ]; then
|
||||||
|
font_height=13
|
||||||
|
bar_height=$(($font_height))
|
||||||
|
for m in $(hc list_monitors | cut -d : -f 1); do
|
||||||
|
hc pad "$m" 0 0 $bar_height 0
|
||||||
|
hc monitor_rect "$m" | {
|
||||||
|
read -r x y w h
|
||||||
|
y=$(($y + $h - $bar_height - 1))
|
||||||
|
printf "%s\t%u\t%u\t%u\t%u\n" \
|
||||||
|
"$m" "$x" "$y" "$w" $bar_height
|
||||||
|
}
|
||||||
|
done | sh ~/.config/herbstluftwm/herbstpanel.sh
|
||||||
|
fi
|
83
xdg-config-dir/herbstluftwm/herbstpanel.sh
Normal file
83
xdg-config-dir/herbstluftwm/herbstpanel.sh
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
if [ -f ~/.config/herbstluftwm/theme ]; then
|
||||||
|
. ~/.config/herbstluftwm/theme
|
||||||
|
fi
|
||||||
|
|
||||||
|
tagstatus() {
|
||||||
|
mon=$1
|
||||||
|
herbstclient tag_status "$mon" | tr "\t" "\n" | {
|
||||||
|
out=
|
||||||
|
while IFS= read -r line; do
|
||||||
|
[ -z "$line" ] && continue
|
||||||
|
tag=${line#[.:+#%!-]}
|
||||||
|
|
||||||
|
rev=
|
||||||
|
color=$hlwm_color8
|
||||||
|
case $line in
|
||||||
|
:*) color=$hlwm_foreground
|
||||||
|
;;
|
||||||
|
[#-]*) color=$hlwm_color14
|
||||||
|
;;
|
||||||
|
[%+]*) color=$hlwm_color6
|
||||||
|
;;
|
||||||
|
!*) color=$hlwm_color13
|
||||||
|
focused=$(herbstclient attr tags.focus.name)
|
||||||
|
if [ "$tag" = "$focused" ]; then
|
||||||
|
color=$hlwm_color14
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
o=$o"%{O1}%{U$color+u}%{O5}%{U--u}"
|
||||||
|
done
|
||||||
|
printf "%%{c}%s%%{O1}\n" "$o"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
taglist() {
|
||||||
|
mon=$1
|
||||||
|
tagstatus "$mon"
|
||||||
|
herbstclient -i "tag_changed|tag_flags" \
|
||||||
|
| while read -r discard; do
|
||||||
|
tagstatus "$mon"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 0 ]; then
|
||||||
|
printf "Usage: %s monitor x y width height\n" "${0##*/}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while IFS=" " read -r m x y w h; do
|
||||||
|
left=
|
||||||
|
center=
|
||||||
|
right=
|
||||||
|
{
|
||||||
|
taglist "$m" &
|
||||||
|
spoon -t &
|
||||||
|
} | while IFS= read line; do
|
||||||
|
case $line in
|
||||||
|
"%{c}"*)
|
||||||
|
center=$line
|
||||||
|
;;
|
||||||
|
"%{r}"*)
|
||||||
|
right=$line
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
printf "%s%s%s\n" "$left" "$center" "$right"
|
||||||
|
done | lemonbar -g "$w"x"$h"+"$x"+"$y" \
|
||||||
|
-B "$hlwm_background" -F "$hlwm_foreground" \
|
||||||
|
-f "$hlwm_font" | sh &
|
||||||
|
done
|
||||||
|
herbstclient -w reload >/dev/null
|
||||||
|
kill 0
|
33
xdg-config-dir/herbstluftwm/theme
Normal file
33
xdg-config-dir/herbstluftwm/theme
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# env
|
||||||
|
# Written in 2019 by Lucas
|
||||||
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any
|
||||||
|
# warranty. You should have received a copy of the CC0 Public Domain
|
||||||
|
# Dedication along with this software. If not, see
|
||||||
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
: ${hlwm_color0="#000000"}
|
||||||
|
: ${hlwm_color1="#cc2900"}
|
||||||
|
: ${hlwm_color2="#29cc00"}
|
||||||
|
: ${hlwm_color3="#cca300"}
|
||||||
|
: ${hlwm_color4="#0029cc"}
|
||||||
|
: ${hlwm_color5="#cc00a3"}
|
||||||
|
: ${hlwm_color6="#00a3cc"}
|
||||||
|
: ${hlwm_color7="#cccccc"}
|
||||||
|
: ${hlwm_color8="#333333"}
|
||||||
|
: ${hlwm_color9="#ff5c33"}
|
||||||
|
: ${hlwm_color10="#5cff33"}
|
||||||
|
: ${hlwm_color11="#ffd633"}
|
||||||
|
: ${hlwm_color12="#335cff"}
|
||||||
|
: ${hlwm_color13="#ff33d6"}
|
||||||
|
: ${hlwm_color14="#33d6ff"}
|
||||||
|
: ${hlwm_color15="#ffffff"}
|
||||||
|
: ${hlwm_background="#0d0a00"}
|
||||||
|
: ${hlwm_foreground="#fffcf2"}
|
||||||
|
|
||||||
|
: ${hlwm_font="-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1"}
|
||||||
|
#: ${hlwm_font="-lucy-tewi-medium-r-normal--11-90-100-100-c-60-iso10646-1"}
|
||||||
|
: ${hlwm_face="monospace:size=9"}
|
Loading…
Reference in New Issue
Block a user