MatrixCli est un client de matrice simple basé sur la matrice-python-sdk. Si vous vous demandez comment cela est utile, veuillez consulter les applications
Vous pouvez installer MatrixCli à l'aide de setup.py dans le répertoire de projet root. Cela installera également toutes les dépendances nécessaires.
git clone https://github.com/saadnpq/matrixcli.git
cd ./matrixcli
sudo ./install.shCela mettra le script MatrixCli dans votre chemin, installez un fichier de configuration de configuration dans / etc / matrixcli et Systemd Unit File dans / lib / systemd / user
Pour les utilisateurs d'Ubuntu, vous devez d'abord installer Python3-Setuptools avant d'exécuter les commandes ci-dessus
sudo apt install python3-setuptoolsPour activer le service SystemD, vous pouvez exécuter ce qui suit.
systemctl --user enable --now matrixcliLa configuration du compte se fait via le fichier config.py dans l'un des emplacements suivants triés par priorité
Il s'agit d'une configuration d'échantillon de compte.
def password_eval ():
return "Y0UrPredIctabLePA$$w0ord"
accounts = [{ "server" : "https://matrix.org/" ,
"username" : "putYourUserNameHere" ,
"passeval" : password_eval }]
# the password_eval function can be named any thing as long as
# it matches the function definition
ignore_rooms = [ "room_id" , "another_room_id" ]
# note: room_id not room_alias (run matrixcli rooms to get the room_id) Le fichier de configuration doit avoir une variable accounts qui contient une liste des dictionnaires où chaque dictionnaire se compose du serveur d'informations, du nom d'utilisateur et du mot de passe
La justification derrière la définition d'une fonction qui renvoie la valeur du mot de passe est que si vous ne souhaitez pas écrire votre mot de passe en texte brut, vous pouvez écrire n'importe quel code python que vous souhaitez générer ou lire le mot de passe à partir d'un fichier crypté ou d'un anneau clé
La liste Ignore_rooms contient des pièces que vous souhaitez ignorer lors du calcul des messages non lus et en mode d'écoute
Si vous ne souhaitez pas du tout créer un fichier de configuration, vous pouvez passer le serveur, le nom d'utilisateur et le mot de passe via des arguments de ligne de commande. voir l'utilisation
Supposons que vous ayez le fichier de configuration suivant
def account1_password_eval ():
return "account1secretpassword"
def account2_matrixorg_password_eval ():
return "account2secretpassword"
def account3_password_eval_any_name ():
return "yXkdsjhslkjhdlksjhffffffkkssskjsdhkljhssdc"
accounts = [
{ "server" : "https://example.com" ,
"username" : "account1" ,
"passeval" : account1_password_eval },
{ "server" : "https://matrix.org" ,
"username" : "account2" ,
"passeval" : account2_matrixorg_password_eval },
{ "server" : "https://example.com" ,
"username" : "account3" ,
"passeval" : account3_password_eval_any_name },]
ignore_rooms = [ "room_id" , "another_room_id" ] Si vous n'avez pas spécifié d'option de ligne de commande, le programme utilisera le premier compte dans la liste des comptes. Pour utiliser un autre compte, il est suffisant pour passer l'option -u ou –Unsert à la commande avec le nom d'utilisateur de ce compte.
Par exemple
matrixcli -u account3 getroomsCette commande se connectera avec les paramètres du troisième compte.
Si vous avez deux comptes ou plus avec le même nom d'utilisateur mais avec des serveurs différents. Vous pouvez spécifier l'option –server pour réprimer les comptes possibles au compte que vous souhaitez.
Voici les façons dont j'utilise personnellement MatrixCli,
Le premier motif de réalisation de ce programme était que je ne voulais pas garder la page Web Riot ouverte ou exécuter une application électronique uniquement pour les notifications.
Vous pouvez activer le service SystemD, pour obtenir des notifications pour les événements au fur et à mesure.
systemctl --user enable --now matrixcli
Utilisation de matrixcli unread Vous écrivez un module pour toute barre d'état pour afficher les messages non lus. Voici un exemple simple pour Polybar
[module/matrix]
type = custom/script
exec = matrixcli unread -f 2> /dev/null
tail = true
interval = 30
format = <label>
label = M[%output%]
format-underline = # 268bd2 Par exemple, j'ai ce travail cron qui envoie chaque jour une chanson aléatoire de mon répertoire musical à une pièce spécifique.
0 0 * * * /usr/local/bin/matrixcli send -r ' !OSPeUVrwMKbIrLQuBX:matrix.org ' $( tree /home/pi/musiqa -fi | grep " .*.mp3 " | shuf | sed 1q )Et je l'utilise dans de nombreux scripts sur des serveurs distants pour m'informer d'une sortie de script ou juste lorsque quelque chose ne va pas.
Pour une liste des sous-commandes et des options
matrixcli --help sortir:
#Usage: matrixcli [-H] [-s serveur] [-U nom d'utilisateur] [-p mot de passe] [-c config]
{Envoyer, écouter, chambres, non lus, queue} ...
Client de matrice de ligne de commande
Arguments facultatifs:
-H, --help afficher ce message d'aide et quitter
-s serveur, - serveur de serveur
serveur pour se connecter à
-U nom d'utilisateur, - nom d'utilisateur de nom
nom d'utilisateur pour se connecter avec
-p mot de passe, - mot de passe de mot-passe
le mot de passe
-c Config, - Config Config
Fichier de configuration personnalisé
sous-commandes:
{Envoyer, écouter, chambres, non lus, queue}
Envoyer quelque chose dans une pièce
Écoutez écouter pour toujours pour les événements
Les chambres sont toutes jointes
non lu obtenait des notifications non lues
Primer des derniers messages
Pour répertorier les options d'une sous-commande spécifique, (par exemple Send)
matrixcli send --help Chaque sous-command qui est censé agir sur une pièce spécifique accepte l'argument optionnel -r / –room-id qui emmène la pièce-ID pour agir, ou -a / –room_alias qui prend un alias de pièce.
Pour obtenir une pièce d'id d'une course de chambre:
salles de matrixcli
Sorte ce qui suit (pour mon compte).
Connexion ... connecté ... 0: Momenamr :! Ocomuldomkojwyzxts: matrix.org 1: Mahmoudhafez :! fcxcmulziohnqomvxd: saadnpq.com 2: Emacs Matrix Client :! ZrzoyXeyfrzcbzknis: Matrix.org 3: Elm3alem Zaki :! oabjenlttvqgpqrpes: matrix.org 4: Matrix-python-sdk :! yhhMbtmgbhgqolgpaz: matrix.org 5: Emacs :! PWXNIIDHCBABNITSSN: Matrix.org 6: Moatazomar :! lsbukyvyjignwcpacn: saadnpq.com
Si vous n'avez pas spécifié l'id de la pièce ou la salle de chambre via la ligne de commande, le programme vous invitera avec vos chambres jointes quand elle en aura besoin.
matrixcli listenÉcoute pour toujours pour les événements et les sorties de messages entrants aux notifications STDOUT et OS, si vous exécutez cette commande sur un système sans tête ou si le programme n'a pas envoyé de notifications pour une raison quelconque, il ne sortira que les événements uniquement à STDOUT sans se plaindre.
Vous pouvez appuyer sur CC pour quitter le mode d'écoute.
Il existe également un service SystemD installé avec le programme qui utilise matrixcli listen , pour l'activer, vous pouvez exécuter ce qui suit.
systemctl --user enable --now matrixcliRenvoie les N derniers messages d'une pièce.
matrixcli tail -h Utilisation: Matrixcli Tail [-H] [-r Room_id | -a room_alias] [-f] [-n [1-100]]
Arguments facultatifs:
-H, --help afficher ce message d'aide et quitter
-r room_id, --room-id room_id
Spécifiez l'ID de la pièce
-A Room_alias, - Room-Alias Room_alias
Spécifiez la pièce par pavillon de pièce
-F, - Supportez des messages et imprimez-les au fur et à mesure qu'ils viennent
-N [1-100], - Messages [1-100]
Imprimer les derniers messages spécifiés
L'option -f imprime les derniers messages mais attendez de nouveaux messages et imprimez-les au fur et à mesure.
Vous pouvez également envoyer des messages en mode suivant en tapant le message que vous souhaitez envoyer et appuyez sur Entrée pour l'envoyer.
matrixcli send --help Utilisation: Matrixcli Send [-H] [-r Room_id | -A Room_alias] [-T | -f] Contenu
Arguments de position:
contenu
Arguments facultatifs:
-H, --help afficher ce message d'aide et quitter
-r room_id, --room-id room_id
Spécifiez l'ID de la pièce
-A Room_alias, - Room-Alias Room_alias
Spécifiez la pièce par pavillon de pièce
-T, - Texte force le programme à traiter le contenu comme un SMS
-F, - File Force le programme à traiter le contenu comme un fichier
La commande Send prend le contenu que vous souhaitez envoyer comme arguments positionnels, le programme voit d'abord si le texte passé représente un fichier qui existe dans le système de fichiers, si c'est le cas, essaiera de deviner son type de mime en fonction de l'extension pour prévisualiser correctement le contenu du côté du récepteur. Si le texte passé ne représente aucun fichier sur le système de fichiers, le programme le traitera comme un message texte.
Pour forcer le programme à traiter le contenu comme un fichier ou un texte, vous pouvez spécifier les arguments facultatifs –File ou –Text.
matrixcli unread --help Utilisation: matrixcli non lu [-h] [-f] [-r room_id | -a room_alias]
Arguments facultatifs:
-H, --help afficher ce message d'aide et quitter
-F, - Supposons de ne fermez pas la connexion et imprimez le nombre de non lus
messages à chaque fois
-r room_id, --room-id room_id
Spécifiez l'ID de la pièce
-A Room_alias, - Room-Alias Room_alias
Spécifiez la pièce par pavillon de pièce
Sorte des messages non lus pour la salle_id ou toutes