Home Log À propos RSS

Des favoris Nextcloud à twtxt et dmenu

twtxt

J'utilise twtxt pour microblogguer de façon décentralisée et très très très simple.

En effet, nul besoin d'utiliser le logiciel idoine. J'utilise un script qui appelle dmenu en une fraction de secondes, twt :

#!/bin/sh
# https://github.com/buckket/twtxt
#
# check https://galusik.fr/twtxt.txt
#
test -s $HOME/.dmenurc && . $HOME/.dmenurc

OUTDIR=$HOME/code/www
TWT=${OUTDIR}/twt/twtxt.txt
PROMPT="twtxt: "

MSG="$(xclip -o | dmenu -sb ${sb} -sf ${sf} -nb ${nb} -nf ${nf} -fn ${fn} -p "$PROMPT")"
test -z "${MSG}" && exit
printf '%s\t%s\n' "$(date +%FT%T%:Z)" "${MSG}" >> "${TWT}"

# upload
cd "${OUTDIR}"
make twtxt

Le message formaté est copié sur un fichier local qui lui est ensuite copié sur mon serveur auto-hébergé.

De même, pour le suivi de personnes intéressantes, comme celle-ci par exemple, je me sers du flux ATOM/RSS.

Ainsi, je peux notamment partager les sites que je trouve intéressants rapidement. Je peux y ajouter des tags ou autres commentaires.

Appréciant de plus en plus la simplicité, je trouvais dommage de ne pas me servir de cette base de favoris pour mon utilisation quotidienne. J'utilisais l'application bookmarks de mon instance Nextcloud.

De nextcloud bookmarks à twtxt

J'ai exporté ma base de données Nextcloud vers le fichier bookmark.html. Un script a ensuite nettoyé ce fichier et appliqué le formatage attendu par twtxt. Voici ncbkm2twtxt :

#!/bin/sh
#
# ncbkm2twtxt - Tool to convert Nextcloud bookmarks.html to twtxt.txt format
# date   url tags
#
# fredg <f AT galusik.fr>
#
# copy this script in your BIN file like $HOME/bin
# check your file name and run the script

set -ue

# Your nextcloud bookmarks file name
BKMHTML="bookmarks.html"

#
OUTFILE="bkm_twtxt.txt"
SED=$(whence sed)
GREP=$(whence grep)
AWK=$(whence awk)
NOW=$(date +%FT%T%:Z)

# Parse HTML file and keep urls and TAGS parts
html2txt()
{
    "${GREP}" http "${BKMHTML}" |\
    awk '{ print $2, $3 }' > "${OUTFILE}"
}

# Cleanup and twtxt format
txt2twt()
{
    "${SED}" -i '
        1d
        s/HREF="//g
        s/"//g
        s/TAGS=//g
        s/,/ /g
        s/^/'"${NOW}"'   /g
        ' "${OUTFILE}"
}

html2txt
txt2twt

# Now, you can check your file, remove unneeded bookmarks and then :
# cat bkm_twtxt.txt >> /your/twtxt/file.txt

Vous obtenez le fichier bkmtwtxt.txt. Jetez y un oeil, retirez ce qui ne doit pas être public et copiez son contenu dans votre fichier twtxt.txt.

Gestion des favoris avec dmenu

dmenu est donc utilisé pour lire le fichier twtxt.txt et ne sont affichées que les lignes avec une adresse internet. Les mots clés et commentaires sont conservés afin de faciliter la recherche.

Ensuite dmenu affiche les résultats au fur et à mesure que vous tapez votre recherche. Vous sélectionnez et hop, votre navigateur s'ouvre à l'adresse choisie.

Voici le simple script qui réalise ceci, dtwtbmk :

#!/bin/sh
#
# use dmenu to open your bookmarks stored in your twtxt file
#

set -eu

test -s "$HOME"/.dmenurc && . "$HOME"/.dmenurc

BROWSER=firefox
TWTXTPATH="$HOME/code/www/twt/"
FILE=twtxt.txt
TWTXT="${TWTXTPATH}"/"${FILE}"
BMK="/tmp/${FILE}.$$"

PROMPT="GO> "

# twtxt file cleanup
awk '$1 = "" ; $2 ~ /^http*/ { print $0 }' < "${TWTXT}" > "${BMK}"

CMD=$(dmenu -l "${l}" -fn "${fn}" -nb "${nb}" -nf "${nf}" -sb "${sb}" -sf "${sf}" -p "${PROMPT}" "$@" < "${BMK}")

# remove tags
URL=$(echo "${CMD}" | awk ' { print $1 } ')

"${BROWSER}" "${URL}"

exit 0

Quelques liens

Discussion via la liste de diffusion (Mailing-List)