1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00
Files
niveum/packages/unicodmenu.nix

138 lines
3.7 KiB
Nix
Raw Normal View History

2022-03-10 21:52:12 +01:00
{
lib,
runCommand,
fetchurl,
writeText,
writers,
coreutils,
dmenu,
gnused,
libnotify,
2026-01-06 22:46:12 +01:00
wl-clipboard,
2022-03-10 21:52:12 +01:00
xdotool,
gawk,
2023-10-06 10:50:31 +02:00
fetchFromGitHub,
2025-12-27 22:22:54 +01:00
}:
let
emoji-flags = builtins.fromJSON (
builtins.readFile "${
fetchFromGitHub {
owner = "matiassingers";
repo = "emoji-flags";
rev = "93ae74505d09bb55a3eb3a511f1dfc0dd60a5347";
sha256 = "10j73sx6jb250v37bz2p7w8big0v8da3r6kpqz9xcl667gl8svwx";
}
}/data.json"
);
emoji-flags-file = writeText "emoji-flags.txt" (
lib.strings.concatMapStringsSep "\n" (
{
emoji,
title,
...
}:
"${emoji} ${title}"
) emoji-flags
);
unicode-file = runCommand "unicode.txt" { } ''
2022-03-10 21:52:12 +01:00
${
2025-12-27 22:22:54 +01:00
writers.writePython3 "generate.py"
{
flakeIgnore = [
"E501"
"E722"
];
}
''
import csv
2025-12-27 22:22:54 +01:00
with open("${
fetchurl {
url = "https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt";
sha256 = "0wva6ygnh3wrzpzy0kcbc32hz1ydx3k2pqc5xkqrfw83cpnrlvl0";
}
}", "r") as unicode_data:
reader = csv.reader(unicode_data, delimiter=";")
next(reader) # skip first row containing \0
for row in reader:
codepoint = row[0]
name = row[1]
alternate_name = row[10]
try:
print(chr(int(codepoint, 16)), codepoint, name, alternate_name, sep=" ")
except:
continue
''
2022-03-10 21:52:12 +01:00
} > $out
'';
2021-03-04 18:54:48 +01:00
kaomoji-file = writeText "kaomoji.txt" ''
¯\(°_o)/¯ dunno lol shrug dlol
¯\_()_/¯ dunno lol shrug dlol
( ͡° ͜ʖ ͡°) lenny
¯\_( ͡° ͜ʖ ͡°)_/¯ lenny shrug dlol
( д) aaah sad noo
(^o^)丿 hi yay hello
(^o^: ups hehe
(^^) yay
(´) angry argh
(^_^) byebye!! bye
<(^.^<) <(^.^)> (>^.^)> (7^.^)7 (>^.^<) dance
(-.-)Zzz... sleep
() oh noes woot
(°° table flip
() why woot
(___) gloom I see you
sad
(\/) (°,,,,°) (\/) krebs
(ل͜) putting table back
\(°°)/ flip all dem tablez
(`ω´) bear look
(ل͜) strong flex muscle bicep
(ò_óˇ) strong flex muscle bicep
(><) excite
( ` -´).* wizard spell magic
puss in boots big eye
̯̫̯̫(ˆ̮ ̮ˆ) nyan cat
ʕʔ bear
(ԾɷԾ) adventure time
() happy yay
() happy yay
(º º )/ panic
𓂺 penis
𓂸 penis
2021-03-04 18:54:48 +01:00
'';
2022-03-10 21:52:12 +01:00
in
2025-12-27 22:22:54 +01:00
# ref https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode
writers.writeDashBin "unicodmenu" ''
history_file=$HOME/.cache/unicodmenu
touch "$history_file"
PATH=${
lib.makeBinPath [
coreutils
dmenu
gawk
gnused
libnotify
2026-01-06 22:46:12 +01:00
wl-clipboard
2025-12-27 22:22:54 +01:00
xdotool
]
}
2025-12-27 22:22:54 +01:00
all_characters() {
tac "$history_file"
cat ${kaomoji-file} ${unicode-file} ${emoji-flags-file}
}
2025-12-27 22:22:54 +01:00
chosen=$(all_characters | awk '!seen[$0]++' | dmenu -p unicode -i -l 10 | tee --append "$history_file" | sed "s/ .*//")
2021-03-04 18:54:48 +01:00
2025-12-27 22:22:54 +01:00
[ "$chosen" != "" ] || exit
2021-03-04 18:54:48 +01:00
2026-01-06 22:46:12 +01:00
echo "$chosen" | tr -d '\n' | wl-copy
2021-03-04 18:54:48 +01:00
2025-12-27 22:22:54 +01:00
if [ -n "$1" ]; then
xdotool key Shift+Insert
else
notify-send --app-name="$(basename "$0")" "'$chosen' copied to clipboard." &
fi
''