Blackboard: noun A website so bad that it might as well be a network drive.
BlackboardFS is a filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!
The filesystem matches Blackboard's structure as closely as possible, with the same familiar sidebar names and even the course's internal folder structure!
$ tree Blackboard/COMP3506
Blackboard/COMP3506
├── Announcements.desktop
├── Assessment
│ ├── Assignment One: Due Week 6
│ ├── Blackboard.desktop
│ └── Quiz Solutions
│ ├── Blackboard.desktop
│ ├── quiz1-sol.pdf
│ ├── quiz2-sol%281%29.pdf
│ └── quiz3-sol.pdf
├── Blackboard.desktop
├── Course Help
│ ├── Blackboard.desktop
│ └── Student services and resources
├── Course Profile (ECP).desktop
├── Course Staff.desktop
├── Ed Discussion.desktop
├── Gradescope.desktop
├── Learning Resources
│ ├── Blackboard.desktop
│ ├── Code Snippets
│ │ ├── Blackboard.desktop
│ │ ├── Week 1
│ │ ├── Week 2
│ │ ├── Week 3
│ │ └── Week 4
│ ├── COMP3506-7505-2023-plan-v3.pdf
│ ├── Course Reading List.desktop
│ ├── Lecture_Recordings.desktop
│ ├── Resources
--snip--
15 directories, 70 files
Links to external resources are exposed as .url
(Windows), .webloc
(macOS) or .desktop
(Linux)
files, so you can easily reach Gradescope, echo360, and even get back to Blackboard's own web UI
right from your file browser!
As a bonus, browsing the filesystem is significantly faster than browsing the Blackboard web UI, which is very helpful when you're stuck on slow campus WiFi.
To build from source, the latest stable Rust toolchain must be installed. Other platform-specific runtime dependencies are described below:
BlackboardFS requires Dokan be installed on your system.
BlackboardFS requires macFUSE be installed on your system.
The auth window requires GTK3, WebKitGTK, and related libraries be installed on your system. Additionally, to mount the filesystem, FUSE3 is required. Make sure the following packages are installed:
sudo apt install libwebkit2gtk-4.1-dev libfuse3-dev
sudo dnf install gtk3-devel webkit2gtk4.1-devel fuse3-devel
sudo pacman -S webkit2gtk-4.1 fuse3
Clone this repo to a location of your choosing. Then
git submodule update && git submodule init
You can then cargo run -p bbfs-cli
or cargo install --bin bbfs-cli
as you wish.
This is a FUSE-based filesystem. To mount:
bbfs <mount_point>
This will spawn a browser window for you to log in with your UQ login. WE ARE ABLE TO INJECT
ARBITRARY CODE INTO THIS BROWSER WINDOW, SO MAKE SURE YOU READ AND UNDERSTAND OUR CODE TO MAKE SURE
WE'RE NOT STEALING YOUR CREDENTIALS (the relevant code is in cookie_monster/
; everything else
only gets a session token).
To unmount the filesystem:
fusermount -u <mount_point>
or on MacOS:
diskutil unmount <mount_point>