aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bashrc3
-rw-r--r--.config/X11/Xresources2
-rw-r--r--.config/alacritty/alacritty.yml5
-rw-r--r--.config/nixpkgs/config.nix31
-rw-r--r--.config/nixpkgs/packages/awesome/package.nix98
-rw-r--r--.config/nixpkgs/packages/rxvt-unicode/package.nix102
-rw-r--r--.config/nixpkgs/packages/wf-shell/package.nix2
-rw-r--r--.config/nixpkgs/shells/cake/shell.nix55
-rw-r--r--.config/seance/spirits13
-rw-r--r--.config/tmux/tmux.conf54
-rwxr-xr-x.local/bin/dropdown-terminal2
-rwxr-xr-x.local/bin/seance124
-rwxr-xr-x.local/bin/wrappers/google-chrome (renamed from .local/bin/wrappers/google-chrome-stable)0
-rwxr-xr-x.local/bin/wrappers/mocp2
-rw-r--r--.vim/vimrc1
15 files changed, 306 insertions, 188 deletions
diff --git a/.bashrc b/.bashrc
index c1310a0..8d9a9f5 100644
--- a/.bashrc
+++ b/.bashrc
@@ -94,7 +94,6 @@ alias lsblk='lsblk -o NAME,MAJ:MIN,RM,SIZE,FSTYPE,RO,TYPE,MOUNTPOINT,MODEL'
alias lxc-attach='lxc-attach --clear-env --name'
alias lxc-ls='lxc-ls --fancy'
alias lynx='lynx -cfg ~/.config/lynx/lynx.cfg'
-alias mocp='mocp -M $XDG_CONFIG_HOME/moc'
alias newsboat='newsboat -c $XDG_CONFIG_HOME/newsboat/cache.db -u $XDG_CONFIG_HOME/newsboat/urls -C $XDG_CONFIG_HOME/newsboat/config'
alias nix-index='nix-index --db $XDG_DATA_HOME/nix-index'
alias nix-locate='nix-locate --db $XDG_DATA_HOME/nix-index'
@@ -128,7 +127,7 @@ docker-rootfs() { id=$(docker run --detach "$1" /bin/true) \
shellquote() { printf '%q\n' "$(cat)"; }
# show window title of last command (https://stackoverflow.com/a/5080670)
-trap 'echo -ne "\033]2;command: $PWD $(history 1 | sed "s/^[ ]*[0-9]*[ ]*//g")\007"' DEBUG
+trap 'echo -ne "\033]2;term: $PWD $(history 1 | tr -s " " | cut -d " " -f 5-)\007"' DEBUG
# swallow
swallow() { "$@" & disown; exit; }
diff --git a/.config/X11/Xresources b/.config/X11/Xresources
index e951b1e..d551748 100644
--- a/.config/X11/Xresources
+++ b/.config/X11/Xresources
@@ -11,7 +11,7 @@ URxvt.keysym.C-Down: perl:font-size:decrease
URxvt.keysym.C-Up: perl:font-size:increase
URxvt.keysym.M-Escape: perl:keyboard-select:activate
URxvt.matcher.button: 1
-URxvt.perl-ext-common: default,matcher,font-size,vtwheel,url-select,keyboard-select
+URxvt.perl-ext-common: default,matcher,font-size,vtwheel,url-select,keyboard-select,-confirm-paste
URxvt.scrollBar: false
URxvt.scrollTtyKeypress: true
URxvt.scrollTtyOutput: false
diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml
index 524965e..3f7e7c6 100644
--- a/.config/alacritty/alacritty.yml
+++ b/.config/alacritty/alacritty.yml
@@ -3,3 +3,8 @@ window:
padding:
x: 15
y: 15
+ dimensions:
+ columns: 79
+ lines: 18
+font:
+ size: 10
diff --git a/.config/nixpkgs/config.nix b/.config/nixpkgs/config.nix
index 5a1ffa3..a95debd 100644
--- a/.config/nixpkgs/config.nix
+++ b/.config/nixpkgs/config.nix
@@ -2,17 +2,19 @@ let
pkgs = import <nixpkgs> { };
+ system = builtins.currentSystem;
+
previous = import (builtins.fetchTarball {
url = "https://releases.nixos.org/nixos/22.11/nixos-22.11.466.596a8e828c5/nixexprs.tar.xz";
- sha256 = "1367bad5zz0mfm4czb6p0s0ni38f0x1ffh02z76rx4nranipqbgg"; }) { };
+ sha256 = "1367bad5zz0mfm4czb6p0s0ni38f0x1ffh02z76rx4nranipqbgg"; }) { inherit system; };
stable = import (builtins.fetchTarball {
- url = "https://releases.nixos.org/nixos/23.05/nixos-23.05.861.d3bb401dcfc/nixexprs.tar.xz";
- sha256 = "1b9871if05n92r6acmy46jn6kj583wflp0sgrgfmfmkj3xxsd2i0"; }) { };
+ url = "https://releases.nixos.org/nixos/23.11/nixos-23.11.6510.a5e4bbcb4780/nixexprs.tar.xz";
+ sha256 = "0f73pbh4j89wgk7rn9xp0q8ybw15zkhw0prjz5r37aaryjs8hnbd"; }) { inherit system; };
unstable = import (builtins.fetchTarball {
- url = "https://releases.nixos.org/nixos/unstable/nixos-23.11pre530560.f5892ddac112/nixexprs.tar.xz";
- sha256 = "0i4hycnrl8m38gyk5qv76wr8zkwd0g9swgwhwhaczrfczskpms31"; }) { };
+ url = "https://releases.nixos.org/nixos/unstable/nixos-24.05pre615148.6143fc5eeb9c/nixexprs.tar.xz";
+ sha256 = "0bymwq04dxl3ljjjzw21aspdnwwfm56pqi218lg0vdwargy8yxm8"; }) { inherit system; };
in
@@ -71,7 +73,6 @@ in
(callPackage ./packages/chromexup/package.nix { })
(callPackage ./packages/emacs-batch-indent/package.nix { })
(callPackage ./packages/pdf2htmlex/package.nix { })
- (callPackage ./packages/rxvt-unicode/package.nix { })
(callPackage ./packages/systemd2nix/package.nix { })
(pass.withExtensions (ext: with ext; [ pass-import pass-audit pass-otp ]))
unstable.hugo
@@ -79,6 +80,8 @@ in
unstable.validator-nu
unstable.vimHugeX
unstable.yt-dlp
+ unstable.ios-webkit-debug-proxy
+ unstable.libimobiledevice
aerc
alacritty
alsaUtils
@@ -149,6 +152,7 @@ in
ranger
rclone
ripgrep
+ rxvt-unicode
s-tui
sfeed
silver-searcher
@@ -184,6 +188,8 @@ in
(callPackage ./packages/rofi/package.nix { })
(callPackage ./packages/sowon/package.nix { })
(mplayer.override { v4lSupport = true; })
+ previous.code-server
+ previous.qownnotes
previous.recoll
unstable.firefox
unstable.google-chrome
@@ -192,7 +198,6 @@ in
anki
blender
claws-mail
- code-server
corrscope
dconf
diffpdf
@@ -225,7 +230,6 @@ in
mypaint
pavucontrol
peek
- qownnotes
qrencode
redshift
scrcpy
@@ -265,11 +269,11 @@ in
Xorg = pkgs.buildEnv {
name = "xorg";
paths = [
- previous.x11vnc
autocutsel
glxinfo
unclutter-xfixes
wmctrl
+ x11vnc
xbindkeys
xdotool
xorg.xauth
@@ -308,7 +312,7 @@ in
Awesome = pkgs.buildEnv {
name = "awesome";
- paths = [ awesome ];
+ paths = [ (callPackage ./packages/awesome/package.nix { }) ];
};
Xfce = pkgs.buildEnv {
@@ -372,7 +376,7 @@ in
librsvg
lxappearance
papirus-icon-theme
- qt4
+ qt5ct
unstable.nwg-look
vanilla-dmz
];
@@ -398,7 +402,6 @@ in
paths = [
(callPackage ./packages/qprompt/package.nix { })
ardour
- pulseeffects-pw
pulsemixer
qjackctl
tenacity
@@ -422,7 +425,7 @@ in
LaTeX = pkgs.buildEnv {
name = "latex";
- paths = [ gummi texlive.combined.scheme-full texworks ];
+ paths = [ gummi texlive.combined.scheme-full previous.texworks ];
};
JavaScript = pkgs.buildEnv {
@@ -442,7 +445,7 @@ in
Python = pkgs.buildEnv {
name = "python";
paths = [
- (python39.withPackages (ps: with ps; [
+ (python3.withPackages (ps: with ps; [
bandit
black
flake8
diff --git a/.config/nixpkgs/packages/awesome/package.nix b/.config/nixpkgs/packages/awesome/package.nix
new file mode 100644
index 0000000..6bf06ee
--- /dev/null
+++ b/.config/nixpkgs/packages/awesome/package.nix
@@ -0,0 +1,98 @@
+{ lib, stdenv, fetchgit, lua, cairo, librsvg, cmake, imagemagick, pkg-config
+, gdk-pixbuf, xorg, libstartup_notification, libxdg_basedir, libpthreadstubs
+, xcb-util-cursor, makeWrapper, pango, gobject-introspection, which, dbus
+, nettools, git, doxygen, xmlto, docbook_xml_dtd_45, docbook_xsl
+, findXMLCatalogs, libxkbcommon, xcbutilxrm, hicolor-icon-theme, asciidoctor
+, gtk3, makeFontsConf, ghostscript }:
+
+let luaEnv = lua.withPackages (ps: [ ps.lgi ps.ldoc ]);
+
+in stdenv.mkDerivation rec {
+ pname = "awesome";
+ version = "d2dc428e567e378a3f534c4d748543413fc30172";
+
+ src = fetchgit {
+ rev = version;
+ url = "https://github.com/awesomeWM/awesome.git";
+ sha256 = "sha256-gViEIuDn9ygzVof8e5e7cqDVPNeKDzlXK8V8oYzUUgA=";
+ };
+
+ nativeBuildInputs = [
+ asciidoctor
+ cmake
+ docbook_xml_dtd_45
+ docbook_xsl
+ doxygen
+ findXMLCatalogs
+ imagemagick
+ makeWrapper
+ pkg-config
+ xmlto
+ ];
+
+ outputs = [ "out" "doc" ];
+
+ FONTCONFIG_FILE = makeFontsConf {
+ fontDirectories = [ "${ghostscript}/share/ghostscript/fonts" ];
+ };
+
+ propagatedUserEnvPkgs = [ hicolor-icon-theme ];
+
+ buildInputs = [
+ cairo
+ dbus
+ gdk-pixbuf
+ git
+ gobject-introspection
+ gtk3
+ libpthreadstubs
+ librsvg
+ libstartup_notification
+ libxdg_basedir
+ libxkbcommon
+ lua
+ luaEnv
+ nettools
+ pango
+ xcb-util-cursor
+ xcbutilxrm
+ xorg.libXau
+ xorg.libXdmcp
+ xorg.libxcb
+ xorg.libxshmfence
+ xorg.xcbutil
+ xorg.xcbutilimage
+ xorg.xcbutilkeysyms
+ xorg.xcbutilrenderutil
+ xorg.xcbutilwm
+ ];
+
+ cmakeFlags = [ "-DOVERRIDE_VERSION=${version}" ]
+ ++ lib.optional lua.pkgs.isLuaJIT
+ "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so";
+
+ GI_TYPELIB_PATH = "${pango.out}/lib/girepository-1.0";
+ LUA_CPATH = "${luaEnv}/lib/lua/${lua.luaversion}/?.so";
+ LUA_PATH = "${luaEnv}/share/lua/${lua.luaversion}/?.lua;;";
+
+ postInstall = ''
+ mv "$out/bin/awesome" "$out/bin/.awesome-wrapped"
+ makeWrapper "$out/bin/.awesome-wrapped" "$out/bin/awesome" \
+ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+ --add-flags '--search ${luaEnv}/lib/lua/${lua.luaversion}' \
+ --add-flags '--search ${luaEnv}/share/lua/${lua.luaversion}' \
+ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
+
+ wrapProgram $out/bin/awesome-client \
+ --prefix PATH : "${which}/bin"
+ '';
+
+ passthru = { inherit lua; };
+
+ meta = with lib; {
+ license = licenses.gpl2Plus;
+ platforms = platforms.linux;
+ homepage = "https://awesomewm.org/";
+ description = "Highly configurable, dynamic window manager for X";
+ };
+}
diff --git a/.config/nixpkgs/packages/rxvt-unicode/package.nix b/.config/nixpkgs/packages/rxvt-unicode/package.nix
deleted file mode 100644
index dd3540c..0000000
--- a/.config/nixpkgs/packages/rxvt-unicode/package.nix
+++ /dev/null
@@ -1,102 +0,0 @@
-{ lib, stdenv, fetchurl, fetchpatch, libX11, libXt, libXft, libXrender, ncurses
-, fontconfig, freetype, pkg-config, gdk-pixbuf, perl, writeTextFile }:
-
-let
- pname = "rxvt-unicode";
- version = "9.26";
- description = "A clone of the well-known terminal emulator rxvt";
-
-in stdenv.mkDerivation {
-
- inherit pname version;
- name = "${pname}-unwrapped-${version}";
-
- src = fetchurl {
- url = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${version}.tar.bz2";
- sha256 = "12y9p32q0v7n7rhjla0j2g9d5rj2dmwk20c9yhlssaaxlawiccb4";
- };
-
- buildInputs = [
- fontconfig
- freetype
- gdk-pixbuf
- libX11
- libXft
- libXrender
- libXt
- ncurses
- perl
- pkg-config
- ];
-
- outputs = [ "out" "terminfo" ];
-
- patches = [
- (fetchpatch {
- name = "enable-wide-glyphs.patch";
- url = "https://raw.githubusercontent.com/owl4ce/nelumbonaceae/e6be9823ec9ab7c14a23f5a25dfb33ce705d9950/x11-terms/rxvt-unicode/files/enable-wide-glyphs.patch";
- sha256 = "0vfpidysc1kxr3zark2y1b8fxx7k2lck79ccb7b97mgz04mxchvd";
- })
- (fetchpatch {
- name = "improve-font-rendering.patch";
- url = "https://raw.githubusercontent.com/owl4ce/nelumbonaceae/e6be9823ec9ab7c14a23f5a25dfb33ce705d9950/x11-terms/rxvt-unicode/files/improve-font-rendering.patch";
- sha256 = "0xkwvn204n679v4mgpw2dl4c30pdl622l6b2iw6sr0gijga8zqcd";
- })
- (fetchpatch {
- name = "256-color-resources.patch";
- url = "https://raw.githubusercontent.com/NixOS/nixpkgs/2bb3a9da24ca60d9f5bed69f679a1ec50dbdf997/pkgs/applications/terminal-emulators/rxvt-unicode/patches/256-color-resources.patch";
- sha256 = "sha256-lz0naMdlu7+e2/+zP6KvGTI6exIS4qx+Tqr0OpUkXGI=";
- })
- (fetchpatch {
- name = "fixed-layout-size.patch";
- url = "https://raw.githubusercontent.com/owl4ce/nelumbonaceae/b593a0eb7bb45a0b471c2ee2aa02b0e66776b9c0/x11-terms/rxvt-unicode/files/fixed-layout-size.patch";
- sha256 = "148vpln61zs3qv4sipcc5c7fiyc4d4q6k10r7bpr0k0q4pzshljh";
- })
- (writeTextFile {
- name = "silence-x-errors.patch";
- text = ''
- --- a/src/main.C
- +++ b/src/main.C
- @@ -494,7 +494,7 @@
- #if ENABLE_MINIMAL
- old_xerror_handler (display, event);
- #else
- - print_x_error (display, event);
- + // print_x_error (display, event);
- #endif
- }
- '';
- })
- ];
-
- configureFlags = [
- "--enable-perl"
- "--enable-unicode3"
- "--enable-256-color"
- "--enable-wide-glyphs"
- "--with-terminfo=$terminfo/share/terminfo"
- ];
-
- CFLAGS = [ "-I${freetype.dev}/include/freetype2" ];
- LDFLAGS = [ "-lfontconfig" "-lXrender" "-lpthread" ];
-
- preConfigure = ''
- mkdir -p $terminfo/share/terminfo
- export TERMINFO=$terminfo/share/terminfo
- mkdir -p $out/$(dirname ${perl.libPrefix})
- ln -s $out/lib/urxvt $out/${perl.libPrefix}
- '';
-
- postInstall = ''
- mkdir -p $out/nix-support
- echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
- '';
-
- meta = {
- inherit description;
- license = lib.licenses.gpl3;
- platforms = lib.platforms.unix;
- downloadPage = "http://dist.schmorp.de/rxvt-unicode/Attic/";
- homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html";
- };
-}
diff --git a/.config/nixpkgs/packages/wf-shell/package.nix b/.config/nixpkgs/packages/wf-shell/package.nix
index 46448b9..42e4121 100644
--- a/.config/nixpkgs/packages/wf-shell/package.nix
+++ b/.config/nixpkgs/packages/wf-shell/package.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
src = fetchgit {
url = "https://github.com/WayfireWM/wf-shell";
- sha256 = "sha256-DoGW9rCEQFDO/SJ/ZWv2SPzC/acLFnPPncs683ugEvY=";
+ sha256 = "sha256-qkfN6JfAp5UaHXNuU6Jwu87YNCyjEJzVLLy8EUG5UNE";
};
mesonFlags = [ "--sysconfdir" "/etc" ];
diff --git a/.config/nixpkgs/shells/cake/shell.nix b/.config/nixpkgs/shells/cake/shell.nix
index 3a88218..2991136 100644
--- a/.config/nixpkgs/shells/cake/shell.nix
+++ b/.config/nixpkgs/shells/cake/shell.nix
@@ -1,24 +1,18 @@
let
# nix-shell -E 'import (builtins.fetchurl "$url")'
- # NIX_CONFIG="sandbox = relaxed" nix-shell --option builders '' cake.nix
+ # NIX_CONFIG="sandbox = relaxed" nix-shell --option builders '' shell.nix
name = "nix-shell.cake";
pkgs = import (builtins.fetchTarball {
- url = "https://releases.nixos.org/nixos/22.11/nixos-22.11.466.596a8e828c5/nixexprs.tar.xz";
- sha256 = "1367bad5zz0mfm4czb6p0s0ni38f0x1ffh02z76rx4nranipqbgg";
+ url = "https://releases.nixos.org/nixos/23.11/nixos-23.11.6510.a5e4bbcb4780/nixexprs.tar.xz";
+ sha256 = "0f73pbh4j89wgk7rn9xp0q8ybw15zkhw0prjz5r37aaryjs8hnbd";
}) { };
- alpine-3-12-amd64 = pkgs.dockerTools.exportImage {
- fromImage = pkgs.dockerTools.pullImage rec {
- imageName = "alpine";
- imageDigest = "sha256:2a8831c57b2e2cb2cda0f3a7c260d3b6c51ad04daea0b3bfc5b55f489ebafd71";
- sha256 = "1px8xhk0a3b129cc98d3wm4s0g1z2mahnrxd648gkdbfsdj9dlxp";
- finalImageName = imageName;
- finalImageTag = "3.12";
- };
- diskSize = "128";
+ alpine = pkgs.fetchurl {
+ url = "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-minirootfs-3.19.1-x86_64.tar.gz";
+ sha256 = "sha256-GFEjzrbn0I8kSf/1VD2yBv+3nezYFGCNOZrUR+CPop4=";
};
cook = { name, src, contents ? [ ], path ? [ ], script ? "", prepare ? "", cleanup ? "" }: pkgs.stdenvNoCC.mkDerivation {
@@ -39,7 +33,7 @@ let
${prepare}
cp $bootstrap rootfs/bootstrap
- proot --cwd=/ --root-id --rootfs=rootfs /usr/bin/env - /bin/sh -euc '. /etc/profile && /bootstrap'
+ proot --cwd=/ --root-id --rootfs=rootfs /usr/bin/env - /bin/sh -euc 'BASH_VERSION= . /etc/profile && /bootstrap'
printf 'PATH=${pkgs.lib.strings.makeBinPath path}:$PATH' >> rootfs/etc/profile
[ -n "$contents" ] && {
@@ -61,7 +55,7 @@ let
bake = { name, image, size ? "1G", debug ? false, kernel ? pkgs.linux, options ? [ ], modules ? [ ], uuid ? "99999999-9999-9999-9999-999999999999" }: let
initrd = cook {
name = "initrd-${name}";
- src = alpine-3-12-amd64;
+ src = alpine;
script = ''
rm -rf home opt media root run srv tmp var
printf '#!/bin/sh -eu
@@ -136,9 +130,9 @@ let
losetup --detach "$LOOP"
'';
- alpine = cook {
+ system = cook {
name = "alpine";
- src = alpine-3-12-amd64;
+ src = alpine;
contents = [ pkgs.glibc pkgs.gawk ];
path = [ pkgs.gawk ];
script = ''
@@ -148,9 +142,24 @@ let
'';
};
- alpine-machine = bake {
+ machine = cook {
+ name = "alpine";
+ src = alpine;
+ contents = [ pkgs.glibc pkgs.gawk ];
+ path = [ pkgs.gawk ];
+ script = ''
+ apk update
+ apk upgrade
+ apk add openrc
+ cat /etc/alpine-release
+ sed -i 's/#ttyS0/ttyS0/' /etc/inittab
+ printf 'migh7Lib\nmigh7Lib\n' | adduser alpine
+ '';
+ };
+
+ virtual-machine = bake {
name = "alpine-machine";
- image = alpine;
+ image = machine;
kernel = pkgs.linuxPackages_5_10.kernel;
options = [ "console=tty1" "console=ttyS0" ];
size = "128M";
@@ -188,13 +197,13 @@ in pkgs.mkShell {
shellHook = ''
export PS1='\h (${name}) \W \$ '
- # sudo ${alpine-machine}
- # doas ${alpine-machine}
- # qemu-system-x86_64 -nographic -drive if=virtio,file=./${alpine-machine.name}.img,format=raw
- # qemu-system-x86_64 -curses -drive if=virtio,file=./${alpine-machine.name}.img,format=raw
+ # sudo ${virtual-machine}
+ # doas ${virtual-machine}
+ # qemu-system-x86_64 -nographic -drive if=virtio,file=./${virtual-machine.name}.img,format=raw
+ # qemu-system-x86_64 -curses -drive if=virtio,file=./${virtual-machine.name}.img,format=raw
${container {
- rootfs = "${alpine}/rootfs";
+ rootfs = "${system}/rootfs";
binds = [ "/proc" "/dev" ];
options = [ "--verbose=0" ];
}}
diff --git a/.config/seance/spirits b/.config/seance/spirits
index a305c48..09d7282 100644
--- a/.config/seance/spirits
+++ b/.config/seance/spirits
@@ -1,11 +1,12 @@
anki
-bin/chromium
+chromium
claws-mail
+firefox
+google-chrome
keepassxc
mupdf
-spacefm
-urxvt -e vim
-urxvt -hold
-zim
-QOwnNotes
recoll
+spacefm
+stalonetray
+vim
+zathura
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
index 08fb89b..73cb180 100644
--- a/.config/tmux/tmux.conf
+++ b/.config/tmux/tmux.conf
@@ -7,22 +7,36 @@ bind C-a send-prefix
unbind C-b
# reload configuration
-bind r source-file ~/.config/tmux/tmux.conf \; run "printf ' # Reload tmux configuration\n' | tmux load-buffer - && tmux paste-buffer"
+bind r source-file ~/.config/tmux/tmux.conf \; run "printf '# Reload tmux configuration\n' | tmux load-buffer - && tmux paste-buffer"
# settings
-set -g mouse on
-set -g status off
set -g base-index 1
+set -g history-limit 10000
set -g mode-keys vi
+set -g monitor-activity on
+set -g mouse on
+set -g pane-base-index 1
+set -g pane-border-format ""
+set -g pane-border-status top
+set -g status on
+set -g status-left ''
+set -g status-position top
+set -g status-right ''
+set -g visual-activity off
set -sg escape-time 1
-set -g visual-activity on
-setw -g pane-base-index 1
-set -g history-limit 10000
-setw -g monitor-activity on
+setw -g window-status-current-format " #I "
+setw -g window-status-format " #I "
-# border colours
-set -g pane-border-style fg=colour0
-set -g pane-active-border-style fg=colour0
+# colours
+set -g status-bg color0
+set -g pane-border-style fg=colour9
+set -g pane-active-border-style fg=colour9
+setw -g window-status-style fg=colour3
+setw -ga window-status-current-style bg=color9
+
+# cycle windows
+bind -n S-Right next-window # shift + -->
+bind -n S-Left previous-window # shift + <--
# y and p as in vim
unbind p
@@ -36,6 +50,22 @@ bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel \; run "tmux
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xsel -i"
bind -T root MouseDown2Pane run -b "xsel -o | tmux load-buffer - && tmux paste-buffer -s ' '"
+# double click select
+bind-key -n DoubleClick1Pane \
+ select-pane \; \
+ copy-mode -M \; \
+ send-keys -X select-word \; \
+ run-shell "sleep .25s" \; \
+ send-keys -X copy-pipe-and-cancel "xsel -i"
+
+# triple click select
+bind-key -n TripleClick1Pane \
+ select-pane \; \
+ copy-mode -M \; \
+ send-keys -X select-line \; \
+ run-shell "sleep .25s" \; \
+ send-keys -X copy-pipe-and-cancel "xsel -i"
+
# split pane commands
bind | split-window -h
bind - split-window -v
@@ -57,3 +87,7 @@ bind -n M-H resize-pane -L 5
bind -n M-J resize-pane -D 5
bind -n M-K resize-pane -U 5
bind -n M-L resize-pane -R 5
+
+# session saving
+set -g @resurrect-processes 'make hugo dmesg journalctl'
+run-shell ~/.config/tmux/plugins/tmux-resurrect/resurrect.tmux
diff --git a/.local/bin/dropdown-terminal b/.local/bin/dropdown-terminal
index 46f83ea..a41ad46 100755
--- a/.local/bin/dropdown-terminal
+++ b/.local/bin/dropdown-terminal
@@ -1,7 +1,7 @@
#!/bin/sh -eu
name=dropdown-terminal
state=/tmp/"$name"_lQ5GnvRpQ6
-terminal="urxvt -pe tabbed -geometry 150x20 -title $name"
+terminal="urxvt -geometry 150x20 -title $name"
[ ! -f $state ] && {
$terminal && sed --in-place '1s/.*/1/' "$state" &
diff --git a/.local/bin/seance b/.local/bin/seance
index 1dcaf36..5b9160e 100755
--- a/.local/bin/seance
+++ b/.local/bin/seance
@@ -5,7 +5,7 @@ directory=$HOME/.config/seance
session=$directory/session
spirits=$directory/spirits
-help() {
+Help() {
printf \
"
Usage: %s [FLAGS]... [ARGUMENT]...
@@ -14,51 +14,119 @@ The program $program shall save and restore
running programs in a desktop session according
to a specified configuration file.
-Add a program string, one per line,
-to $spirits to
-save programs in current session.
+Add a program command, one per line, in
+$spirits
+to save to current session.
-Session: $session
-Configuration: $spirits
+Session: $session
+Config: $spirits
Command List:
- $program commit Saves current running programs to session.
- $program list List saved programs.
- $program config View current configuration.
- $program search Search for a running program.
- $program windows List running programs
- $program start Restore previous session.
- $program -h --help Show this help menu.
+ $program commit Saves programs in config to session.
+ $program list List session commands.
+ $program config View programs to be saved to session.
+ $program windows List running programs
+ $program search Search for a running program.
+ $program start Restore previous session.
+ $program edit session Edit session commands.
+ $program edit config Edit programs in config.
+ $program -h --help Show this help menu.
" "$program";
}
-{ [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ] || [ "$#" = 0 ]; } && help && exit;
+Commit() {
-mkdir --parents "$directory"
+windows=$(wmctrl -Glp)
+date=$(date --utc '+%a-%b-%d-%H:%M:%S-%Y')
-touch "$spirits"
+IFS='
+'
+
+mv "$1" "$1-$date"
+
+true > "$1"
+
+for window in $windows; do
+
+pid=$(printf "%s" "$window" | awk '{ print $3 }')
+desktop=$(printf "%s" "$window" | awk '{ print $2 }')
+title=$(printf "%s" "$window" | tr -s ' ' | cut -d ' ' -f 9-)
+dimensions=$(printf "%s" "$window" | awk '{ print $4, ",", $5, ",", $6, ",", $7 }' | tr -d ' ')
+[ "$pid" = "0" ] && continue;
+process=$(ps -ww -p "$pid" -o command | tail -n 1)
+
+while read -r spirit; do
+ case "$process" in
+ *$spirit*) process=$spirit ;;
+ esac
+done < "$spirits"
+
+commands=$(printf "%s" "$title" | cut -d ' ' -f 3- | sed "s|'|'\\\\\\\''|g")
+
+[ -z "$commands" ] && commands="true"
+
+mime="$(file --mime-type "$title" | awk '{ print $2 }')"
+directory=$(printf "%s" "$title" | cut -d ' ' -f 2)
+
+case "$mime" in
+application/pdf) process="zathura $title" ;;
+esac
+
+case "$title" in
+*term:*) process="\$TERMINAL -e sh -c 'cd $directory && $commands; \$SHELL'" ;;
+esac
+
+case "$title" in
+*vim:*) process="\$TERMINAL -e sh -c '\$EDITOR $directory; \$SHELL'" ;;
+esac
-commit() {
- ps aux \
- | awk '$1 == "'"$(whoami)"'" { $1=$2=$3=$4=$5=$6=$7=$8=$9=$10=""; print $0 }' \
- | awk '!deduplicate[$0]++ { $1=$1; printf "%s &\n", $0 }'
+case "$title" in
+*\[Scratch\]*) continue ;;
+esac
+
+case "$commands" in
+*$program*) continue ;;
+esac
+
+grep "$process" "$1" > /dev/null 2>&1 && continue
+
+printf "%s\n" "$process"
+
+printf "\
+$process > /dev/null 2>&1 & disown
+i=0; until wmctrl -Glp | grep -i \"\$!\"; do i=\$((i+1)); [ \$i -gt 150 ] && break; done
+wmctrl -i -r \"\$(wmctrl -Glp | awk -v pid=\"\$!\" '\$0 ~ pid { print \$1 }')\" -t $desktop
+wmctrl -i -r \"\$(wmctrl -Glp | awk -v pid=\"\$!\" '\$0 ~ pid { print \$1 }')\" -e '0,$dimensions'
+
+" >> "$1"
+done
}
-[ "${1:-}" = "commit" ] &&
- { commit | grep --file="$spirits" >> "$session" || printf "Warning empty or failed session file!\n"; } &&
- printf 'Session %s canonized.\n' "$session" &&
- exit
+{ [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ] || [ "$#" = 0 ]; } && Help && exit;
+
+mkdir --parents "$directory"
+
+touch "$spirits"
+
+[ "${1:-}" = "commit" ] \
+ && { Commit "$session" || printf "Warning empty or failed session file!\n"; } \
+ && printf '\nSession %s canonized.\n\n' "$session" \
+ && exit
[ "${1:-}" = "list" ] && cat "$session" && exit;
[ "${1:-}" = "config" ] && cat "$spirits" && exit;
-[ "${1:-}" = "windows" ] && wmctrl -lp && exit;
+[ "${1:-}" = "windows" ] && wmctrl -Glp && exit;
+
+[ "${1:-}" = "search" ] && wmctrl -Glp | grep --ignore-case -- "$2" && exit;
+
+[ "${1:-}" = "start" ] && sh "$session" && exit;
-[ "${1:-}" = "search" ] && commit | grep --ignore-case -- "$2" | head --lines=1 && exit;
+[ "${1:-}" = "edit" ] && [ "${2:-}" = "session" ] && $EDITOR "$session" && exit;
-[ "${1:-}" = "start" ] && /bin/sh "$session" && exit;
+[ "${1:-}" = "edit" ] && [ "${2:-}" = "config" ] && $EDITOR "$spirits" && exit;
-help && printf "Error: Unknown argument '%s'.\n\n" "$@" && exit 1;
+Help && printf "Error: Unknown argument '%s'.\n\n" "$@" && exit 1;
diff --git a/.local/bin/wrappers/google-chrome-stable b/.local/bin/wrappers/google-chrome
index b9c406f..b9c406f 100755
--- a/.local/bin/wrappers/google-chrome-stable
+++ b/.local/bin/wrappers/google-chrome
diff --git a/.local/bin/wrappers/mocp b/.local/bin/wrappers/mocp
new file mode 100755
index 0000000..8828b25
--- /dev/null
+++ b/.local/bin/wrappers/mocp
@@ -0,0 +1,2 @@
+#!/bin/sh -eu
+$(which mocp --all | grep --invert-match "local/bin" | head --lines 1) -M "$HOME/.config/moc" "$@"
diff --git a/.vim/vimrc b/.vim/vimrc
index 7416679..fa3b697 100644
--- a/.vim/vimrc
+++ b/.vim/vimrc
@@ -66,6 +66,7 @@ set sidescroll=3 " Set horizontal column scroll.
set sidescrolloff=10 " Set horizontal scroll headroom.
set foldcolumn=2 " Set fold column width to 2.
+set title titlestring=vim:\ %F titlelen=999999 " Set parseable title.
set tabstop=2 softtabstop=0 shiftwidth=2 smarttab expandtab " Set spaces as default.
set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣ " Set hidden character identifiers.