Moodle CMS Notifications in Rust

Overview

Moodle CMS Notifications

  • View unread Moodle CMS notifications.
  • Mark all notifications as read.
  • Lightweight with no dependencies.
  • Cross platform.
  • Authentication using tokens, so should be secure.
  • Works for any Moodle deployment.
  • Refreshes every 15 minutes in the background.
  • Written in Rust.

Screenshot

If you have cargo installed, install this application directly using cargo install cms_notifs and launch it by running the command cms_notifs.

Using

  • Download for Linux ( 64 bit ) from here.
  • Make the downloaded file executable ( chmod +x /path/to/downloaded/file )
  • Run the downloaded executable. ( ./path/to/downloaded/file )
  • Fill in the required config details asked.
  • It will run in the background.

Command Line Arguments

  • --settings - Opens the settings dialog on startup.
  • --silent-errors - Errors wont show up in a GUI window, but will still be logged.

Launch with --settings command line argument to open the settings dialog.

Settings

Location of configuration and log files

  • The config file (containing the token and Moodle URL) is placed at $XDG_CONFIG_HOME/cms_notifs.json (default: ~/.config/cms_notifs.json) on Linux and ~/.cms_notifs.json on other platforms.
  • The log file is placed at $XDG_STATE_HOME/cms_notifs.log (default: ~/.local/state/cms_notifs.log) on Linux and ~/.cms_notifs.log on other platforms.

Compile from source

  • Clone this repository.
  • Install the rust toolchain.
  • ( Linux only ) Install Webkit development library by running sudo apt install libwebkit2gtk-4.0-dev
  • Run cargo run to compile and run the application.

Todo

  • Auto-startup on login.
  • More configuration options.
  • Better Error handling.
  • Refactor code to be more idiomatic.

License

Copyright (C) 2021 Divyanshu Agrawal

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

You might also like...
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.

Starlight is a JS engine in Rust which focuses on performance rather than ensuring 100% safety of JS runtime.

starlight Starlight is a JS engine in Rust which focuses on performance rather than ensuring 100% safety of JS runtime. Features Bytecode interpreter

A rust web framework with safety and speed in mind.

darpi A web api framework with speed and safety in mind. One of the big goals is to catch all errors at compile time, if possible. The framework uses

A web framework for Rust.

Rocket Rocket is an async web framework for Rust with a focus on usability, security, extensibility, and speed. #[macro_use] extern crate rocket; #[g

Rust / Wasm framework for building client web apps
Rust / Wasm framework for building client web apps

Yew Rust / Wasm client web app framework Documentation (stable) | Documentation (latest) | Examples | Changelog | Roadmap | 简体中文文档 | 繁體中文文檔 | ドキュメント A

问卷反馈收集, 前端脚手架安装向导, rust, gtk3, win32, dll
问卷反馈收集, 前端脚手架安装向导, rust, gtk3, win32, dll

scaffold-wizard 这是一款加持了【图形用户界面】的npm - inquirer(名曰:问卷)。即,根据【问卷】配置文件,以人-机交互的形式,收集终端用户的【回答结果】。这里提到的【问卷配置】与【回答结果】都是*.json格式的字符串(或文件)。 【问卷】既能够作为.exe文件被双击运行

Diana is a GraphQL system for Rust that's designed to work as simply as possible out of the box

Diana is a GraphQL system for Rust that's designed to work as simply as possible out of the box, without sacrificing configuration ability. Unlike other GraphQL systems, Diana fully supports serverless functions and automatically integrates them with a serverful subscriptions system as needed, and over an authenticated channel. GraphQL subscriptions are stateful, and so have to be run in a serverful way. Diana makes this process as simple as possible.

Thruster - An fast and intuitive rust web framework

A fast, middleware based, web framework written in Rust

🌱🦀🌱 Trillium is a composable toolkit for building web applications with async rust 🌱🦀🌱

🌱🦀🌱 Trillium is a composable toolkit for building web applications with async rust 🌱🦀🌱

Comments
  • XDG base directory spec

    XDG base directory spec

    If you're fine with platform-specific code then I can implement the XDG base directory spec for Linux. The latest version also includes a directory for logs (https://www.reddit.com/r/linux/comments/ny34vs/new_xdg_state_home_in_xdg_base_directory_spec/)

    opened by p00f 3
Owner
Divyanshu Agrawal
Divyanshu Agrawal
Rust I18n is use Rust codegen for load YAML file storage translations on compile time, and give you a t! macro for simply get translation texts.

Rust I18n Rust I18n is use Rust codegen for load YAML file storage translations on compile time, and give you a t! macro for simply get translation te

Longbridge 73 Dec 27, 2022
lispr is a Rust macro that tries to implement a small subset of LISPs syntax in Rust

lispr lispr is a Rust macro that tries to implement a small subset of LISPs syntax in Rust. It is neither especially beautiful or efficient since it i

Jan Vaorin 0 Feb 4, 2022
Rust/Axum server implementation with PCR(Prisma Client Rust)

Realworld Rust Axum Prisma This project utilizes Rust with the Axum v0.7 framework along with the Prisma Client Rust to build a realworld application.

Neo 3 Dec 9, 2023
A Rust web framework

cargonauts - a Rust web framework Documentation cargonauts is a Rust web framework intended for building maintainable, well-factored web apps. This pr

null 179 Dec 25, 2022
A Rust library to extract useful data from HTML documents, suitable for web scraping.

select.rs A library to extract useful data from HTML documents, suitable for web scraping. NOTE: The following example only works in the upcoming rele

Utkarsh Kukreti 829 Dec 28, 2022
openapi schema serialization for rust

open api Rust crate for serializing and deserializing open api documents Documentation install add the following to your Cargo.toml file [dependencies

Doug Tangren 107 Dec 6, 2022
📮 An elegant Telegram bots framework for Rust

teloxide A full-featured framework that empowers you to easily build Telegram bots using the async/.await syntax in Rust. It handles all the difficult

teloxide 1.6k Jan 3, 2023
Sōzu HTTP reverse proxy, configurable at runtime, fast and safe, built in Rust. It is awesome! Ping us on gitter to know more

Sōzu · Sōzu is a lightweight, fast, always-up reverse proxy server. Why use Sōzu? Hot configurable: Sozu can receive configuration changes at runtime

sōzu 2k Dec 30, 2022
A Rust application which funnels external webhook event data to an Urbit chat.

Urbit Webhook Funnel This is a simple Rust application which funnels external webhook event data to an Urbit chat. This application is intended to be

Robert Kornacki 15 Jan 2, 2022
A html document syntax and operation library written in Rust, use APIs similar to jQuery.

Visdom A server-side html document syntax and operation library written in Rust, it uses apis similar to jQuery, left off the parts thoes only worked

轩子 80 Dec 21, 2022