A context-aware CLI for Canvas LMS (Studium)
Project description
Studium CLI (studium-cli)
A command-line tool for Canvas LMS. While designed with Uppsala University (Studium) as the default, it works with any Canvas instance.
Features
- ** Performance**: Parallel API fetching and persistent HTTP sessions.
- ** Interactive Browser**: Navigate courses, modules, and assignments with Vim-style (
hjkl) keys. - ** Assignments**: Beautiful tables with countdown timers and overdue highlighting.
- ** Downloads**: Download module files and assignment attachments directly from the CLI.
- ** Notifications**: Desktop notifications for new assignments and announcements.
- ** Integrations**: Ready-to-use status bar strings for Sketchybar, Polybar, and Waybar.
Installation
1. Install UV
UV is required to run and install this tool. See the UV documentation.
curl -sSfL https://astral-sh.uv.io/install.sh | sh
2. Install the CLI
Install directly from PyPI:
uv tool install studium-cli
Or from source:
git clone https://github.com/mackrus/studium.git
cd studium
uv tool install .
Setup
- Get an API Token: Log in to your Canvas instance, go to Account > Settings > Approved Integrations, and click + New Access Token.
- Configure the CLI:
# Set your token
studium config set-token <YOUR_TOKEN>
# (Optional) Set your Canvas URL if not Uppsala University
studium config set-url https://canvas.your-school.edu
- Verify Connection:
studium config status
Usage
Interactive Navigation
The easiest way to explore your courses:
studium browse
(Use arrows or hjkl to navigate, q or Esc to exit)
Main Commands
| Command | Description |
|---|---|
studium courses |
List all active courses. |
studium assignments |
List upcoming assignments with due dates. |
studium announcements |
Show recent announcements across all courses. |
studium modules <ID> |
List modules and items for a specific course. |
studium download <ID> |
Download a file by its Canvas ID. |
studium sync |
Sync data and send desktop notifications. |
studium browser |
Open courses or assignments in your default web browser. |
studium update |
Check for and install the latest version. |
Extensions
Status Bars (Sketchybar, Polybar, Waybar)
The CLI can output formatted strings for status bars using studium assignments --format sketchybar.
Sketchybar (macOS)
Integration scripts are available in the contrib/sketchybar/ directory.
Linux Bars
Add a custom module that executes studium assignments --format sketchybar (outputs e.g., 3).
Development
# Run locally
uv run studium <command>
# Run tests
uv run pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file studium_cli-0.2.8.tar.gz.
File metadata
- Download URL: studium_cli-0.2.8.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
312f6e2b6597a6d3fea7a447767f9538cd10cb94f9b9e95286b90cd51f8eb82d
|
|
| MD5 |
b80c577bc885dff8bc45b55840187bf8
|
|
| BLAKE2b-256 |
44f851a53dbf015f41be7aafddad9c3c47cb0befd19ffcbe87575151eb5e6f2b
|
File details
Details for the file studium_cli-0.2.8-py3-none-any.whl.
File metadata
- Download URL: studium_cli-0.2.8-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f96dbec11c32e65fe79550b8b1a9465f12a52dd1da8238e443a2b46382c6457
|
|
| MD5 |
27921b5fbb475a52019b975f2e9131ff
|
|
| BLAKE2b-256 |
fb89b62e9f44f2156df0f304278bff84e45aefd8637d23072a6f741248a47317
|