diff options
77 files changed, 1121 insertions, 3671 deletions
diff --git a/.local/bin/.gitignore b/.local/bin/.gitignore index 9882826..061ef6f 100644 --- a/.local/bin/.gitignore +++ b/.local/bin/.gitignore @@ -2,4 +2,4 @@ backup anki pip* normalizer -waldl +d68k diff --git a/.local/bin/battery b/.local/bin/battery index 4eb547c..8d88634 100755 --- a/.local/bin/battery +++ b/.local/bin/battery @@ -1,62 +1,36 @@ #!/bin/sh -# This is kinda useless -STATUS="$(cat /sys/class/power_supply/BAT0/status)" -CAPACITY="$(cat /sys/class/power_supply/BAT0/capacity)" +status=$(cat /sys/class/power_supply/BAT0/status) +capacity=$(cat /sys/class/power_supply/BAT0/capacity) -BAT_0='' -BAT_10='' -BAT_20='' -BAT_30='' -BAT_40='' -BAT_50='' -BAT_60='' -BAT_70='' -BAT_80='' -BAT_90='' -BAT_100='' - -CBAT_0='' -CBAT_10='' -CBAT_20='' -CBAT_30='' -CBAT_40='' -CBAT_50='' -CBAT_60='' -CBAT_70='' -CBAT_80='' -CBAT_90='' -CBAT_100='' - -if [ "$STATUS" = "Charging" ]; then - case $CAPACITY in - 99|100) ICON="$CBAT_100" ;; - 9[0-8]) ICON="$CBAT_90" ;; - 8[0-9]) ICON="$CBAT_80" ;; - 7[0-9]) ICON="$CBAT_70" ;; - 6[0-9]) ICON="$CBAT_60" ;; - 5[0-9]) ICON="$CBAT_50" ;; - 4[0-9]) ICON="$CBAT_40" ;; - 3[0-9]) ICON="$CBAT_30" ;; - 2[0-9]) ICON="$CBAT_20" ;; - 1[0-9]) ICON="$CBAT_10" ;; - [0-9]) ICON="$CBAT_0" ;; +if [ "$status" = "Charging" ]; then + case $capacity in + 99|100) icon= ;; + 9[0-8]) icon= ;; + 8[0-9]) icon= ;; + 7[0-9]) icon= ;; + 6[0-9]) icon= ;; + 5[0-9]) icon= ;; + 4[0-9]) icon= ;; + 3[0-9]) icon= ;; + 2[0-9]) icon= ;; + 1[0-9]) icon= ;; + [0-9]) icon= ;; esac else - case $CAPACITY in - 99|100) ICON="$BAT_100" ;; - 9[0-8]) ICON="$BAT_90" ;; - 8[0-9]) ICON="$BAT_80" ;; - 7[0-9]) ICON="$BAT_70" ;; - 6[0-9]) ICON="$BAT_60" ;; - 5[0-9]) ICON="$BAT_50" ;; - 4[0-9]) ICON="$BAT_40" ;; - 3[0-9]) ICON="$BAT_30" ;; - 2[0-9]) ICON="$BAT_20" ;; - 1[0-9]) ICON="$BAT_10" ;; - [0-9]) ICON="$BAT_0" ;; + case $capacity in + 99|100) icon= ;; + 9[0-8]) icon= ;; + 8[0-9]) icon= ;; + 7[0-9]) icon= ;; + 6[0-9]) icon= ;; + 5[0-9]) icon= ;; + 4[0-9]) icon= ;; + 3[0-9]) icon= ;; + 2[0-9]) icon= ;; + 1[0-9]) icon= ;; + [0-9]) icon= ;; esac fi -kill -38 $(pidof sb) -env HERBE_ID=/battery herbe "$ICON $CAPACITY% $STATUS" +notify-send "$icon $capacity% $status" diff --git a/.local/bin/browser b/.local/bin/browser index bdb88b9..3f03a34 100755 --- a/.local/bin/browser +++ b/.local/bin/browser @@ -1,6 +1,6 @@ #!/bin/sh # chromium hardening flags -# breaks heavy js website +# TODO: find which flags break everything /usr/bin/chromium \ --block-new-web-contents \ diff --git a/.local/bin/dmenuhandler b/.local/bin/dmenuhandler index 0e201fe..8095ea8 100755 --- a/.local/bin/dmenuhandler +++ b/.local/bin/dmenuhandler @@ -1,40 +1,42 @@ #!/bin/sh -# Feed this script a link and it will give dmenu -# some choice programs to use to open it. +# Feed this script a link and it will spawn $DMENU with a selection of programs to open it -FEED="${1:-$(printf "" | dmenu -p 'Paste URL or file path')}" +# feed=${1:-$(true | $DMENU -p 'Paste URL or file path')} +feed=${1:-$(true | tofi --prompt-text 'Paste URL or file path ')} -[ -z "$FEED" ] && exit +[ -z "$feed" ] && exit -case "$(printf '%s\nbrowser\nmusic\nmpv\nmpv loop\nnsxiv\nPDF\nvim\nyt-dlp\nmusic-dlp\nsetbg' "$FEED" | dmenu -i -p "Open with ")" in - "$FEED") - printf '%s\n' "$FEED" | xclip -selection clipboard ;; # Copy URL +#case "$(printf '%s\nbrowser\nmusic\nmpv\nmpv loop\nimage\nPDF\nvim\nyt-dlp\nmusic-dlp\nsetbg' "$feed" | $DMENU -i -p "Open with ")" in +case "$(printf '%s\nbrowser\nmusic\nmpv\nmpv loop\nimage\nPDF\nvim\nyt-dlp\nmusic-dlp\nsetbg' "$feed" | tofi --prompt-text "Open with ")" in + "$feed") + printf '%s\n' "$feed" | wl-paste ;; browser) - setsid -f "$BROWSER" "$FEED" >/dev/null 2>&1 ;; + setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;; music) - setsid -f music "$FEED" >/dev/null 2>&1 ;; + setsid -f music "$feed" >/dev/null 2>&1 ;; mpv) - setsid -f mpv --quiet --ytdl-format=22 "$FEED" >/dev/null 2>&1 ;; + setsid -f mpv --quiet --ytdl-format=22 "$feed" >/dev/null 2>&1 ;; "mpv loop") - setsid -f mpv --quiet --ytdl-format=22 --loop "$FEED" >/dev/null 2>&1 ;; - nsxiv) - curl -sL "$FEED" > "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" && - nsxiv -a "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; + setsid -f mpv --quiet --ytdl-format=22 --loop "$feed" >/dev/null 2>&1 ;; + image) + curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && + imv "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; PDF) - curl -sL "$FEED" > "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" && - zathura "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; + curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && + zathura "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; vim) - curl -sL "$FEED" > "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" && - setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$FEED" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; + curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && + setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;; yt-dlp) - setsid -f ytdl v "$FEED" >/dev/null 2>&1 ;; + setsid -f ytdl v "$feed" >/dev/null 2>&1 ;; music-dlp) - if [ "$(printf 'no\nyes' | dmenu -i -p 'Playlist?')" = "yes" ]; then - setsid -f ytdl p "$FEED" >/dev/null 2>&1 + # if [ "$(printf 'no\nyes' | $DMENU -i -p 'Playlist?')" = "yes" ]; then + if [ "$(printf 'no\nyes' | tofi --prompt-text 'Playlist?')" = "yes" ]; then + setsid -f ytdl p "$feed" >/dev/null 2>&1 else - setsid -f ytdl m "$FEED" >/dev/null 2>&1 + setsid -f ytdl m "$feed" >/dev/null 2>&1 fi ;; setbg) - curl -sL "$FEED" > "$XDG_CACHE_HOME/pic" && + curl -sL "$feed" > "$XDG_CACHE_HOME/pic" && randwp "$XDG_CACHE_HOME/pic" >/dev/null 2>&1 ;; esac diff --git a/.local/bin/dmenuoff b/.local/bin/dmenuoff deleted file mode 100755 index ffd2dc6..0000000 --- a/.local/bin/dmenuoff +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# menu for shutdown or lock -# require nopass for poweroff and reboot and my build of dmenu for -hf - -red=$(xrdb -query | awk '/color1:/ { print $2 }') -cyan=$(xrdb -query | awk '/color6:/ { print $2 }') - -[ -z "$red" ] && red='#ff5555' -[ -z "$cyan" ] && cyan='#8be9fd' - -QUERY=$(printf 'no\nlock\npoweroff\nreboot' | dmenu -i -sb "$red" -hf "$cyan" -p 'Shutdown?') -ROOTCMD="${ROOTCMD:-$(command -v doas || command -v sudo)}" - -case "$QUERY" in -"lock") - slock ;; -"poweroff") - "$ROOTCMD" poweroff ;; -"reboot") - "$ROOTCMD" reboot ;; -esac diff --git a/.local/bin/dmenurecord b/.local/bin/dmenurecord index 845c2a1..cb8f147 100755 --- a/.local/bin/dmenurecord +++ b/.local/bin/dmenurecord @@ -2,6 +2,7 @@ # dmenu for recordings with ffmpeg # dependencies: pipewire-pulse/pulseaudio, ffmpeg, dmenu, slop # Original: https://github.com/whoisYoges/record-with-ffmpeg +# TODO: change to use wf-recorder and $DMENU set -e @@ -126,9 +127,9 @@ setSelectionVal() { } videosel() { - slop=$(slop -q -f "%x %y %w %h") || return 1 + coord=$(slurp -f "%x %y %w %h") || return 1 # shellcheck disable=SC2086 - setSelectionVal $slop + setSelectionVal $coord video "$1" } diff --git a/.local/bin/dmenusearch b/.local/bin/dmenusearch index 8e2d72b..4d6f725 100755 --- a/.local/bin/dmenusearch +++ b/.local/bin/dmenusearch @@ -1,77 +1,38 @@ #!/bin/sh -# search web, parabola/arch wiki, AUR, youtube, man pages or emoji with dmenu +# search web, AUR, youtube, man pages or emoji with $DMENU -# websearch dependencies : shuf, curl, /tmp needs to be temporary -# wiki dependency: parabola-wiki-docs (can be used with arch-wiki-docs) # youtube dependency: ytfzf # man dependencies: mandoc/man-db, zathura -# emoji dependency: xclip +# emoji dependency: wl-clipboard set -e web() { - NETWORK=clearnet # clearnet, tor or i2p - SOURCE=https://search.ratakor.com/instances.json - if [ ! -f "/tmp/instances" ]; then - curl -s "$SOURCE" -o /tmp/instances.json || - (notify-send "No internet connection"; exit 1) - - strip() { - tmp=${1##*"\"$NETWORK\": \""} - printf '%s\n' "${tmp%%"\","}" - } - - while IFS= read -r line || [ -n "$line" ]; do - case $line in - *"$NETWORK"*null,) - continue ;; - *"$NETWORK"*) - strip "$line" >> /tmp/instances ;; - esac - done < /tmp/instances.json - fi - - instance=$(shuf -n 1 /tmp/instances) - query=${1:-$(true | dmenu -p "Search:" -l 0)} - if [ "$query" = '!!' ]; then + SEARCH_ENGINE="https://4get.ca/web?s=" + # query=${1:-$(true | $DMENU -p "Search:" -l 0)} + query=${1:-$(true | tofi --prompt-text "Search: ")} + if [ -z "$query" ]; then + exit 1 + elif [ "$query" = '!!' ]; then [ -f /tmp/query ] && query=$(cat /tmp/query) || exit 1 else echo "$query" > /tmp/query fi - query="${instance}search.php?q=${query}&t=0" - -} - -wiki() { - WIKIDIR="/usr/share/doc/parabola-wiki/html/en" - - strip() { - tmp="${1##"$WIKIDIR/"}" - printf '\n%s' "${tmp%%".html"}" - } - - for file in "$WIKIDIR"/*.html; do - [ -f "$file" ] || continue - wikidocs="$wikidocs$(strip "$file")" - done - - wikidocs="${wikidocs#* -}" # remove a trailing newline + query="$SEARCH_ENGINE$query" - query="$WIKIDIR/$(printf '%s\n' "$wikidocs" | sed -e 's/_/ /g' | sort |\ - dmenu -i -l 10 -p 'Search Wiki: ').html" - query="$(printf '%s\n' "$query" | sed 's/ /_/g')" # separate otherwise set -e fails } aur() { AURSITE="https://aur.archlinux.org/packages?O=0&K=" - query="$AURSITE$(printf "" | dmenu -p "AUR:" -l 0)" + # query="$AURSITE$(true | $DMENU -p "AUR:" -l 0)" + query="$AURSITE$(true | tofi --prompt-text "AUR: ")" } manpdf() { - INPUT=${1:-$(man -k . | cut -c 1-80 | dmenu -i -l 20 | awk '{print $1}')} + # INPUT=${1:-$(man -k . | cut -c 1-80 | $DMENU -i -l 20 | awk '{print $1}')} + INPUT=${1:-$(man -k . | cut -c 1-80 | tofi | awk '{print $1}')} [ -z "$INPUT" ] && return 1 if command -v mandb; then # This is man-db @@ -83,18 +44,18 @@ manpdf() { } emoji() { - CHOSEN=$(cut -d ';' -f1 "$XDG_DATA_HOME/emoji" | dmenu -i -l 30 | sed "s/ .*//") + # CHOSEN=$(cut -d ';' -f1 "$XDG_DATA_HOME/emoji" | $DMENU -i -l 30 | sed "s/ .*//") + CHOSEN=$(cut -d ';' -f1 "$XDG_DATA_HOME/emoji" | tofi | sed "s/ .*//") [ -z "$CHOSEN" ] && return 1 - printf '%s' "$CHOSEN" | xclip -selection clipboard - # notify-send "'$CHOSEN' copied to clipboard." + printf '%s' "$CHOSEN" | wl-copy + notify-send "'$CHOSEN' copied to clipboard." } main() { - case ${1:-$(printf 'web\naur\nyoutube\nman\nemoji' | dmenu -i)} in + # case ${1:-$(printf 'web\naur\nyoutube\nman\nemoji' | $DMENU -i)} in + case ${1:-$(printf 'web\naur\nyoutube\nman\nemoji' | tofi)} in web) web "$2" ;; - #wiki) - # wiki ;; aur) aur ;; youtube) diff --git a/.local/bin/editor b/.local/bin/editor deleted file mode 100755 index 0e83232..0000000 --- a/.local/bin/editor +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# this is for changing neovim's theme on the fly with themeswap - -SOCKET="/tmp/nvim.$(base32 < /dev/urandom | head -c 5).pipe" -trap 'rm -f $SOCKET' INT QUIT TERM EXIT HUP -nvim --listen "$SOCKET" "$@" diff --git a/.local/bin/glitchlock b/.local/bin/glitchlock new file mode 100755 index 0000000..6e3722a --- /dev/null +++ b/.local/bin/glitchlock @@ -0,0 +1,31 @@ +#!/bin/sh + +# based on https://github.com/xero/glitchlock + +grim /tmp/lock.png +convert /tmp/lock.png /tmp/lock.jpg +file=/tmp/lock.jpg + +datamosh() { + file_size=$(wc -c < "$file") + header_size=1000 + skip=$(shuf -i "$header_size"-"$file_size" -n 1) + count=$(shuf -i 1-10 -n 1) + for _ in $(seq 1 "$count"); do + byteStr=$byteStr'\x'$(shuf -i 0-255 -n 1) + done + printf "%s" "$byteStr" | + dd of="$file" bs=1 seek="$skip" count="$count" conv=notrunc >/dev/null 2>&1 +} + +steps=$(shuf -i 40-70 -n 1) +for _ in $(seq 1 "$steps"); do + datamosh "$file" +done + +convert /tmp/lock.jpg /tmp/lock.png >/dev/null 2>&1 +rm /tmp/lock.jpg +file=/tmp/lock.png + +timestamp=$(date +%F-%R:%S) +swaylock -i "$file" > "/tmp/swaylock-$timestamp.log" 2>&1 diff --git a/.local/bin/irc b/.local/bin/irc deleted file mode 100755 index e33b284..0000000 --- a/.local/bin/irc +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# color username and save history for sic - -HIST=${XDG_STATE_HOME:-$HOME/.local/state}/sic -mkdir -p "$HIST" -HIST=$HIST/$(date '+sic-%Y-%m-%d-%H:%M-%S') - -if [ -z "$*" ]; then - sic -h "irc.libera.chat" | tee -a "$HIST" |\ - awk "{gsub(\"$USER\",\"\033[1;34m$USER\033[m\")}1" -elif [ "$1" = "-xdg" ]; then - link=${2#irc://} - [ "$link" = "$2" ] && link=${2#ircs://} - host=${link%:*} - host=${link%/*} - #port=${link#"$host:"} - sic -h "$host" | tee -a "$HIST" |\ - awk "{gsub(\"$USER\",\"\033[1;34m$USER\033[m\")}1" -else - sic "$@" | tee -a "$HIST" |\ - awk "{gsub(\"$USER\",\"\033[1;34m$USER\033[m\")}1" -fi diff --git a/.local/bin/lfub b/.local/bin/lfub deleted file mode 100755 index 0d8b7fe..0000000 --- a/.local/bin/lfub +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# This is a wrapper script for lf that allows it to create image previews with -# ueberzug. This works in concert with the lf configuration file and the -# lf-cleaner script. - -set -e - -cleanup() { - exec 3>&- - rm "$FIFO_UEBERZUG" -} - -if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then - lf "$@" -else - [ ! -d "$XDG_CACHE_HOME/lf" ] && mkdir -p "$XDG_CACHE_HOME/lf" - export FIFO_UEBERZUG="$XDG_CACHE_HOME/lf/ueberzug-$$" - mkfifo "$FIFO_UEBERZUG" - ueberzug layer -s <"$FIFO_UEBERZUG" -p json & - exec 3>"$FIFO_UEBERZUG" - trap cleanup HUP INT QUIT TERM PWR EXIT - lf "$@" 3>&- -fi diff --git a/.local/bin/music b/.local/bin/music index 282feda..6573943 100755 --- a/.local/bin/music +++ b/.local/bin/music @@ -1,30 +1,35 @@ #!/bin/sh -# Simple music selector with dmenu that uses and interacts with mpv. -# Have a look at musiccmd, .local/etc/mpv/music and sb (statusbar) +# Simple music selector with a $DMENU that uses and interacts with mpv. +# Have a look at musiccmd, .local/etc/mpv/music/ and +# .local/etc/waybar/scripts/music.sh # shellcheck disable=SC2012 -MUSICDIR="${XDG_MUSIC_DIR:-$HOME/Music}" +MUSICDIR=${XDG_MUSIC_DIR:-$HOME/Music} +SOCKET=${XDG_RUNTIME_DIR:-/tmp}/music.sock if [ "$1" = "--shuffle" ]; then - SHUFFLE=yes + shuffle=yes shift fi -MUSIC="${1:-$MUSICDIR/$(ls "$MUSICDIR" | cut -c 1-50 | dmenu -i -p "Play ")}" -SCRIPT="${XDG_CONFIG_HOME:-$HOME/.config}/mpv/music/local.lua" +# music="${1:-$MUSICDIR/$(ls "$MUSICDIR" | cut -c 1-50 | $DMENU -p "Play ")}" +music="${1:-$MUSICDIR/$(ls "$MUSICDIR" | cut -c 1-50 | tofi --padding-left 25% --prompt-text "Play ")}" +script="${XDG_CONFIG_HOME:-$HOME/.config}/mpv/music/local.lua" -if [ "$MUSIC" = "$MUSICDIR/urls" ]; then - MUSIC="$(cat "$MUSICDIR/urls/$(ls "$MUSICDIR/urls" | dmenu -i -p "Play ")")" - SCRIPT="${XDG_CONFIG_HOME:-$HOME/.config}/mpv/music/online.lua" +if [ "$music" = "$MUSICDIR/urls" ]; then + # music="$(cat "$MUSICDIR/urls/$(ls "$MUSICDIR/urls" | $DMENU -p "Play ")")" + music="$(cat "$MUSICDIR/urls/$(ls "$MUSICDIR/urls" | tofi --padding-left 25% --prompt-text "Play ")")" + script="${XDG_CONFIG_HOME:-$HOME/.config}/mpv/music/online.lua" fi -[ "$MUSIC" = "$MUSICDIR/" ] || [ -z "$MUSIC" ] && exit 1 +[ "$music" = "$MUSICDIR/" ] || [ -z "$music" ] && exit 1 -if [ -z "$SHUFFLE" ] && [ -d "$MUSIC" ] || printf '%s' "$MUSIC" | grep -q playlist; then - SHUFFLE="$(printf 'yes\nno' | dmenu -i -p 'Shuffle?')" - [ -z "$SHUFFLE" ] && exit 1 +if [ -z "$shuffle" ] && [ -d "$music" ] || printf '%s' "$music" | grep -q playlist; then + # shuffle="$(printf 'yes\nno' | $DMENU -p 'Shuffle?')" + shuffle="$(printf 'yes\nno' | tofi --prompt-text 'Shuffle? ')" + [ -z "$shuffle" ] && exit 1 fi -printf 'stop\n' | socat - /tmp/mpvsocket 2> /dev/null -mpv --vid=no --input-ipc-server=/tmp/mpvsocket --loop-playlist\ - --ytdl-format=ba --script="$SCRIPT" --shuffle="$SHUFFLE" "$MUSIC" +printf 'stop\n' | socat - "$SOCKET" 2> /dev/null +mpv --vid=no --input-ipc-server="$SOCKET" --loop-playlist\ + --ytdl-format=ba --script="$script" --shuffle="$shuffle" "$music" diff --git a/.local/bin/musiccmd b/.local/bin/musiccmd index bfecc20..5eae978 100755 --- a/.local/bin/musiccmd +++ b/.local/bin/musiccmd @@ -1,32 +1,32 @@ #!/bin/sh # helper for the music script -# dependencies: music, mpv, socat, yt-dlp, ffmpeg, imagemagick -# optional dependencies: sb, libnotify, herbe +# dependencies: music, mpv, socat, yt-dlp, ffmpeg, imagemagick, $DMENU +# optional dependencies: waybar, notify-send, imv # shellcheck disable=SC2046 -FAVDIR="${XDG_MUSIC_DIR:-$HOME/Music}/favorite" -DLDIR="${XDG_MUSIC_DIR:-$HOME/Music}/download" -CACHE="${XDG_CACHE_HOME:-$HOME/.cache}" -IMG="nsxiv" +FAVDIR=${XDG_MUSIC_DIR:-$HOME/Music}/favorite +DLDIR=${XDG_MUSIC_DIR:-$HOME/Music}/download +CACHE=${XDG_CACHE_HOME:-$HOME/.cache} +SOCKET=${XDG_RUNTIME_DIR:-/tmp}/music.sock getpath() { tmp=$(printf '{ "command": ["get_property", "path"] }\n'\ - | socat - /tmp/mpvsocket) + | socat - "$SOCKET") tmp=${tmp#{\"data\":\"} path=${tmp%\",\"request_id\":0,\"error\":\"success\"\}} } gettitle() { tmp=$(printf '{ "command": ["get_property", "media-title"] }\n'\ - | socat - /tmp/mpvsocket) + | socat - "$SOCKET") tmp=${tmp##{\"data\":\"} title=${tmp%\",\"request_id\":0,\"error\":\"success\"\}} } getvol() { tmp=$(printf '{ "command": ["get_property", "volume"] }\n'\ - | socat - /tmp/mpvsocket) - tmp=${tmp#{\"data\":} + | socat - "$SOCKET") + tmp="${tmp#{\"data\":}" # smh this line breaks highlighting printf '%s\n' "${tmp%.000000,\"request_id\":0,\"error\":\"success\"\}}" } @@ -74,30 +74,33 @@ getthumbnail() { main() { if ! pgrep -x music >/dev/null; then - kill -34 $(pidof sb) - herbe "Error: There is no music playing"\ - "Do you want to play some ?" && music - return + kill -35 $(pidof waybar) + notify-send "Error: There is no music playing" + return 1 fi - cmd="${1:-$(printf '⏯️pause/play\n⏭️next\n⏮️prev\n📢volume\n🔳stop -⭐favorite\n⬇️download\n🖼️thumbnail' | dmenu -i -p "musiccmd")}" + cmd="${1:-$(printf '⏯️ pause/play\n⏭️ next\n⏮️ prev\n📢 volume\n🔳 stop +⭐ favorite\n⬇️ download\n🖼️ thumbnail' | tofi --prompt-text "musiccmd ")}" +# ⭐ favorite\n⬇️ download\n🖼️ thumbnail' | $DMENU -p "musiccmd ")}" case "$cmd" in cycle|*pause|*play) - printf 'cycle pause\n' | socat - /tmp/mpvsocket - kill -34 $(pidof sb) ;; + printf 'cycle pause\n' | socat - "$SOCKET" + kill -35 $(pidof waybar) ;; *next) - printf 'playlist-next\n' | socat - /tmp/mpvsocket ;; + printf 'playlist-next\n' | socat - "$SOCKET" ;; *prev) - printf 'playlist-prev\n' | socat - /tmp/mpvsocket ;; + printf 'playlist-prev\n' | socat - "$SOCKET" ;; *volume) + # printf '{ "command": ["set_property", "volume", %s] }\n'\ + # "${2:-$(true | $DMENU -p "Current volume: $(getvol) -> ")}"\ + # | socat - "$SOCKET" 1> /dev/null ;; printf '{ "command": ["set_property", "volume", %s] }\n'\ - "${2:-$(true | dmenu -p "Current volume: $(getvol)")}"\ - | socat - /tmp/mpvsocket 1> /dev/null ;; + "${2:-$(true | tofi --prompt-text "Current volume: $(getvol) -> ")}"\ + | socat - "$SOCKET" 1> /dev/null ;; *stop) - printf 'stop\n' | socat - /tmp/mpvsocket - kill -34 $(pidof sb) ;; + printf 'stop\n' | socat - "$SOCKET" + kill -35 $(pidof waybar) ;; *favorite|fav) getpath gettitle @@ -109,7 +112,7 @@ main() { *thumbnail) getpath if getthumbnail; then - $IMG "$CACHE/thumbnail.jpg" + imv "$CACHE/thumbnail.jpg" else notify-send "Error: can't get thumbnail" return 1 diff --git a/.local/bin/plumber b/.local/bin/plumber index 3a0516f..b13ff9d 100755 --- a/.local/bin/plumber +++ b/.local/bin/plumber @@ -4,10 +4,7 @@ # dependencies: # - default programs # - xdo -# - xclip or xsel -# - (optional) herbe and dmenusearch web -# - (optional) dmenu_path -# - (optional) st with plumber patch +# - wl-clipboard # shellcheck disable=SC2086 # default programs @@ -15,15 +12,17 @@ WEB="xdg-open" TEXT="$TERMINAL -e $EDITOR" VIDEO="mpv --ytdl-format=22 --loop" AUDIO="music --shuffle" -PIC="nsxiv -a" +PIC="imv" DOC="zathura" -DIR="$TERMINAL -e lfub" +DIR="$TERMINAL -e lf" HISTDIR=${XDG_STATE_HOME:-$HOME/.local/state}/plumber HISTFILE=$HISTDIR/history -openlink() { +openurls() { case "$1" in + file://*) + openfile "${1##file://}" ;; *.mkv|*.webm|*.mp4|*.mov|*youtube.com/watch*|*youtube.com/playlist*|\ *youtube.com/shorts*|*youtu.be*|*inv*/playlist*|*inv*/watch*) setsid -f $VIDEO "$1" >/dev/null 2>&1 ;; @@ -77,7 +76,7 @@ openfile() { checksel() { case "$1" in http://*|https://*|irc://*|ircs://*|git://*|git@*) - openlink "$1" ;; + openurls "$1" ;; /*) opensel "$1" "$1" ;; @@ -100,19 +99,7 @@ opensel() { return fi - if [ ! -f "$1" ]; then - progname=${2%\ *} - for prog in $(dmenu_path); do - case $prog in - "$progname") - $TERMINAL -e sh -c\ - "cd ${1%"$2"}; echo \$ $2; $2; $SHELL" - return ;; - esac - done - herbe "Do you want to search for '$2' ?" && dmenusearch web "$2" - return - fi + [ ! -f "$1" ] && return case "$1" in *.mkv|*.webm|*.mp4|*.mov) @@ -138,10 +125,9 @@ Usage: ${0##*/} [options] [args] Options: no option [args] | Try to guess what to do - -l|--link [links] | Open the links + -u|--url [urls] | Open the urls -f|--file [files] | Open the files or the folders -s|--sel | Use the selection buffer instead, Plan9's way - -t|--term | To be used only when invoking through a patched st -h|--help │ Print this help message Config: @@ -158,7 +144,7 @@ EOF main() { mkdir -p "$HISTDIR" case "$1" in - -l|--link) + -u|--url) shift if [ -z "$1" ]; then printf '\033[31mError:\033[m no argument given\n' >&2 @@ -167,7 +153,7 @@ main() { fi for arg in "$@"; do printf '%s\n' "$arg" >> "$HISTFILE" - openlink "$arg" + openurls "$arg" done ;; -f|--file) shift @@ -181,11 +167,9 @@ main() { openfile "$arg" done ;; -s|--sel|'') - sel=$(xclip -o 2>/dev/null || xsel -opn 2>/dev/null) + sel=$(wl-paste) sel=${sel#"${sel%%[![:space:]]*}"} - - # clear clipboard - true | xclip 2>/dev/null || true | xsel 2>/dev/null + wl-copy --clear if [ -z "$sel" ]; then printf '\033[31mError:\033[m selection buffer is empty\n' >&2 @@ -194,13 +178,6 @@ main() { fi printf '%s\n' "$sel" >> "$HISTFILE" checksel "$sel" ;; - -t|--term) - #if [ "$(ps -o comm= $PPID)" != "st" ]; then - # printf '\033[31mError:\033[m --term option used outside of st\n' >&2 - # usage - # return 1 - #fi - [ -n "$2" ] && checksel "$2" ;; -h|--help) usage ;; -*) @@ -210,8 +187,8 @@ main() { *) for arg in "$@"; do case "$arg" in - http://*|https://*|git://*|irc://*|ircs://*) - openlink "$arg" ;; + http://*|https://*|git://*|irc://*|ircs://*|file://*) + openurls "$arg" ;; *) openfile "$arg" ;; esac diff --git a/.local/bin/randwp b/.local/bin/randwp index 30df667..9b0e77c 100755 --- a/.local/bin/randwp +++ b/.local/bin/randwp @@ -17,15 +17,19 @@ searchwp() { fi } -# 1 screen with hsetroot searchwp -hsetroot -cover "$wp" 1>/dev/null +OLD_PID=$(cat /tmp/swaybg.pid) +swaybg -m fill -i "$wp" 2>/dev/null & +echo $! > /tmp/swaybg.pid +(sleep 3 && kill "$OLD_PID" 2>/dev/null || exit 0) & -# multiple screens with xwallpaper -#for output in $(xrandr | awk '$2=="connected" {print $1}'); do -# searchwp -# args="$args --output $output --zoom $wp" -#done -## doing this speedup a lot, there must be no space in wallpaper filename -## shellcheck disable=SC2086 -#xwallpaper $args +# multiple screens (TODO: kill and pid) +# killall swaybg +# for output in $(xrandr | awk '$2=="connected" {print $1}'); do +# searchwp +# args="$args -o $output -m fill -i $wp" +# # swaybg -o "$output" -m fill -i "$wp" +# done +# # doing this speedup a lot, there must be no space in wallpaper filename +# # shellcheck disable=SC2086 +# swaybg $args & diff --git a/.local/bin/rotdir b/.local/bin/rotdir deleted file mode 100755 index 3b3f39d..0000000 --- a/.local/bin/rotdir +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# When I open an image from the file manager in sxiv (the image viewer), I want -# to be able to press the next/previous keys to key through the rest of the -# images in the same directory. This script "rotates" the content of a -# directory based on the first chosen file, so that if I open the 15th image, -# if I press next, it will go to the 16th etc. Autistic, I know, but this is -# one of the reasons that sxiv is great for being able to read standard input. -# ^ this is Luke's toughts and I approve them - -[ -z "$1" ] && echo "usage: rotdir regex 2>&1" && exit 1 -base="$(basename "$1")" -ls "$PWD" | awk -v BASE="$base" 'BEGIN { lines = ""; m = 0; } { if ($0 == BASE) { m = 1; } } { if (!m) { if (lines) { lines = lines"\n"; } lines = lines""$0; } else { print $0; } } END { print lines; }' diff --git a/.local/bin/screenshot b/.local/bin/screenshot index ea47027..d854f2e 100755 --- a/.local/bin/screenshot +++ b/.local/bin/screenshot @@ -1,12 +1,12 @@ #!/bin/sh -# take a screenshot with main +# take a screenshot with grim OUTPUT="$XDG_PICTURES_DIR/screenshots/$(date '+%Y-%m-%d_%H:%M:%S').png" -XCLIPCMD="xclip -sel clip -t image/png" -case "$(printf "save select\nsave screen\ncopy select\ncopy screen" | dmenu -i -p "Screenshot")" in - "save select") maim -u -s "$OUTPUT" ;; - "save screen") maim -u -q -d 0.5 "$OUTPUT" ;; - "copy select") maim -u -s | $XCLIPCMD ;; - "copy screen") maim -u -q -d 0.5 | $XCLIPCMD ;; +#case "$(printf "save select\nsave screen\ncopy select\ncopy screen" | $DMENU -i -p "Screenshot")" in +case "$(printf "save select\nsave screen\ncopy select\ncopy screen" | $DMENU --prompt-text "Screenshot ")" in + "save select") grim -g "$(slurp)" "$OUTPUT" ;; + "save screen") grim "$OUTPUT" ;; + "copy select") grim -g "$(slurp)" - | wl-copy ;; + "copy screen") grim - | wl-copy ;; esac diff --git a/.local/bin/shutdown-menu b/.local/bin/shutdown-menu new file mode 100755 index 0000000..7e640da --- /dev/null +++ b/.local/bin/shutdown-menu @@ -0,0 +1,20 @@ +#!/bin/sh +# menu for lock and shutdown +# requires nopass for openrc-shutdown + +RED="#cc241d" +#CYAN="#689d6a" +#query=$(printf ' lock\n exit wm\n⏻ shutdown\n⏼ reboot' | $DMENU -i -sb "$RED" -hf "$CYAN" -p 'System ') +query=$(printf '\n\n lock\n exit wm\n⏻ shutdown\n⏼ reboot' | tofi --prompt-text 'System ' --selection-color "$RED") +ROOTCMD=${ROOTCMD:-$(command -v doas || command -v sudo)} + +case $query in +*"lock") + glitchlock ;; +*"exit wm") + riverctl exit ;; +*"shutdown") + $ROOTCMD openrc-shutdown -p 0 ;; +*"reboot") + $ROOTCMD openrc-shutdown -r 0 ;; +esac diff --git a/.local/bin/themeswap b/.local/bin/themeswap deleted file mode 100755 index c936e9b..0000000 --- a/.local/bin/themeswap +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh -# apply a random theme or the one given as an argument -# shellcheck disable=SC2046,SC2016 - -CONF=${XDG_CONFIG_HOME:-$HOME/.config} -CACHE=${XDG_CACHE_HOME:-$HOME/.cache} -THEME=${1:-$(shuf -n 1 "$CONF/sx/themes")} - -if [ -z "$1" ] && [ -f "$CACHE/theme" ]; then - while [ "$THEME" = "$(cat "$CACHE/theme")" ]; do - THEME=$(shuf -n 1 "$CONF/sx/themes") - done -fi - -# set theme variables -case $THEME in -dracula) - bg=dark - theme=dracula - bat=Dracula ;; -dark|gruvbox|gruvbox-dark) - bg=dark - theme=gruvbox-$bg ;; -light|gruvbox-light) - bg=light - theme=gruvbox-$bg ;; -*) - exit 1 ;; -esac - -echo "$theme" > "$CACHE/theme" - -# change theme -xrdb "$CONF/sx/$theme" -sed -i -e "s/^colorscheme.*/colorscheme ${theme%"-$bg"}/"\ - -e "s/lualine.themes.*/lualine.themes.${theme%"-$bg"}'/"\ - -e "s/^set background=.*/set background=$bg/"\ - "$CONF/nvim/appearance.vim" -sed -i -e "s/--theme.*/--theme=${bat:-$theme}/" "$CONF/bat/config" -sed -i -e "s/^THEME=.*/THEME=${bat:-$theme}/" "$CONF/lf/scope" -sed -i -e "s/^gtk-theme-name.*/gtk-theme-name=$theme/" "$CONF/gtk-3.0/settings.ini" -sed -i -e "s/vivid.*/vivid generate $theme):di=1;34\"/" "$CONF/zsh/.zshenv" -case $theme in -gruvbox*) - sed -i -e "s/^local colors =.*/local colors = require('${theme%"-$bg"}').palette/"\ - -e 's/colors\./colors\.neutral_/g'\ - -e 's/neutral_neutral_/neutral_/g'\ - -e 's/neutral_black/dark0/'\ - -e 's/neutral_dark0/dark0/'\ - "$CONF/nvim/appearance.vim" ;; -dracula) - sed -i -e "s/^local colors =.*/local colors = require('$theme.palette')/"\ - -e 's/neutral_//g'\ - -e 's/dark0/black/'\ - "$CONF/nvim/appearance.vim" ;; -esac - -# disable transparency for light themes -case $bg in -light) - kill $(pidof picom) 2>/dev/null ;; -dark) - pgrep -x picom >/dev/null || picom -b ;; -esac - -# restart programs -if pgrep -x dwm >/dev/null; then - kill -10 $(pidof dwm) $(pidof st) -fi -if pgrep -x nvim >/dev/null; then - for socket in /tmp/nvim.*.pipe; do - nvim --server "$socket" --remote-send '<C-\><C-N>:source $MYVIMRC<CR>' - done -fi diff --git a/.local/bin/ytdl b/.local/bin/ytdl index aea1e64..4f9e65d 100755 --- a/.local/bin/ytdl +++ b/.local/bin/ytdl @@ -30,7 +30,8 @@ m) notify-send "Music downloaded" || (notify-send "Error: Download failed"; exit 1) ;; p) - NAME=$(printf '' | dmenu -p 'Name ') + # NAME=$(true | $DMENU -p 'Name ') + NAME=$(true | tofi --prompt-text 'Name ') mkdir -p "$MUSICDIR/$NAME" notify-send "Playlist download started" yt-dlp -f 'ba' -x --embed-thumbnail --audio-format mp3\ diff --git a/.local/etc/cli-visualizer/colors/dracula b/.local/etc/cli-visualizer/colors/dracula deleted file mode 100644 index a7d6ce5..0000000 --- a/.local/etc/cli-visualizer/colors/dracula +++ /dev/null @@ -1,8 +0,0 @@ -#6272A4 -#BD93F9 -#8BE9FD -#50FA7B -#F1FA8C -#FFB86C -#FF5555 -#FF79C6 diff --git a/.local/etc/cli-visualizer/config b/.local/etc/cli-visualizer/config deleted file mode 100644 index 2b7aebf..0000000 --- a/.local/etc/cli-visualizer/config +++ /dev/null @@ -1,90 +0,0 @@ -##Refresh rate of the visualizers. A really high refresh rate may cause screen tearing. Default is 20. visualizer.fps=20 - -##Sets the audio sources to use. -##Currently available ones are "mpd", "pulse", "shmem", and "alsa". Defaults to "pulse". -#audio.sources=pulse - -##vis tries to find the correct pulseaudio sink, however this will not work on all systems. -##If pulse audio is not working with vis try switching the audio source. A list can be found by running the -##command pacmd list-sinks | grep -e 'name:' -e 'index' -#audio.pulse.source=0 - -##Defaults to "/tmp/mpd.fifo" -#mpd.fifo.path=/tmp/mpd.fifo - -##If set to false the visualizers will use mono mode instead of stereo. Some visualizers will -##behave differently when mono is enabled. For example, spectrum show two sets of bars. -audio.stereo.enabled=false - -##Specifies how often the visualizer will change in seconds. 0 means do not rotate. Default is 0. -#visualizer.rotation.secs=10 - -##Configures the samples rate and the cutoff frequencies. -#audio.sampling.frequency=44100 -#audio.low.cutoff.frequency=30 -#audio.high.cutoff.frequency=22050 - -##Applies scaling factor to both lorenz and ellipse visualizers. This is useful when the system audio is set -#to a low volume. -#visualizer.scaling.multiplier=1.0 - -##Configures the visualizers and the order they are in. Available visualizers are spectrum,lorenz,ellipse. -##Defaults to spectrum,ellipse,lorenz -#visualizers=spectrum,ellipse,lorenz - - -##Configures what character the spectrum visualizer will use. Specifying a space (e.g " ") means the -##background will be colored instead of the character. Defaults to " ". -#visualizer.spectrum.character=# - -##Spectrum bar width. Defaults to 2. -#visualizer.spectrum.bar.width=2 - -##The amount of space between each bar in the spectrum visualizer. Defaults to 1. It's possible to set this to -##zero to have no space between bars -#visualizer.spectrum.bar.spacing=1 - -##Available smoothing options are monstercat, sgs, none. -#visualizer.spectrum.smoothing.mode=sgs - -##This configures the falloff effect on the spectrum visualizer. Available falloff options are fill,top,none. -##Defaults to "fill" -#visualizer.spectrum.falloff.mode=fill - -##Configures how fast the falloff character falls. This is an exponential falloff so values usually look -##best 0.9+ and small changes in this value can have a large effect. Defaults to 0.95 -#visualizer.spectrum.falloff.weight=0.95 - -##Margins in percent of total screen for spectrum visualizer. All margins default to 0 -#visualizer.spectrum.top.margin=0.30 -#visualizer.spectrum.bottom.margin=0.10 -#visualizer.spectrum.right.margin=0.10 -#visualizer.spectrum.left.margin=0.10 - -##Reverses the direction of the spectrum so that high freqs are first and low freqs last. Defaults to false. -#visualizer.spectrum.reversed=false - -##This configures the sgs smoothing effect on the spectrum visualizer. More points spreads out the smoothing -##effect and increasing passes runs the smoother multiple times on reach run. Defaults are points=3 and passes=1 -#visualizer.sgs.smoothing.points=3 -#visualizer.sgs.smoothing.passes=1 - - -##Configures what character the ellipse visualizer will use. Specifying a space (e.g " ") means the -##background will be colored instead of the character. Defaults to "█". -#visualizer.ellipse.character=# - -##The radius of each color ring in the ellipse visualizer. Defaults to 2. -#visualizer.ellipse.radius=2 - - -##Configures what character the lorenz visualizer will use. Specifying a space (e.g " ") means the -##background will be colored instead of the character. Defaults to "█". -#visualizer.lorenz.character=# - - -##Turns off overriding the user's terminal colors. This is true by default. -#colors.override.terminal=false - -##Specifies the color scheme. The color scheme must be in ~/.config/vis/colors/ directory. The default scheme is "colors". -colors.scheme=dracula diff --git a/.local/etc/crontab b/.local/etc/crontab index 7bf34ef..96c9db3 100644 --- a/.local/etc/crontab +++ b/.local/etc/crontab @@ -1,2 +1 @@ -*/30 * * * * kill -49 $(pidof sb); randwp -0 0 * * * kill -48 $(pidof sb) +*/30 * * * * randwp diff --git a/.local/etc/foot/foot.ini b/.local/etc/foot/foot.ini new file mode 100644 index 0000000..9728ab9 --- /dev/null +++ b/.local/etc/foot/foot.ini @@ -0,0 +1,61 @@ +font = monospace:size=10, Noto Emoji:size=8 +pad = 5x5 +#dpi-aware = yes +#notify = notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +[url] +launch = plumber --url ${url} + +[scrollback] +lines=4096 + +[key-bindings] +unicode-input=none +show-urls-launch=Control+Shift+u +show-urls-copy=Mod1+l +search-start=Mod1+s + +scrollback-up-half-page=Mod1+u +scrollback-down-half-page=Mod1+d +scrollback-up-line=Mod1+k +scrollback-down-line=Mod1+j +clipboard-copy=Control+Shift+c +clipboard-paste=Control+Shift+v +primary-paste=Shift+Insert +font-increase=Control+Shift+plus +font-decrease=Control+Shift+minus +font-reset=Control+equal +#pipe-selected=[xargs -r firefox] none + +[search-bindings] +find-prev=Control+Shift+n +find-next=Control+n + +[mouse-bindings] +primary-paste=none + +[cursor] +color = 1d2021 ebdbb2 + +[colors] +alpha = 0.85 +foreground = ebdbb2 +background = 282828 + +regular0 = 282828 # black +regular1 = cc241d # red +regular2 = 98971a # green +regular3 = d79921 # yellow +regular4 = 458588 # blue +regular5 = b16286 # magenta +regular6 = 689d6a # cyan +regular7 = a89984 # white + +bright0 = 928374 # black +bright1 = fb4934 # red +bright2 = b8bb26 # green +bright3 = fabd2f # yellow +bright4 = 83a598 # blue +bright5 = d3869b # magenta +bright6 = 8ec07c # cyan +bright7 = ebdbb2 # white diff --git a/.local/etc/redshift/redshift.conf b/.local/etc/gammastep/config.ini index 2e3db49..f833192 100644 --- a/.local/etc/redshift/redshift.conf +++ b/.local/etc/gammastep/config.ini @@ -1,4 +1,4 @@ -[redshift] +[general] fade=0 temp-night=3000 location-provider=manual diff --git a/.local/etc/gtk-3.0/gtk.css b/.local/etc/gtk-3.0/gtk.css new file mode 100644 index 0000000..08f8b75 --- /dev/null +++ b/.local/etc/gtk-3.0/gtk.css @@ -0,0 +1,7 @@ +/* No (default) titlebar on wayland */ +.titlebar, .css, headerbar { + background-image:none; + background-color: transparent; + margin-top: -100px; + margin-bottom: 50px; +} diff --git a/.local/etc/imv/config b/.local/etc/imv/config new file mode 100644 index 0000000..16e398e --- /dev/null +++ b/.local/etc/imv/config @@ -0,0 +1,4 @@ +[binds] +n = next +p = prev +<Ctrl+p> = exec echo $imv_current_file diff --git a/.local/etc/lf/cleaner b/.local/etc/lf/cleaner deleted file mode 100755 index a184d84..0000000 --- a/.local/etc/lf/cleaner +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -if [ -n "$FIFO_UEBERZUG" ]; then - printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" -fi diff --git a/.local/etc/lf/lfrc b/.local/etc/lf/lfrc index 2721cb8..3860ddc 100644 --- a/.local/etc/lf/lfrc +++ b/.local/etc/lf/lfrc @@ -1,47 +1,25 @@ -# Stolen from Luke Smith config -# Note on Image Previews -# For those wanting image previews, like this system, there are four steps to -# set it up. These are done automatically for those that useed my Makefile users, -# but I will state them here for others doing it manually. -# -# 1. ueberzug must be installed. -# 2. The scope file (~/.local/etc/lf/scope for me), must have a command similar to -# mine to generate ueberzug images. -# 3. A `set cleaner` line as below is a cleaner script. -# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me) -# that creates the environment for ueberzug. This command can be be aliased -# in your shellrc (`alias lf="lfub") or if set to a binding, should be -# called directly instead of normal lf. - -# Basic vars set shellopts '-eu' set ifs "\n" set scrolloff 10 set icons set period 1 -set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" -set cleaner '~/.local/etc/lf/cleaner' set previewer '~/.local/etc/lf/scope' set autoquit true +set sixel true # cmds/functions cmd open ${{ - case $(file --mime-type "$(readlink -f $f)" -b) in + case $(file --mime-type "$(readlink -f $f)" -b) in image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;; - text/*|application/json|inode/x-empty|application/x-subrip) $EDITOR $fx;; - image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" | - setsid -f nsxiv -aio 2>/dev/null | while read -r file; do - [ -z "$file" ] && continue - lf -remote "send select \"$file\"" - lf -remote "send toggle" - done & ;; + text/*|application/json|inode/x-empty|application/x-subrip) $EDITOR $fx ;; + image/*) imv $fx & ;; audio/*|video/x-ms-asf) mpv --audio-display=no $f ;; video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;; application/pdf|application/vnd.djvu|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;; application/pgp-encrypted) $EDITOR $fx ;; - # *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;; - *) $EDITOR $fx ;; - esac + # *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;; + *) $EDITOR $fx ;; + esac }} cmd mkdir $mkdir -p "$@" @@ -110,6 +88,7 @@ map o &mimeopen "$f" map O $mimeopen --ask "$f" map w $env IGNORE="" randwp "$f" map p $plumber "$f" +map d $dragon "$f" map A :rename; cmd-end # at the very end map c push A<c-u> # new rename diff --git a/.local/etc/lf/scope b/.local/etc/lf/scope index 2884bd9..38b2332 100755 --- a/.local/etc/lf/scope +++ b/.local/etc/lf/scope @@ -1,16 +1,12 @@ #!/bin/sh +# File preview handler for lf -# File preview handler for lf. - -set -C -f -IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" THEME=gruvbox-dark image() { - if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then - printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" - else - mediainfo "$6" + if [ -f "$1" ]; then + [ -n "$DISPLAY" ] && format=sixel || format=symbols + chafa -f "$format" -s "$2x$3" --animate off --polite on "$1" fi } @@ -19,15 +15,7 @@ image() { # be regenerated once seen. case "$(file --dereference --brief --mime-type -- "$1")" in - # image/vnd.djvu) - # CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" - # [ ! -f "$CACHE" ] && djvused "$1" -e 'select 1; save-page-with /dev/stdout' | convert -density 200 - "$CACHE.jpg" > /dev/null 2>&1 - # image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;; - # image/svg+xml) - # CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" - # [ ! -f "$CACHE" ] && inkscape --convert-dpi-method=none -o "$CACHE.png" --export-overwrite -D --export-png-color-mode=RGBA_16 "$1" - # image "$CACHE.png" "$2" "$3" "$4" "$5" "$1" ;; - image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;; + image/*) image "$@" ;; text/html) w3m -dump "$1" ;; # lynx -width="$4" -display_charset=utf-8 -dump "$1" ;; text/troff) man ./ "$1" | col -b ;; text/* | */xml | application/json | application/x-ndjson) bat -p --theme=$THEME --terminal-width "$(($4-2))" -f "$1" ;; @@ -35,20 +23,21 @@ case "$(file --dereference --brief --mime-type -- "$1")" in video/* ) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 - image "$CACHE" "$2" "$3" "$4" "$5" "$1" - ;; + image "$CACHE" "$2" "$3" "$4" "$5" ;; */pdf) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" - image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" - ;; - */epub+zip|*/mobi*) - CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" - [ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg" - image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" - ;; + image "$CACHE.jpg" "$2" "$3" "$4" "$5" ;; + # */epub+zip|*/mobi*) + # CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" + # [ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg" + # image "$CACHE.jpg" "$2" "$3" "$4" "$5" ;; application/*zip) atool --list -- "$1" ;; *opendocument*) odt2txt "$1" ;; + # *.doc) catdoc "$1" ;; + # *.docx) docx2txt "$1" ;; + # *.xls|*.xlsx) ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | bat -p --theme=$THEME --terminal-width "$(($4-2))" --language=csv -f "$1" ;; application/pgp-encrypted) gpg -d -- "$1" ;; + application/x-object) nm "$1" ;; + application/x-iso9660-image) iso-info --no-header -l "$1" ;; esac -exit 1 diff --git a/.local/etc/mako/config b/.local/etc/mako/config new file mode 100644 index 0000000..75b8638 --- /dev/null +++ b/.local/etc/mako/config @@ -0,0 +1,18 @@ +width=350 +height=400 +border-size=2 +default-timeout=5000 +font=monospace +max-icon-size=32 +on-button-middle=exec makoctl menu -n "$id" "$MENU" -p "Select action:" + +background-color=#282828e6 +text-color=#ebdbb2e6 +border-color=#689d6ae6 + +[urgency=low] +border-color=#98971ae6 + +[urgency=high] +border-color=#cc241de6 +default-timeout=0 diff --git a/.local/etc/mimeapps.list b/.local/etc/mimeapps.list index 264565a..44b06f9 100644 --- a/.local/etc/mimeapps.list +++ b/.local/etc/mimeapps.list @@ -16,8 +16,6 @@ image/gif=img.desktop; inode/directory=file.desktop x-scheme-handler/https=browser.desktop x-scheme-handler/http=browser.desktop -x-scheme-handler/ircs=irc.desktop -x-scheme-handler/irc=irc.desktop x-scheme-handler/git=git.desktop x-scheme-handler/magnet=torrent.desktop; application/x-bittorrent=torrent.desktop; diff --git a/.local/etc/mpv/music/local.lua b/.local/etc/mpv/music/local.lua index f4eaa5f..79805c5 100644 --- a/.local/etc/mpv/music/local.lua +++ b/.local/etc/mpv/music/local.lua @@ -1,31 +1,40 @@ local mp = require "mp" local utils = require "mp.utils" +local id = 0 + local function notify_current_media() - local path = mp.get_property_native("path") - local origin, title = utils.split_path(path) - - local metadata = mp.get_property_native("metadata") - if metadata then - local function tag(name) - return metadata[string.upper(name)] or metadata[name] - end - - title = tag("title") or title - origin = tag("artist_credit") or tag("artist") or "" - - local album = tag("album") - if album then - origin = string.format("%s — %s", origin, album) - end - - local year = tag("original_year") or tag("year") - if year then - origin = string.format("%s (%s)", origin, year) - end - end - mp.command_native({"run", "pkill", "-RTMIN", "sb"}) - return mp.command_native({"run", "env", "HERBE_ID=/music", "herbe", title, origin}) + local path = mp.get_property_native("path") + local origin, title = utils.split_path(path) + + local metadata = mp.get_property_native("metadata") + if metadata then + local function tag(name) + return metadata[string.upper(name)] or metadata[name] + end + + title = tag("title") or title + origin = tag("artist_credit") or tag("artist") or "" + + local album = tag("album") + if album then + origin = string.format("%s — %s", origin, album) + end + + local year = tag("original_year") or tag("year") + if year then + origin = string.format("%s (%s)", origin, year) + end + end + + mp.command("run pkill -RTMIN+1 waybar") + local cmd = "notify-send -p -r " .. tostring(id) .. " '" .. title .. "' '" .. origin .. "'" + local handle = io.popen(cmd) + if handle then + local new_id = handle:read("*a") + id = tonumber(new_id) or id + handle:close() + end end mp.register_event("file-loaded", notify_current_media) diff --git a/.local/etc/mpv/music/online.lua b/.local/etc/mpv/music/online.lua index 429e636..f790445 100644 --- a/.local/etc/mpv/music/online.lua +++ b/.local/etc/mpv/music/online.lua @@ -1,9 +1,17 @@ local mp = require "mp" +local id = 0 + local function notify_current_media(key) - local title = mp.get_property(key) - mp.command_native({"run", "pkill", "-RTMIN", "sb"}) - return mp.command_native({"run", "env", "HERBE_ID=/music", "herbe", title}) + local title = mp.get_property(key) + mp.command("run pkill -RTMIN+1 waybar") + local cmd = "notify-send -p -r " .. tostring(id) .. " '" .. title .. "'" + local handle = io.popen(cmd) + if handle then + local new_id = handle:read("*a") + id = tonumber(new_id) or id + handle:close() + end end mp.observe_property("media-title", string, notify_current_media) diff --git a/.local/etc/mpv/scripts/copy_path.lua b/.local/etc/mpv/scripts/copy_path.lua index b3299d4..46afb69 100644 --- a/.local/etc/mpv/scripts/copy_path.lua +++ b/.local/etc/mpv/scripts/copy_path.lua @@ -1,9 +1,9 @@ local mp = require "mp" local function copy_path() - local path = mp.get_property("path") - mp.osd_message(string.format("Copied to clipboard: %s", path)) - os.execute("printf '%s' "..path.." | xclip -sel clip") + local path = mp.get_property("path") + mp.osd_message(string.format("Copied to clipboard: %s", path)) + os.execute("printf '%s' " .. path .. " | wl-copy") end mp.add_key_binding("y-y", "copy_path", copy_path); diff --git a/.local/etc/nvim/after/plugin/lsp.lua b/.local/etc/nvim/after/plugin/lsp.lua index 89e1682..ac2a2b0 100644 --- a/.local/etc/nvim/after/plugin/lsp.lua +++ b/.local/etc/nvim/after/plugin/lsp.lua @@ -9,51 +9,74 @@ vim.g.completion_enable_auto_popup = 1 -- end, -- }) -local lsp_capabilities = require('cmp_nvim_lsp').default_capabilities() -local lsp_attach = function(client, bufnr) - -- Enable completion triggered by <c-x><c-o> - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') +local on_attach = function(_, bufnr) + local nmap = function(keys, func, desc) + if desc then + desc = "LSP: " .. desc + end + vim.keymap.set('n', keys, func, { + noremap = true, + silent = true, + buffer = bufnr, + desc = desc, + }) + end + + local telescope = require("telescope.builtin") + -- See `:help vim.lsp.*` for documentation on any of the below functions - local bufopts = { noremap=true, silent=true, buffer=bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) - --vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts) - --vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts) - --vim.keymap.set('n', '<space>wl', function() - -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - --end, bufopts) - vim.keymap.set('n', '<space>df', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts) - vim.keymap.set('n', '<space>do', '<cmd>lua vim.diagnostic.open_float()<CR>', { noremap = true, silent = true }) - vim.keymap.set('n', '<space>dp', '<cmd>lua vim.diagnostic.goto_prev()<CR>', { noremap = true, silent = true }) - vim.keymap.set('n', '<space>dn', '<cmd>lua vim.diagnostic.goto_next()<CR>', { noremap = true, silent = true }) - vim.keymap.set('n', '<space>dd', '<cmd>Telescope diagnostics<CR>', { noremap = true, silent = true }) + nmap("<leader>r", vim.lsp.buf.rename, "[r]ename") + nmap("<leader>ca", vim.lsp.buf.code_action, "[c]ode [a]ction") + + nmap("gD", vim.lsp.buf.declaration, "[g]o to [D]eclaration") + nmap("gd", vim.lsp.buf.definition, "[g]o to [d]efinition") + -- nmap("gd", telescope.lsp_definitions, "[g]o to [d]efinition") + nmap("gr", telescope.lsp_references, "[g]o to [r]eferences") + nmap("gi", telescope.lsp_implementations, "[g]o to [i]mplementation") + nmap("<leader>td", telescope.lsp_type_definitions, "[t]ype [d]efinition") + nmap("<leader>ds", telescope.lsp_document_symbols, "[d]ocument [s]ymbols") + nmap("<leader>ws", telescope.lsp_dynamic_workspace_symbols, "[w]orkspace [s]ymbols") + + nmap("K", vim.lsp.buf.hover, "Hover documenation") + nmap("<C-k>", vim.lsp.buf.signature_help, "Signature documenation") + + nmap("<leader>do", vim.diagnostic.open_float, "[d]iagnostics [o]pen") + nmap("<leader>dp", vim.diagnostic.goto_prev, "[d]iagnostics [p]revious") + nmap("<leader>dn", vim.diagnostic.goto_next, "[d]iagnostics [n]ext") + nmap("<leader>dd", telescope.diagnostics, "[d]isplay [d]iagnostics") + + -- nmap("<leader>wa", vim.lsp.buf.add_workspace_folder, "[w]orkspace [a]dd Folder") + -- nmap("<leader>wr", vim.lsp.buf.remove_workspace_folder, "[w]orkspace [r]emove Folder") + -- nmap('<leader>wl', function() + -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + -- end, '[w]orkspace [l]ist Folders') + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) end -- https://github.com/williamboman/mason-lspconfig.nvim#available-lsp-servers local servers = { - 'bashls', - 'clangd', - 'cssls', - 'gopls', - 'html', - 'jedi_language_server', - 'lua_ls', - 'rust_analyzer', - 'texlab', - 'zls', + "bashls", + "clangd", + "cssls", + "gopls", + "html", + "jdtls", + "jedi_language_server", + "lua_ls", + "rust_analyzer", + "texlab", + "zls", } -for _, lsp in ipairs(servers) do - require("lspconfig")[lsp].setup ({ - on_attach = lsp_attach, - capabilities = lsp_capabilities, +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) +for _, server_name in ipairs(servers) do + require("lspconfig")[server_name].setup({ + on_attach = on_attach, + capabilities = capabilities, }) end @@ -83,11 +106,11 @@ cmp.setup({ }, mapping = cmp.mapping.preset.insert({ - ['<C-b>'] = cmp.mapping.scroll_docs(-4), - ['<C-f>'] = cmp.mapping.scroll_docs(4), - ['<C-Space>'] = cmp.mapping.complete(), - ['<C-e>'] = cmp.mapping.abort(), - ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Set `select` to `false` to only confirm explicitly selected items. + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.abort(), + ["<CR>"] = cmp.mapping.confirm({ select = true }), -- Set `select` to `false` to only confirm explicitly selected items. ["<Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() @@ -98,7 +121,7 @@ cmp.setup({ else fallback() end - end, { "i", "s" }), + end, { 'i', 's' }), ["<S-Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() @@ -107,22 +130,22 @@ cmp.setup({ else fallback() end - end, { "i", "s" }), + end, { 'i', 's' }), }), sources = { - { name = 'buffer' }, - { name = 'calc' }, - { name = 'luasnip' }, - { name = 'nvim_lsp' }, - { name = 'nvim_lsp_signature_help' }, - { name = 'path' }, - { name = 'treesitter' }, + { name = "buffer" }, + { name = "calc" }, + { name = "luasnip" }, + { name = "nvim_lsp" }, + { name = "nvim_lsp_signature_help" }, + { name = "path" }, + { name = "treesitter" }, }, }) local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } for type, icon in pairs(signs) do local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl= hl, numhl = hl }) + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end diff --git a/.local/etc/nvim/after/plugin/misc.lua b/.local/etc/nvim/after/plugin/misc.lua index 61b85b5..c62a82f 100644 --- a/.local/etc/nvim/after/plugin/misc.lua +++ b/.local/etc/nvim/after/plugin/misc.lua @@ -1,13 +1,12 @@ local map = vim.keymap.set -- lazy -map('n', "<leader>l", "<cmd>Lazy<cr>", { desc = "Lazy" }) +map('n', "<leader>l", "<cmd>Lazy<cr>", { desc = "Open Lazy" }) -- Telescope local telescope = require("telescope.builtin") --- map('n', "<leader>f", telescope.find_files) -map('n', "<C-S>", telescope.find_files) -map('n', "<C-G>", telescope.git_files) +map('n', "<leader>f", telescope.find_files, { desc = "Find files" }) +map('n', "<C-g>", telescope.git_files) -- NERDTree (see their README) map('n', "<F2>", ":NERDTreeToggle<CR>") @@ -16,16 +15,8 @@ vim.cmd("autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists( -- Undotree map('n', "<F3>", ":UndotreeToggle<CR>") --- GitGutter update on write -vim.api.nvim_create_autocmd("BufWritePost", { command = "GitGutter" }) - -vim.g.zig_fmt_autosave = 0 -- too slow - --- map("i", "<C-H>", "copilot#Accept('<CR>')", { --- expr = true, --- replace_keycodes = false, --- }) --- vim.g.copilot_no_tab_map = true +-- Disable auto-format on save for zig, too slow +vim.g.zig_fmt_autosave = 0 require("neotest").setup({ adapters = { diff --git a/.local/etc/nvim/lua/plugins/lsp.lua b/.local/etc/nvim/lua/plugins/lsp.lua index 665e14f..25458a1 100644 --- a/.local/etc/nvim/lua/plugins/lsp.lua +++ b/.local/etc/nvim/lua/plugins/lsp.lua @@ -3,7 +3,16 @@ return { "neovim/nvim-lspconfig", dependencies = { -- LSP for neovim, must be loaded before lspconfig - { "folke/neodev.nvim", setup = true }, + { "folke/neodev.nvim", config = true }, + { + "williamboman/mason-lspconfig.nvim", + opts = { + automatic_installation = true, + }, + dependencies = { + { "williamboman/mason.nvim", config = true }, + }, + }, }, }, { @@ -14,9 +23,7 @@ return { { "L3MON4D3/LuaSnip", build = "make install_jsregexp", - dependencies = { - "ratakor/vim-snippets", - }, + dependencies = "ratakor/vim-snippets", }, "hrsh7th/cmp-nvim-lsp", diff --git a/.local/etc/nvim/lua/plugins/misc.lua b/.local/etc/nvim/lua/plugins/misc.lua index 81bcf0a..a868d18 100644 --- a/.local/etc/nvim/lua/plugins/misc.lua +++ b/.local/etc/nvim/lua/plugins/misc.lua @@ -2,23 +2,39 @@ return { -- Status bar "nvim-lualine/lualine.nvim", dependencies = { - { "kyazdani42/nvim-web-devicons", setup = true }, + { "kyazdani42/nvim-web-devicons", config = true }, }, -- Starting screen "mhinz/vim-startify", -- gc/gcc magic comment - { "numToStr/Comment.nvim", config = true }, + { + "numToStr/Comment.nvim", + opts = { ignore = "^$" }, + }, -- FixWhitespace "bronson/vim-trailing-whitespace", -- HUD for git in vim - "airblade/vim-gitgutter", + { + 'lewis6991/gitsigns.nvim', + opts = { + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '' }, + }, + }, + }, -- git in vim --"tpope/vim-fugitive", + --"tpope/vim-rhubarb", -- Fuzzy finder { @@ -26,30 +42,60 @@ return { branch = "0.1.x", dependencies = { "nvim-lua/plenary.nvim", + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "make", + config = function() + require("telescope").load_extension("fzf") + end, + }, }, }, -- History visualizer "mbbill/undotree", + -- Evil AI { - "github/copilot.vim", - enabled = false, + "zbirenbaum/copilot.lua", + enabled = true, + build = ":Copilot auth", + opts = { + panel = { enabled = false }, + suggestion = { + enabled = true, + auto_trigger = true, + keymap = { + accept = "<C-h>", + dismiss = "<C-l>", + }, + }, + }, }, - -- Put a print statement with g?p or g?v - { "andrewferrier/debugprint.nvim", setup = true }, - -- Testing inside vim { "nvim-neotest/neotest", dependencies = { + "nvim-neotest/nvim-nio", "nvim-lua/plenary.nvim", "antoinemadec/FixCursorHold.nvim", + "nvim-treesitter/nvim-treesitter", + "lawrence-laz/neotest-zig", }, }, + { + "folke/which-key.nvim", + event = "VeryLazy", + init = function () + vim.opt.timeout = true + vim.opt.timeoutlen = 300 + end, + config = true, + }, + -- TODO: switch to chadtree? "preservim/nerdtree", @@ -57,6 +103,4 @@ return { "ziglang/zig.vim", "petertriho/nvim-scrollbar", - -- Debugger (TODO + not in misc) - --"mfussenegger/nvim-dap", } diff --git a/.local/etc/nvim/lua/plugins/noice.lua b/.local/etc/nvim/lua/plugins/noice.lua index dbcf2c6..a213f74 100644 --- a/.local/etc/nvim/lua/plugins/noice.lua +++ b/.local/etc/nvim/lua/plugins/noice.lua @@ -31,9 +31,7 @@ return { "MunifTanjim/nui.nvim", { "rcarriga/nvim-notify", - opts = { - background_colour = "#000000", - }, + opts = { background_colour = "#000000" }, }, }, }, diff --git a/.local/etc/nvim/lua/plugins/treesitter.lua b/.local/etc/nvim/lua/plugins/treesitter.lua index 8482efc..ab40396 100644 --- a/.local/etc/nvim/lua/plugins/treesitter.lua +++ b/.local/etc/nvim/lua/plugins/treesitter.lua @@ -2,7 +2,7 @@ return { { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", - config = function () + config = function() require("nvim-treesitter.configs").setup { ensure_installed = { "bash", @@ -16,6 +16,7 @@ return { "gitignore", "go", "html", + "java", "latex", "lua", "make", @@ -25,12 +26,22 @@ return { "regex", "rust", "scheme", + "sql", "vim", "vimdoc", "zig", }, - highlight = { + auto_install = false, + highlight = { enable = true }, + indent = { enable = true }, + incremental_selection = { enable = true, + keymaps = { + init_selection = "<C-N>", + node_incremental = "<C-N>", + scope_incremental = false, + node_decremental = "<C-M>", + }, }, additional_vim_regex_highlighting = false, rainbow = { diff --git a/.local/etc/nvim/lua/settings.lua b/.local/etc/nvim/lua/settings.lua index b9e82b6..97f5be4 100644 --- a/.local/etc/nvim/lua/settings.lua +++ b/.local/etc/nvim/lua/settings.lua @@ -31,7 +31,7 @@ vim.api.nvim_create_autocmd("FileType", { command = "setl fo-=ro fo+=tc" }) vim.api.nvim_create_autocmd("FileType", { pattern = { "asm", "make", "sh" }, - callback = function () + callback = function() vim.opt_local.tabstop = 8 vim.opt_local.shiftwidth = 8 vim.opt_local.expandtab = false @@ -40,24 +40,26 @@ vim.api.nvim_create_autocmd("FileType", { -- vim.api.nvim_create_autocmd("FileType", { -- pattern = { "html", "markdown", "tex" }, --- callback = function () vim.opt_local.spell = true end, +-- callback = function() +-- vim.opt_local.spell = true +-- end, -- }) -vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { - pattern = "*.zon", - callback = function () vim.opt_local.filetype = "zig" end, +local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) +vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = '*', }) - map('n', "<C-d>", "<C-d>zz") map('n', "<C-u>", "<C-u>zz") map('n', "ZQ", ":q<CR>") - --- Move to window using the <ctrl> hjkl keys ---map('n', "<C-h>", "<C-w>h", { desc = "Go to left window", remap = true }) ---map('n', "<C-j>", "<C-w>j", { desc = "Go to lower window", remap = true }) ---map('n', "<C-k>", "<C-w>k", { desc = "Go to upper window", remap = true }) ---map('n', "<C-l>", "<C-w>l", { desc = "Go to right window", remap = true }) +map({ 'n', 'v' }, "<space>", "<Nop>", { silent = true }) +map('n', "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +map('n', "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) -- https://github.com/mhinz/vim-galore#saner-behavior-of-n-and-n map('n', 'n', "'Nn'[v:searchforward].'zv'", { expr = true, desc = "Next search result" }) @@ -67,10 +69,14 @@ map('n', "N", "'nN'[v:searchforward].'zv'", { expr = true, desc = "Prev search r map('x', "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev search result" }) map('o', "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev search result" }) --- better indenting +-- Better indenting map('v', "<", "<gv") map('v', ">", ">gv") +-- Remap ; to : to avoid shifting +map('n', ";", ":") +map('v', ";", ":") + local function abbrev(mode, lhs, rhs) vim.cmd(mode .. "abbrev " .. lhs .. " " .. rhs) end diff --git a/.local/etc/picom.conf b/.local/etc/picom.conf deleted file mode 100644 index 1faead9..0000000 --- a/.local/etc/picom.conf +++ /dev/null @@ -1,9 +0,0 @@ -vsync = true; -shadow = true; -shadow-exclude = ["class_g !*= 'dmenu'"]; -fading = true; -fade-exclude = ["class_g !*= 'dmenu'"]; -opacity-rule = [ - "90:name *= 'Chromium'", - "90:class_g = 'herbe'" -]; diff --git a/.local/etc/qBittorrent/dracula.qbtheme b/.local/etc/qBittorrent/dracula.qbtheme Binary files differdeleted file mode 100644 index d96e48e..0000000 --- a/.local/etc/qBittorrent/dracula.qbtheme +++ /dev/null diff --git a/.local/etc/river/init b/.local/etc/river/init new file mode 100755 index 0000000..d7dbb5e --- /dev/null +++ b/.local/etc/river/init @@ -0,0 +1,163 @@ +#!/bin/sh +# shellcheck disable=SC2016 + +### WM config + +riverctl focus-follows-cursor normal +riverctl attach-mode bottom +riverctl hide-cursor when-typing enabled +riverctl set-repeat 50 300 +riverctl keyboard-layout "fr(us)" +riverctl default-layout rivertile + +riverctl background-color 0x282828 +riverctl border-color-focused 0x458588 +riverctl border-color-unfocused 0x3c3836 +riverctl border-color-urgent 0xcc241d + +# TODO +#riverctl rule-add -app-id "imv" float + +### WM bindings + +riverctl map normal Super F toggle-fullscreen +riverctl map normal Super+Shift Q close +riverctl map normal Super Space toggle-float + +for i in $(seq 1 9); do + tags=$((1 << (i - 1))) + riverctl map normal Super "$i" set-focused-tags $tags + riverctl map normal Super+Shift "$i" set-view-tags $tags + riverctl map normal Super+Control "$i" toggle-focused-tags $tags + riverctl map normal Super+Shift+Control "$i" toggle-view-tags $tags +done +tags1to9=$(((1 << 9) - 1)) +riverctl map normal Super 0 set-focused-tags $tags1to9 +riverctl map normal Super+Shift 0 set-view-tags $tags1to9 + +riverctl map normal Super Tab focus-previous-tags +riverctl map normal Super+Shift Tab send-to-previous-tags + +riverctl map normal Super J focus-view next +riverctl map normal Super K focus-view previous +riverctl map normal Super+Shift Return zoom +riverctl map normal Super+Shift J swap next +riverctl map normal Super+Shift K swap previous + +# next/previous or left/right +riverctl map normal Super Period focus-output next +riverctl map normal Super Comma focus-output previous +riverctl map normal Super+Shift Period send-to-output next +riverctl map normal Super+Shift Comma send-to-output previous + +riverctl map normal Super H send-layout-cmd rivertile 'main-ratio -0.05' +riverctl map normal Super L send-layout-cmd rivertile 'main-ratio +0.05' +riverctl map normal Super+Shift H send-layout-cmd rivertile 'main-count +1' +riverctl map normal Super+Shift L send-layout-cmd rivertile 'main-count -1' + +riverctl map-pointer normal Super BTN_LEFT move-view +riverctl map-pointer normal Super+Shift BTN_LEFT resize-view +riverctl map-pointer normal Super BTN_RIGHT resize-view + +# Super+Alt+{H,J,K,L} to move views +#riverctl map normal Super+Alt H move left 100 +#riverctl map normal Super+Alt J move down 100 +#riverctl map normal Super+Alt K move up 100 +#riverctl map normal Super+Alt L move right 100 + +# Super+Alt+Control+{H,J,K,L} to snap views to screen edges +#riverctl map normal Super+Alt+Control H snap left +#riverctl map normal Super+Alt+Control J snap down +#riverctl map normal Super+Alt+Control K snap up +#riverctl map normal Super+Alt+Control L snap right + +# Super+Alt+Shift+{H,J,K,L} to resize views +#riverctl map normal Super+Alt+Shift H resize horizontal -100 +#riverctl map normal Super+Alt+Shift J resize vertical 100 +#riverctl map normal Super+Alt+Shift K resize vertical -100 +#riverctl map normal Super+Alt+Shift L resize horizontal 100 + +# Super+{Up,Right,Down,Left} to change layout orientation +#riverctl map normal Super Up send-layout-cmd rivertile "main-location top" +#riverctl map normal Super Right send-layout-cmd rivertile "main-location right" +#riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom" +#riverctl map normal Super Left send-layout-cmd rivertile "main-location left" + +### Custom bindings + +riverctl map normal Super Return spawn "$TERMINAL" +riverctl map normal Super D spawn 'exec $(tofi-run)' +riverctl map normal None XF86ScreenSaver spawn 'glitchlock' +riverctl map normal Super+Shift X spawn 'glitchlock' +riverctl map normal None XF86Battery spawn 'battery' +riverctl map normal Super+Shift R spawn 'randwp' +riverctl map normal None Print spawn 'screenshot' + +riverctl map normal None F7 spawn "$TERMINAL -e dmenurecord" +#riverctl map normal Super B spawn "$BROWSER" +riverctl map normal Super N spawn "$TERMINAL -e sh -c 'cd $XDG_DATA_HOME/notes; lf'" +riverctl map normal Super+Shift N spawn "$TERMINAL -e newsboat" + +riverctl map -repeat normal None XF86AudioRaiseVolume spawn 'wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 2%+' +riverctl map -repeat normal Super Equal spawn 'wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 2%+' +riverctl map -repeat normal None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-' +riverctl map -repeat normal Super Minus spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-' +riverctl map normal None XF86Launch1 spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle' +riverctl map normal None F6 spawn 'wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle' + +riverctl map normal Super M spawn 'music' +riverctl map normal Super+Shift M spawn 'musiccmd' +riverctl map normal None XF86AudioPrev spawn 'musiccmd prev' +riverctl map normal None XF86AudioNext spawn 'musiccmd next' +riverctl map normal None XF86AudioPlay spawn 'musiccmd cycle' +riverctl map normal None XF86AudioStop spawn 'musiccmd stop' +riverctl map normal Super+Shift Left spawn 'musiccmd prev' +riverctl map normal Super+Shift Right spawn 'musiccmd next' +riverctl map normal Super+Shift Down spawn 'musiccmd cycle' +riverctl map normal Super+Shift Up spawn 'musiccmd stop' + +riverctl map normal Super S spawn 'dmenusearch web' +riverctl map normal Super A spawn 'dmenusearch aur' +riverctl map normal Super Y spawn 'dmenusearch youtube' +riverctl map normal Super W spawn 'dmenusearch man' +riverctl map normal Super E spawn 'dmenusearch emoji' + +riverctl map normal Super+Shift E spawn 'shutdown-menu' +riverctl map normal Super U spawn 'dmenuhandler "$(wl-paste)"' +riverctl map normal Super+Shift U spawn 'plumber --sel' +#riverctl map-pointer normal None BTN_MIDDLE spawn 'plumber' +#riverctl map normal None button8 spawn 'plumber --sel' +#riverctl map normal None button9 close +#riverctl map normal None button10 spawn 'musiccmd' + +# reload config +riverctl map normal Super Escape spawn 'kill -USR2 $(pidof waybar); makoctl reload' + +# toggle bar +riverctl map normal Super+Shift B spawn 'kill -USR1 $(pidof waybar)' +# TODO: toggle gaps +#riverctl map normal Super+Shift G ... +# TODO: cycle layout (toggle floating mode) +#riverctl map normal Super+Shift Space ... +# TODO: toggle transparence +#riverctl map normal Control P spawn 'killall picom || picom -b' + +### Start programs + +# TODO +spawn_once() { + #pidof -q "$1" || riverctl spawn "$*" + riverctl spawn "$*" +} + +randwp +spawn_once pipewire +spawn_once foot --server +spawn_once scron -f "$XDG_CONFIG_HOME/crontab" -n +spawn_once gammastep +spawn_once mako +spawn_once waybar +spawn_once rivertile -view-padding 0 -outer-padding 0 -main-ratio 0.55 +spawn_once swayidle -w \ + timeout 300 "glitchlock" \ + timeout 600 "wlopm --off '*'" resume "wlopm --on '*'" diff --git a/.local/etc/sb/config b/.local/etc/sb/config deleted file mode 100644 index fac030e..0000000 --- a/.local/etc/sb/config +++ /dev/null @@ -1,17 +0,0 @@ -# Name Active Signal -music = true # 34 -cputemp = true # 35 -cpu = false # 36 -memory = false # 37 -battery = true # 38 -wifi = true # 39 -netspeed = false # 40 -localip = false # 41 -publicip = false # 42 -volume = true # 43 -mic = true # 44 -news = false # 45 -weather = true # 46 -daypercent = false # 47 -date = true # 48 -time = true # 49 diff --git a/.local/etc/swaylock/config b/.local/etc/swaylock/config new file mode 100644 index 0000000..7679f04 --- /dev/null +++ b/.local/etc/swaylock/config @@ -0,0 +1,7 @@ +daemonize +ignore-empty-password +show-failed-attempts +indicator-caps-lock +indicator-radius=100 +font=monospace +scaling=fill diff --git a/.local/etc/sx/dracula b/.local/etc/sx/dracula deleted file mode 100644 index c6eb505..0000000 --- a/.local/etc/sx/dracula +++ /dev/null @@ -1,67 +0,0 @@ -! vim:ft=xdefaults - -!! Transparency -!*.alpha: 0.85 -!#define TRANSPARENT #77e9e7e5 - -!! Font -!*.font: monospace:size=10 -!herbe.font_pattern: monospace:size=12 - -!! Colors -/* name normal brigth */ -/* black 0 8 */ -/* red 1 9 */ -/* green 2 10 */ -/* yellow 3 11 */ -/* blue 4 12 */ -/* purple 5 13 */ -/* cyan 6 14 */ -/* white 7 15 */ - -!st.bellvolume: +100 - -!! Gaps -!dwm.enablegaps: +1 -dwm.gaps: +10 -!herbe.pos_y: +40 - -!! Dracula -*.foreground: #F8F8F2 -*.background: #282A36 -*.color0: #191A21 -*.color1: #FF5555 -*.color2: #50FA7B -*.color3: #F1FA8C -*.color4: #BD93F9 -*.color5: #FF79C6 -*.color6: #8BE9FD -*.color7: #ABB2BF -*.color8: #44475A -*.color9: #FF6E6E -*.color10: #69FF94 -*.color11: #FFFFA5 -*.color12: #D6ACFF -*.color13: #FFA9DF -*.color14: #A4FFFF -*.color15: #FFFFFF -*.normfgcolor: #F8F8F2 -*.normbgcolor: #282A36 -dwm.normbordercolor: #44475A -dwm.selfgcolor: #BD93F9 -dwm.selbgcolor: #44475A -dwm.selbordercolor: #BD93F9 -dwm.orange: #ffb86c -dwm.last: #6272a4 -dmenu.selfgcolor: #F8F8F2 -dmenu.selbgcolor: #6272A4 -dmenu.highlight: #FFB86C -herbe.border: #BD93F9 -herbe.line_spacing: +10 -herbe.padding: +15 -herbe.width: +400 -herbe.border_size: +2 -herbe.pos_x: +15 -herbe.pos_y: +30 -herbe.corner: +1 -herbe.duration: +5 diff --git a/.local/etc/sx/gruvbox-dark b/.local/etc/sx/gruvbox-dark deleted file mode 100644 index 67536cf..0000000 --- a/.local/etc/sx/gruvbox-dark +++ /dev/null @@ -1,69 +0,0 @@ -! vim:ft=xdefaults - -!! Transparency -!*.alpha: 0.85 -!#define TRANSPARENT #77e9e7e5 - -!! Font -!*.font: monospace:size=10 -!herbe.font_pattern: monospace:size=12 - -!! Colors -/* name normal brigth */ -/* black 0 8 */ -/* red 1 9 */ -/* green 2 10 */ -/* yellow 3 11 */ -/* blue 4 12 */ -/* purple 5 13 */ -/* cyan 6 14 */ -/* white 7 15 */ - -!st.bellvolume: +100 - -!! Gaps -!dwm.enablegaps: +1 -dwm.gaps: +10 -!herbe.pos_y: +40 - -!! Gruvbox Dark -*.foreground: #ebdbb2 -*.background: #1d2021 -*.color0: #1d2021 -*.color1: #cc241d -*.color2: #98971a -*.color3: #d79921 -*.color4: #458588 -*.color5: #b16286 -*.color6: #689d6a -*.color7: #a89984 -*.color8: #928374 -*.color9: #fb4934 -*.color10: #b8bb26 -*.color11: #fabd2f -*.color12: #83a598 -*.color13: #d3869b -*.color14: #8ec07c -*.color15: #ebdbb2 -*.color256: #1d2021 -*.color257: #ebdbb2 -*.normfgcolor: #ebdbb2 -*.normbgcolor: #282828 -dwm.normbordercolor: #3c3836 -dwm.selfgcolor: #458588 -dwm.selbgcolor: #32302f -dwm.selbordercolor: #458588 -dwm.orange: #D65D0E -dwm.last: #7c6f64 -dmenu.selfgcolor: #ebdbb2 -dmenu.selbgcolor: #98971a -dmenu.highlight: #fe8019 -herbe.border: #98971a -herbe.line_spacing: +10 -herbe.padding: +15 -herbe.width: +400 -herbe.border_size: +2 -herbe.pos_x: +15 -herbe.pos_y: +30 -herbe.corner: +1 -herbe.duration: +5 diff --git a/.local/etc/sx/gruvbox-light b/.local/etc/sx/gruvbox-light deleted file mode 100644 index 6489765..0000000 --- a/.local/etc/sx/gruvbox-light +++ /dev/null @@ -1,67 +0,0 @@ -! vim:ft=xdefaults - -!! Transparency -!*.alpha: 0.85 -!#define TRANSPARENT #77e9e7e5 - -!! Font -!*.font: monospace:size=10 -!herbe.font_pattern: monospace:size=12 - -!! Colors -/* name normal brigth */ -/* black 0 8 */ -/* red 1 9 */ -/* green 2 10 */ -/* yellow 3 11 */ -/* blue 4 12 */ -/* purple 5 13 */ -/* cyan 6 14 */ -/* white 7 15 */ - -!st.bellvolume: +100 - -!! Gaps -!dwm.enablegaps: +1 -dwm.gaps: +10 -!herbe.pos_y: +40 - -!! Gruvbox Light -*.foreground: #3c3836 -*.background: #fbf1c7 -*.color0: #fbf1c7 -*.color1: #cc241d -*.color2: #98971a -*.color3: #d79921 -*.color4: #458588 -*.color5: #b16286 -*.color6: #689d6a -*.color7: #7c6f64 -*.color8: #928374 -*.color9: #9d0006 -*.color10: #79740e -*.color11: #b57614 -*.color12: #076678 -*.color13: #8f3f71 -*.color14: #427b58 -*.color15: #3c3836 -*.normfgcolor: #3c3836 -*.normbgcolor: #fbf1c7 -dwm.normbordercolor: #ebdbb2 -dwm.selfgcolor: #458588 -dwm.selbgcolor: #f2e5bc -dwm.selbordercolor: #458588 -dwm.orange: #D65D0E -dwm.last: #BDAE93 -dmenu.selfgcolor: #3c3836 -dmenu.selbgcolor: #98971A -dmenu.highlight: #af3a03 -herbe.border: #98971A -herbe.line_spacing: +10 -herbe.padding: +15 -herbe.width: +400 -herbe.border_size: +2 -herbe.pos_x: +15 -herbe.pos_y: +30 -herbe.corner: +1 -herbe.duration: +5 diff --git a/.local/etc/sx/sxrc b/.local/etc/sx/sxrc deleted file mode 100755 index acfaeef..0000000 --- a/.local/etc/sx/sxrc +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -killall picom scron sxhkd pipewire wireplumber xbanish redshift sb - -if [ "$(xrandr | awk '/DP-2/ {print $2}')" = 'connected' ]; then - xrandr --output LVDS-1 --off -else - picom -b -fi - -setxkbmap fr us -xrandr --dpi 100 -randwp -scron -f "$XDG_CONFIG_HOME/crontab" -themeswap gruvbox - -sxhkd & -pipewire & -xbanish & -redshift & -sb -b -sh -c "sleep 3; kill -10 $(pidof sb)" & - -exec dwm diff --git a/.local/etc/sx/themes b/.local/etc/sx/themes deleted file mode 100644 index aeee873..0000000 --- a/.local/etc/sx/themes +++ /dev/null @@ -1,3 +0,0 @@ -dracula -gruvbox-dark -gruvbox-light diff --git a/.local/etc/sxhkd/sxhkdrc b/.local/etc/sxhkd/sxhkdrc deleted file mode 100644 index a244432..0000000 --- a/.local/etc/sxhkd/sxhkdrc +++ /dev/null @@ -1,52 +0,0 @@ -super + Escape - kill -10 $(pidof sxhkd) $(pidof sb) -{super + Return,button8) - $TERMINAL -super + d - dmenu_run -hp "browser,mail,chromium" -XF86ScreenSaver - slock & xset dpms force off -XF86Battery - battery -Scroll_Lock - themeswap -super + shift + r - randwp -Print - screenshot -{super + equal,XF86AudioRaiseVolume} - wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 2%+; kill -43 $(pidof sb) -{super + minus,XF86AudioLowerVolume} - wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-; kill -43 $(pidof sb) -XF86Launch1 - wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle; kill -43 $(pidof sb) -F6 - wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle; kill -44 $(pidof sb) -F7 - $TERMINAL -e dmenurecord -# super + b -# $BROWSER -super + n - $TERMINAL -e sh -c 'cd "$XDG_DATA_HOME/notes"; lfub' -super + shift + n - $TERMINAL -e newsboat -super + {m,shift + m} - {music,musiccmd} -XF86Audio{Prev,Next,Play,Stop} - musiccmd {prev,next,cycle,stop} -super + shift + {Left, Right, Down, Up} - musiccmd {prev,next,cycle,stop} -super + {s,a,y,w,e} - dmenusearch {web,aur,youtube,man,emoji} -super + shift + w - dmenuoff -super + u - dmenuhandler "$(xclip -o)" -{super + shift + u, button2} - plumber --sel -button9 - xdo kill -button10 - musiccmd -ctrl + p - killall picom || picom -b diff --git a/.local/etc/tofi/config b/.local/etc/tofi/config new file mode 100644 index 0000000..5b21c24 --- /dev/null +++ b/.local/etc/tofi/config @@ -0,0 +1,13 @@ +width = 100% +height = 100% +border-width = 0 +outline-width = 0 +padding-left = 33% +padding-top = 33% +result-spacing = 25 +num-results = 5 +font = monospace +require-match = false +background-color = #000a +text-color = #ebdbb2 +selection-color = #689d6a diff --git a/.local/etc/vis/colors b/.local/etc/vis/colors deleted file mode 120000 index 51edaeb..0000000 --- a/.local/etc/vis/colors +++ /dev/null @@ -1 +0,0 @@ -../cli-visualizer/colors
\ No newline at end of file diff --git a/.local/etc/vis/config b/.local/etc/vis/config deleted file mode 120000 index ed868ad..0000000 --- a/.local/etc/vis/config +++ /dev/null @@ -1 +0,0 @@ -../cli-visualizer/config
\ No newline at end of file diff --git a/.local/etc/waybar/config b/.local/etc/waybar/config new file mode 100644 index 0000000..a39abae --- /dev/null +++ b/.local/etc/waybar/config @@ -0,0 +1,105 @@ +{ + "layer": "top", + // "height": 30, + // "spacing": 4, // Gaps between modules (4px) + "modules-left": [ + "river/tags", + "river/window" // TODO add padding to the right + ], + "modules-right": [ + "custom/music", + "temperature", + // TODO "bluetooth", + // TODO "cpu", + // TODO "memory", + "battery", + "network", + "wireplumber", + "custom/weather", + "clock" + ], + "river/window": { + "max-length": 50, + "tooltip": false + }, + // TODO: change color based on hour + "clock": { + "format": " {:%H:%M}", + "format-alt": " {:%b %d (%a)}", + "tooltip-format": "<tt><small>{calendar}</small></tt>", + "calendar": { + "format": { + "today": "<b><u>{}</u></b>" + } + } + + }, + "temperature": { + "format": " {temperatureC}°C", + "format-critical": " {temperatureC}°C", + "critical-threshold": 80, + "tooltip": false + }, + "battery": { + "full-at": 95, + "format": "{icon} {capacity}%", + "format-icons": ["", "", "", "", "", "", "", "", "", "", ""], + "states": { + "100": 100, + "90": 90, + "80": 80, + "70": 70, + "60": 60, + "50": 50, + "40": 40, + "30": 30, + "20": 20, + "10": 10, + "0": 0 + }, + "format-charging-100": " {capacity}%", + "format-charging-90": " {capacity}%", + "format-charging-80": " {capacity}%", + "format-charging-70": " {capacity}%", + "format-charging-60": " {capacity}%", + "format-charging-50": " {capacity}%", + "format-charging-40": " {capacity}%", + "format-charging-30": " {capacity}%", + "format-charging-20": " {capacity}%", + "format-charging-10": " {capacity}%", + "format-charging-0": " {capacity}%", + "tooltip": true + }, + "network": { + "interface": "wlan0", + "format-wifi": "{icon} {essid}", + "format-disconnected": "", + "tooltip-format": "{ifname}: {ipaddr}/{cidr}", + "format-icons": [ "", "", "" ], + "tooltip": true + }, + "wireplumber": { + "format": "{icon} {volume}%", + "format-icons": ["", "", ""], + "tooltip": false, + "max-volume": 150, + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + }, + "custom/music": { + "exec": "$XDG_CONFIG_HOME/waybar/scripts/music.sh", + "interval": "once", + "signal": 1, + "max-length": 40, + "tooltip": false, + "on-click": "musiccmd" + }, + "custom/weather": { + "exec": "$XDG_CONFIG_HOME/waybar/scripts/weather.sh", + "return-type": "json", + "format": "{}", + "interval": 3600, + "tooltip": true + } +} + +// vim: ft=jsonc diff --git a/.local/etc/waybar/scripts/music.sh b/.local/etc/waybar/scripts/music.sh new file mode 100755 index 0000000..dc6d9cd --- /dev/null +++ b/.local/etc/waybar/scripts/music.sh @@ -0,0 +1,20 @@ +#!/bin/sh +SOCKET=${XDG_RUNTIME_DIR:-/tmp}/music.sock + +[ -z "$(pgrep music)" ] && exit 1 + +strip() { + tmp="${1##{\"data\":\"}" + printf '%s\n' "${tmp%%\",\"request_id\":0,\"error\":\"success\"\}}" +} + +pause=$(strip "$(printf '{ "command": ["get_property_string", "pause"] }\n'\ + | socat - "$SOCKET" 2> /dev/null)") +title=$(strip "$(printf '{ "command": ["get_property", "media-title"] }\n'\ + | socat - "$SOCKET" 2> /dev/null)") + +if [ "$pause" = "yes" ]; then + printf ' %s' "$title" +elif [ "$pause" = "no" ]; then + printf ' %s' "$title" +fi diff --git a/.local/etc/waybar/scripts/weather.sh b/.local/etc/waybar/scripts/weather.sh new file mode 100755 index 0000000..09fb9f4 --- /dev/null +++ b/.local/etc/waybar/scripts/weather.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +trimall() { + set -f + # shellcheck disable=SC2086,SC2048 + set -- $* + printf '%s\n' "$*" + set +f +} + +for _ in 1 2 3 4 5; do + if text=$(curl -s "wttr.in?format=1"); then + text=$(trimall "$text") + if tooltip=$(curl -s "https://wttr.in?format=4"); then + tooltip=$(trimall "$tooltip") + printf "{\"text\":\"%s\",\"tooltip\":\"%s\"}" "$text" "$tooltip" + exit 0 + fi + fi + sleep 2 +done diff --git a/.local/etc/waybar/style.css b/.local/etc/waybar/style.css new file mode 100644 index 0000000..4126233 --- /dev/null +++ b/.local/etc/waybar/style.css @@ -0,0 +1,159 @@ +@import "gruvbox.css"; + +* { + border: none; + border-radius: 0; + font-family: monospace; + /* font-size: 14px; */ + min-height: 0; +} + +window#waybar { + /* background-color: transparent; */ + background: rgba(40, 40, 40, 1); + border-bottom: 3px solid rgba(69, 133, 136, 1); + color: @bright_white; +} + +/* #tags { */ +/* margin-top: 8px; */ +/* margin-left: 8px; */ +/* padding: 1px; */ +/* background-color: #073642; base02 */ +/* border: 2px solid #93a1a1; base1 */ +/* } */ + +#tags button { + /* Disable animation on click */ + transition-property: none; + + /* margin: 1px; */ + /* padding: 1px; */ + /* color: #93a1a1; base1 */ + /* border: 2px solid #073642; base02 */ + + padding: 0 5px; + background: transparent; + color: @bright_white; + border-bottom: 3px solid transparent; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +/* #tags button:hover { */ +/* box-shadow: inherit; */ +/* text-shadow: inherit; */ +/* background: #073642; base02 */ +/* } */ + +#tags button.focused { + /* color: #073642; base02 */ + /* background-color: #93a1a1; base1 */ + /* border: 2px solid #073642; base02 */ + background: @blue; + border-bottom: 3px solid @blue; +} + +/* #tags button.occupied { */ +/* border: 2px solid #93a1a1; base1* */ +/* } */ + +/* #tags button.urgent { */ +/* border: 2px solid @red; */ +/* } */ + +/* #tags button.occupied.urgent { */ +/* border: 2px solid @red; */ +/* } */ + +/* #tags button.focused.occupied { */ +/* color: #073642; base02 */ +/* background-color: #93a1a1; base1 */ +/* border: 2px solid #93a1a1; base1 */ +/* } */ + +/* #battery, */ +/* #wireplumber, */ +/* #clock, */ +/* #mode, */ +/* #cpu, */ +/* #memory, */ +/* #network, */ +/* #temperature { */ +/* padding: 1px 5px; */ +/* margin-top: 8px; */ +/* margin-left: 8px; */ +/* background-color: #073642; base02 */ +/* color: #93a1a1; base1 */ +/* border: 2px solid #93a1a1; base1 */ +/* } */ + +#wireplumber.muted { + color: @orange; +} + +/* #temperature { */ +/* margin-right: 8px; */ +/* } */ +/**/ +/* #clock { */ +/* margin-left: 0px; */ +/* margin-right: 0px; */ +/* } */ +/**/ +/* #cpu.warning, */ +/* #memory.warning { */ +/* border: 2px solid @yellow; */ +/* } */ +/**/ +/* #cpu.critical, */ +/* #memory.critical, */ +/* #temperature.critical { */ +/* border: 2px solid @red; */ +/* } */ + +#mode, #clock, #battery { + padding: 0 10px; + margin: 0 5px; +} + +#mode { + background: @red; + border-bottom: 3px solid @white_b; +} + +#clock { + background-color: @bright_orange; + color: @white_b; +} + +#battery { + background-color: @bright_white; + color: @background; +} + +#battery.charging { + color: @background; + background-color: @green; +} + +@keyframes blink { + to { + background-color: @bright_white; + color: @background; + } +} + +#idle_inhibitor, #pulseaudio, #custom-openvpn, #network, #cpu, #memory, #temperature, #backlight, #battery, #clock, #tray { + padding: 0 6px; + margin: 0 3px; +} + +#battery.warning:not(.charging) { + background: @red; + color: @bright_white; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} diff --git a/.local/etc/zls.json b/.local/etc/zls.json deleted file mode 100644 index 190af9c..0000000 --- a/.local/etc/zls.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "warn_style": true -} diff --git a/.local/etc/zsh/.zprofile b/.local/etc/zsh/.zprofile index 41cfbe3..0fe5342 100644 --- a/.local/etc/zsh/.zprofile +++ b/.local/etc/zsh/.zprofile @@ -1,2 +1,10 @@ -# Automatically start Xorg on tty1 if not already running. -[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec sx +# Automatically start River on tty1 if not already running. +if [ "$(tty)" = "/dev/tty1" ] && ! pidof -s river >/dev/null 2>&1; then + rm "$XDG_CONFIG_HOME/chromium/SingletonLock" >/dev/null 2>&1 + + export XDG_SESSION_TYPE=wayland + export XDG_CURRENT_DESKTOP=river + + timestamp=$(date +%F-%R) + exec dbus-run-session river -log-level warning > "/tmp/river-$timestamp.log" 2>&1 +fi diff --git a/.local/etc/zsh/.zshenv b/.local/etc/zsh/.zshenv index 43ae250..7e463a3 100644 --- a/.local/etc/zsh/.zshenv +++ b/.local/etc/zsh/.zshenv @@ -1,15 +1,18 @@ # Update PATH -PATH="$HOME/.local/bin:$PATH" +PATH="$PATH:$HOME/.local/bin" PATH="$PATH:$CARGO_HOME/bin" PATH="$PATH:$GOPATH/bin" export PATH +export MANPATH="$HOME/.local/share/man:/usr/local/share/man:/usr/share/man" +#export LD_LIBRARY_PATH="$HOME/.local/lib:/usr/local/lib:/usr/lib" # Default programs -export EDITOR="editor" -export TERMINAL="st" -export BROWSER="browser" +export EDITOR="nvim" +export TERMINAL="footclient" +export BROWSER="chromium" export ROOTCMD="doas" export MANPAGER="manpager" +export DMENU="tofi" # XDG directories export XDG_CONFIG_HOME="$HOME/.local/etc" @@ -38,16 +41,16 @@ export OPAMROOT="$XDG_DATA_HOME/opam" export NUGET_PACKAGES="$XDG_CACHE_HOME/NuGetPackages" export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npmrc" export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass" -export TERMINFO="$XDG_DATA_HOME/terminfo" -export TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo" export W3M_DIR="$XDG_STATE_HOME/w3m" export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv" export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java" export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc" +export GRADLE_USER_HOME="$XDG_DATA_HOME/gradle" # Misc # umask 0077 export GPG_TTY=$(tty) +export MOZ_ENABLE_WAYLAND=1 export DOTNET_CLI_TELEMETRY_OPTOUT=true export MANWIDTH=80 export LESS=-R @@ -58,5 +61,3 @@ export SAVEHIST=10000 # export CC="zig cc" export CC=cc CC="$CC -Wall" -export LD_LIBRARY_PATH=/usr/local/lib -export LS_COLORS="$(vivid generate gruvbox-dark):di=1;34" diff --git a/.local/etc/zsh/.zshrc b/.local/etc/zsh/.zshrc index f0e0277..86103af 100644 --- a/.local/etc/zsh/.zshrc +++ b/.local/etc/zsh/.zshrc @@ -1,6 +1,5 @@ # fun stuff quand -#shuf -n 1 "$XDG_DATA_HOME/navi" # database from https://github.com/HappyHippo77/NaviFrequencyList eza -aa --color=auto --group-directories-first # Source aliases diff --git a/.local/etc/zsh/aliasrc b/.local/etc/zsh/aliasrc index 7ebf23a..94e7c9f 100644 --- a/.local/etc/zsh/aliasrc +++ b/.local/etc/zsh/aliasrc @@ -12,12 +12,12 @@ alias cfv="cd $XDG_CONFIG_HOME/nvim" alias cfz="$EDITOR $ZDOTDIR/.zshrc" alias cfe="$EDITOR $ZDOTDIR/.zshenv" alias cfa="$EDITOR $ZDOTDIR/aliasrc" -alias cfx="$EDITOR $XDG_CONFIG_HOME/sx/sxrc" +alias cfr="$EDITOR $XDG_CONFIG_HOME/river/init" alias cfn="$EDITOR $XDG_CONFIG_HOME/newsboat/config" alias cfu="$EDITOR $XDG_CONFIG_HOME/newsboat/urls" alias cfq="$EDITOR $XDG_CONFIG_HOME/quand/config" -alias cfh="$EDITOR $XDG_CONFIG_HOME/sxhkd/sxhkdrc" -alias cfsb="$EDITOR $XDG_CONFIG_HOME/sb/config" +alias cfb="cd $XDG_CONFIG_HOME/waybar" +alias cft="$EDITOR $XDG_CONFIG_HOME/foot/foot.ini" alias cfc="$EDITOR $XDG_CONFIG_HOME/crontab" alias dt="cd $XDG_DATA_HOME" alias pkg="$EDITOR $XDG_DATA_HOME/packages" @@ -38,15 +38,12 @@ alias cac="cd $XDG_CACHE_HOME" # shorter name and basic stuff changed [ -x "$(command -v nvim)" ] && alias vimdiff="nvim -d" alias e="$EDITOR" -alias v="bat --style=numbers,changes --tabs 8" alias se="$ROOTCMD $EDITOR" alias cc="$CC" alias "$ROOTCMD"="$ROOTCMD " # run root commands with aliases -alias lf="lfub" alias :q="exit" alias :Q="exit" alias bc="bc -ql" -alias img="nsxiv -a" alias z="zathura" alias timer="termdown" alias video-dlp="ytdl v ." @@ -67,9 +64,11 @@ alias cb="cargo build" alias g="grep -RIn --exclude-dir=.git" alias cfmt="astyle -A3 -t8 -p -xg -H -xB -U -n" alias gofmt="gofmt -s -w" +alias javafmt="astyle --mode=java --style=google -n" +alias fork="setsid -f" # verbosity and colors -alias rm="rm -vI" +alias rm="trash -v" # "rm -vI" alias rmdir="rmdir -v" alias cp="cp -riv" alias mv="mv -iv" @@ -77,13 +76,13 @@ alias mkdir="mkdir -pv" alias grep="grep --color=auto -n" alias diff="diff --color=auto" alias ip="ip --color=auto" -alias ls="eza --color=auto --group-directories-first" +alias ls="eza --color=auto --group-directories-first --hyperlink" alias sl="ls" alias ll="ls -lho --git" alias la="ls -aa" alias lr="ls -R" alias tree="ls -T" -alias cat="bat" +alias cat="bat --style=numbers,changes --tabs 8" alias du="dust -r" alias duf="duf -hide special" alias fd="fd -HI" diff --git a/.local/share/applications/browser.desktop b/.local/share/applications/browser.desktop index 1c3d6b3..e538943 100644 --- a/.local/share/applications/browser.desktop +++ b/.local/share/applications/browser.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Browser -Exec=browser %u +Exec=chromium %u diff --git a/.local/share/applications/file.desktop b/.local/share/applications/file.desktop index 1f767e1..f145faa 100644 --- a/.local/share/applications/file.desktop +++ b/.local/share/applications/file.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=File Manager -Exec=st -d %u +Exec=footclient -D %u diff --git a/.local/share/applications/git.desktop b/.local/share/applications/git.desktop index 95dc5a8..9312b6e 100644 --- a/.local/share/applications/git.desktop +++ b/.local/share/applications/git.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=git -Exec=st -e git clone %u +Exec=footclient -e git clone %u diff --git a/.local/share/applications/img.desktop b/.local/share/applications/img.desktop index 5783107..a3b14e5 100644 --- a/.local/share/applications/img.desktop +++ b/.local/share/applications/img.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Image viewer -Exec=/usr/bin/nsxiv -a %f +Exec=imv %f diff --git a/.local/share/applications/irc.desktop b/.local/share/applications/irc.desktop deleted file mode 100644 index 1bafde3..0000000 --- a/.local/share/applications/irc.desktop +++ /dev/null @@ -1,4 +0,0 @@ -[Desktop Entry] -Type=Application -Name=IRC -Exec=st -e irc -xdg %u diff --git a/.local/share/applications/pdf.desktop b/.local/share/applications/pdf.desktop index 8c38677..9dbcb2e 100644 --- a/.local/share/applications/pdf.desktop +++ b/.local/share/applications/pdf.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=PDF reader -Exec=/usr/bin/zathura %u +Exec=zathura %u diff --git a/.local/share/applications/text.desktop b/.local/share/applications/text.desktop index f34b8f0..f5fa9b1 100644 --- a/.local/share/applications/text.desktop +++ b/.local/share/applications/text.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Text editor -Exec=st -e nvim %u +Exec=footclient -e nvim %u diff --git a/.local/share/applications/torrent.desktop b/.local/share/applications/torrent.desktop index 935f8d7..4de12ae 100644 --- a/.local/share/applications/torrent.desktop +++ b/.local/share/applications/torrent.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Torrent -Exec=/usr/bin/qbittorrent %u +Exec=qbittorrent %u diff --git a/.local/share/applications/video.desktop b/.local/share/applications/video.desktop index 5698a7e..08785ed 100644 --- a/.local/share/applications/video.desktop +++ b/.local/share/applications/video.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Video -Exec=/usr/bin/mpv -quiet %f +Exec=mpv -quiet %f diff --git a/.local/share/navi b/.local/share/navi deleted file mode 100644 index e4248d4..0000000 --- a/.local/share/navi +++ /dev/null @@ -1,2584 +0,0 @@ -oe I, me pn -lu to be v:cp -ke not part -a that (subclause marker) part -nga you pn -po he, she pn -fwa that (subclause marker) ctr -ulte and (clausal conjunction) conj -alu that is, in other words conj -tute person n -hrh LOL ("laughing out loud") intj -sì and (noun conjunction) part -mì in, on adp:len -slä but conj -tsun can, be able v:m -fko one, they (unspecified agent) pn -tsa’u that (thing) pn -ma O (vocative marker) part -si (auxiliary verb) v:si -new want v:tr -taluna because conj -zene must v:m -sunu be pleasing, be likeable, bring enjoyment v:in -nìtxan much (abstract), very adv -nìteng too, also, as well, likewise adv -pxay many adj -fte so that, in order to conj -srak yes/no (question marker for yes-or-no questions) part -kelku home, house n -fpìl think v:tr -eyktan leader n -set now adv -kaltxì hello intj -’efu feel, sense, perceive v:tr -ne to, towards (direction) adp -’u thing (object, fact, abstraction) n -lì’u word n -lahe other, else adj -len happen, occur v:in -plltxe speak v:tr -ha so, in that case adv -slu become v:cp -krr time n -trr day n -fa with, by means of adp -hu with (accompaniment) adp -fìtrr today adv -srane yes part -frapo everyone pn -nì’ul more adv -kop too, also, additionally adv -ta from (locative), from (temporal sense with other time words) adp -fu or conj -txo if conj -zìsìt year n -tsakrr then, at that time, that time adv -tsakem that (action) n -rel image, picture n -uvan play (a game) nv:si -nì’aw only adv -teri about, concerning adp -lefngap metallic adj -txanlokxe clan or tribal domain, country n -tok be at, occupy a space v:tr -eltu brain n -tìkangkem work nv:si -mip new adj -olo’eyktan clan leader n -tam suffice, be okay v:in -pamrel write nv:si -peng tell v:tr -hapxì part n -krra when, at the time that conj -fìtseng here, this place n -omum know v:tr -’a’aw a few, several adj -pum ‘one’ (refers to another instance of a previously mentioned noun) pn -pongu group of people, party n -yom eat v:tr -hahaw sleep v:in -lì’fya language n -teynga that answer (indirect question marker) ctr -kea no (before a noun) adj -mi yet, still, as before adv -pawm ask v:tr -säomum (piece of) information n -za’u come v:in -ngop create v:tr -sno his self, her self, its self pn -nìmun again adv -nìna’vi like the Na’vi, Na’vily adv -tsnì that (function word) ctr -pängkxo chat, converse, have a conversation v:in -tseng place n -syaw call v:in -sar use v:tr -ya air n -kxì hello (casual) intj -san (start-of-quote particle) part -nì’it a bit, a small amount (abstract) adv -koren rule, guideline n -terkup die v:in -irayo thank you, thanks n -kä go v:in -sìltsan good (of its kind), well done adj -ftu from (direction) adp -fmi try, attempt v:tr -sran yes (colloquial) part -li already adv -na like, as adp -kem action, deed n -srake yes/no (question marker for yes-or-no questions) part -krrka during adp -ngian however adv -tse’a see (physical sense) v:tr -yuesey U.S.A. n:pr -kxawm perhaps, maybe adv -kanom acquire, get v:tr -nìwotx all (of), in toto, completely adv -nìhawng too, excessively adv -lì’ukìng sentence n -sngä’i begin, start v:m -tslam understand v:tr -kehe no part -oeng we, us (inclusive) pn -tìng give v:tr -txan much adj -kin need v:tr -kifkey world (physical, solid) n -tìlen event, happening n -inan read (e.g. the forest), gain knowledge from sensory input v:tr -zup fall v:in -tìtxen to wake, to waken, wake up nv:si -hum leave, depart v:in -ftxey choose v:tr -mllte agree v:in -run find, discover v:tr -lena’vi having to do with the Na’vi, the People adj -fya’o path, way, manner n -herwì snow n -sìlpey hope v:in -makto ride v:tr -tsatseng there, that place n -tekre skull n -atxkxe land n -nume learn v:in -apxa large adj -fpom wellbeing, peace, happiness n -pay water, liquid n -tsenge place n -ska’a destroy v:tr -fpi for the sake of, for the benefit of adp:len -talun because of, due to adp -fmawnta that news (reported observations marker) ctr -maw after (time) adp -sìk (end-of-quote particle) part -smon be familiar, be known (with dative) v:in -txantsan excellent adj -ko ‘let’s’ (particle to solicit agreement) part -’awve first (ordinal) adj -pelun why inter -tafral therefore, because of that adv -frato than all (superlative marker) part -tse well (conversation starter) intj -tskxekeng exercise, train nv:si -ngäzìk difficult, hard adj -ìlä by, via, following, according to adp:len -’eylan friend n -kezemplltxe of course, needless to say adv -yrrap storm n -tìngäzìk difficulty, problem n -nìngay truly adv -pa’li direhorse n -latem change v:in -zum object, thing (physical or tangible) n -nìn look at v:tr -pe’un decide v:tr -ngeyn tired adj -frakrr always, all the time adv -tìfkeytok state, condition, situation n -trram yesterday adv -puk book n -lam seem, appear v:in -fmawn news, something to report n -tìfmetok test n -lefpom happy, peaceful, joyous, pleasant adj -olo’ clan n -sweylu should v:in -syuve food (collective noun, cannot be pluralised) n -yafkeyk weather n -pxìm often adv -hapxìtu member n -pamtseo music n -tengkrr while, same time as conj -pefya how inter -alo time, turn, instance, one of a number of repeated or recurring actions n -keftxo unhappy, upset adj -kefyak isn’t it?, right? part -var to persist in a state, to continue to perform an action v:m -to ‘than’ (comparative marker) part -tsray village n -yune listen to (intentionally) v:tr -’o’ bringing fun, exciting adj -fkeytok exist v:in -ioang animal, beast n -’em cook v:tr -numeyu student n -ftia study v:tr -’rrta Earth n:pr -tompa rain n -tut continuation marker part -nitram happy (of people) adj -ftang stop v:m -ftxozä celebration, happy occasion n -karyu teacher n -srung help, assistance n -fayluta these words (reported speech marker) ctr -kam ago adp -’eko attack v:tr -zo be well, be intact, be as it should be, work correctly or as nature intended v:in -kintrr week n -mawkrr after, afterwards, later adv -tsamsiyu warrior n -natkenong for example, as an example conj -fìtsenge here, this place n -lok close to adp -leymkem protest v:in -txele matter (subject) n -ftxìlor delicious, good tasting adj -txon night n -yayayr confusion n -kllte ground n -txin main, primary adj -hufwe wind n -nìkeftxo unfortunately, sadly adv -tstxo name n -tì’efu feeling n -kar teach v:tr -tawtute Skyperson, human n -säfpìl idea n -tätxaw return v:in -txantsawtsray large city, metropolis n -sä’o tool, utensil n -som hot adj -soaia family n -spxin sick adj -txep fire n -hufwa although conj -tìftiatu researcher n -vur story n -sop travel v:in -hì’i small, little (in size) adj -rolun Eureka! I’ve found it! intj -rutxe please intj -stum almost adv -trray tomorrow adv -kosman wonderful, terrific, fantastic adj -skxawng moron, idiot n -steftxaw examine, check v:tr -pehem what (action) inter -pam sound n -nìftxan so, to such an extent adv -txampay sea, ocean n -wew cold adj -kawtu no one pn -ikran ikran, banshee n -kempe what (action) inter -nìltsan well adv -srer appear, materialize, come into view v:in -kxìm command, order, assign a task v:tr -’ì’awn remain, stay v:in -’eveng child n -na’vi the People, indigenous Pandoran sentient race n:pr -tspang kill v:tr -tìtxula construction, constructed thing n -fkan resemble in a sensory modality, come to the senses as v:in -oare moon n -nivi sleeping hammock (general term) n -rewon morning n -muve second (ordinal) adj -txolar dollar n -ye’rìn soon adv -kuma that (as a result) conj -ham previous adj -tìran walk v:in -tsawa that (subclause marker) ctr -tsawke sun; Alpha Centauri A n -nìwin fast, quickly adv -sleyku produce v:tr -rä’ä do not (for negative imperatives, commands only) part -tsawl big (in size), tall adj -zong save, defend v:tr -tutan man, male (person) n -säspxin disease, sickness, illness n -ultxa meeting n -tsunslu may, be possible v:in -tung allow v:tr -nga’ contain v:tr -zey special, distinct adj -tson obligation, duty, imposed requirement n -taw sky n -lehrrap dangerous adj -srefwa before conj -tslolam get it, I understand intj -wìntxu show v:tr -fyape how inter -hay next adj -tsafya that way, like that adv -’upxare message n -sko something as, in the capacity of, or in the role of, something else adp:len -kangay valid adj -ngim long (physical length) adj -vospxì month n -stxeli gift n -leykek enforce v:tr -wutso dinner, served meal n -tìralpeng translation, interpretation n -tsonta to (with kxìm) conj -tsranten matter, be of importance v:in -numtseng school n -tuteo somebody, someone pn -nari eye n -pey wait, wait for v:in -hek to be curious, odd, strange, unexpected v:in -kolan I mean, rather (selfcorrecting) intj -hasey done, finished adj -nìprrte’ pleasurably, gladly, with pleasure adv -pxiset right now adv -tìpängkxo conversation, discussion n -keng even, so much as adv -eyawr correct, right adj -layon black adj -vay up to adp -tìkan aim, goal, purpose, target n -tsawtsray small or medium-sized city n -fe’ bad adj -luke without adp -tsyänel TV channel n -pxor explode v:in -mawfwa after conj -oeyktìng explain (why) v:tr -pxaw around adp -nawm great, noble adj -tswa’ forget v:tr -mokri voice n -fpe’ send v:tr -kemlì’u verb n -syura energy (physical or spiritual) n -lonu release, let go v:tr -postì (forum/blog) post n -ralpeng interpret, translate v:tr -tanhì star, bioluminescent freckle n -peu what (thing) inter -salew proceed, go v:? -nìyey directly, straight to the point adv -ätxäle request n -frrfen visit v:tr -uniltìrantokx avatar n -sa’nok mother n -stawm hear v:tr -tskxe rock, stone n -ngong lethargic, lacking sufficient energy, lazy adj -lawk discourse on, talk about, say something concerning v:tr -wä against (as in: fight against) adp:len -zeyko heal, fix v:tr -tìpawm question n -letokx bodily, physical adj -kawkrr never adv -nulkrr longer (time) adv -lun reason n -lor beautiful, pleasant to the senses adj -nì’awve first adv -nantangtsyìp dog (earth animal); lit. little nantang n -tokx body n -’umtsa medicine n -rey live v:in -ral meaning n -tsawlultxa large gathering, conference n -eyk lead v:tr -tul run v:in -nìfkrr lately, currently adv -hìtxoa excuse me intj -’ewll plant n -hayalovay until next time intj -tel receive v:tr -ean blue, green adj -swey best adj -palulukantsyìp cat (earth animal); lit. little palulukan n -nìsung besides, additionally, furthermore adv -ngopyu creator n -txasunu love greatly, enjoy tremendously v:in -txankrr for a long time adv -näk drink v:tr -’ä’ oops! intj -ro at (locative) adp:len -rikx move, shift position v:in -kilvan river n -utral tree n -na’rìng forest n -ram mountain n -law clear, certain adj -kum result n -lrrtok smile nv:si -hona endearing, adorable, cute adj -txen awake adj -yoa in exchange for adp -ìì um, er intj -txasom very hot adj -meuia honor n -nìpxi especially, pointedly, unambiguously adv -tìsraw hurt, be painful nv:si -ftue easy, simple adj -txintìn occupation, primary role in society n -hìkrr second, very short time n -sìn on, onto adp -fnu quiet, be quiet v:in -’i’a end, conclude v:in -spaw believe v:tr -sngum worry n -tìyawr correctness n -pähem arrive v:in -yem put, place v:tr -tsim source n -txintseng base of operations n -weptseng website n -atan light n -txopu fear n -tìlatem change (abstract concept) n -skxakep probable adj -’ìp disappear, vanish, recede from view v:in -nìsìlpey hopefully adv -hawnu protect, shelter v:tr -rou be, or get drunk v:in -nìfya’o in a manner adv -tìkxuke safety n -nìfkeytongay actually, as a matter of fact adv -ka across, covering thoroughly adp -unil dream n -loi egg n -sla’tsu describe v:tr -wrrpa outside n -letsranten important adj -tìkangkemvi project, piece of work n -tswayon fly v:in -srekrr before, already, ahead of time adv -tsam war n -fìkem this (action) pn -spe’e capture v:tr -tìkin need n -tsmuk sibling n -vewng look after, take care of, be responsible for v:tr -uran boat n -sempul father n -tsleng false adj -frawzo all is well, everything is fine or OK intj -sung add v:tr -rìk leaf n -tìrey life n -tì’i’a ending, conclusion n -nì’i’a finally, at long last adv -txula build, construct v:tr -lefkrr current adj -vaykrr until conj -hì’ang insect n -fwew look for, seek, search v:tr -ki but rather, but instead conj -släkop but also adv -alunta because, from the reason conj -wem fight v:in -nemfa into, inside adp -zerok remember v:tr -hawl prepare v:tr -kxeyey error, mistake n -kan aim, to direct a weapon or other object at a target v:tr -lekoren lawlike adj -tì’eyng answer, response n -takuk strike, beat, slap v:tr -holpxay number n -ayu things n -nekx burn, consume v:tr -txampxì majority, most, large part n -’it bit, a small amount n -sang warm adj -yewla disappointment, emotional letdown, failed expectation n -rol sing v:? -tstxolì’u noun n -tseri note, notice v:tr -txe’lan heart n -ngay true adj -nì’ul’ul increasingly, more and more adv -txawew very cold adj -steyki anger, make someone angry v:tr -tstu closed, shut, overcast (for cloudy skies) adj -slan support (emotional, social or personal support) v:tr -txepram volcano n -säwäsul competition n -skxir wound nv:si -syor relax, chill out v:in -tup instead of, rather than conj -vawm dark adj -teya fill (with dative of thing filled) nv:si -zoslu heal, become well, get fixed v:in -wur cool, chilly adj -neytiri female Na’vi of the Omatikaya Clan n:pr -tun red, orange adj -yawne beloved adj -eo before, in front of (place) adp -yì shelf, ledge, level, step, rung n -nìtam enough adv -tare connect, relate to, have a relationship with v:tr -zeykoyu healer n -kllpxìltu territory n -okup milk n -key face n -rawn replace, substitute v:tr -vefya system, process, procedure, approach n -toltem shoot v:tr -pxawngip environment n -hìmtxewvay minimally adv -sre before (time) adp:len -sa rise to a challenge v:in -ewro euro n -keteng different adj -ken’aw not only adv -txonam last night adv -tsngawvìk cry, weep v:in -flä succeed v:in -wätu opponent n -kxumpay viscous liquid, gel n -sä’eoio ceremony, ritual, rite n -spono island n -ta’leng skin n -kxanì forbidden adj -tsyosyu food made from flour n -’eyng answer, respond v:in -nìmwey calmly, peacefully adv -ngaytxoa sorry, my apologies (acknowledgment of guilt and regret) intj -’ärìp move v:tr -leymfe’ complain v:in -spulmokri phone, telephone n -hifwo flee, escape v:in -vin request, ask for v:tr -kawng bad, evil adj -wan hide v:tr -tsaktap violence n -rim yellow adj -uo behind adp -hol few adj -lì’upuk dictionary n -tìsop journey n -syep trap v:tr -tìreyn train n -kenong model, represent, exemplify v:in -’awsiteng together adv -wou be amazing, fascinating (slang) v:in -muntrr weekend n -fìfya this way, like this adv -sim be near v:in -tolel Eureka! I found it! I understand! intj -tsan’ul improve, get better v:in -hrrap danger n -vey meat, any food of animal origin (including fowl, fish, insects, eggs, milk) n -tìftia study n -fmokx jealousy, envy n -’aku remove, take away, take off v:tr -kintrram last week n -lek heed, obey v:tr -syayvi luck, chance n -tìftxey choice n -europa Europe n:pr -spuwin old, former adj -muntxatan husband, male spouse n -payoang fish n -wiya expression of warning or frustration, ’damn!’ intj -zawprrte’ be enjoyable v:in -sa’sem parent or set of parents n -kekem no action or activity n -pesu who inter -tewti wow, expression of surprise and pleasure intj -nìsok recently adv -fra’u everything pn -fratrr daily, every day adv -kerusey dead adj -nìlam apparently adv -stä’nìpam recording n -am’a doubt n -kxa mouth n -eywa’eveng Pandora n:pr -fmetok test v:tr -srey version n -pxeyve third (ordinal) adj -yrr wild, natural (something in its original, unmodified, untamperedwith natural state) adj -yur wash v:tr -penghrr warn v:in -etrìp favorable, auspicious adj -lew cover, lid n -ep’ang complex adj -poe she pn -lamaytxa flood n -tuté woman, female (person) n -rum ball n -oeyk cause n -swizaw arrow n -’ur sight, look, appearance n -wätx be bad at v:tr -mo space, hollow, enclosed open area n -fwel broken adj -weyn draw, illustrate v:tr -srefey expect v:tr -voìk behavior, how one conducts oneself n -ohakx hungry adj -fngap metal n -kaym evening (before twilight), late afternoon n -kxakx break, snap in two v:in -kxap threaten nv:si -rusey alive, living, living thing n -hipx control v:tr -kllfro’ be responsible v:in -reyfya way of living, culture n -srätx annoy, bother v:tr -fuke or not conj -le’ìnglìsì English, of the English language adj -mawey calm adj -laro clean, make free of dirt nv:si -’opin color n -piak open, clear (for cloudless skies) adj -melo twice adv -sngä’ikrr beginning, starting time n -wo reach for v:tr -nìnän less adv -seykxel strong (emotionally, spiritually, not physical), confident adj -kaw’it not at all, not a bit (used with ke; see ke kaw’it not...at all in phrases) adv -lì’fyaolo’ language group, language users n -kämunge take v:tr -pak disparagement part -tìrol song (vocal) n -lìm be far v:in -kame see, see into, understand, know (spiritual sense) v:tr -fteke so that not, lest conj -tìftang stop (someone or something) nv:si -lom missing, missed (as an absent person who is longed for) adj -tor last, ultimate, terminal adj -pate get to a place, arrive v:? -’uo something pn -hawngkrr late adv -syonlì’u adjective n -mesrram the day before yesterday, two days ago n -nìk’ong slowly adv -fìtxan so, to such an extent adv -mauti fruit n -mawl half n -fìtxon tonight n -nìfrakrr as always adv -nì’awtu alone (as one person) adv -tìk’ìn free time, the absence of business n -ve’kì hate v:tr -am’ake sure, confident adj -lie experience n -saylahe ’et cetera’ adv -fratseng everywhere adv -vll indicate, point at v:tr -nìlun of course, logically, following common sense adv -tìkxey mess up, foul, do wrong nv:si -tsap’alute apologise (apologize) nv:si -virä spread, proliferate v:? -skxom chance, opportunity n -syen last, final adj -fe’ul worsen, get worse v:in -tsyeyk Jake n:pr -toitslan Germany n:pr -fwopx dust (in the air) n -sna’o set, group, pile, clump, stand n -’awstengyem bind / bring two or more things together v:tr -säleymkem protest, instance of protesting n -srungsiyu assistant, helper n -frrtu guest, visitor n -txi hurry, hurriedness, frenzy n -’ul increase v:in -nui fail, falter, go astray, not obtain expected or desired result v:in -sto refuse (to do something) v:tr -eywa Eywa, world spirit, Gaia n:pr -steng similar adj -kxamtxon midnight n -kelutral Hometree n:pr -äo under, below adp -fìtsap each other adv -fkxara stress (mental or emotional feeling) n -lertu colleague n -fwampop tapirus n -netrìp luckily, happily adv -maweypey be patient v:in -teng same, equal adj -kxu harm nv:si -fnel kind, type n -nìflä successfully adv -mìftxele in this regard, related to this matter adv -eytukan male leader of the Omatikaya n:pr -emza’u pass (a test), overcome v:tr -yora’ win v:tr -pìlok blog n -fyin simple adj -tompakel drought n -tiam count v:tr -pänutìng promise (a thing to someone) v:tr -fekem accident n -pxen functional clothing (item of) n -txewm scary, frightening adj -’ampi touch v:tr -tskxepay ice n -tsìk suddenly, without warning adv -slantire inspire nv:si -tì’o’ fun, excitement n -takrra since (temporal) conj -tìsom heat n -tsmukan brother n -lesar be useful, be of use, come in handy nv:si -tìtxur strength, power n -tstunwi kind, thoughtful, considerate adj -’ìnglìsì English language n -hena carry v:tr -zun if (counterfactual use) conj -zel then (counterfactual use) adv -yo’ be perfect, flawless v:in -tsmuke sister n -o some, (with words of time) during aff:suf -toitsye German (language) adj -trrpuve Friday n -teylu beetle larva n -tsìve fourth (ordinal) adj -pängkxoyu chatter, converser n -txìng leave, abandon v:tr -muntxa mate (with someone), marry nv:si -nìsngä’i originally, at first adv -so’ha be enthusiastic about, show enthusiasm for, be excited about v:tr -tsulfätu master of an art, craft, or skill, expert n -yäkx not notice, ignore, snub v:tr -ketsran no matter, no matter what, whatever adj -zìskrrsom summer n -fwi slip, slide v:in -tsalsungay nevertheless, even so adv -narlor beautiful visually adj -zamunge bring v:tr -mll’an accept v:tr -tsyul begin, start v:tr -palon burn v:in -’okvur history (nonancient) n -säftxulì’u speech, oration n -zongtseng safe place, refuge n -rangal wish v:in -zìskrrwew winter n -pehrr when inter -mungwrr except adp -sti anger (intransitive), be angry v:in -nìvingkap by the way, incidentally adv -muntxatu spouse n -tìhawl preparations, plan n -tsurokx rest v:in -keyawr incorrect, wrong, not right adj -lefkeytongay real adj -ekxan exclude, keep out, bar nv:si -teyr white adj -wok loud adj -re’o head n -mìkam between adp -säwäsultsyìp contest n -naer drink, something able to be drunk n -nrr glow, be luminous v:in -tuktirey Jake and Neytiri’s daughter n:pr -lekye’ung insane, crazy adj -win fast adj -prrnen infant, baby n -zìskrrmipaw spring n -sästarsìm collection (put together intentionally by a person) n -vun provide v:tr -’upe what (thing) inter -nulnew prefer v:tr -muiä proper, fair, right, justified adj -fpomtokx health (physical) n -numultxa class (for instruction) n -nìsyen lastly adv -kintrray next week n -säwìntxu showing, exhibition n -tìpe’un decision n -txanso’hayu fan, enthusiast n -spe’etu captive n -ye’krr early adv -kxayl high adj -tseotu artist (generic term) n -kxitx death n -tìmwiä fairness, justice n -kemwiä improper, unfair, wrong, unjustified adj -horenleykekyu law enforcer, police officer n -han lose v:tr -tsu’tey male of the Omatikaya Clan n:pr -tsewtx dirty adj -atokirina’ seed of the great tree n -’ora lake n -nikre hair n -sur taste, flavor n -swoa intoxicating beverage, or "spirits" n -sngä’iyu beginner n -mìso away (position) adv -way song (ancient, ceremonial) n -nìfe’ badly adv -txung disturb, disrupt, bother, affect negatively v:tr -komum don’t know, no idea (slang) phr -kxìmyu commander, one with authority over another n -numtsengvi classroom, division of a school n -tswesya current n -mok suggest v:tr -’ongokx be born v:in -lini young of an animal, bird, fish, insect n -kxuke safe adj -pllngay admit v:in -nìyrr naturally, without tampering with or changing the nature adv -toruk toruk, great leonopteryx n -ha’ngir afternoon n -kllkxem stand v:in -neni sand n -zìsìkrr season n -zenke must not v:m -tìomum knowledge n -venu foot n -kanu smart, intelligent adj -krrnekx take/consume time v:in -tìkanu intelligence n -me (dual) aff:pre -fpìlfya thought pattern, way of thinking n -wrrza’u come out, emerge v:in -kulat reveal, bring forth, uncover (literally and metaphorically) v:tr -tsìltsan good (abstract concept), goodness n -vospxìvomun October n -semkä bridge n -zìsìtay next year n -pìwopx cloud n -wum approximately, roughly adv -lekin necessary adj -hän net, web n -tìtxurnga’ powerful adj -txurtel rope n -atxkxerel map n -HRH LOL ("laughing out loud") intj -tsko bow (weapon) n -zusawkrr future n -lumpe why inter -seysonìltsan well done! (derived from hasey soli nìltsan accomplished well) intj -kxamtrr midday, noon n -tsyafe mild, moderate, comfortable adj -txoa forgiveness n -mun’i cut v:? -txokefyaw if not, or else, otherwise conj -tìhawnu protect nv:si -le’awtu alone, on one’s own, by one’s self; lonely adj -ftanglen prevent v:tr -nang surprise, exclamation, encouragement (mirative) part -mowar advice, bit or piece of advice n -lì’fyavi expression, bit of language n -nän decrease v:in -yayo bird n -lal old (opposite of mip) adj -koaktu old person n -’itan son n -pup short (physical length) adj -taron hunt v:tr -munge take, bring v:tr -hiyìk funny, strange adj -spä jump v:? -syewe fat (substance in meat) n -swaw moment n -fpxäkìm enter v:in -’are poncho, cape, shawl n -tsawng shatter, break into pieces v:in -pewn neck n -pxan worthy adj -zäfi modified, interfered with, no longer in a natural state adj -tsapo that one (for people only) pn -somwew temperature n -’ong unfold, blossom v:? -paw grow; germinate and develop (of a plant) v:in -zoplo offence, insult n -eyktanay deputy, general, one step down from leader n -ingyentsim mystery, riddle, enigma, conundrum n -kunsìp gunship n -fpeio challenge (ceremonial) n -tìeyktan leadership n -tìska’a destruction n -sähena container, vessel, carrier n -tsyeym treasure; something rare and of great value n -krro krro sometimes, from time to time phr -kxener smoke n -vezeyko put in order, organize v:tr -käteng spend time with, hang out with v:in -meyp weak adj -tstal knife n -kip among adp -io over, above adp -kìte’e serve nv:si -yayayrnga’ confusing adj -ro’a be impressive, inspire awe or respect v:in -weopx wave (of water) n -le’aw only adj -fmong steal, rob v:tr -tsyoklìt chocolate n -lehawngkrr late adj -ronsem mind n -nong follow, proceed after v:tr -uolì’uvi suffix n -nìno in detail, expansively, thoroughly adv -tsyey snack, light meal n -hayalo next time adv -mìfa inside n -sänumvi lesson n -’aw one num -ran intrinsic character or nature, essence, constitution n -hamalo last time adv -ronsrelngop imagine, envision (c.w. from ronsem mind, rel picture, ngop create, casual pronunciation [ˈɾon.sɾɛw.ŋ·op̚] ) v:tr -mawkrra after (temporal) conj -tsongropx hole, cavity, excavation with a bottom (visible or presumed) n -syon feature, trait, attribute, characteristic, point, aspect, facet, property n -reypay blood n -fngo’ require, demand v:tr -tìohakx hunger n -ftxulì’u orate, give speech v:in -lehawng excessive adj -hangvur joke, funny story n -nìftue easily adv -vospxìam last month n -tsawn gather growing food from the forest; pick; harvest (in agriculture) v:tr -’awlie once (in the past) adv -tsyokx hand n -vospxìvol August n -eykyu leader (typically temporary, of a small group like a hunting party) n -ropx hole (going clear through an object) n -tong put out, quench v:tr -zet treat (emotionally), display an attitude towards v:tr -wäsul compete v:in -sänrr glow, an instance of glowing; light source, lamp n -zìsìtsaltrr (yearly) anniversary n -alìm far away, at a distance adv -txum poison n -txon’ongmaw twilight, the time before dark, after sunset n -tsamsä’o weapon of war n -fìpo this one person or thing pn -tseo art n -mäkxu interrupt, throw out of harmonious balance v:tr -pe’ngayyu judge n -sngel garbage, trash, rubbish n -tìkezin untangle, solve nv:si -kian blame v:tr -slele swim v:in -tem shoot v:in -palang contact (in a social sense), communicate with v:tr -kalin sweet to the taste adj -fnan be good at v:tr -kxor a wall or bank of powerful waterfalls noted for its deafening roar and deadly force n -lang investigate, explore v:tr -nìtengfya as, same way as (similar action) adv -nìlaw clearly adv -txon’ong nightfall, sunset, dusk, gloaming n -yapay mist, fog, steam n -ngenga you (honorific form) pn -tìwäte dispute, argument n -mrrtrr five day work week n -’emyu cook, cooker n -leha’ appropriate, suitable, fitting adj -ramunong well n -ke’u nothing pn -tsaheyl bond with, establish a neural connection nv:si -tsaheylu bond (neural connection) n -ontu nose n -hewne soft (of an object) adj -lapo other person or thing pn -fil child’s toy, plaything n -pxi sharp (as a point) adj -fkxen vegetable (food) n -txa’ hard adj -nokx give birth to v:tr -yawntu loved one n -kxum viscous, gelatinous, thick adj -nìtrrtrr on a daily basis, regularly adv -fpivìl hmm, let’s see, let me think intj -mei wet adj -leytslam appreciate v:tr -kay from now (in the future) adp -’okrol history (ancient) n -tengfya as, same way as (situational similarity) conj -tsulfä mastery n -’on shape, form n -tswal power n -nim timid, shy adj -tìtsunslu possibility n -mikyun ear n -’ewan young adj -’awpo one individual pn -sävll sign, indication, signal n -reypaytun red ("blood tun") adj -yawo take off, launch v:in -yll communal adj -vospxìmun February n -tsampongu war party n -txew edge, brink, limit, border, end n -muntxate wife, female spouse n -sweriye Sweden n:pr -vospxìkin July n -kllrikx earthquake n -letsim original, unique, not derived from another source adj -tìnvi task, errand, step (in an instruction) n -ftawnemkrr past n -stä’nì catch v:tr -fpomtokxnga’ healthful (physically) adj -yo surface n -heyn sit v:in -ohe I (deferential or ceremonial form) pn -tìmu’ni achievement, accomplishment n -tawng dive, duck (into or under water) v:in -rawm lightning (general term) n -tìkemwiä unfairness, injustice n -hìmtxan amount n -loho be surprising (experiencer in dative) v:in -’ipu humorous, funny, amusing adj -velek give up, surrender, concede defeat v:in -nìrangal wish (contrary to fact, with perfective or imperfective subjunctive) adv -ha’ fit, suit, complement, inherently enhance v:in -kelpxìmrun rare adj -tìketeng difference n -syeha breathe nv:si -yomtìng feed (with dative object) v:in -srew dance v:in -taronyu hunter n -leyn repeat, do again v:tr -äzan force, compel nv:si -peseng where inter -pelì’u what (word, utterance) inter -hangham laugh v:in -kato rhythm n -fkxaranga’ stressful adj -nìtoitsye German adv -syeprel camera n -vospxìmrr May n -’awlo once adv -nì’o’ in a manner which is enjoyable, enjoyably adv -kì’ong slow adj -nutx thick adj -snumìna dim adj -aungia sign, omen n -ketsuktiam uncountable, infinite adj -fpxamo terrible, horrible, awful adj -walak energetic, active adj -kemlì’uvi infix n -tìmok abstract idea of a suggestion n -lefpomtokx healthy (physically) adj -fyeyntu adult person n -tsu’o ability n -susyang fragile, delicate adj -ukxo dry adj -säsulìn hobby, pleasureyielding activity n -mek empty, or metaphorically: having no value adj -mrrve fifth (ordinal) adj -sok recent adj -ngip space, open or borderless area n -tìsteftxaw examination n -mìn turn, rotate on an axis v:in -nip become stuck, get caught in something v:in -tsre’i throw v:tr -tsìpxì one-fourth n -pxìmun’i divide, cut into parts v:tr -txur strong (physically) adj -nuä beyond adp:len -tawsìp skyship n -la’a physical separation, distance between two places or objects n -atanzaw forked lightning n -nìyol briefly, shortly (of time) adv -tìnew desire n -kxetse tail n -slär cave n -muwìntxu introduce, present v:tr -keltrrtrr unusual adj -speng restore v:tr -wrrkä go out, go outside v:in -te used in full names part -emrey survive v:in -wrrzärìp pull out, extract v:tr -newomum be curious, want to know v:in -zam mì zam completely, one hundred percent phr -rel arusikx movie, film, video phr -särengop design (a particular instance of designing) n -sngap sting v:tr -nìli in advance adv -’en make an informed guess nv:si -sosul pleasant smell of nearby running water, rain, moist vegetation adj -renulke irregular, random adj -meyam hug, embrace, hold in one’s arms v:tr -nìzawnong safely adv -alaksi ready adj -ftem pass by (something) v:tr -letrrtrr ordinary adj -ventil ankle n -fwäkì mantis n -paynga’ moist, humid, damp adj -’evengan boy n -ramtsyìp hill n -lìng float in the air, hover v:in -txanatan bright, vivid adj -tì’i’avay until the end adv -txanwawe personally meaningful, significant adj -srankehe more or less, somewhat, yes and no, kind of part -tìngay truth n -tìloho surprise n -säwem fight n -uniltsa dream of, dream about v:tr -fyalì’u adverb n -pxiswawam just a moment ago adv -säwìngay proof (particular instance) n -tsawlhì’ size n -srunga’ helpful adj -srä cloth; a piece of cloth woven on a loom n -ftumfa out of, from inside adp -tupe who inter -smaw approve of v:tr -neto away (direction) adv -’evi kid (affectionate form of) n -vospxìtsìng April n -tìmuntxa mating, marriage n -krrpe when inter -seyn chair, stool, bench; any tool or device to facilitate sitting n -kewan age n -tìm low adj -flew throat n -nìwok loudly adv -tìsla’tsu description n -tìkxìm commanding, ordering, assigning tasks n -kali’weya species of poisonous arachnid n -kxutu enemy n -plltxeyu speaker n -stxong strange, unfamiliar, unknown adj -txärem bone n -letam sufficient adj -pamrelvi letter (phonetic symbol) n -tìyawn love n -srungtsyìp helpful hint, tip n -snanumultxa course (as a collection of classes) n -fpomron health or wellbeing (mental) n -kom dare v:m -sulìn be busy (positive sense), be engrossed in something one finds especially pleasant and energizing v:in -muntrram last weekend n -nafì’u such adj -sämok suggestion n -tìsyortsyìp break, small rest or relaxation n -ye satisfied, content, satiated, full adj -tsyär reject v:tr -tìme’em harmony (general sense) n -fäpa top n -ngrrpongu grassroots movement n -txeptun orange ("fire tun") adj -txepìva ash, cinder n -yora’tu winner n -’ite daughter n -spule propel v:tr -mrrpxì one-fifth n -tsankum advantage, benefit, upside, gain n -lomtu missed person n -tìsung addition, post script n -starsìm gather, collect v:tr -pamtseotu musician n -talioang sturmbeest n -puve sixth (ordinal) adj -tìvirä spread, proliferation n -nìwan secretly, in hiding, by hiding adv -leyr frozen adj -txanlal ancient, very old adj -pizayu ancestor n -wìngay prove v:tr -tìpe’ngay conclusion n -lawnol great joy n -uniltìrantokxolo’ clan, or group of avatars n -vospxìpuk June n -yemstokx put on (clothing), don v:tr -tìkeftxonga’ sad adj -yeyfya straight line n -nìmal trustingly, without hesitation adv -trrtsìve Wednesday n -tsmisnrr bladder lantern, nectar lantern n -reltseotu artist (visual) n -’evenge girl n -huru cooking pot n -pung hurt, injure v:tr -lelì’fya concerning language, regarding language adj -txantstew hero n -tìngop abstract idea of a creation n -tìmweypey patience n -yol short (of time) adj -kxamlä through (via the middle of) adp -tsyìl climb, scale (pulling entire body up) v:tr -starlì’u adposition n -rawmpxom thunder and lightning n -rofa beside, alongside adp -loreyu helicoradian, beautiful spiral n -zawr animal call n -’rrpxom thunder n -trr’awve Sunday n -sätare connection, relationship n -’e’al worst adj -asim nearby, at close range adv -ley be of value, have some positive value, be worth something v:in -stiwi be naughty, do mischief nv:si -pxasìk screw that!, no way! (vulgar) intj -rong tunnel n -pxesrram three days ago n -ku’up heavy (physical weight) adj -fyep hold in the hand, grasp, grip v:tr -txonay tomorrow night adv -taweyka because conj -fäkä go up, ascend v:in -tìkeftxo sadness n -kxll charge nv:si -palulukan thanator n -nìyo’ perfectly, flawlessly adv -swirä creature n -ketuwong alien n -tì’ongokx birth n -mo’at tsahìk of the Omatikaya n:pr -meoauniaea harmony, living at one with nature n -zevakx cruel adj -sätswayon flight (an instance of flying) n -yewn express, convey (a thought or feeling) v:tr -se’ayl an individual tall, thin waterfall that pours down a sheer high cliff, or off of a floating mountain (countable) n -mune two num -fngapsutxwll metalfollowing plant n -’ìn be busy, be occupied v:in -nrra pride, feeling of pride n -nekll down (direction) adv -poan he pn -nawmtu great person n -hìno fine, detailed, precise, intricate (of things) adj -tsìlpey hope (abstract concept) n -lisre by, before, up to but not after adp:len -ultxarun encounter, meet by chance v:tr -tìtsyul beginning, start n -la’um pretend v:in -kelkin unnecessary adj -ftär left (not right) adj -kxam middle, midpoint n -vospxì’aw January n -tsakrrvay until then, in the meantime adv -tswalnga’ powerful adj -may’ taste, try, sample, evaluate, check out, testdrive v:tr -nìksran in a mediocre manner adv -ko’on ring, oval, closed shape roughly circular n -yo’ko circle n -lì’uvi affix n -swaran humble, modest, self-effacing adj -txìm butt, rear end, ass n -fwìng humiliate nv:si -lätxayn defeat in battle, conquer v:tr -pìsaw clumsy, accidentprone adj -nìtsyungwen Zhongwen adv -swawtsyìp little moment, second n -pela’ang what the hell intj -kelhoan uncomfortable adj -stiwisiyu mischiefmaker n -nìyawr correctly, rightly adv -nantang viperwolf Caniferratus costatus, striped armored wolf n -flrr gentle, mild, tender (people or things) adj -lemweypey patient adj -hawmpam noise. sound that is excessive, unnecessary, inappropriate, unexpected or startling n -akum that (as a result) conj -txinfpìl main point n -’ok remembrance n -srese’a prophetize, prophesize, prophesy, predict v:tr -txantxewvay maximally adv -kxamtseng center, place in the middle n -fe’pey feel dread, expect something bad to happen, fear v:in -tìlam appearance n -lepay watery adj -’opinsung color, color in v:tr -tìwew coldness, cold n -tsukx stab v:tr -pamrelsiyu writer n -txayo field, open terrain, plain n -ve’o order (as opposed to disorder or chaos), organization n -tìflä success (in general) n -leioae to respect nv:si -säfngo’ requirement, demand n -emkä cross v:tr -sre’ tooth n -salewfya direction, course n -sänume teaching, instruction n -kavan support (physically) v:tr -sreton’ong dusk, evening before sunset n -txukx deep (physically) adj -sru’ crush, trample v:tr -hawng overabundance n -fyeng steep adj -tìpähem arrival n -yo’kofya cycle n -paytxew shoreline, water’s edge n -txankeltrrtrr extraordinary adj -yak diverge, change direction, go astray nv:si -leym call, cry out, exclaim v:in -tìyora’ victory, a win n -txekxumpay magma, lava n -nì’eyng back, in response, in answer adv -trr’ong dawn, sunrise n -wäte argue, dispute v:tr -wotx totality, whole n -vrrìn be busy (negative sense): be tired out and overwhelmed by an activity that’s keeping one busy v:in -vingkap occur to one, pop into one’s mind v:tr -fyanyo table, elevated utilitarian surface n -ngä’än suffer mentally or emotionally, be miserable v:in -lewng shame n -lewnga’ shameful (for things and behavior) adj -swapxì family member n -matu excuse me, hey intj -manga hey, hey you intj -tsa that aff:pre -mungwrrtxo unless, except if conj -am (past tense) aff:in -metkayina Reef People Clan n:pr -kerìsmìsì Christmas n:pr -räptum coarse, vulgar, socially unacceptable adj -txopunil nightmare n -tarep save, rescue v:tr -tewng loincloth n -txantompa rainstorm, heavy rain n -renu pattern n -kinam leg n -snonivi singleperson hammock n -vonvä’ butthole, asshole, dickhead (vulgar) n -koaktan old man n -sa’nu mum, mommy (affectionate form of) n -kewong alien adj -tsin nail, claw n -tì’al wastefulness n -tìftanglen prevention n -’änsyem complete adj -trrtxon the day and night cycle of Pandora n -mu’ni accomplish, achieve v:tr -fahew smell n -tìnawri talent n -nìtsleng falsely adv -tìvawm darkness n -pxel like, as adp -pxun arm n -kakrel blind adj -syaksyuk prolemuris n -pxelo thrice, three times adv -vrrtep demon n -lì’ukìngvi phrase n -fwefwi whistle v:in -snomo private space that one can retreat to n -tìyo’ perfection n -tìkenong example n -lawr melody n -lepxìmrun common, often found adj -teylupil teylu-face (vulgar) n -txal back (of the body) n -nìran basically, fundamentally, in essence adv -tìslan support (emotional, social or personal support) n -tìlor beauty n -hawre’ hat n -am’aluke without a doubt adv -riti stingbat n -nawfwe fluent (for speech) adj -miklor pleasant sounding, beautiful sounding adj -lì’upam accent, pronunciation n -nìhek strangely, oddly adv -mo’ara gathering place n -lì’uvan pun, wordplay n -pxir beer n -zìskrrtsawn autumn, fall n -fngä’ relieve oneself; (on Earth) use the restroom, go to the bathroom v:in -iv (subjunctive) aff:in -sresrr’ong before dawn n -omatikaya Blue Flute Clan n:pr -lenomum curious adj -vä’ unpleasant to the senses, noisome adj -pximaw right after adp -wip salty adj -rì’ìr reflection n -sey cup or bowl minimally modified from naturally occuring resources n -tìpängkxotsyìp little conversation n -nìlkeftang continuously, incessantly, without stopping adv -leye’krr early adj -lesngä’i original, existing at or from the start, first in a series adj -lupra style n -nìksman wonderfully adv -prrte’ pleasurable (of an activity) adj -fyeyn ripe, mature, adult adj -mong depend on, rely on, trust for protection v:tr -hìmpxì minority, least, small part n -snayì staircase, series of steplike levels n -tìleymkem protesting, protest (abstract concept) n -srefpìl assume v:tr -txantsawl giant, huge adj -nawang merge, become one with v:in -kllvawm brown adj -sngä’itseng beginning, starting position, initial location n -päsketpol basketball n -tsengo somewhere pn -hultstxem hinder v:tr -trrmuve Monday n -ioi adornment, or ceremonial apparel (item of) n -kawnomum unknown adj -fekumnga’ disadvantageous adj -aylaru to the others pn -fekum disadvantage, drawback, downside n -pa’o side n -kinamtil knee n -tìtxap pressure (physical) n -lekxan blocked, obstructed; frustrated adj -wep web (as in world wide web, www) n -säplltxevi comment n -vospxìay next month n -kllwo alight, land (process of) v:in -’oratsyìp pond, pool n -tungzup drop v:tr -trrpxeyve Tuesday n -kive seventh (ordinal) adj -volve eighth (ordinal) adj -tstew brave adj -tìve’kì hatred n -hìm small (in quantity) adj -snaytx lose v:tr -pxim erect, upright adj -sraw painful adj -wempongu squad, military clan, battle party n -kä’ärìp push v:tr -syar stick, stick to, adhere v:in -vospxìvolaw September n -’eve girl (colloquial) n -lan resin n -tskxaytsyìp hail n -tìkelu lack n -kxamtxomaw after midnight n -säpenghrr warning n -fralo every time, every instance, each time adv -hiup spit, spit out v:tr -kenten fan lizard n -tìmal trustworthiness n -nìwä on the contrary, conversely adv -nemrey in a fashion as if one’s life were at stake adv -’ele’wll thorny paw, cactus n -tìtsukanom availability n -zekwä finger n -trr’ongmaw dawn after sunrise n -ngam echo n -sopyu traveller n -mesrray the day after tomorrow, two days from now n -ingyentsyìp trick, sleight of hand, clever/special methodology n -sekrr present n -r (dative case, indirect object) aff:suf -tsyo flour n -tìtxaw punishment n -äzanluke voluntarily, without force or compulsion adv -sweyn keep, preserve v:tr -sum shell (from the ocean) n -tsenga where, place where conj -wawe meaning, importance, significance n -snewsye weird, spooky adj -tumpin red, orange n -keye’ung insanity n -fyole sublime, beyond perfection adj -tsukyom edible adj -säspxintsyìp minor ailment n -tsopì lung n -säplltxe statement n -nopx put away, store v:tr -vospxìvosìng December n -koak old, aged (for living things) adj -klltxay lie on the ground v:in -zam sixty four num -srefereiey nìprrte’ looking forward to phr -kawl hard, diligently adv -lehoan comfortable adj -tirea spirit n -ekxtxu rough adj -ronguway howl v:in -säfrrfen visit, an instance of visiting n -vopxì one-eighth n -mowarsiyu advisor n -nìNa’vi like the Na’vi, Na’vily adv -Eytukan Eytukan (male leader of the Omatikaya) n:pr -’Rrta Earth n:pr -Na’vi the People, indigenous Pandoran sentient race n:pr -hìmtxampe how much inter -neyn light colors, shades of white adj -tìfkeytongay reality n -tawtxew horizon, skyline n -toktor doctor n -snolup personal style or aesthetic, presence n -teyrpin white n -fnepe which kind inter -kelfpomron unhealthy (mentally) adj -kxangangang boom (onomatopoeic) intj -fratxon every night adv -tì’em the art of cooking n -tìngong lethargy, laziness n -lefnelan male adj -tinan reading n -lewn endure, stand, tolerate v:tr -pefnel which kind inter -kanfpìl concentrate, focus one’s attention v:in -pxiswaway in just a second from now adv -tsrul nest; protected area serving as the home of Pandoran fauna n -zìma’uyu newcomer, someone who has just arrived on the scene n -uniltìranyu avatar driver n -prrkxentrrkrr day time smoking pleasure, vibrating tongue (slang for romantic activities) n -me’em harmonious adj -sä’ipu something humorous n -narvä’ ugly, unsightly adj -iknimaya Stairway to Heaven, the rite of passage for young Na’vi n:pr -rìkean leaf green adj -pamtseongopyu music creator, composer n -’otxang musical instrument (generic term) n -tìtstunwinga’ kind adj -kxange yawn v:in -ä (genitive case, possessive) aff:suf -ngampam rhyme nv:si -tspìng austrapede n -fta knot n -hafyon wisdom n -’ak ow, ouch intj -säflä success (an instance of succeeding) n -yìm bind v:tr -kavuk treachery n -tatlam apparently adv -flì thin adj -frir layer n -txap press, press on, apply (physical) pressure to v:tr -trrmrrve Thursday n -kawkxan free, unblocked, unobstructed, clear adj -tìftxulì’u speechmaking, public speaking n -letxi hurried, frenzied adj -lafyon wise adj -tìprrte’ pleasure n -tsyìräfì giraffe n -kelha’ inappropriate adj -fpap pound v:tr -ralu male Na’vi n:pr -tìyewn expression n -’onglawn exhiliration of first bonding n -äie vision (spiritual) n -’ana hanging vine n -maweypeyyu One who is patient n -pxe (trial) aff:pre -mam wrap v:tr -kur hang v:in -spxam mushroom, fungus n -kawnglan malicious, bad hearted adj -säsrätx annoyance n -mowan pleasing, enjoyable (physically, sexually) adj -letrr daily adj -yawnetu loved one n -l (agentive case, subject of transitive verb) aff:suf -anurai Na’vi Clan name n:pr -tawkami Na’vi Clan name n:pr -meuianga’ honorable, honorably adj -hufwetsyìp breeze, light wind n -väpam noise. ugly or unpleasant sound, screech n -takip from among adp -fmongyu thief n -säkanom something acquired, an acquisition, a possession n -tsang piercing n -leyewla disappointing adj -taksyokx clap hands v:in -nì’en making an informed guess, acting on intuition adv -telem cord n -lenrra proud adj -ìy (near future tense) aff:in -mektseng gap, breach n -er (imperfective aspect) aff:in -tìoeyktìng explanation n -ketrìp unfortunate, inauspicious adj -nìtut continually adv -’akra soil (fertile) n -kelemweypey impatient adj -velke chaotic, messy, disorganized, in shambles adj -kllpa bottom n -kan’ìn focus on, specialize in, be particularly interested in v:tr -numultxatu classmate, member of a class n -käsrìn lend v:tr -hafyonga’ wise adj -zize’ hellfire wasp n -nìnu failingly, falteringly, in vain, fruitlessly, not achieving the desired or expected end adv -tìtslam understanding, intelligence n -pllhrr warn v:in -tìlang exploration n -pan third, one third n -layompin black n -vultsyìp stick n -tìhipx control n -sutx track, follow v:tr -nìfranse French adv -lefnele female adj -akrrta since (temporal) conj -sälang an exploration or investigation n -kìng thread n -’awnìm avoid v:tr -slukx horn of an animal n -tswìk suck v:tr -fwep dust (on a surface) n -ultxatu meeting participant n -tsankumnga’ advantageous adj -nìftxavang passionately, with all heart adv -tìwìngay proof, proving (abstract) n -tireapängkxo commune v:? -kxemyo wall, vertical surface n -rawng entrance, doorway n -tìfmong theft n -kawngsar exploit v:tr -pari Paris n:pr -ngäng stomach n -raw down to adp -kew zero num -tatep lose track, lose awareness of something v:tr -tìhan loss n -säwäte point of contention, source of argument, thing disputed n -za’ärìp pull v:tr -zawng scream v:in -nìpxay many, manily adv -stxenutìng offer v:tr -nìzen necessarily adv -nalutsa large armored whalelike sea creature n -smaoe phalanxia, heavily thorned plant n -utraltsyìp bush n -le’al wasteful adj -nìtkanluke accidentally, unintentionally adv -snep narrow adj -faoi smooth adj -pe’ngay judge, conclude v:in -kllpä land, reach the ground v:in -ta’em from above adv -utu forest canopy n -muntrray next weekend n -tì’iluke endless, neverending (in a temporal sense) adj -ler steady, smooth (for motion) adj -snokfyan personal belongings rack n -tomperwì sleet n -letskxe stony, of stone adj -tsong valley n -ue’ vomit, vomit up v:tr -äzantu domineering person; one who is bossy, authoritarian, or dictatorial n -kllyem bury v:tr -lemrey surviving (e.g. of entities from a group some of whom have died) adj -snatxärem skeleton n -tìsmaw approval n -skiempa right side n -fewi chase v:tr -’eoio ceremonious adj -fkxile bib necklace n -rìkxi tremble, shake, shiver v:in -tìn activity that keeps one busy n -tompìva raindrop n -nìyll communally, in a communal manner adv -klltseng position n -nìftär to the left adv -nìskien to the right adv -pamrelfya spelling n -tìmungwrr exception n -tsatu that person n -txey halt (mainly in military use) v:in -kesran soso, mediocre adj -ne’ìm back (direction) adv -kelsar useless, in vain adj -few across, aiming for the opposite side of adp -tsyeytsyìp tiny bite n -nìhay next adv -syulang flower n -yomyo plate, (for food) n -fe’ranvi blemish, deformity, stain, flawed feature n -lìngtskxe unobtanium n -säfmong theft (particular instance) n -kakan rough adj -nìkakan roughly adv -txaw punish v:tr -ra’un surrender, relinquish, give up v:tr -tìra’un surrender, relinquishment n -’älek determined adj -tì’älek determination n -nì’älek determinedly, with determination adv -kemuia dishonor n -lelewng shameful (for people) adj -manawmtu excuse me sir, excuse me madam intj -fì this aff:pre -leftxozä celebratory adj -sängop creation n -kllkulat dig up v:tr -stiwinga’ mischievous adj -tangek trunk (of a tree) n -ay (future tense) aff:in -t (patientive case, direct object of transitive verb) aff:suf -’ia lose oneself (spiritual sense) v:in -’om violet, purple, magenta adj -herwìva snowflake n -ilu large plesiosaurlike sea creature n -’ali’ä collar / choker n -vospxìvopey November n -pxiye’rìn immediately (not as soon as pxiswaway) adv -tìtstewnga’ courageous, brave adj -tìfmi attempt n -pìmtxan how much inter -paysena water container n -vospxey March n -nì ...-ly (makes adverbs) aff:pre -an (male gender suffix) aff:suf -nik convenient, usable without much expenditure of effort adj -tsmìm track, trace (of animal or person) n -atanvi ray n -kot coat n -hoan comfort n -tuvom greatest of all, exceedingly great adj -tìspxin the state of being ill, sickness n -ngoa mud n -la’ang pile of stinking animal matter n -sämunge transportation tool or device n -pxisre right before adp:len -kämakto ride out v:? -yehakx satisfied from hunger, full adj -parul miracle n -nìnänän decreasingly, less and less adv -yokx shield n -nìktungzup carefully, firmly adv -nìloho surprisingly adv -tìfnunga’ quiet adj -lekxutslu risky adj -frìp bite v:tr -ftxì tongue n -trrkive Saturday n -reltseo visual art n -puktsyìp pamphlet, booklet n -uk shadow n -tìflänga’ successful adj -pxek kick, shove v:tr -ìm (near past tense) aff:in -tsamopin warpaint n -tsngem muscle n -tsukanom available, obtainable adj -txantur powerful adj -tsìng four num -kxutslu risk n -payfya stream n -ngul grey, drab adj -’ekong beat (rhythmic) n -eampin blue, green n -’ompin violet, purple, magenta n -nongspe’ pursue with an intent to capture v:tr -e (female gender suffix) aff:suf -yerik yerik, hexapede n -ngawng worm n -ftärpa left side n -letsaktap violent adj -fewtusok opposite, on the opposite side adj -ka wotx generally, for the most part phr -sevin pretty adj -fäza’u come up, ascend v:in -tìwäsul competition n -pxul formidable, imposing adj -natxu disapprove of v:tr -vi (particle used for something spawned from something bigger) aff:suf -kemuianga’ dishonorable adj -tìsay loyalty n -nìtkan purposefully, deliberately adv -aho pray v:in -fkew mighty adj -il bend v:in -lopx panic v:in -pxasul fresh, appealing as food adj -rina’ seed n -slayk brush, comb v:tr -yaymak foolish, ignorant adj -yengwal sorrow n -fäpyo roof n -ftxìvä’ bad tasting adj -klltxeykay lay (something) on the ground v:tr -utumauti banana fruit n -pxayopin colorful, multicolored, variegated adj -pxesrray three days from now adv -sälatem change (instance of), edit, modification n -sempu daddy (affectionate form of) n -sìlronsem clever, smart (thing) adj -skxirtsyìp cut, bruise, minor wound n -eyweveng Pandora n:pr -tìk immediately, without delay adv -say loyal adj -nìFranse French adv -nìToitsye German adv -Yuesey U.S.A. n:pr -leNa’vi having to do with the Na’vi, the People adj -Eywa’eveng Pandora n:pr -’al waste v:tr -’ango soft (of a sound) adj -’angtsìk hammerhead n -’anla yearn for v:tr -’asap sudden shock n -’awkx cliff n -’awm camp n -’e’in pod, gourd n -’ekxin tight adj -’engeng level adj -’etnaw shoulder n -’ewrang loom n -’llngo hip n -’rrko roll v:in -’ä’o pitcher plant n -’ìheyu spiral n -akwey male Na’vi n:pr -amhul female Na’vi n:pr -aonung male Na’vi of the Metkayina Clan n:pr -ateyitan son of Ateyo n:pr -ateyo male Na’vi n:pr -entu male Na’vi n:pr -kamun male Na’vi n:pr -kekunan Na’vi Clan name n:pr -kelnì Cologne n:pr -li’ona Na’vi Clan name n:pr -lo’ak Jake and Neytiri’s second born son n:pr -lo’akur Toruk Makto Amulet n:pr -losäntsyelesì Los Angeles n:pr -mo’at’ite daughter of Mo’at n:pr -naranawm Polyphemus n:pr -nawmtoruktek Toruk Makto Totem n:pr -neteyam Jake and Neytiri’s first born son n:pr -newey female Na’vi n:pr -poston Boston n:pr -rini female Na’vi n:pr -ronal Female Na’vi of the Metkayina Clan n:pr -rongloa Na’vi Clan name n:pr -rotxo male Na’vi of the Metkayina Clan n:pr -seze Neytiri’s banshee n:pr -silwanin Neytiri’s sister n:pr -sorewn female Na’vi n:pr -swotulu sacred river n:pr -tipani Na’vi Clan name n:pr -tonowari male Na’vi of the Metkayina Clan n:pr -tsawkenay Alpha Centauri B n -tsenu female Na’vi n:pr -tsireya female of the Metkayina Clan n:pr -tskaha Na’vi Clan name n:pr -tsumongwi original name for the Omatikaya n:pr -tuke female Na’vi n:pr -txewì male Na’vi n:pr -txilte female Na’vi n:pr -txärpawk Palulukan Bone Horn n:pr -uniltaron Dream Hunt n:pr -va’ru male Na’vi n:pr -vitrautral Tree of Souls n:pr -yeysu Jesus n:pr -afpawng grief n -atxar smell of living animals, as found around a watering hole adj -au exclamation of consternation intj -awaiei banshee of paradise n -epxang stone jar used to hold small toxic arachnid n -ewku taste (not intentionally) v:tr -eyaye warbonnet n -fkay hateful adj -fkio tetrapteron n -fkip up among adp -fkxake itch v:in -flawkx leather n -flawm cheek n -flefle Sol’s delight, magnetotrophic plant n -fmal sustain v:tr -fnawe’ cowardly adj -fpak hold off, suspend action v:in -fpxafaw medusa n -ftxavang passionate adj -fwang savory, umami, rich adj -fwem dull, blunt (as a point) adj -fyan constructed device for keeping something off the ground and clean n -fyel seal, make impervious v:tr -fyuatx anemonoid n -fyìp tendril, tentacle n -hefi smell (not intentionally) v:tr -heyr chest n -hoet vast, broad, expansive adj -hupx miss, not hit a target v:tr -i’en stringed instrument n -ikut large pestle (grinding tool); mealmashing pole n -ingyen feeling of mystery or incomprehension n -keyn put down v:tr -kinä seven num -koum rounded, curved adj -kung putrid, fetid, rotten adj -kurakx drive out v:tr -kuru neural queue n -kxaylte cillaphant n -kxeltek pick up, lift v:tr -kxem be vertical v:in -kxukx swallow v:tr -kxänäng smell of decaying animal/flesh, rotting, putrid adj -kärìp push v:tr -kìm spin, to spin (something) v:tr -kìmar in season (of foods, vegetable or animal) adj -lanay’ka slinger n -liswa nourishment n -litx sharp (as a blade) adj -lo’a totem, amulet n -lìktap crooked adj -mal trustworthy, trustinspiring adj -masat breastplate (armor) n -mawup turtapede n -mekre supplies n -merki ground rack (for smoking meats) n -mrr five num -mulpxar roosterhead plant n -nawri talented adj -ngep navel n -nget smell of decaying wood and leaves, dank (nonanimal decay) adj -ngrr root n -niä grab v:tr -nìkx gravel n -oìsss angry snarl, ’watch it!’ intj -pasuk berry n -pawk horn, wind instrument n -pil facial stripe n -pom kiss v:tr -pukap six num -pxey three num -pänu promise n -raspu’ leggings (used in war) n -rawke alarm cry, call to defense intj -rawp bladder polyp n -rem fuel n -reng shallow (physically) adj -renten goggles, (made from insect wings, carved from wood, etc) n -reym dry land n -ripx pierce v:tr -rurur water that is aeriated while flowing among the rocks of a very gradually sloping stream (countable) n -rìn wood n -saa threatening cry intj -satu’li heritage n -sau exclamation upon exertion, urgh intj -sayrìp handsome, good looking adj -seyri lip n -seyto butcher (in the sense of separating or processing the carcass of a dead animal) v:tr -skepek formal adj -skien right (not left) adj -skuka sagittaria n -sloa wide adj -sloan pour v:tr -smar prey, hunted thing n -snew constrict, tighten v:tr -sngukx grub plant n -snäm rot, decay, degrade over time v:in -srakat dinicthoid n -srok bead (decorative) n -srìn transfer from one to another (rarely used without prefix) v:tr -stxenu offer n -swek bar, rod, pole n -swok sacred adj -swotu sacred place n -syam to smell (intentionally) v:tr -syanan a single drop or series of smaller waterfalls occurring sequentially along a stream or series of pools (countable) n -syawn blessing n -syay fate n -syo light (physical weight), lightweight adj -syä’ä bitter adj -säro’a do great deeds n:si -tete dull (as a blade) adj -tsahey expression of warning or frustration, ’crap!’, ’ah, hell!’ intj -tseltsul whitewater rapids n -tsiki reef tick n -tskalep crossbow n -tskawr limp v:in -tsmi nectar n -tsngal cup n -tsngan meat, obtained from terrestial animals n -tstunkem do a favor n:si -tstxa’a canalyd n -tsuksìm chin n -tswin queue, braid n -tsyal wing n -tsìsyì whisper v:in -tukru spear n -txansngum feel desperate n:si -txatx bubble n -txay be horizontal, lie flat v:in -txewk club (weapon) n -txll’u hookagourd n -täftxu weave v:tr -tì’awm camp n:si -um loose adj -unyor sweetly aromatic (a flowery or aromatic woody sort of smell; may also refer to some spices used in Na’vi cooking) adj -vawt solid, not hollow adj -vitra soul n -vol eight num -vul branch (of a tree) n -väng thirsty adj -walew get over, accept some fact, reconcile oneself, move on v:in -we’ay sour adj -yaney canoe n -yemfpay dip into liquid n:si -yey straight adj -yuey beautiful (inner beauty) adj -yän fasten, tie down v:tr -zare’ forehead, brow n -zeswa grass n -zir touch, feel, texture n -zung crouch v:in -zärìp pull v:tr -zìm feel (not intentionally) v:tr -änsìt male Na’vi n:pr -ìstaw male Na’vi n:pr -ìley war cry intj -ìlva flake, drop, chip n -ìpxa fern n -tunu romantic adj -zin tangled adj -tìzin tangle, tangle up n:si -he’a cough v:in -fwal wipe v:tr -ngungung rub v:tr -rungfwam rungfwam, saber hog n -mungsye inhale v:in -pìtìk scratch (non-harmfully, as an itch) v:tr -tsupx scratch (harmfully, as with a claw) v:tr -lonusye exhale, blow v:in -tsuk -able/-ible (receptive ability) aff:pre -ngrrfpìl key assumption n -fra every, all aff:pre -uy (formal, ceremonial) aff:in -pe what, which (question prefix) aff:pre -ei (positive affect) aff:in -äng (negative affect) aff:in -ats (inferential, suppositional) aff:in -tsyìp little (diminutive suffix) aff:suf -äp (reflexive) aff:in -ri (topical case) aff:suf -ol (perfective aspect) aff:in -pon balance v:tr -lipx drip v:in -torukspxam octoshroom, great leonopteryx fungus n -loran elegance, grace n -fyanyì shelf n -yawnyewla broken heart, broken heartedness n -txeptseng place where a fire is burning or has burned n -txepvi spark n -lì’kong syllable n -vurway story poem, narrative poem n -waytelem song cord n -txurtu strongman/woman, brawny person n -plltxepam speech sound; phoneme n -tstalsena knife sheath n -tutsena stretcher n -sngumtsim worrisome matter, source of worry n -sngeltseng rubbish place, garbage dump n -txanwetseng personally significant or beloved place, heimat (ger.) n -fngä’tseng restroom (on Earth) n -kantseng destination n -’oktrr day of commemoration n -’evan boy (colloquial) n -’itetsyìp little daughter (term of endearment) n -anìheyu fibonacci, blue spiral plant n -apxangrr delta tree n -eanean cheadle, herbaceous plant n -eltungawng brainworm n -emkäfya ford, crossing n -eolì’uvi prefix n -eyawrfya right way (of doing something), correct path n -srekamtrr the time before noon n -srekamtxon before midnight n -onlor goodsmelling adj -ontsang nose ring n -onvä’ badsmelling adj -pa’liwll direhorse pitcher plant n -pamtseowll cat ear, music plant n -pamuvan sound play n -parulnga’ miraculous adj -parultsyìp term of affection for children n -paskalin sweet berry (term of endearment) n -pätsì badge n -payìva drop of water n -paynäpll pineapple n -paysmung water carrier n -paysyul water lily n -paywll water plant, dapophet n -täftxuyu weaver n -tafkip from up among adp -ta’lengean skin blue adj -tanleng bark (of a tree) n -swizawsena quiver (attached to ikran’s saddle) n -’e’insey drinking gourd n -’ekxinumpe how tight, loose? inter -tireaioang spirit animal n -’eyt the symbol 8 (not the value eight) n -’ongopyu designer n -’opinvultsyìp crayon n -akrrmaw after (temporal) conj -aystampe what men inter -aystepe what women inter -aysupe what people inter -ewktswo (sense of) taste n -nefä up (direction) adv -nayn the symbol 9 (not the value nine) n -fe’ran flawed nature, something illconceived or inherently defective n -fìtseng(e) here, this place adv -fkxakewll itch plant n -flìnutx thickness n -fnawe’tu coward n -kiantu blameworthy person n -fkeyk state of, condition of aff:suf -fne type of aff:pre -fnelan male n -fnele female n -fnetxum allergen n -fpomronga’ healthful (mentally) adj -frafya in every way adv -ftuopa from behind adp -ftxulì’uyu orator, (public) speaker n -fwäkìwll mantis orchid n -fyawìntxu guide (with dative of thing guided) v:in -fyawìntxuyu guide n -fyinep’ang degree of complexity n -fyinep’angpe how complex? inter -fyìpmaut squid fruit tree n -fyolup exquisite, sublime in style adj -hametsì leavened bread n -hawntsyokx glove n -hawnven shoe n -hawtsyìp nap n -hefitswo (sense of) smell n -hermeyp snow flurry n -hertxayo snow field n -hìmtxew minimum n -hìpey hesitate, hold back for a short time v:in -hìrumwll puffer plant n -holpxaype how many inter -inanfya sense (means of perception) n -ingyenga’ mysterious, puzzling, enigmatic adj -ionar banshee rider visor n -kakpam deaf adj -kalweyaveng son of a bitch (vulgar) n -käpxì rear (part or section) n -kawtseng nowhere adv -ke’aw divided, torn apart, striferidden adj -kefpomronga’ unhealthful (mentally) adj -kelfpomtokx unhealthy (physically) adj -keltsun impossible adj -kenzen not necessarily adv -käsatseng out there adv -txeptsyìp flame n -kesätarenga’ irrelevant adj -ketsuk in-...-able/-ible (receptive ability) aff:pre -ketsukanom unavailable, unobtainable adj -ketsuklewn intolerable, unacceptable, unendurable, unbearable adj -ketsuktswa’ unforgettable adj -keynven step v:in -keyrel facial expression n -kezin untangled adj -kipxì one-seventh n -kllkä go down, descend, (for astronomical bodies) set v:in -kllza’u come down, descend v:in -koakte old woman n -koaktutral goblin thistle n -kurfyan hamper or suspended rack n -kurfyavi hook (for hanging or suspending an item) n -kurkung asshole (vulgar) n -kxamtrrmaw the time immediately after noon, early afternoon n -kxamyì intermediate level n -kxapnga’ threatening adj -kxaylyì high level n -kxumpaysyar glue n -väfewll Centipede, badsmell plant n -värumut vein pod n -vawmpin dark color n -venga’ organized, "on top of things" adj -venzek toe n -pxayzekwä spiny whips n -ralke meaningless, devoid of content adj -ralnga’ meaningful, instructive, something from which a lesson can be learned adj -la’ape how near, how far, what distance inter -lanutral dandetiger n -le’en speculative, intuitive adj -lefpomron healthy (mentally) adj -lefrir layered adj -lehawmpam noisy adj -lehìpey hesitant, in a state of hesitation adj -lepwopx cloudy adj -lereyfya cultural adj -lerìk leafy adj -lerìn wooden, of wood adj -leronsrel imaginary adj -leskxir wounded adj -lesnonrra full of selfpride adj -leso’ha enthusiastic, keen adj -letsunslu possible adj -letswal powerful adj -letut constant, continual adj -letwan dodgy, sneaky (of a person) adj -letxiluke unhurried adj -lewäte disagreeable, argumentative (of an agent) adj -leweopx wavelike adj -leyapay foggy, misty adj -lezeswa grassy adj -lì’upe what (word, utterance) inter -lukpen without clothing, naked adj -lukftang constant, continual adj -lortsyal shimmyfly n -lìmsimpe how near, how far inter -maitan my son (form of address) phr -maite my daughter (form of address) phr -matsa matsa, crackers n -meitayo wetlands n -mestampe what two men inter -mestepe what two women inter -mesupe what two people inter -meyptu weakling n -miktsang earring n -mikvä’ badsounding adj -mìnyu turner, twisted lily n -momek hollow, not solid adj -munsna pair n -nafpawng grievingly, with grief adv -nam’ake confidently adv -neympin light color n -ngimpup length n -ngulpin grey n -nì’al wastefully adv -nì’eng equally, on the same level adv -nì’eoio ceremoniously adv -nì’eveng like a child, immaturely adv -nìawnomum as you know, as is known (casual speech [naw.no.mum]) adv -nìayoeng like us, as we do adv -nìflrr gently, tenderly adv -nìfmokx jealously, enviously adv -nìfnu silently adv -nìfpxamo horribly, terribly, awfully adv -nìfrir in layers adv -nìfwefwi by whistling, in a whistling manner adv -nìfyeyntu like an adult, maturely adv -nìhawmpam noisily adv -nìhìpey hesitantly adv -nìhoan comfortably adv -nìhoet widely, pervasively adv -nìhol few, not many adv -nìhona endearingly, sweetly adv -nìk’ärìp steadily adv -nìkanu intelligently, in a smart way adv -nìkelkin unnecessarily adv -nìkemweypey impatiently adv -nìklonu firmly, steadfastly, faithfully adv -nìkmar in the right season, opportunely adv -nikroi hair adornment n -niktsyey food wrap (food items wrapped in edible leaves or vines) n -nìkxap threateningly adv -nìkxem vertically adv -nìler steadily adv -nìmeyp weakly, loosely adv -nìmweypey patiently adv -nìnäk by drinking, in a liquid way adv -ninan by reading adv -nìnew voluntarily, willingly, by desire adv -nìngong lethargically, lazily adv -ningyen mysteriously, in a puzzling fashion adv -nìnrra proudly, with pride adv -nìolo’ (together) as members of a clan adv -nìpxim erectly, rightly adv -nìpxul formidably, imposingly adv -nìrìkxi shakily, tremblingly adv -nìronsrel in imagination, by imagination adv -nìslele by swimming adv -nìso’ha enthusiastically adv -nìsngum worryingly, fretfully adv -nìsoaia (together) as members of a family adv -nìsteng similarly adv -nìsti angrily adv -nìswey optimally, best adv -nìsyayvi by chance or coincidence adv -nìsyep tightly, in an iron grip adv -nìt’iluke neverendingly, forever adv -nìtsim originally, in an original way, with originality adv -nìtsìsyì by whispering, in a whisper adv -nìtson dutifully, as an obligation adv -nìtstew bravely, courageously adv -nìtsyìl by climbing adv -nìtxankeltrrtrr extraordinarily adv -nìtxay horizontally adv -nìtxi hurriedly, in a frenzied way adv -nìtxiluke unhurriedly, leisurely adv -nìtxukx deeply adv -nìwäte disagreeably, begrudgingly adv -nìwawe meaningfully, significantly adv -nìyewla in a disappointing fashion, in a way failing to meet expectations adv -nìyeyfya straight ahead, in a straight line adv -nìzevakx cruelly adv -paystan what men inter -payste what women inter -paysu what people inter -pefyinep’ang how complex? inter -pekxinum how tight, loose? inter -’ekxinum degree of tightness, looseness n -pela’a how near, how far, what distance inter -pelìmsim how near, how far inter -pemste what two women inter -pemsu what two people inter -penghrrap binary sunshine, fringed lamp n -pensìl pencil n -pemstan what two men inter -pepstan what three men inter -pepste what three women inter -pepsu what three people inter -peslosnep what width, how wide? inter -pestan what man inter -peste what woman inter -pinvul crayon n -pìwopxtsyìp nebula n -polpxay how many inter -prrku womb n -prrnesyul bud n -prrsmung baby carrier n -prrwll moss n -pupxì one-sixth n -pxawpa perimeter, circumference, border n -pxawpxun armband n -pxawtxap squeeze v:tr -pxestampe what three men inter -pxestepe what three women inter -pxesupe what three people inter -kllpxiwll lionberry n -pxiut razor palm, sharp tree n -pxiwll hermit bud plant n -pxorna’lor sari, beautiful exploding seed plant n -pxorna’ episoth, exploding seed n -pxorpam ejective consonant n -pxuntil elbow n -relvul pen, pencil, writing stick n -pamrelvul pen, pencil, writing stick n -rengop design (finer detail) v:tr -rey’eng the Balance of Life n -rimpin yellow n -nguway howl, viperwolf cry n -ronguwayyu howler n -ronsrel something imagined n -rumaut cannonball fruit tree n -sa’ewrang mother loom, giant loom n -sa’nutsyìp little mommy (used for young girls) n -sä’anla yearning n -säfmi attempt n -säfe’ul worsening (specific instance) n -säfrìp bite n -säfyep handle n -sähe’a cough, instance of coughing n -saho prayer n -säkxange yawn n -sälätxayn defeat, an instance of defeat n -säleymfe’ complaint n -sälipx drop (of a liquid) n -sämyam hug, embrace n -sängä’än bout of suffering; episode of depression n -sänui failure (particular instance of failure) n -säpllhrr warning n -säpom kiss n -särawn replacement, substitute, something that replaces something else n -säseyto butchering tool n -säsìlpey hope (particular instance) n -säsrese’a prediction n -säsrìn lent or borrowed thing n -säsyep trap n -sätarenga’ relevant, pertinent adj -sätaron hunt n -sätsan’ul improvement (specific instance) n -sätseri observation, something noticed n -sätsìsyì whisper n -sätsyìl climbing event, a climb n -säyäkx snub n -säzärìp face lead, rein n -skayp Skype n -slosnep width n -slosneppe what width, how wide? inter -snafpìlfya philosophy n -snapamrelvi alphabet n -snatanhì constellation n -snatanhìtsyìp star cluster n -snaytu loser n -sngunga’ worrisome, troubling adj -snonrra selfpride (negative connotation) n -snotipx selfcontrol n -somtìlor popsicle, hot beauty n -späpeng restore oneself (metaphorically) v:in -spulyaney canoe paddle n -stawmtswo (sense of) hearing n -sumsey drinking vessel made of shell n -sunkesun like it or not adv -swaynivi family hammock n -swoasey kava bowl (constructed from seed pods, used for drinking intoxicating beverages), handsized n -sye’otxang wind instrument n -syeptute hyneman, person trapper n -syewenga’ fatty adj -syokup weight (physical) n -syuratan bioluminescence n -syusmung food tray n -tarnioang predator animal n -taronyutsyìp little hunter n -tarpongu hunting party n -tautral sky tree n -taweyk because conj -syuvekel famine n -rumut puffball tree (Obesus rotundus) n -tawsyuratan aurora n -tawtsngal panopyra, sky cup n -teswotìng grant v:tr -temrey survival n -tì’awpo individuality (negative connotation), selfishness n -tì’eylan friendship n -tì’ipu humor n -tì’ul increase n -tìaho prayer (in general, abstract idea) n -tìfe’ul worsening (in the general or abstract sense) n -tìflrr gentleness, tenderness n -tìfnawe’ cowardice n -tìfnu quiet, silence n -tìfpxamo horror n -tìftxavang passion n -tìfyawìntxu guidance n -tìfyeyn ripeness, maturity, full fruition n -tìhawnuwll spartan, protection plant n -tìhìpey hesitation n -tìhona cuteness, adorableness n -tìkakpam deafness n -tìkakrel blindness n -tìkankxan barrier to one’s goals, source of frustration n -tìkankxanga’ frustrating adj -tìkawng evil n -tìktseri unawareness, lack of notice n -tìkusar teaching (the act) n -til joint, hinge n -tìla’um pretence n -tìleym call n -tìleymfe’ complaining n -tilì’u conjunction n -tìmeyp weakness n -tìmll’an acceptance n -tìmyì low level n -tìnatxu disapproval n -tìnomum curiosity n -tìnui failure (abstract concept) n -tìpalang (social) contact n -tìpaw growth n -tìpsaw clumsiness n -tìpxul formidableness, imposingness n -tìranpam footstep (sound) n -tìrawn replacement, the act of replacing n -tireafya’o spirit path n -tìrengop design (the act or art of designing n -tiretu shaman n -tìronsrel imagination n -tìsnaytx loss n -tìso’ha enthusiasm, having a good attitude n -tìspe’e capture n -tìsrese’a prophecy n -tìsti anger n -tìswaran humility, humbleness n -tìsyor relaxation n -tìtaron hunting n -tìterkup death (in abstract sense) n -tìtsan’ul improvement (in the general or abstract sense) n -tìtseri awareness, notice n -tìtstew courage, bravery n -tìtstunwi kindness n -tìtsyär rejection n -tìtunu romance n -tìtusaron hunting n -tìtxanew greed n -tìtxantslusam wisdom (seldom used) n -tìväng thirst n -tìwan obfuscation, cover up n -tìwusem fighting n -tìyäkx lack of notice, snubbing n -tìyusom eating (the act) n -tìzevakx cruelty n -tìzevakxnga’ cruel adj -tompameyp drizzle n -tompawll geode, rain plant n -trrpeve which day (derived from trr day and pe interrogative marker and ve ordinal number marker) inter -karyunay apprentice teacher n -ikranay forest banshee n -’eylanay acquaintance (with the potential for becoming a friend) n -tsawksyul sun lily n -tsawsngem muscular adj -tse’atswo (sense of) sight, vision n -zìmtswo (sense of) touch n -tsengpe where inter -tskxevi pebble, small stone polished smooth by natural forces n -tsmuktu sibling n -tsngawpay tears n -tsngawpayvi teardrop n -tsongtsyìp dimple n -tstunkemtsyìp little favor n -tstxolì’ukìngvi noun phrase (phrase whose pivotal or central word is a noun) n -tsuktswa’ forgettable adj -tsulfätunay nearmaster n -tswintsyìp little queue n -tsyorina’wll cycad, flour seed plant n -tumpasuk celia fruit tree n -tunutu object of desire, crush n -tutampe what man inter -tutepe what woman inter -txanew greedy adj -txanfwerwì blizzard n -txanfwìngtu bastard, loser (vulgar) n -txanro’a be famous v:in -txantslusam wise adj -txantxew maximum n -txantxewm terrifying adj -txavä’ disgusting adj -txe’lankong heartbeat n -txewluke endless, boundless, without limit adj -txewnga’ having a limit, not without bounds, finite adj -txonkrr at night adv -txumnga’ poisonous adj -txumpaywll scorpion thistle, poison water plant n -vurvi summary, synopsis n -vozampasukut grinch tree, thousand berry tree n -wokau pendulum drum n -yawntutsyìp darling, little loved one n -yayayrtsim something confusing, source of confusion n -yayotsrul bird’s nest n -yeväng satisfied from thirst by drink, feeling quenched, slaked adj -yìmkxa banshee catcher, mouth-binder n -ylltxep communal fire or fire pit n -yomhì’ang small animal/insect eater, dakteron n -yomioang chalice plant n -yomvey dine on flesh, be carniverous v:in -yomzeswa graze v:in -zapxì front (part or section) n -zasrìn borrow v:tr -zave sixty-fourth (ordinal) adj -zeswavi blade of grass n -zìtsaltrr (yearly) anniversary n -zawsena quiver (attached to the ikran’s saddle) n -yu -er (personification, creates nouns from verbs) aff:suf -tsawlapx unidelta tree n -tsawlapxangrr unidelta tree n -kopenhan Copenhagen n:pr -tseyk Jake n:pr -pesomwew what temperature? inter -somwewpe what temperature? inter -so’yu fan, enthusiast n -fe’lup tacky, in poor taste adj -tsahìk matriarch, high priestess, interpreter n -tawsnrrtsyìp Alpha Centauri C, Proxima Centauri n:pr -snrrtsyìp Alpha Centauri C, Proxima Centauri n:pr -oetsyìp little me, little I pn -ngatsyìp little you, you little pn -sivako you can do it!; rise to the challenge! intj -kefpomtokxnga’ unhealthful (physically) adj -fkarut peel v:tr -latsi keep up with someone v:in -tsä’ squirt v:in -tuvon lean v:in -’ongop design v:tr -reykol play music, make to sing (poetic) v:tr -tì’ong blooming, unfolding n -txumtsä’wll Baja tickler, poisonsquirting plant n -’ampirikx leaf pitcher plant n -vezo be in order, be organized v:in -kìreysì Grace n:pr -tì (noun-creating prefix) aff:pre -sä (noun-creating prefix, generally specific instance) aff:pre -sna group of ... (prefix indicating naturally occuring groups or collections) aff:pre -tu ... person (noun-making suffix) aff:suf -ve ...th (makes ordinal numbers from cardinal numbers) aff:suf -nay (particle indicating something lower in the hierarchy) aff:suf -le having to do with... (makes adjectives from nouns and verbs, non-productive) aff:pre -us (active participle) aff:in -awn (passive participle) aff:in -tareptu rescuee, someone who has been rescued or saved n -sätarep rescue, an instance of rescuing n -tsantu good person, "good guy" n -spakat drown v:in -fwum float (on the surface of a liquid) v:in -wapx sink v:in -tamìfa internal adj -tawrrpa external adj -tsantxäl invitation n -nìsay loyally adv -särangal wish n -’avun save (time, food, etc.) v:tr -ninat Ninat (female singer of the Omatikaya Clan) n:pr -peyral Peyral (female Na’vi of the Omatikaya Clan) n:pr -leno thorough, detailorientated (of a person) adj -tìno thoroughness, attention to detail n -kawngtu bad person, "bad guy" n -otranyu Otranyu (probably a clan name) n:pr diff --git a/.local/share/packages b/.local/share/packages index a9004af..34f02a0 100644 --- a/.local/share/packages +++ b/.local/share/packages @@ -1,4 +1,4 @@ -# base Parabola OpenRC +## base Parabola OpenRC archlinux-keyring parabola-keyring base @@ -17,36 +17,21 @@ neovim opendoas # sudo replacement git -# packages - ## ratakor-repo -dmenu-ratakor # application launcher -dwm-ratakor # window manager -sb # status bar -st-ratakor # terminal emulator -slock-ratakor # screen locker -ratakor-repo/sic # IRC client +pinentry-dmenu # use dmenu for gpg # TODO: create pinentry-tofi randhost # set a random hostname (OpenRC service) blocktooth # block bluetooth with rfkill (OpenRC service) networkmanager-hardened # set a randomized MAC address + disable co test quand # a calendar app like when -#clangbincc # a pacman hook to symlink clang to cc when there is a gcc update -pinentry-dmenu # use dmenu for gpg ratakor-repo/dragon # a simple drag-and-drop replacement for graphical stuff -ratakor-repo/your-privacy # your-privacy but without NM as it's in another pkg -cli-visualizer # audio visualizer dashbinsh # a pacman hook to symlink dash to sh when there is a bash update -dracula-gtk-theme # /usr/share/themes/dracula gruvbox-gtk-theme # /usr/share/themes/gruvbox-[dark|light] -xbanish # hide mouse when typing simple-mtpfs # mount phone easily dbus-xdg # dbus but without ~/.dbus ungoogled-chromium-xdg # ungoogled chromium but without ~/.pki -nsxiv # image viewer scron # simple cron daemon htop-vim # process viewer (htop) with vim keybinds -openssh-dotlocal # openssh but ~/.ssh to ~/.local/etc/ssh -herbe # notifications +openssh # TODO openssh-dotlocal # openssh but ~/.ssh to ~/.local/etc/ssh gomuks # matrix client poop # Performance Optimizer Observation Platform 2048 @@ -59,10 +44,10 @@ eza # ls replacement lf # file manager bat # lf dependency and cat replacement w3m # lf dependency and terminal based browser -ueberzug # lf dependency: see image in terminal atool # lf dependency odt2txt # lf dependency ffmpegthumbnailer # lf dependency +chafa # lf dependency (image in terminal) mediainfo # lf dependency yt-dlp # download any video/audio from the web ytfzf # search youtube video without a browser @@ -70,7 +55,6 @@ dust # du replacement duf # df replacement fd # find replacement gitui=0.22.1 # tui for git -vivid # LS_COLORS generator ## dev #texlive # LaTeX (big package) @@ -83,16 +67,7 @@ mingw-w64-gcc # windows cc musl # another libc libbsd zig # NOTE: use zig-dev-bin from AUR instead -pypy3 # JIT python interpreter -zls # zig lsp -gopls # go lsp -rust-analyzer # rust lsp -texlab # LaTeX lsp -pyright # python lsp -bash-language-server -lua-language-server -vscode-css-languageserver -vscode-html-languageserver +go astyle # C formatter shellcheck cmake # use zig or make please @@ -102,6 +77,8 @@ dosfstools mtools xorriso gptfdisk +mariadb-openrc +jdk17-openjdk ## sound rtkit @@ -111,22 +88,29 @@ pipewire-pulse wireplumber ## grapical -xorg-server -sx # init xorg -xorg-xrdb # Xresources -sxhkd # hotkey daemon -hsetroot # wallpaper utility -#xwallpaper # wallpaper utility for mutliple monitors -xclip # clipboard management -picom # compositor (window transparency and stuff) -redshift # no blue light at night, use nonprism repo to remove geoclue2 support +river # window manager # TODO: need river-git for XF86ScreenSaver +waybar # bar +foot # terminal emulator +foot-terminfo +tofi # dynamic menu # TODO: aur +mako # notification daemon +swaylock # screen locker +swaybg # wallpaper utility +grim # screenshot +slurp # region selection +swayidle # idle manager +wlopm-git # power management # TODO: aur +wl-clipboard # clipboard management +wf-recorder # screen recording +#kanshi # multiple displays +gammastep # no blue light at night mpv # video and music player socat # dependency for the music script that uses mpv -maim # screenshot tool zathura # document viewer zathura-pdf-mupdf claws-mail # mail client, use nonprism repo to remove libgdata support gajim # XMPP client +imv # image viewer ## misc keepassxc # password manager @@ -163,5 +147,7 @@ python-gnupg # gajim dependency git-lfs xdo # window manipulation zsh-completions -slop cloc +perf +python-graphviz +trash-cli @@ -1,10 +1,11 @@ <h1 align="center">My dotfiles</h1> ![screenshot](https://ratakor.com/images/setup/waw.png) +(Outdated screenshot) ## Installation I follow the [.local convention](https://gist.github.com/Earnestly/84cf9670b7e11ae2eac6f753910efebe) -to a point that I have just one dotfile in $HOME (yes no .ssh, .dbus or .pki) +to a point that I have just one dotfile in $HOME (yes no ~.ssh~, .dbus or .pki) so you'll need to tweak the Makefile if you don't. Also if you're not using Parabola OpenRC you will probably need to edit .local/share/packages according to your distro. @@ -18,13 +19,12 @@ DO NOT TRY TO INSTALL if it's not a fresh install and you don't know what you're ## Softwares ### Graphical environment -- Window manager: [dwm](https://github.com/ratakor/dwm) -- Compositor: [picom](https://github.com/yshui/picom) -- Bar: [sb](https://github.com/ratakor/sb) -- Terminal emulator: [st](https://github.com/ratakor/st) -- Program launcher: [dmenu](https://github.com/ratakor/dmenu) +- Window manager: [river](https://github.com/riverwm/river) +- Bar: [waybar](https://github.com/Alexays/Waybar) +- Terminal emulator: [foot](https://codeberg.org/dnkl/foot) +- Dynamic menu: [tofi](https://github.com/philj56/tofi) - Web Browser: [Ungoogled Chromium](https://github.com/ungoogled-software/ungoogled-chromium) -- Themes: [Dracula](https://draculatheme.com/) and [Gruvbox](https://github.com/morhetz/gruvbox) +- Theme: [Gruvbox](https://github.com/morhetz/gruvbox) ### Command Line Interface - Shell: [zsh](https://github.com/zsh-users/zsh) @@ -32,7 +32,6 @@ DO NOT TRY TO INSTALL if it's not a fresh install and you don't know what you're - File manager: [lf](https://github.com/gokcehan/lf) - Calendar: [quand](https://github.com/ratakor/quand) - RSS reader: [newsboat](https://newsboat.org/) -- IRC client: [sic](https://tools.suckless.org/sic) ### Fonts - Serif font: [Noto Serif](https://fonts.google.com/noto/specimen/Noto+Serif) @@ -44,22 +43,23 @@ DO NOT TRY TO INSTALL if it's not a fresh install and you don't know what you're - Document viewer: [zathura](https://github.com/pwmt/zathura) - Video player: [mpv](https://github.com/mpv-player/mpv) - Music player: [music](.local/bin/music) -- Image viewer: [nsxiv](https://nsxiv.codeberg.page/) -- Notifications: [herbe](https://github.com/dudik/herbe) -- Screenshot tool: [maim](https://github.com/naelstrof/maim) +- Image viewer: [imv](https://sr.ht/~exec64/imv) +- Notifications: [mako](https://github.com/emersion/mako) +- Screenshot tool: [grim](https://sr.ht/~emersion/grim) - Mail client: [Claws Mail](https://www.claws-mail.org) -- Screen locker: [slock](https://github.com/ratakor/slock) +- Screen locker: [swaylock](https://github.com/swaywm/swaylock) - [Wallpapers](https://github.com/ratakor/wallpapers) See [packages](.local/share/packages) for a list and a small description of other programs I use. ## TODO +- patch tofi then replace tofi with $DMENU in scripts +- use ii as irc client? - config mtm (or tmux) to be usable -- replace sic with ii ? ## LICENSE -Copyright © 2023 Ratakor <ratakor@disroot.org> +Copyright (c) Ratakor Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above |