diff options
-rw-r--r-- | .bashrc | 3 | ||||
-rw-r--r-- | .config/X11/Xresources | 2 | ||||
-rw-r--r-- | .config/alacritty/alacritty.yml | 5 | ||||
-rw-r--r-- | .config/nixpkgs/config.nix | 31 | ||||
-rw-r--r-- | .config/nixpkgs/packages/awesome/package.nix | 98 | ||||
-rw-r--r-- | .config/nixpkgs/packages/rxvt-unicode/package.nix | 102 | ||||
-rw-r--r-- | .config/nixpkgs/packages/wf-shell/package.nix | 2 | ||||
-rw-r--r-- | .config/nixpkgs/shells/cake/shell.nix | 55 | ||||
-rw-r--r-- | .config/seance/spirits | 13 | ||||
-rw-r--r-- | .config/tmux/tmux.conf | 54 | ||||
-rwxr-xr-x | .local/bin/dropdown-terminal | 2 | ||||
-rwxr-xr-x | .local/bin/seance | 124 | ||||
-rwxr-xr-x | .local/bin/wrappers/google-chrome (renamed from .local/bin/wrappers/google-chrome-stable) | 0 | ||||
-rwxr-xr-x | .local/bin/wrappers/mocp | 2 | ||||
-rw-r--r-- | .vim/vimrc | 1 |
15 files changed, 306 insertions, 188 deletions
@@ -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" "$@" @@ -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. |