Matrixcli ist ein einfacher Matrix-Client, der auf der Matrix-Python-SDK basiert. Wenn Sie sich fragen, wie nützlich dies ist
Sie können Matrixcli mit Setup.py im Root -Projektverzeichnis installieren. Dadurch werden auch alle benötigten Abhängigkeiten installiert.
git clone https://github.com/saadnpq/matrixcli.git
cd ./matrixcli
sudo ./install.shDadurch wird das MatrixCli -Skript in Ihren Pfad eingesetzt und eine Vorlagenkonfiguration installiert.
Für Ubuntu-Benutzer müssen Sie zuerst Python3-Setuptools installieren, bevor Sie die oben genannten Befehle ausführen
sudo apt install python3-setuptoolsUm den SystemD -Dienst zu aktivieren, können Sie Folgendes ausführen.
systemctl --user enable --now matrixcliDie Kontokonfiguration erfolgt über die Datei config.py in einer der folgenden Positionen, die nach Vorrang sortiert werden
Dies ist eine Einkonto -Beispielkonfiguration.
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) Die Konfigurationsdatei sollte eine accounts haben, die eine Liste von Wörterbüchern enthält, in denen jedes Wörterbuch aus dem Kontoinformationsserver, Benutzernamen und Passwort Evalary besteht
Die Begründung hinter der Definition einer Funktion, die den Kennwortwert zurückgibt
Die Liste ignore_rooms enthält Räume, die Sie bei der Berechnung von ungelesenen Nachrichten und im Hörmodus ignorieren möchten
Wenn Sie überhaupt keine Konfigurationsdatei erstellen möchten, können Sie den Server, den Benutzernamen und das Passwort über Befehlszeilenargumente übergeben. Siehe Verwendung
Angenommen, Sie haben die folgende Konfigurationsdatei
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" ] Wenn Sie keine Befehlszeilenoption angegeben haben, verwendet das Programm das erste Konto in der Liste der Konten. Um ein anderes Konto zu verwenden, reicht es aus, um die Option -U oder -Unername mit dem Benutzernamen dieses Kontos an den Befehl zu übergeben.
Zum Beispiel
matrixcli -u account3 getroomsDieser Befehl wird sich mit den Parametern des dritten Kontos angemeldet.
Wenn Sie zwei oder mehr Konten mit demselben Benutzernamen haben, jedoch mit verschiedenen Servern. Sie können die Option "Server" angeben, um die möglichen Konten auf dem gewünschten Konto zu unterbinden.
Im Folgenden finden Sie die Art und Weise, wie ich matrixcli persönlich verwende,
Das erste Motiv, dieses Programm zu machen, war, dass ich die Riot -Webseite nicht offen halten oder eine Elektronen -App nur für Benachrichtigungen ausführen wollte.
Sie können den Systemd -Service ermöglichen, Benachrichtigungen für Veranstaltungen zu erhalten, die nach kommen.
systemctl --user enable --now matrixcli
Verwenden von matrixcli unread Sie schreiben ein Modul für eine beliebige Statusleiste, um ungelesene Nachrichten anzuzeigen. Hier ist ein einfaches Beispiel für 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 Zum Beispiel habe ich diesen Cron -Job, der jeden Tag ein zufälliges Lied aus meinem Musikverzeichnis in einen bestimmten Raum schickt.
0 0 * * * /usr/local/bin/matrixcli send -r ' !OSPeUVrwMKbIrLQuBX:matrix.org ' $( tree /home/pi/musiqa -fi | grep " .*.mp3 " | shuf | sed 1q )Und ich benutze es in vielen Skripten auf Remote -Servern, um mich über eine Skriptausgabe zu informieren, oder wenn etwas schief geht.
Für eine Liste der Unterbefehle und Optionen werden ausgeführt
matrixcli --help Ausgabe:
#Usage: matrixcli [-h] [-s Server] [-U-Benutzername] [-P-Passwort] [-c config]
{Senden, Hören, Räume, ungelesen, Schwanz} ...
Befehlszeilenmatrix Client
Optionale Argumente:
-h, -HELP Zeigen Sie diese Hilfsnachricht an und beenden Sie
-S -Server, -Server -Server
Server zum Anmeldung an
-U Benutzername, --username Benutzername
Benutzername, mit dem man sich anmelden kann
-P Passwort, -password Passwort
das Passwort
-c config, - -config config
Benutzerdefinierte Konfigurationsdatei
Unterbefehle:
{Senden, Hören, Räume, ungelesen, Schwanz}
Senden Sie etwas in ein Zimmer senden
Hören Sie für immer für Ereignisse zu
Zimmer bringen alle Zimmer bei
ungelesen werden ungelesene Benachrichtigungen
Heckdruck Letzte Nachrichten
So listen Sie die Optionen eines bestimmten Subbefehls auf (z. B. senden)
matrixcli send --help Jeder Unterkommando, der in einem bestimmten Raum reagieren soll, akzeptiert das optionale Argument -r/-Room-ID, das den Raum zum Aspekten oder -a/--room_alias nimmt, das einen Raum Alias nimmt.
Um einen Raum für einen Raum zu bekommen:
Matrixcli -Räume
gibt Folgendes aus (für mein Konto).
Anmeldeposten .... angemeldet .... 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:! 6: Moatazomar :! lsbukyvyjignwcpacn: saadnpq.com
Wenn Sie den Raum- oder Raum-Alias nicht über die Befehlszeile angegeben haben, fordert das Programm Sie mit Ihren zusammengefügten Räumen auf, wenn es erforderlich ist.
matrixcli listenHört für immer für Ereignisse und Ausgänge eingehende Nachrichten an STDOut- und OS -Benachrichtigungen aus. Wenn Sie diesen Befehl in einem kopflosen System ausführen oder das Programm aus irgendeinem Grund keine Benachrichtigungen senden kann, wird es Ereignisse nur an STDOut ausgeben, ohne sich zu beschweren.
Sie können CC drücken, um den Hörenmodus zu beenden.
Es gibt auch einen SystemD -Dienst, der mit dem Programm installiert ist, das matrixcli listen verwendet, um ihn zu aktivieren. Sie können Folgendes ausführen.
systemctl --user enable --now matrixcliGibt die letzten N -Nachrichten eines Raums zurück.
matrixcli tail -h Verwendung: Matrixcli Tail [-h] [-r rooms_id | -a Room_alias] [-f] [-n [1-100]]
Optionale Argumente:
-h, -HELP Zeigen Sie diese Hilfsnachricht an und beenden Sie
-R Room_id, --room-id Room_id
Geben Sie die Raum -ID an
-a Room_alias,-Room-Alias Room_alias
Geben Sie den Raum für Raum -Alias an
-f, -Follow Warte auf Nachrichten und drucke sie so, wie sie kommen
-n [1-100],-Messages [1-100]
Drucken Sie die zuletzt angegebenen Nachrichten aus
Die Option -f druckt die letzten Nachrichten, warten jedoch auf neue Nachrichten und drucken Sie sie nach kommen.
Sie können auch Nachrichten senden, während Sie im folgenden Modus eingeben, indem Sie die Nachricht eingeben, die Sie senden möchten, und die Eingabetaste klicken, um sie zu senden.
matrixcli send --help Verwendung: matrixcli send [-h] [-r Room_id | -a Room_alias] [-t | -f] Inhalt
Positionsargumente:
Inhalt
Optionale Argumente:
-h, -HELP Zeigen Sie diese Hilfsnachricht an und beenden Sie
-R Room_id, --room-id Room_id
Geben Sie die Raum -ID an
-a Room_alias,-Room-Alias Room_alias
Geben Sie den Raum für Raum -Alias an
-t, --text erzwingen das Programm, um den Inhalt als Textnachricht zu behandeln
-F, -file das Programm, um den Inhalt als Datei zu behandeln
Der Befehl Senden nimmt den Inhalt, den Sie senden möchten, als Positionsargumente an. Das Programm sieht zunächst, ob der übergebene Text eine Datei darstellt, die im Dateisystem vorliegt. In diesem Fall wird versucht, seinen MIME -Typ basierend auf der Erweiterung zu erraten, um den Inhalt des Empfängers korrekt anzuregen. Wenn der übergebene Text keine Datei im Dateisystem darstellt, behandelt das Programm ihn als Textnachricht.
Um das Programm zu erzwingen, um den Inhalt als Datei oder einen Text zu behandeln, können Sie die optionalen Argumente - Datei oder -text angeben.
matrixcli unread --help Verwendung: matrixcli ungelesen [-h] [-f] [-r rooms_id | -a Room_alias]
Optionale Argumente:
-h, -HELP Zeigen Sie diese Hilfsnachricht an und beenden Sie
-F, --Follow schließen Sie die Verbindung nicht und drucken Sie die Anzahl der ungelesenen
Nachrichten, wann immer aktualisiert
-R Room_id, --room-id Room_id
Geben Sie die Raum -ID an
-a Room_alias,-Room-Alias Room_alias
Geben Sie den Raum für Raum -Alias an
gibt ungelesene Nachrichten für Room_ID oder alle Räume (mit Ausnahme der in Ignore_rooms) aus, wenn kein Room_id oder Room_Alias angegeben ist