A macOS Native Google Classroom Client
- Basic google classroom parity
- Loading courses
- Loading posts
- Viewing submissions
- Viewing class members
- Advanced google classroom parity
- Post creation
- View student submissions
- Submit in-app (Not possible rn due to API restrictions)
- Grading
- User Speed Improvements/Conveniences
- Practically instant loading (via post caching)
- Offline mode (same reason)
- Quick open/search (so you can open courses without having to hunt for them with your mouse. Just search by name.)
- Sorting by post type (eg. only announcements, assignements, or materials)
- Viewing multiple courses' posts at once (bit buggy rn tho :P)
- Post tagging
- Customisability
- Client-side grouping courses into folders
- Client-side archiving of courses
- Custom course colors/icons
- Renaming your classes
- Date groups for posts (eg. "Last month", "This year" in that image)
- Accessibility
- Bionic reading (bolds the first few characters of a word, helps adhd people focus when reading)
Category | Google Classroom Web | GlassRoom (cached) | GlassRoom (non-cached) |
---|---|---|---|
Launching website/app | 4.68s | N/A | 0.99s |
Loading courses | 3.50s | 0.00s | 1.48s |
Loading posts | 2.80s | 0.14s | 1.18s |
Loading post's submission | 0.90s | 0.13s | 0.31s |
Announcements and posts


Aggregate view

Search


Settings and Customisation


Fancy UI option

Accessibility - Bionic reading

Prerequisite: You have a google developer project with an API key capable of utilising Google Classroom and Drive APIs
- Add your own
The-GlassRoom-Info.plist
file at the top level of the repo, in this format:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.[YOUR_KEY_HERE]</string>
</array>
</dict>
</array>
</dict>
</plist>
- Create
Secrets (Sensitive).swift
, extend theSecrets
enum and overridestatic func getGoogleClientID() -> String
to return your API key - Change the bundle identifier and team in the xcodeproj to your own