summaryrefslogtreecommitdiff
path: root/README.md
blob: b91e3b7060c03ead71267d6e19983507824c1c48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Kanvas

Kanvas is a plasmoid that syncs announcements and assignments from your
university's Canvas®™© LMS to your Plasma desktop. It lacks features and
configs, and I would not say it is production-ready.

Kanvas is written in QML. It is the first QML application I wrote and
I have not touched JavaScript in two years, so the code sucks.

Right now, it looks like this:

![Screenshot](img/screenshot_0.1.1.png)

## Development

First obviously you need the Plasma framework. If you have zero Plasma
development experience like me, here are some useful links:

- [Techbase: Plasma 5](https://techbase.kde.org/Development/Tutorials/Plasma5)
- [Developer: Plasma Widget Testing](https://develop.kde.org/docs/plasma/widget/testing/)

After you clone this repo, run `make install` to copy the plasmoid to
`~/.local/share/plasma/plasmoids/`. You need to run it only once.

Every time you want to test Kanvas, run `make` to update the plasmoid in
`~/.local/` and run it in a window (`plasmawindowed`).

Then, configure the plasmoid. Right click the "Kanvas" heading and click
"Configure Kanvas". Go to the "Canvas" tab and fill out your Canvas domain
and OAuth2 token. Click "Fetch courses", then follow instructions on the
UI. Click "OK" to save. The configuration will be saved for plasmawindowed
every time you debug, but kept separate from the rest of Plasma; if you
add the widget to your desktop it has to be configured again.

## Todo

- [ ] Sort assignments by urgency
- [ ] More friendly course list in config dialog
- [ ] Ignore activity and undo ignore
- [ ] Show announcement details

## Contributing

I am terrible at QML. Help me.

- [KDE GitLab](https://invent.kde.org/fakefred/kanvas)
- [SourceHut](https://git.sr.ht/~fkfd/kanvas), mailing list for git
  send-email: `~fkfd/misc@lists.sr.ht`

## Related "documentation"

There's hardly any documentation on integrating QML with the rest of
Plasma. For example, when I wanted a function that tells me whether the
machine is online, all I found was the source code along with a header
file. I will list things like these so you don't have to.

- [plasma-nm, networkmanagement](https://invent.kde.org/plasma/plasma-nm/-/blob/master/libs/declarative/networkstatus.h)