Commit: a0d8ec709affc5de3bd1dd10e0e012a45efff111 Parent: 3a0c50a6309c9889f0679c3e15d43b33ebc54275 Author: 0x766F6964 Date: Sun, 10 Nov 2019 17:29:14 -0700 add etc/portage and ntpd.conf Diffstat:
46 files changed, 1526 insertions(+), 0 deletions(-)
diff --git a/etc/ntpd.conf b/etc/ntpd.conf @@ -0,0 +1 @@ +servers pool.ntp.org diff --git a/etc/portage/env/debug b/etc/portage/env/debug @@ -0,0 +1,2 @@ +FEATURES="splitdebug" +CFLAGS="${CFLAGS} -ggdb" diff --git a/etc/portage/env/nobloat b/etc/portage/env/nobloat @@ -0,0 +1 @@ +CFLAGS="${CFLAGS} -fno-unwind-tables -fno-asynchronous-unwind-tables -fomit-frame-pointer" diff --git a/etc/portage/env/noerror b/etc/portage/env/noerror @@ -0,0 +1 @@ +CFLAGS="${CFlAGS} -Wno-error=format-overflow" diff --git a/etc/portage/env/nostrip b/etc/portage/env/nostrip @@ -0,0 +1 @@ +LDFLAGS="${LDFLAGS} -static" diff --git a/etc/portage/env/pic b/etc/portage/env/pic @@ -0,0 +1 @@ +CFLAGS="${CFLAGS} -fPIC" diff --git a/etc/portage/env/static b/etc/portage/env/static @@ -0,0 +1,2 @@ +CFLAGS="${CFLAGS} -static" +LDFLAGS="${LDFLAGS} -s -static" diff --git a/etc/portage/env/tcc b/etc/portage/env/tcc @@ -0,0 +1,2 @@ +CC=/usr/l/bin/tcc +LDFLAGS="" diff --git a/etc/portage/make.conf b/etc/portage/make.conf @@ -0,0 +1,39 @@ +CHOST="x86_64-gentoo-linux-musl" + +COMMON_FLAGS="-O2 -pipe -march=native" +CFLAGS="${COMMON_FLAGS}" +CXXFLAGS="${COMMON_FLAGS}" +FCFLAGS="${COMMON_FLAGS}" +FFLAGS="${COMMON_FLAGS}" + +EMERGE_DEFAULT_OPTS="--ask --verbose --jobs=4 --load-average 3.00" +MAKEOPTS="-j4 -l4" + +PORTAGE_COMPRESS="gzip" +PORTDIR="/usr/portage/gentoo" +DISTDIR="/usr/portage/distfiles" +PKGDIR="/usr/portage/packages" +ACCEPT_LICENSE="-* @FREE" +LC_MESSAGES=C + +USE="alsa ffmpeg libressl opengl savedconfig \ + minimal vaapi X xinerama xft wayland zstd \ + fontconfig truetype \ + flac ogg opus vorbis \ + gif jpeg png vpx -jpeg2k -svg -webp \ + -acl -accessibility -bzip2 -cups -cxx -deprecated -fortran \ + -gdbm -gnome -gnome-keyring -gnutls -idn -ldap -libinput \ + -ncurses -nls -openssl -pam -pcre -readline -smartcard \ + -dbus -gtk3 -pulseaudio -udev -udisks -systemd" + +ABI_X86="64" +CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" +LLVM_TARGETS="AMDGPU X86" +INPUT_DEVICES="mouse keyboard" +QEMU_SOFTMMU_TARGETS="x86_64" +VIDEO_CARDS="intel i965" +MICROCODE_SIGNATURES="-S" +#CONFIG_PROTECT="${CONFIG_PROTECT} /usr/bin/startx" + +LOCAL_PREFIX="/usr/l" + diff --git a/etc/portage/make.profile b/etc/portage/make.profile @@ -0,0 +1 @@ +/usr/portage/gentoo/profiles/default/linux/amd64/17.0/musl/hardened +\ No newline at end of file diff --git a/etc/portage/package.accept_keywords b/etc/portage/package.accept_keywords @@ -0,0 +1,30 @@ +*/*::0x766F6964 ** +media-gfx/ahoviewer ** +media-gfx/sxiv ** +x11-misc/dmenu ** +x11-misc/compton ** +www-client/qutebrowser ** +www-client/surf ** +media-sound/split2flac ** + +# what the h**k is the point of stable/unstable fonts +media-fonts/* ~amd64 + +~sys-kernel/linux-headers-4.19::musl ~amd64 +~sys-devel/gcc-9.2.0::musl ~amd64 + +~dev-lang/rust-1.34.2::musl ~amd64 + +=x11-misc/xidle-26052015 ~amd64 + +# Personally Unmasked +app-misc/abduco ~amd64 +games-emulation/higan ~amd64 +media-gfx/farbfeld ~amd64 +media-sound/ncmpcpp ~amd64 +media-video/mpv ~amd64 +net-misc/youtube-dl ~amd64 + +www-client/dillo ~amd64 + +www-client/palemoon ~amd64 diff --git a/etc/portage/package.env b/etc/portage/package.env @@ -0,0 +1,29 @@ +app-admin/pwgen static +app-misc/abduco static tcc +dev-lang/yasm static +dev-libs/libcdio static +dev-libs/libcdio-paranoia static +dev-libs/expat static pic +media-libs/mesa pic +media-libs/flac static +media-libs/libjpeg-turbo static pic +media-libs/libogg static pic +#media-libs/libvorbis static +media-libs/opus static pic +media-libs/tiff static +media-sound/lame static pic + +sys-base/sbase tcc +sys-devel/tcc tcc +x11-misc/dmenu tcc +x11-misc/xbanish tcc +x11-terms/st tcc +x11-wm/dwm tcc + +app-text/mupdf nobloat +app-shells/bash nobloat +media-libs/mesa nobloat +sys-apps/coreutils nobloat +www-client/firefox nobloat +#www-client/firefox nobloat noerror +www-client/palemoon nobloat diff --git a/etc/portage/package.license b/etc/portage/package.license @@ -0,0 +1,7 @@ +sys-kernel/* freedist + +sys-firmware/iwlwifi-6000-ucode ipw3945 + +>=sys-firmware/intel-microcode-20190618_p20190908 intel-ucode + +app-arch/unrar unRAR diff --git a/etc/portage/package.mask b/etc/portage/package.mask @@ -0,0 +1,25 @@ +dev-lang/rust::gentoo +>virtual/rust-1.34.2 +>virtual/cargo-1.34.2 +# gtk3 +>x11-themes/adwaita-icon-theme-3.22.0-r2 +>media-gfx/gimp-2.8.22-r5 + +>sys-boot/syslinux-4.07 + +<dev-util/android-tools-10.0.0 + +# Willh shitware +>sys-apps/openrc-0.17 + +# Don't need net-tools and iproute +sys-apps/iproute2 + +# pooteringware +media-sound/pulseaudio +sys-apps/systemd +#sys-fs/eudev +#sys-fs/udev +#sys-fs/udev-init-scripts +sys-fs/udisks +sys-power/upower diff --git a/etc/portage/package.unmask b/etc/portage/package.unmask @@ -0,0 +1,4 @@ +=www-client/firefox-52.9.0 +=www-client/firefox-68.2.0 + +=dev-util/android-tools-5.1.1_p13 diff --git a/etc/portage/package.use/app b/etc/portage/package.use/app @@ -0,0 +1,9 @@ +app-arch/libarchive -e2fsprogs +app-crypt/gcr -gtk +app-crypt/gnupg -ssl +app-crypt/mit-krb5 -keyutils -pkinit +app-editors/emacs gtk gtk2 dynamic-loading +app-emulation/qemu gtk usb -pin-upstream-blobs -curl -vnc QEMU_USER_TARGETS: x86_64 +app-shells/bash -net +app-shells/dash static +app-text/mupdf -opengl -curl -javascript -ssl diff --git a/etc/portage/package.use/dev b/etc/portage/package.use/dev @@ -0,0 +1,10 @@ +dev-db/sqlite secure-delete +dev-lang/python ncurses readline +dev-lang/python:2.7 sqlite +dev-lang/python sqlite +dev-lang/rust system-llvm +dev-libs/boost nls +dev-libs/elfutils -utils +dev-libs/libressl static-libs -asm +dev-libs/nss -nss-pem +dev-vcs/git -python -perl -pcre -webdav diff --git a/etc/portage/package.use/games b/etc/portage/package.use/games @@ -0,0 +1 @@ +games-emulation/higan ao -udev diff --git a/etc/portage/package.use/gnome b/etc/portage/package.use/gnome @@ -0,0 +1 @@ +gnome-base/librsvg -vala diff --git a/etc/portage/package.use/mail b/etc/portage/package.use/mail @@ -0,0 +1 @@ +mail-client/mutt imap sidebar smtp gpg debug diff --git a/etc/portage/package.use/media b/etc/portage/package.use/media @@ -0,0 +1,17 @@ +media-fonts/source-han-sans L10N: ja ko zh-TW +media-fonts/source-pro cjk +media-libs/audiofile -flac +media-libs/gegl -ffmpeg +media-libs/jbig2dec -png +media-libs/libbluray aacs +media-libs/libpng apng +media-libs/libvpx postproc +media-libs/mesa -llvm osmesa gles1 gles2 -vaapi +media-libs/tiff -jpeg +media-sound/alsa-utils ncurses +media-sound/lame -frontend +media-sound/mpd -fifo -mad -curl -icu -network +media-sound/ncmpcpp taglib outputs +media-sound/vorbis-tools -ogg123 +media-video/ffmpeg openssl libdrm libass mp3 x264 x265 -hardcoded-tables +media-video/mpv cli drm gbm lua -jpeg -xv -uchardet -vaapi diff --git a/etc/portage/package.use/net b/etc/portage/package.use/net @@ -0,0 +1,3 @@ +net-libs/nodejs -npm -ssl +net-misc/curl CURL_SSL: libressl -openssl +net-p2p/transmission gtk diff --git a/etc/portage/package.use/sys b/etc/portage/package.use/sys @@ -0,0 +1,22 @@ +sys-apps/busybox mdev -savedconfig +sys-apps/groff -X +sys-apps/hwids udev +sys-apps/man-db berkdb -manpager +sys-apps/portage -rsync-verify +sys-apps/shadow -cracklib +sys-apps/sysvinit static +sys-apps/util-linux -suid -cramfs static-libs +sys-devel/binutils cxx static-libs +sys-devel/gcc cxx lto +sys-devel/gdb -server -python +sys-devel/llvm gold +sys-firmware/ipxe -savedconfig +sys-fs/cryptsetup openssl urandom -argon2 -luks1_default +sys-fs/lvm2 device-mapper-only -thin +sys-kernel/gentoo-sources symlink experimental +sys-libs/binutils-libs static-libs +sys-libs/compiler-rt-sanitizers -libfuzzer -sanitize -xray +sys-libs/tdb python +sys-libs/tevent python +sys-libs/zlib minizip static-libs +sys-process/procps ncurses diff --git a/etc/portage/package.use/virtual b/etc/portage/package.use/virtual @@ -0,0 +1 @@ +virtual/ffmpeg x264 mp3 diff --git a/etc/portage/package.use/www b/etc/portage/package.use/www @@ -0,0 +1,2 @@ +www-client/firefox bindist clang eme-free gtk2 -system-jpeg system-libevent system-libvpx system-sqlite system-harfbuzz system-icu custom-optimization custom-cflags +www-client/lynx cjk diff --git a/etc/portage/package.use/x11 b/etc/portage/package.use/x11 @@ -0,0 +1,3 @@ +x11-base/xorg-server -minimal suid +x11-libs/cairo svg +x11-libs/libxcb xkb diff --git a/etc/portage/patches/dev-util/android-tools/cdefs.patch b/etc/portage/patches/dev-util/android-tools/cdefs.patch @@ -0,0 +1,70 @@ +diff --git a/core/libcutils/include/cutils/trace.h b/core/libcutils/include/cutils/trace.h +index fcbdc9b..4c70a2d 100644 +--- a/core/libcutils/include/cutils/trace.h ++++ b/core/libcutils/include/cutils/trace.h +@@ -22,13 +22,14 @@ + #include <stdbool.h> + #include <stdint.h> + #include <stdio.h> +-#include <sys/cdefs.h> + #include <sys/types.h> + #include <unistd.h> + + #include <cutils/compiler.h> + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + /** + * The ATRACE_TAG macro can be defined before including this header to trace +@@ -252,6 +253,8 @@ static inline void atrace_int64(uint64_t tag, const char* name, int64_t value) + } + } + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif // _LIBS_CUTILS_TRACE_H +diff --git a/core/liblog/include/log/log_main.h b/core/liblog/include/log/log_main.h +index 68c2e9a..da16158 100644 +--- a/core/liblog/include/log/log_main.h ++++ b/core/liblog/include/log/log_main.h +@@ -18,9 +18,10 @@ + #define _LIBS_LOG_LOG_MAIN_H + + #include <android/log.h> +-#include <sys/cdefs.h> + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + /* + * Normally we strip the effects of ALOGV (VERBOSE messages), +@@ -384,6 +385,8 @@ int __android_log_is_loggable_len(int prio, const char* tag, size_t len, + #pragma clang diagnostic pop + #endif + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* _LIBS_LOG_LOG_MAIN_H */ +diff --git a/core/liblog/log_portability.h b/core/liblog/log_portability.h +index 88805c7..05ba532 100644 +--- a/core/liblog/log_portability.h ++++ b/core/liblog/log_portability.h +@@ -17,7 +17,6 @@ + #ifndef _LIBLOG_PORTABILITY_H__ + #define _LIBLOG_PORTABILITY_H__ + +-#include <sys/cdefs.h> + #include <unistd.h> + + /* Helpful private sys/cdefs.h like definitions */ diff --git a/etc/portage/patches/net-fs/samba/netdb-defines.patch b/etc/portage/patches/net-fs/samba/netdb-defines.patch @@ -0,0 +1,19 @@ +diff --git a/nsswitch/wins.c b/nsswitch/wins.c +index dccb6dd..bb24acb 100644 +--- a/nsswitch/wins.c ++++ b/nsswitch/wins.c +@@ -39,6 +39,14 @@ static pthread_mutex_t wins_nss_mutex = PTHREAD_MUTEX_INITIALIZER; + #define INADDRSZ 4 + #endif + ++#ifndef NETDB_INTERNAL ++#define NETDB_INTERNAL -1 ++#endif ++ ++#ifndef NETDB_SUCCESS ++#define NETDB_SUCCESS 0 ++#endif ++ + NSS_STATUS _nss_wins_gethostbyname_r(const char *hostname, + struct hostent *he, + char *buffer, diff --git a/etc/portage/patches/sys-apps/iucode_tool/limits.patch b/etc/portage/patches/sys-apps/iucode_tool/limits.patch @@ -0,0 +1,12 @@ +diff --git a/iucode_tool.c b/iucode_tool.c +index 04fad5a..693d0f5 100644 +--- a/iucode_tool.c ++++ b/iucode_tool.c +@@ -16,6 +16,7 @@ + + #include "iucode_tool_config.h" + ++#include <limits.h> + #include <stdint.h> + #include <sys/types.h> + #include <sys/stat.h> diff --git a/etc/portage/patches/www-client/firefox/disable_rustc_check.patch b/etc/portage/patches/www-client/firefox/disable_rustc_check.patch @@ -0,0 +1,26 @@ +# HG changeset patch +# Parent 88c736be60c502525eafd4feeb6395484e2f7989 +Disable the rustc check on musl as our triplet fails mozilla upstream + +diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure +--- a/build/moz.configure/rust.configure ++++ b/build/moz.configure/rust.configure +@@ -188,16 +188,18 @@ def rust_compiler(rustc_info, cargo_info + def rust_supported_targets(rustc): + out = check_cmd_output(rustc, '--print', 'target-list').splitlines() + # The os in the triplets used by rust may match the same OSes, in which + # case we need to check the raw_os instead. + per_os = {} + ambiguous = set() + per_raw_os = {} + for t in out: ++ if 'gentoo' not in t: ++ continue + t = split_triplet(t, allow_unknown=True) + endianness = t.endianness + if t.cpu.startswith('thumb') and endianness not in ('big', 'little'): + endianness = 'little' + key = (t.cpu, endianness, t.os) + if key in per_os: + previous = per_os[key] + per_raw_os[(previous.cpu, previous.endianness, diff --git a/etc/portage/patches/x11-wm/dwm/barheight.patch b/etc/portage/patches/x11-wm/dwm/barheight.patch @@ -0,0 +1,13 @@ +diff --git a/dwm.c b/dwm.c +index ec6a27c..fa4f8e9 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -1546,7 +1546,7 @@ setup(void) + if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) + die("no fonts could be loaded."); + lrpad = drw->fonts->h; +- bh = drw->fonts->h + 2; ++ bh = drw->fonts->h + 8; + updategeom(); + /* init atoms */ + utf8string = XInternAtom(dpy, "UTF8_STRING", False); diff --git a/etc/portage/patches/x11-wm/dwm/dwm-bottomstack-6.1.patch b/etc/portage/patches/x11-wm/dwm/dwm-bottomstack-6.1.patch @@ -0,0 +1,101 @@ +diff --git a/config.def.h b/config.def.h +index 7054c06..554f1db 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -39,6 +39,8 @@ static const Layout layouts[] = { + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, ++ { "TTT", bstack }, ++ { "===", bstackhoriz }, + }; + + /* key definitions */ +@@ -74,6 +76,8 @@ static Key keys[] = { + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, ++ { MODKEY, XK_u, setlayout, {.v = &layouts[3]} }, ++ { MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, +diff --git a/dwm.c b/dwm.c +index 0362114..c313b5e 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -233,6 +233,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); + static int xerrordummy(Display *dpy, XErrorEvent *ee); + static int xerrorstart(Display *dpy, XErrorEvent *ee); + static void zoom(const Arg *arg); ++static void bstack(Monitor *m); ++static void bstackhoriz(Monitor *m); + + /* variables */ + static const char broken[] = "broken"; +@@ -2139,3 +2141,65 @@ main(int argc, char *argv[]) + XCloseDisplay(dpy); + return EXIT_SUCCESS; + } ++ ++static void ++bstack(Monitor *m) { ++ int w, h, mh, mx, tx, ty, tw; ++ unsigned int i, n; ++ Client *c; ++ ++ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); ++ if (n == 0) ++ return; ++ if (n > m->nmaster) { ++ mh = m->nmaster ? m->mfact * m->wh : 0; ++ tw = m->ww / (n - m->nmaster); ++ ty = m->wy + mh; ++ } else { ++ mh = m->wh; ++ tw = m->ww; ++ ty = m->wy; ++ } ++ for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { ++ if (i < m->nmaster) { ++ w = (m->ww - mx) / (MIN(n, m->nmaster) - i); ++ resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0); ++ mx += WIDTH(c); ++ } else { ++ h = m->wh - mh; ++ resize(c, tx, ty, tw - (2 * c->bw), h - (2 * c->bw), 0); ++ if (tw != m->ww) ++ tx += WIDTH(c); ++ } ++ } ++} ++ ++static void ++bstackhoriz(Monitor *m) { ++ int w, mh, mx, tx, ty, th; ++ unsigned int i, n; ++ Client *c; ++ ++ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); ++ if (n == 0) ++ return; ++ if (n > m->nmaster) { ++ mh = m->nmaster ? m->mfact * m->wh : 0; ++ th = (m->wh - mh) / (n - m->nmaster); ++ ty = m->wy + mh; ++ } else { ++ th = mh = m->wh; ++ ty = m->wy; ++ } ++ for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { ++ if (i < m->nmaster) { ++ w = (m->ww - mx) / (MIN(n, m->nmaster) - i); ++ resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0); ++ mx += WIDTH(c); ++ } else { ++ resize(c, tx, ty, m->ww - (2 * c->bw), th - (2 * c->bw), 0); ++ if (th != m->wh) ++ ty += HEIGHT(c); ++ } ++ } ++} diff --git a/etc/portage/patches/x11-wm/dwm/fakefullscreen.patch b/etc/portage/patches/x11-wm/dwm/fakefullscreen.patch @@ -0,0 +1,138 @@ +diff --git a/config.def.h b/config.def.h +index 1c0b587..1db5e32 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -17,6 +17,7 @@ static const char *colors[][3] = { + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, + }; ++static int realfullscreen = 0; + + /* tagging */ + static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +@@ -94,6 +95,7 @@ static Key keys[] = { + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, ++ { MODKEY|ShiftMask, XK_y, togglerealfull, {0} }, + }; + + /* button definitions */ +diff --git a/dwm.c b/dwm.c +index 4465af1..72fefd1 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -187,6 +187,7 @@ static Client *nexttiled(Client *c); + static void pop(Client *); + static void propertynotify(XEvent *e); + static void quit(const Arg *arg); ++static void togglerealfull(const Arg *arg); + static Monitor *recttomon(int x, int y, int w, int h); + static void resize(Client *c, int x, int y, int w, int h, int interact); + static void resizeclient(Client *c, int x, int y, int w, int h); +@@ -521,7 +522,7 @@ clientmessage(XEvent *e) + if (cme->data.l[1] == netatom[NetWMFullscreen] + || cme->data.l[2] == netatom[NetWMFullscreen]) + setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */ +- || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen))); ++ || (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen && !realfullscreen))); + } else if (cme->message_type == netatom[NetActiveWindow]) { + if (c != selmon->sel && !c->isurgent) + seturgent(c, 1); +@@ -564,9 +565,10 @@ configurenotify(XEvent *e) + drw_resize(drw, sw, bh); + updatebars(); + for (m = mons; m; m = m->next) { +- for (c = m->clients; c; c = c->next) +- if (c->isfullscreen) +- resizeclient(c, m->mx, m->my, m->mw, m->mh); ++ if (realfullscreen) ++ for (c = m->clients; c; c = c->next) ++ if (c->isfullscreen) ++ resizeclient(c, m->mx, m->my, m->mw, m->mh); + XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); + } + focus(NULL); +@@ -1143,7 +1145,7 @@ movemouse(const Arg *arg) + + if (!(c = selmon->sel)) + return; +- if (c->isfullscreen) /* no support moving fullscreen windows by mouse */ ++ if (realfullscreen && c->isfullscreen) /* no support moving fullscreen windows by mouse */ + return; + restack(selmon); + ocx = c->x; +@@ -1476,24 +1478,28 @@ setfullscreen(Client *c, int fullscreen) + XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, + PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1); + c->isfullscreen = 1; +- c->oldstate = c->isfloating; +- c->oldbw = c->bw; +- c->bw = 0; +- c->isfloating = 1; +- resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); +- XRaiseWindow(dpy, c->win); ++ if (realfullscreen) { ++ c->oldstate = c->isfloating; ++ c->oldbw = c->bw; ++ c->bw = 0; ++ c->isfloating = 1; ++ resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); ++ XRaiseWindow(dpy, c->win); ++ } + } else if (!fullscreen && c->isfullscreen){ + XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, + PropModeReplace, (unsigned char*)0, 0); + c->isfullscreen = 0; +- c->isfloating = c->oldstate; +- c->bw = c->oldbw; +- c->x = c->oldx; +- c->y = c->oldy; +- c->w = c->oldw; +- c->h = c->oldh; +- resizeclient(c, c->x, c->y, c->w, c->h); +- arrange(c->mon); ++ if (realfullscreen) { ++ c->isfloating = c->oldstate; ++ c->bw = c->oldbw; ++ c->x = c->oldx; ++ c->y = c->oldy; ++ c->w = c->oldw; ++ c->h = c->oldh; ++ resizeclient(c, c->x, c->y, c->w, c->h); ++ arrange(c->mon); ++ } + } + } + +@@ -1618,7 +1624,7 @@ showhide(Client *c) + if (ISVISIBLE(c)) { + /* show clients top down */ + XMoveWindow(dpy, c->win, c->x, c->y); +- if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) ++ if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !realfullscreen && !c->isfullscreen) + resize(c, c->x, c->y, c->w, c->h, 0); + showhide(c->snext); + } else { +@@ -1710,7 +1716,7 @@ togglefloating(const Arg *arg) + { + if (!selmon->sel) + return; +- if (selmon->sel->isfullscreen) /* no support for fullscreen windows */ ++ if (realfullscreen && selmon->sel->isfullscreen) /* no support for fullscreen windows */ + return; + selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed; + if (selmon->sel->isfloating) +@@ -1719,6 +1725,12 @@ togglefloating(const Arg *arg) + arrange(selmon); + } + ++void ++togglerealfull(const Arg *arg) ++{ ++ realfullscreen = ~realfullscreen; ++} ++ + void + toggletag(const Arg *arg) + { diff --git a/etc/portage/patches/x11-wm/dwm/hide_vacant_tags-git-2018-03-24.patch b/etc/portage/patches/x11-wm/dwm/hide_vacant_tags-git-2018-03-24.patch @@ -0,0 +1,52 @@ +diff --git a/dwm.c b/dwm.c +index c98678d..034ecc0 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -416,7 +416,7 @@ attachstack(Client *c) + void + buttonpress(XEvent *e) + { +- unsigned int i, x, click; ++ unsigned int i, x, click, occ = 0; + Arg arg = {0}; + Client *c; + Monitor *m; +@@ -431,9 +431,13 @@ buttonpress(XEvent *e) + } + if (ev->window == selmon->barwin) { + i = x = 0; +- do ++ for (c = m->clients; c; c = c->next) ++ occ |= c->tags == 255 ? 0 : c->tags; ++ do { ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + x += TEXTW(tags[i]); +- while (ev->x >= x && ++i < LENGTH(tags)); ++ } while (ev->x >= x && ++i < LENGTH(tags)); + if (i < LENGTH(tags)) { + click = ClkTagBar; + arg.ui = 1 << i; +@@ -709,19 +713,17 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { +- occ |= c->tags; ++ occ |= c->tags == 255 ? 0 : c->tags; + if (c->isurgent) + urg |= c->tags; + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + w = TEXTW(tags[i]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); +- if (occ & 1 << i) +- drw_rect(drw, x + boxs, boxs, boxw, boxw, +- m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +- urg & 1 << i); + x += w; + } + w = blw = TEXTW(m->ltsymbol); diff --git a/etc/portage/profile/package.provided b/etc/portage/profile/package.provided @@ -0,0 +1,5 @@ +dev-libs/libbsd-0.8.6 # provided by musl +#sys-libs/zlib-1.2.11-r1 # sortix libz +#sys-fs/eudev-3.2.5 # mdev +virtual/udev-217 # mdev +#virtual/libudev-232 # mdev diff --git a/etc/portage/profile/packages b/etc/portage/profile/packages @@ -0,0 +1 @@ +-*sys-apps/iproute2 diff --git a/etc/portage/repo.postsync.d/example b/etc/portage/repo.postsync.d/example @@ -0,0 +1,51 @@ +#!/bin/sh +# Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for +# Portage to process it. +# +# With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple +# times after syncing each repository. +# +# Older versions of Portage support syncing only one repository. +# In those versions, the postsync.d hooks will be called only once, +# and they will not be passed any parameters. + +# On a repo.postsync.d hook call, positional parameters contain +# information about the just-synced repository. + +# Your hook can control it's actions depending on any of the three +# parameters passed in to it. +# +# They are as follows: +# +# The repository name. +repository_name=${1} +# The URI to which the repository was synced. +sync_uri=${2} +# The path to the repository. +repository_path=${3} + +# Portage assumes that a hook succeeded if it exits with 0 code. If no +# explicit exit is done, the exit code is the exit code of last spawned +# command. Since our script is a bit more complex, we want to control +# the exit code explicitly. +ret=0 + +if [ -n "${repository_name}" ]; then + # Repository name was provided, so we're in a post-repository hook. + echo "* In post-repository hook for ${repository_name}" + echo "** synced from remote repository ${sync_uri}" + echo "** synced into ${repository_path}" + + # Gentoo comes with pregenerated cache but the other repositories + # usually don't. Generate them to improve performance. + if [ "${repository_name}" != "gentoo" ]; then + if ! egencache --update --repo="${repository_name}" --jobs=4 + then + echo "!!! egencache failed!" + ret=1 + fi + fi +fi + +# Return explicit status. +exit "${ret}" diff --git a/etc/portage/repos.conf b/etc/portage/repos.conf @@ -0,0 +1,21 @@ +[DEFAULT] +main-repo = gentoo + +[gentoo] +location = /usr/portage/gentoo +sync-type = git +sync-uri = https://anongit.gentoo.org/git/repo/sync/gentoo.git + +[0x766F6964] +location = /usr/portage/local +priority = 1000 + +[musl] +location = /usr/portage/musl +sync-type = git +sync-uri = git://anongit.gentoo.org/proj/musl.git + +[palemoon] +location = /usr/portage/palemoon +sync-type = git +sync-uri = https://github.com/deu/palemoon-overlay.git diff --git a/etc/portage/savedconfig/app-misc/abduco-0.6 b/etc/portage/savedconfig/app-misc/abduco-0.6 @@ -0,0 +1,19 @@ +/* default command to execute if non is given and $ABDUCO_CMD is unset */ +#define ABDUCO_CMD "st" +/* default detach key, can be overriden at run time using -e option */ +static char KEY_DETACH = CTRL('\\'); +/* redraw key to send a SIGWINCH signal to underlying process + * (set to 0 to disable the redraw key) */ +static char KEY_REDRAW = 0; +/* Where to place the "abduco" directory storing all session socket files. + * The first directory to succeed is used. */ +static struct Dir { + char *path; /* fixed (absolute) path to a directory */ + char *env; /* environment variable to use if (set) */ + bool personal; /* if false a user owned sub directory will be created */ +} socket_dirs[] = { + { .env = "ABDUCO_SOCKET_DIR", false }, + { .env = "HOME", true }, + { .env = "TMPDIR", false }, + { .path = "/tmp", false }, +}; diff --git a/etc/portage/savedconfig/x11-misc/dmenu-9999 b/etc/portage/savedconfig/x11-misc/dmenu-9999 @@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +/* Default settings; can be overriden by command line. */ + +static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ +/* -fn option overrides fonts[0]; default X11 font or font set */ +static const char *fonts[] = { + "monospace:size=12" +}; +static const char *prompt = NULL; /* -p option; prompt to the left of input field */ +static const char *colors[SchemeLast][2] = { + /* fg bg */ + [SchemeNorm] = { "#cccaca", "#1b1b1b", }, + [SchemeSel] = { "#e65080", "#1b1b1b" }, + [SchemeOut] = { "#000000", "#00ffff" }, +}; +/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ +static unsigned int lines = 0; + +/* + * Characters not considered part of a word while deleting words + * for example: " /?\"&[]" + */ +static const char worddelimiters[] = " "; diff --git a/etc/portage/savedconfig/x11-misc/slock-1.4 b/etc/portage/savedconfig/x11-misc/slock-1.4 @@ -0,0 +1,12 @@ +/* user and group to drop privileges to */ +static const char *user = "nobody"; +static const char *group = "nogroup"; + +static const char *colorname[NUMCOLS] = { + [INIT] = "black", /* after initialization */ + [INPUT] = "#141414", /* during input */ + [FAILED] = "#CC3333", /* wrong password */ +}; + +/* treat a cleared input like a wrong password (color) */ +static const int failonclear = 1; diff --git a/etc/portage/savedconfig/x11-misc/tabbed-0.6 b/etc/portage/savedconfig/x11-misc/tabbed-0.6 @@ -0,0 +1,59 @@ +// vim: syntax=c +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static const char font[] = "monospace:size=9"; +static const char* normbgcolor = "#202020"; +static const char* normfgcolor = "#999"; +static const char* selbgcolor = "#141414"; +static const char* selfgcolor = "#ccc2c2"; +static const char before[] = "<"; +static const char after[] = ">"; +static const int tabwidth = 150; +static const Bool foreground = True; + +/* + * Where to place a new tab when it is opened. When npisrelative is True, + * then the current position is changed + newposition. If npisrelative + * is False, then newposition is an absolute position. + */ +static int newposition = 0; +static Bool npisrelative = True; + +#define SETPROP(p) { \ + .v = (char *[]){ "/bin/sh", "-c", \ + "prop=\"`xwininfo -children -id $1 | grep '^ 0x' | sed -e's@^ *\\(0x[0-9a-f]*\\) \"\\([^\"]*\\)\".*@\\1 \\2@' | xargs -0 printf %b | dmenu -l 10`\" &&" \ + "xprop -id $1 -f $0 8s -set $0 \"$prop\"", \ + p, winid, NULL \ + } \ +} + +#define MODKEY ControlMask +static Key keys[] = { \ + /* modifier key function argument */ + { MODKEY|ShiftMask, XK_Return, focusonce, { 0 } }, + { MODKEY|ShiftMask, XK_Return, spawn, { 0 } }, + { MODKEY, XK_t, spawn, SETPROP("_TABBED_SELECT_TAB") }, + + { MODKEY|ShiftMask, XK_l, rotate, { .i = +1 } }, + { MODKEY|ShiftMask, XK_h, rotate, { .i = -1 } }, + { MODKEY|ShiftMask, XK_j, movetab, { .i = -1 } }, + { MODKEY|ShiftMask, XK_k, movetab, { .i = +1 } }, + { MODKEY, XK_Tab, rotate, { .i = 0 } }, + + { MODKEY, XK_1, move, { .i = 0 } }, + { MODKEY, XK_2, move, { .i = 1 } }, + { MODKEY, XK_3, move, { .i = 2 } }, + { MODKEY, XK_4, move, { .i = 3 } }, + { MODKEY, XK_5, move, { .i = 4 } }, + { MODKEY, XK_6, move, { .i = 5 } }, + { MODKEY, XK_7, move, { .i = 6 } }, + { MODKEY, XK_8, move, { .i = 7 } }, + { MODKEY, XK_9, move, { .i = 8 } }, + { MODKEY, XK_0, move, { .i = 9 } }, + + { MODKEY|ShiftMask, XK_\, killclient, { 0 } }, + + { 0, XK_F11, fullscreen, { 0 } }, +}; + diff --git a/etc/portage/savedconfig/x11-misc/tabbed-9999 b/etc/portage/savedconfig/x11-misc/tabbed-9999 @@ -0,0 +1,66 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +/* static const char font[] = "Go Mono:style=Bold:size=12"; */ +static const char font[] = "Gohu Gohufont:size=9"; +static const char* normbgcolor = "#1b1b1b"; +static const char* normfgcolor = "#999"; +static const char* selbgcolor = "#090909"; +static const char* selfgcolor = "#cccaca"; +static const char* urgbgcolor = "#111111"; +static const char* urgfgcolor = "#cc0000"; +static const char before[] = "<"; +static const char after[] = ">"; +static const char titletrim[] = "..."; +static const int tabwidth = 100; +static const Bool foreground = True; +static Bool urgentswitch = False; + +/* + * Where to place a new tab when it is opened. When npisrelative is True, + * then the current position is changed + newposition. If npisrelative + * is False, then newposition is an absolute position. + */ +static int newposition = 0; +static Bool npisrelative = True; + +#define SETPROP(p) { \ + .v = (char *[]){ "/bin/sh", "-c", \ + "prop=\"`xwininfo -children -id $1 | grep '^ 0x' |" \ + "sed 's:^ *\\(0x[0-9a-f]*\\) \"\\([^\"]*\\)\".*:\\1 \\2:' |" \ + "xargs -0 printf %b | dmenu -l 10 -w $1`\" &&" \ + "xprop -id $1 -f $0 8s -set $0 \"$prop\"", \ + p, winid, NULL \ + } \ +} + +#define MODKEY ControlMask +static Key keys[] = { + /* modifier key function argument */ + { MODKEY|ShiftMask, XK_Return, focusonce, { 0 } }, + { MODKEY|ShiftMask, XK_Return, spawn, { 0 } }, + + { MODKEY|ShiftMask, XK_l, rotate, { .i = +1 } }, + { MODKEY|ShiftMask, XK_h, rotate, { .i = -1 } }, + { MODKEY|ShiftMask, XK_j, movetab, { .i = -1 } }, + { MODKEY|ShiftMask, XK_k, movetab, { .i = +1 } }, + { MODKEY, XK_Tab, rotate, { .i = 0 } }, + { MODKEY, XK_grave, spawn, SETPROP("_TABBED_SELECT_TAB") }, + { MODKEY, XK_1, move, { .i = 0 } }, + { MODKEY, XK_2, move, { .i = 1 } }, + { MODKEY, XK_3, move, { .i = 2 } }, + { MODKEY, XK_4, move, { .i = 3 } }, + { MODKEY, XK_5, move, { .i = 4 } }, + { MODKEY, XK_6, move, { .i = 5 } }, + { MODKEY, XK_7, move, { .i = 6 } }, + { MODKEY, XK_8, move, { .i = 7 } }, + { MODKEY, XK_9, move, { .i = 8 } }, + { MODKEY, XK_0, move, { .i = 9 } }, + + { MODKEY|ShiftMask, XK_q, killclient, { 0 } }, + + { MODKEY, XK_u, focusurgent, { 0 } }, + { MODKEY|ShiftMask, XK_u, toggle, { .v = (void*) &urgentswitch } }, + + { 0, XK_F11, fullscreen, { 0 } }, +}; diff --git a/etc/portage/savedconfig/x11-terms/st-9999 b/etc/portage/savedconfig/x11-terms/st-9999 @@ -0,0 +1,459 @@ +/* See LICENSE file for copyright and license details. */ + +/* + * appearance + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +static char *font = "Go Mono:style=Regular:size=14:antialias=true:autohint=true"; +static int borderpx = 12; + +/* + * What program is execed by st depends of these precedence rules: + * 1: program passed with -e + * 2: utmp option + * 3: SHELL environment variable + * 4: value of shell in /etc/passwd + * 5: value of shell in config.h + */ +static char *shell = "/bin/sh"; +char *utmp = NULL; +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + +/* identification sequence returned in DA and DECID */ +char *vtiden = "\033[?6c"; + +/* Kerning / character bounding-box multipliers */ +static float cwscale = 1.0; +static float chscale = 1.0; + +/* + * word delimiter string + * + * More advanced example: L" `'\"()[]{}" + */ +wchar_t *worddelimiters = L" "; + +/* selection timeouts (in milliseconds) */ +static unsigned int doubleclicktimeout = 300; +static unsigned int tripleclicktimeout = 600; + +/* alt screens */ +int allowaltscreen = 1; + +/* frames per second st should at maximum draw to the screen */ +static unsigned int xfps = 360; +static unsigned int actionfps = 30; + +/* + * blinking timeout (set to 0 to disable blinking) for the terminal blinking + * attribute. + */ +static unsigned int blinktimeout = 800; + +/* + * thickness of underline and bar cursors + */ +static unsigned int cursorthickness = 2; + +/* + * bell volume. It must be a value between -100 and 100. Use 0 for disabling + * it + */ +static int bellvolume = 0; + +/* default TERM value */ +char *termname = "st-256color"; + +/* + * spaces per tab + * + * When you are changing this value, don't forget to adapt the »it« value in + * the st.info and appropriately install the st.info in the environment where + * you use this st version. + * + * it#$tabspaces, + * + * Secondly make sure your kernel is not expanding tabs. When running `stty + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by + * running following command: + * + * stty tabs + */ +unsigned int tabspaces = 8; + +/* Terminal colors (16 first used in escape sequence) */ +static const char *colorname[] = { + /* 8 normal colors */ + [0] = "#090909", /* black */ + [1] = "#e6404e", /* red */ + [2] = "#e65080", /* green */ + [3] = "#FA709E", /* yellow */ + [4] = "#a274f2", /* blue */ + [5] = "#f08abe", /* magenta */ + [6] = "#4492f4", /* cyan */ + [7] = "#999", /* white */ + + /* 8 bright colors */ + [8] = "#1b1b1b", /* black */ + [9] = "#ed5a67", /* red */ + [10] = "#e6618c", /* green */ + [11] = "#FA8AAF", /* yellow */ + [12] = "#b694f2", /* blue */ + [13] = "#eb9ac3", /* magenta */ + [14] = "#7178eb", /* cyan */ + [15] = "#cccaca", /* white */ + + [255] = 0, + + /* more colors can be added after 255 to use with DefaultXX */ + "#cccccc", + "#555555", +}; + + +/* + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +unsigned int defaultfg = 15; +unsigned int defaultbg = 0; +static unsigned int defaultcs = 256; +static unsigned int defaultrcs = 257; + +/* + * Default shape of cursor + * 2: Block ("█") + * 4: Underline ("_") + * 6: Bar ("|") + * 7: Snowman ("☃") + */ +static unsigned int cursorshape = 2; + +/* + * Default columns and rows numbers + */ + +static unsigned int cols = 80; +static unsigned int rows = 24; + +/* + * Default colour and shape of the mouse cursor + */ +static unsigned int mouseshape = XC_xterm; +static unsigned int mousefg = 7; +static unsigned int mousebg = 0; + +/* + * Color used to display font attributes when fontconfig selected a font which + * doesn't match the ones requested. + */ +static unsigned int defaultattr = 11; + +/* + * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). + * Note that if you want to use ShiftMask with selmasks, set this to an other + * modifier, set to 0 to not use it. + */ +static uint forcemousemod = ShiftMask; + +/* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. + */ +static MouseShortcut mshortcuts[] = { + /* mask button function argument release */ + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, +}; + +/* Internal keyboard shortcuts. */ +#define MODKEY Mod1Mask +#define TERMMOD (ControlMask|ShiftMask) + +static Shortcut shortcuts[] = { + /* mask keysym function argument */ + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, + { ControlMask, XK_Print, toggleprinter, {.i = 0} }, + { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, + { TERMMOD, XK_Prior, zoom, {.f = +1} }, + { TERMMOD, XK_Next, zoom, {.f = -1} }, + { TERMMOD, XK_Home, zoomreset, {.f = 0} }, + { TERMMOD, XK_C, clipcopy, {.i = 0} }, + { TERMMOD, XK_V, clippaste, {.i = 0} }, + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, +}; + +/* + * Special keys (change & recompile st.info accordingly) + * + * Mask value: + * * Use XK_ANY_MOD to match the key no matter modifiers state + * * Use XK_NO_MOD to match the key alone (no modifiers) + * appkey value: + * * 0: no value + * * > 0: keypad application mode enabled + * * = 2: term.numlock = 1 + * * < 0: keypad application mode disabled + * appcursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * + * Be careful with the order of the definitions because st searches in + * this table sequentially, so any XK_ANY_MOD must be in the last + * position for a key. + */ + +/* + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +static KeySym mappedkeys[] = { -1 }; + +/* + * State bits to ignore when matching key or button events. By default, + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. + */ +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + +/* + * This is the huge key array which defines all compatibility to the Linux + * world. Please decide about changes wisely. + */ +static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, + { XK_Up, ControlMask, "\033[1;5A", 0, 0}, + { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, + { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, + { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, + { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, + { XK_Down, ControlMask, "\033[1;5B", 0, 0}, + { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, + { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, + { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, + { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, + { XK_Left, ControlMask, "\033[1;5D", 0, 0}, + { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, + { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, + { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, + { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, + { XK_Right, ControlMask, "\033[1;5C", 0, 0}, + { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, + { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, + { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, + { XK_Return, XK_ANY_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, +}; + +/* + * Selection types' masks. + * Use the same masks as usual. + * Button1Mask is always unset, to make masks match between ButtonPress. + * ButtonRelease and MotionNotify. + * If no match is found, regular selection is used. + */ +static uint selmasks[] = { + [SEL_RECTANGULAR] = Mod1Mask, +}; + +/* + * Printable characters in ASCII, used to estimate the advance width + * of single wide characters. + */ +static char ascii_printable[] = + " !\"#$%&'()*+,-./0123456789:;<=>?" + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" + "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/etc/portage/savedconfig/x11-wm/dwm-9999 b/etc/portage/savedconfig/x11-wm/dwm-9999 @@ -0,0 +1,159 @@ +/* See LICENSE file for copyright and license details. */ + +/* Allow use of special keys */ +#include <X11/XF86keysym.h> + +/* appearance */ +static const unsigned int borderpx = 1; /* border pixel of windows */ +static const unsigned int snap = 32; /* snap pixel */ +static const int showbar = 1; /* 0 means no bar */ +static const int topbar = 1; /* 0 means bottom bar */ +static const char *fonts[] = { { "Go Mono:style=bold:size=14" }, + { "Source Han Sans CN:style=Medium:size=14" }, + { "Source Han Sans JP:style=Medium:size=14" }, + { "Source Han Sans KR:style=Medium:size=14" } }; +static const char dmenufont[] = "Go Mono:style=bold:size=14"; +static const char col_gray1[] = "#090909"; +static const char col_gray2[] = "#1b1b1b"; +static const char col_gray3[] = "#666666"; +static const char col_gray4[] = "#999999"; +static const char col_cyan[] = "#444444"; +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray1 }, + [SchemeSel] = { col_gray4, col_gray1, col_cyan }, +}; +static int realfullscreen = 0; + +/* tagging */ +static const char *tags[] = { "一", "二", "三", "四", "五", "六", "七", "八", "九" }; + +static const Rule rules[] = { + /* xprop(1): + * WM_CLASS(STRING) = instance, class + * WM_NAME(STRING) = title + */ + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 4, 1, -1 }, + { "mgba-sdl", NULL, NULL, 0, 1, -1 }, +/* { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, */ +}; + +/* layout(s) */ +static const float mfact = 0.60; /* factor of master area size [0.05..0.95] */ +static const int nmaster = 1; /* number of clients in master area */ +static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ + +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, + { "TTT", bstack }, + { "===", bstackhoriz }, +}; + +/* key definitions */ +#define MODKEY Mod1Mask +#define WINKEY Mod4Mask +#define TAGKEYS(KEY,TAG) \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + +/* commands */ +static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ +static const char *dmenucmd[] = { "dmenu_run", "-i", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_gray1, "-sf", col_gray4, NULL }; +static const char *termcmd[] = { "tabbed", "-r", "2", "st", "-w", "''", NULL }; +/* static const char *volupcmd[] = { "amixer", "-q", "set", "Speaker", "2+", NULL }; + * static const char *voldncmd[] = { "amixer", "-q", "set", "Speaker", "2-", NULL }; + * static const char *volmucmd[] = { "amixer", "-q", "set", "Speaker", "toggle", NULL }; + */ +static const char *volmucmd[] = { "amixer", "-q", "set", "IEC958", "toggle", NULL }; +static const char *mpdtog[] = { "mpdtoggle", NULL }; +static const char *mpdnext[] = { "mpdnext", NULL }; +static const char *mpdprev[] = { "mpdprev", NULL }; +static const char *lock[] = { "slock", NULL }; +static const char *rotleft[] = { "/home/opask/bin/rotatemon", "DP-1", "left", NULL }; +static const char *rotnorm[] = { "/home/opask/bin/rotatemon", "DP-1", "normal", NULL }; +static const char *rebootcmd[] = { "doas", "/sbin/shutdown", "-r", "now", NULL }; +static const char *quitcmd[] = { "doas", "/sbin/shutdown", "-h", "now", NULL }; +static const char *sleepcmd[] = { "doas", "/usr/l/bin/zzz", NULL }; + +static Key keys[] = { + /* modifier key function argument */ +/* { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volupcmd } }, + * { 0, XF86XK_AudioLowerVolume, spawn, {.v = voldncmd } }, + */ + { 0, XF86XK_AudioMute, spawn, {.v = volmucmd } }, + { 0, XF86XK_AudioPlay, spawn, {.v = mpdtog } }, + { 0, XF86XK_AudioNext, spawn, {.v = mpdnext } }, + { 0, XF86XK_AudioPrev, spawn, {.v = mpdprev } }, + { MODKEY|ShiftMask, XK_l, spawn, {.v = lock } }, + { WINKEY|ShiftMask, XK_p, spawn, {.v = quitcmd } }, + { WINKEY|ShiftMask, XK_r, spawn, {.v = rebootcmd } }, + { WINKEY|ShiftMask, XK_z, spawn, {.v = sleepcmd } }, + { WINKEY|ShiftMask, XK_9, spawn, {.v = rotleft } }, + { WINKEY|ShiftMask, XK_0, spawn, {.v = rotnorm } }, + { WINKEY|ShiftMask, XK_2, spawn, SHCMD("xscreenshot | ff2png > ~/apv/pic/screengrabs/$(date -u +%Y年%m月%d日-%T).png") }, + { WINKEY|ShiftMask, XK_3, spawn, SHCMD("xscreenshot $(pfw) | ff2png > ~/apv/pic/screengrabs/$(date -u +%Y年%m月%d日-%T).png") }, + { ControlMask, XK_space, spawn, SHCMD("kill $(pgrep -n notify)") }, + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY, XK_i, incnmaster, {.i = +1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.01} }, + { MODKEY, XK_l, setmfact, {.f = +0.01} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_u, setlayout, {.v = &layouts[3]} }, + { MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) + TAGKEYS( XK_4, 3) + TAGKEYS( XK_5, 4) + TAGKEYS( XK_6, 5) + TAGKEYS( XK_7, 6) + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, + { MODKEY|ShiftMask, XK_y, togglerealfull, {0} }, +}; + +/* button definitions */ +/* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ +static Button buttons[] = { + /* click event mask button function argument */ + { ClkLtSymbol, 0, Button1, setlayout, {0} }, + { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, + { ClkWinTitle, 0, Button2, zoom, {0} }, + { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, + { ClkClientWin, MODKEY, Button1, movemouse, {0} }, + { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, + { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button1, tag, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, +}; + diff --git a/etc/portage/smart-live-rebuild.conf b/etc/portage/smart-live-rebuild.conf @@ -0,0 +1,3 @@ +[smart-live-rebuild] +jobs = 6 +# quickpkg = on