home/himalaya: create script for interactive mode
This commit is contained in:
parent
4226c71445
commit
aa9aaf0e7c
3 changed files with 53 additions and 48 deletions
|
@ -13,6 +13,23 @@ let
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
himz = with pkgs; stdenv.mkDerivation {
|
||||||
|
name = "himz-0.1";
|
||||||
|
src = ../../scripts;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp himz $out/bin/himz
|
||||||
|
wrapProgram "$out/bin/himz" --prefix PATH : "$out/bin:${lib.makeBinPath [ w3m fzf ]}"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
bin = "${devHimalaya}/bin/himalaya";
|
bin = "${devHimalaya}/bin/himalaya";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
@ -25,6 +42,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ himz ];
|
||||||
programs.himalaya = {
|
programs.himalaya = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = devHimalaya;
|
package = devHimalaya;
|
||||||
|
@ -33,13 +51,5 @@ in
|
||||||
downloads-dir = "${config.home.homeDirectory}/downloads/email";
|
downloads-dir = "${config.home.homeDirectory}/downloads/email";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh.shellAliases = mkIf config.shell.zsh.enable {
|
|
||||||
him = bin;
|
|
||||||
himp = "${bin} -a personal";
|
|
||||||
himf = "${bin} -a family";
|
|
||||||
himw = "${bin} -a work";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
bin="himalaya"
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
"" | "list")
|
|
||||||
for acc in $(NO_COLOR=1 $bin accounts | grep imap | awk '{ print $1 }')
|
|
||||||
do
|
|
||||||
echo "account: $acc"
|
|
||||||
$bin -a "$acc" list -s 10 -w 120 | grep '✷'
|
|
||||||
echo "---"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
|
|
||||||
"unread-count")
|
|
||||||
a=0
|
|
||||||
for acc in $(NO_COLOR=1 $bin accounts | grep imap | awk '{ print $1 }')
|
|
||||||
do
|
|
||||||
a=$((a+$($bin -a "$acc" search unseen -s 200 | grep '✷' | wc -l)))
|
|
||||||
done
|
|
||||||
echo $a
|
|
||||||
;;
|
|
||||||
|
|
||||||
"watch")
|
|
||||||
while true
|
|
||||||
do
|
|
||||||
printf '\033[2J'
|
|
||||||
$0 list
|
|
||||||
sleep 60
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
|
|
||||||
"mark-read")
|
|
||||||
for id in $(NO_COLOR=1 $bin -a $2 search unseen -s 200 | grep '✷'| awk '{ print $1 }')
|
|
||||||
do
|
|
||||||
$bin -a $2 flag add $id seen
|
|
||||||
done
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
35
scripts/himz
Executable file
35
scripts/himz
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
function __him_accounts() {
|
||||||
|
himalaya accounts | \
|
||||||
|
awk '/imap/ { print $1 }' | \
|
||||||
|
sort | \
|
||||||
|
fzf --exit-0 --select-1 --ansi --layout=reverse \
|
||||||
|
--header="Accounts" \
|
||||||
|
--preview="himalaya -a {} list -s 10" \
|
||||||
|
--preview-window=right,80%
|
||||||
|
}
|
||||||
|
|
||||||
|
function __him_emails() {
|
||||||
|
if [ "$#" != "0" ]; then
|
||||||
|
local w3m_opts="-T text/html -o display_link_number=1 -dump"
|
||||||
|
local acc=$1
|
||||||
|
local size=${2-50}
|
||||||
|
local selected=$(
|
||||||
|
himalaya -a $acc list -s $size | grep '│' | \
|
||||||
|
fzf --exit-0 --ansi --layout=reverse \
|
||||||
|
--header-lines=1 \
|
||||||
|
--header="Account: ${acc}" \
|
||||||
|
--preview="himalaya -a ${acc} read -t html {1} | w3m $w3m_opts" \
|
||||||
|
--preview-window=down,70% \
|
||||||
|
--bind="ctrl-r:reload(himalaya -a $acc list -s $size | grep '│')"
|
||||||
|
)
|
||||||
|
local eid=$(echo $selected | awk '{ print $1 }')
|
||||||
|
if [ "$eid" != "" ]; then
|
||||||
|
himalaya -a $acc read -t html $eid | w3m $w3m_opts
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__him_emails `__him_accounts` $@
|
||||||
|
|
Loading…
Reference in a new issue