Comments (4)
We considered it long in the past, but Electron is a no-go due to the RAM issue. It will run a whole instance of Chromium just running in the background for the tray icon, which is not acceptable.
If it weren't for this fact we'd use Electron in a heartbeat as we, as you mentioned, already have a web UI. But users don't need it open all the time, and running it in the users browser uses significantly less resources since it can share resources with a browser which is likely to be running anyway.
I'm not familiar with the Qt JS subset, but the plan here is to move to something like Rust and not just chance one interpreted language for another. Packaging aw-qt isn't much of a current problem since it now works somewhat well, so doesn't make sense to switch to something just because it's easier to package.
Edit: The Qt JS thingy is for building the UI, not as a general way to use the Qt library.
from aw-qt.
I'm terrible at C++, and almost as bad at Rust. Last time I looked into GTK I remember there was some reason that made it unpractical, but can't remember what it was.
For now, I think our best bet is still to work around PyInstallers rough edges (less work in the short run), but perhaps rewriting it will be a good idea in the future.
from aw-qt.
The thing is we have to work around every case on different platforms which is barely viable even now, if we get even more users we will start spending even more time fixing PyInstaller. We don't even know how to work around these issues currently.
from aw-qt.
I don't know how open this issue still is / what of those open issues would get fixed without changing from qt. However if this is still an issue (since the issue is open) I'm giving what input I can.
As another option if besides qt and gtk I'd recommend considering electron for the tray widget (https://www.electronjs.org/docs/api/tray ). Even though electron get's a bad rap activitywatch already uses a browser page for the frontend and electron wouldn't really be that much worse. (Altough an electron tray icon app would probably use a non-significant amount of more ram.)
Qt also has their own official JS subset (https://doc.qt.io/archives/qt-4.8/qdeclarativejavascript.html ) which could also probably be packaged with a bit better support than pyqt.
from aw-qt.
Related Issues (20)
- Doesn't start with pyinstaller anymore HOT 7
- Installation broken with pip version 19 HOT 1
- I can't see the aw-qt binary file after having downloaded activitywatch on windows HOT 2
- Configurable available and autostart modules HOT 3
- Doesn't shut down properly HOT 3
- Cannot start on macOS Catalina HOT 3
- Build fails on Ubuntu 20.04 HOT 1
- Make aw-qt save logs instead of each module HOT 5
- tray-icon "Open Dashboard" uses the wrong browser on ubuntu 20.04 HOT 3
- On macOS, the bundled modules are incorrectly listed as system modules
- "Open log folder" opens a web browser HOT 2
- Use port from config
- Systray icon is missing on Fedora 35 KDE plasma 5.23 HOT 3
- Separate the manager from the UI HOT 2
- Create a source-tarball on release HOT 4
- No tray icon on GNOME Wayland HOT 3
- Install fails on older Ubuntu/Mint due to PyQt6
- Unable to find system modules on macOS
- Application exits prematurely if QSystemTrayIcon.isSystemTrayAvailable() is false
- Refresh module feature
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aw-qt.