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
.desktop files (Linux) or
.webloc files (macOS) 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.
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:
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>