diff options
Diffstat (limited to 'tv/5pkgs')
-rw-r--r-- | tv/5pkgs/default.nix | 8 | ||||
-rw-r--r-- | tv/5pkgs/haskell/xmonad-tv/src/Paths.hs | 3 | ||||
-rw-r--r-- | tv/5pkgs/haskell/xmonad-tv/src/main.hs | 3 | ||||
-rw-r--r-- | tv/5pkgs/override/default.nix | 7 | ||||
-rw-r--r-- | tv/5pkgs/override/fzf.complete1.patch | 55 | ||||
-rw-r--r-- | tv/5pkgs/override/rxvt_unicode.nix | 8 | ||||
-rw-r--r-- | tv/5pkgs/simple/xdpytools/default.nix | 31 | ||||
-rwxr-xr-x | tv/5pkgs/simple/xdpytools/src/xdpychvt | 11 | ||||
-rwxr-xr-x | tv/5pkgs/simple/xdpytools/src/xdpysel | 49 |
9 files changed, 169 insertions, 6 deletions
diff --git a/tv/5pkgs/default.nix b/tv/5pkgs/default.nix index fd3d2f32a..cae5da112 100644 --- a/tv/5pkgs/default.nix +++ b/tv/5pkgs/default.nix @@ -13,13 +13,17 @@ foldl' mergeAttrs {} // { - # TODO use XDG_RUNTIME_DIR? cr = self.writeDashBin "cr" '' set -efu + if test -n "''${XDG_RUNTIME_DIR-}"; then + cache_dir=$XDG_RUNTIME_DIR/chromium-disk-cache + else + cache_dir=/tmp/chromium-disk-cache_$LOGNAME + fi export LC_TIME=de_DE.utf8 exec ${self.chromium}/bin/chromium \ --ssl-version-min=tls1 \ - --disk-cache-dir=/tmp/chromium-disk-cache_"$LOGNAME" \ + --disk-cache-dir="$cache_dir" \ --disk-cache-size=50000000 \ "$@" ''; diff --git a/tv/5pkgs/haskell/xmonad-tv/src/Paths.hs b/tv/5pkgs/haskell/xmonad-tv/src/Paths.hs index 6b7235530..b2ad01ae7 100644 --- a/tv/5pkgs/haskell/xmonad-tv/src/Paths.hs +++ b/tv/5pkgs/haskell/xmonad-tv/src/Paths.hs @@ -29,3 +29,6 @@ urxvtc = findExecutable "urxvtc" xcalib :: FilePath xcalib = findExecutable "xcalib" + +xdpychvt :: FilePath +xdpychvt = findExecutable "xdpychvt" diff --git a/tv/5pkgs/haskell/xmonad-tv/src/main.hs b/tv/5pkgs/haskell/xmonad-tv/src/main.hs index 50b03d81c..e5a4473fe 100644 --- a/tv/5pkgs/haskell/xmonad-tv/src/main.hs +++ b/tv/5pkgs/haskell/xmonad-tv/src/main.hs @@ -190,6 +190,9 @@ myKeys conf = Map.fromList $ , ((_4, xK_Prior), forkFile Paths.xcalib ["-invert", "-alter"] Nothing) , ((0, xK_Print), forkFile Paths.flameshot [] Nothing) + + , ((_C, xF86XK_Forward), forkFile Paths.xdpychvt ["next"] Nothing) + , ((_C, xF86XK_Back), forkFile Paths.xdpychvt ["prev"] Nothing) ] where _4 = mod4Mask diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix index d18d66506..cf99e0377 100644 --- a/tv/5pkgs/override/default.nix +++ b/tv/5pkgs/override/default.nix @@ -1,5 +1,12 @@ with import <stockholm/lib>; self: super: { + fzf = super.fzf.overrideAttrs (old: { + # XXX cannot use `patches` because fzf has a custom patchPhase + patchPhase = '' + patch -Np1 < ${./fzf.complete1.patch} + ${old.patchPhase} + ''; + }); input-fonts = super.input-fonts.overrideAttrs (old: rec { src = self.fetchurl { url = "http://xu.r/~tv/mirrors/input-fonts/Input-Font-2.zip"; diff --git a/tv/5pkgs/override/fzf.complete1.patch b/tv/5pkgs/override/fzf.complete1.patch new file mode 100644 index 000000000..4b2126a2c --- /dev/null +++ b/tv/5pkgs/override/fzf.complete1.patch @@ -0,0 +1,55 @@ +diff --git a/src/core.go b/src/core.go +index a18c3a1..a3d92a4 100644 +--- a/src/core.go ++++ b/src/core.go +@@ -331,6 +331,13 @@ func Run(opts *Options, version string, revision string) { + } + } + terminal.UpdateList(val, clearSelection()) ++ if (opts.Complete1) { ++ count := val.Length() ++ if count == 1 { ++ opts.Printer(val.Get(0).item.AsString(opts.Ansi)) ++ terminal.reqBox.Set(reqClose, nil) ++ } ++ } + } + } + } +diff --git a/src/options.go b/src/options.go +index a55dc34..7f121cd 100644 +--- a/src/options.go ++++ b/src/options.go +@@ -92,6 +92,7 @@ const usage = `usage: fzf [options] + -1, --select-1 Automatically select the only match + -0, --exit-0 Exit immediately when there's no match + -f, --filter=STR Filter mode. Do not start interactive finder. ++ --complete-1 Exit interactive finder when there's exactly one match + --print-query Print query as the first line + --expect=KEYS Comma-separated list of keys to complete fzf + --read0 Read input delimited by ASCII NUL characters +@@ -208,6 +209,7 @@ type Options struct { + Query string + Select1 bool + Exit0 bool ++ Complete1 bool + Filter *string + ToggleSort bool + Expect map[tui.Event]string +@@ -269,6 +271,7 @@ func defaultOptions() *Options { + Query: "", + Select1: false, + Exit0: false, ++ Complete1: false, + Filter: nil, + ToggleSort: false, + Expect: make(map[tui.Event]string), +@@ -1311,6 +1314,8 @@ func parseOptions(opts *Options, allArgs []string) { + opts.Exit0 = true + case "+0", "--no-exit-0": + opts.Exit0 = false ++ case "--complete-1": ++ opts.Complete1 = true + case "--read0": + opts.ReadZero = true + case "--no-read0": diff --git a/tv/5pkgs/override/rxvt_unicode.nix b/tv/5pkgs/override/rxvt_unicode.nix index 4d9c3abc3..53aaf0658 100644 --- a/tv/5pkgs/override/rxvt_unicode.nix +++ b/tv/5pkgs/override/rxvt_unicode.nix @@ -3,15 +3,15 @@ rxvt_unicode.overrideAttrs (old: { patches = old.patches ++ [ (fetchurl { name = "rxvt-unicode.cancel-running-selection-request.patch"; - url = https://cgit.krebsco.de/rxvt-unicode/patch/?id=15f3f94; - sha256 = "12vldwsds27c9l15ffc6svk9mj17jhypcz736pvpmpqbsymlkz2p"; + url = "https://cgit.krebsco.de/rxvt-unicode/rawdiff/?id=15f3f94&id2=15f3f94^"; + sha256 = "1c7jq8phl85d2f581b4mc6fkmr2nv9n44qjjs4idi51sd2hs7sxw"; }) # Fix segfault when calling editor-input from XMonad. (fetchurl { name = "rxvt-unicode.no-perl_destruct.patch"; - url = "https://cgit.krebsco.de/rxvt-unicode/patch/?id=d63f96a"; - sha256 = "0i8nqrqgprv7cygflkrdp5zx75dv9bv84vrr2yc3vnfpqxamc43n"; + url = "https://cgit.krebsco.de/rxvt-unicode/rawdiff/?id=d63f96a&id2=d63f96a^"; + sha256 = "0fq9w4fq8mw05jk9bblzlh1x51m2cmk62xbc4c1mbiqagjmsi9f8"; }) ]; }) diff --git a/tv/5pkgs/simple/xdpytools/default.nix b/tv/5pkgs/simple/xdpytools/default.nix new file mode 100644 index 000000000..7d1ee071e --- /dev/null +++ b/tv/5pkgs/simple/xdpytools/default.nix @@ -0,0 +1,31 @@ +{ lib, pkgs }: + +let + install = name: { path }: /* sh */ '' + ( + mkdir -p $out/bin + touch $out/bin/${name} + chmod +x $out/bin/${name} + exec >$out/bin/${name} + + echo '#! ${pkgs.dash}/bin/dash' + echo export PATH=${lib.makeBinPath path} + sed 1d ${./src + "/${name}"} + ) + ''; +in + +pkgs.runCommand "xdpytools" {} + (toString + (lib.mapAttrsToList install { + xdpychvt.path = [ + "$out" + "/run/wrappers/'$LOGNAME'" + "/run/wrappers" + ]; + xdpysel.path = [ + "$out" + pkgs.findutils + pkgs.jq + ]; + })) diff --git a/tv/5pkgs/simple/xdpytools/src/xdpychvt b/tv/5pkgs/simple/xdpytools/src/xdpychvt new file mode 100755 index 000000000..84c1907b9 --- /dev/null +++ b/tv/5pkgs/simple/xdpytools/src/xdpychvt @@ -0,0 +1,11 @@ +#! /bin/sh +# usage: xdpychvt {prev,next} +# Changes to the VT based on the selected X display. +# +# This allows switching between X servers when display names and VT numbers +# correlate. A more sophisticated tool would try to determine the correct VT +# by e.g. looking at /proc, but this might not possible when e.g. using +# security.hideProcessInformation. +# + +chvt "$(xdpysel "$1")" diff --git a/tv/5pkgs/simple/xdpytools/src/xdpysel b/tv/5pkgs/simple/xdpytools/src/xdpysel new file mode 100755 index 000000000..e08015576 --- /dev/null +++ b/tv/5pkgs/simple/xdpytools/src/xdpysel @@ -0,0 +1,49 @@ +#! /bin/sh +# usage: xdpysel {prev,next} +# Print the number of the selected X display. + +find /tmp/.X11-unix -mindepth 1 -maxdepth 1 | +jq -Rrs --arg command "$1" ' + ( + split("\n") | + map( + select(.!="") | + match("^.*/X([0-9]+)$").captures[0].string | + tonumber + ) + ) + as $all_displays | + + ( + env.DISPLAY | + match("^:([0-9]+)(?:[.][0-9]+)?$").captures[0].string | + tonumber + ) + as $current_display | + + ($all_displays | length) as $all_displays_count | + + ($all_displays|index($current_display)) + as $current_index | + + (($current_index + 1) % $all_displays_count) + as $next_index | + + (($all_displays_count + $current_index - 1) % $all_displays_count) + as $prev_index | + + $all_displays[$prev_index] as $prev_display | + $all_displays[$next_index] as $next_display | + + { + prev: $prev_display, + next: $next_display, + }[$command] + as $result | + + if $result | type == "number" then + $result + else + "xdpysel: bad argument: \($command)\n" | halt_error(-1) + end +' |