lirios / shell Goto Github PK
View Code? Open in Web Editor NEW:shell: Convergent shell for desktops, phones and tables built with QtQuick, Wayland and Material Design
License: GNU General Public License v3.0
:shell: Convergent shell for desktops, phones and tables built with QtQuick, Wayland and Material Design
License: GNU General Public License v3.0
GPL3 is better because it avoids Tivoization.
We also want to deal with a single license so all files under the LGPL terms should be upgraded to GPL as well.
Replace mixer module with the new PulseAudio.
Also remove the mixer module from the source tree.
Right now it doesn't allow keyboard navigation.
An ideal workflow would be: Meta+Space opens the launcher, type in the app name, arrows to move in the results
Integrate with popular launcher APIs
Currently pressing the power button turns off the system.
Papyros has an interesting spread view, I'd like to replace/merge the current Hawaii implementation with that one.
Docky has a nice DockManager DBus API we must support it.
http://wiki.go-docky.com/index.php?title=Writing_Helpers#DockManager_DBus_Interface_Specification
Apparently there are some errors left from the refactoring
file:///home/plfiorini/git/liri/shell/compositor/qml/launcher/LauncherMenu.qml:102: TypeError: Cannot read property 'length' of undefined
file:///home/plfiorini/git/liri/shell/compositor/qml/launcher/LauncherMenu.qml:102: TypeError: Cannot read property 'length' of undefined
file:///home/plfiorini/git/liri/shell/compositor/qml/launcher/LauncherMenu.qml:102: TypeError: Cannot read property 'length' of undefined
file:///home/plfiorini/git/liri/shell/compositor/qml/desktop/HotCorners.qml:43: ReferenceError: TopLeftHotSpot is not defined
liri.launcher: Launching "qdbusviewer" from "/usr/share/applications/qdbusviewer.desktop"
liri.launcher: Launched "/usr/share/applications/qdbusviewer.desktop" (Qt QDbusViewer) with pid 22953
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
Using Wayland-EGL
file:///home/plfiorini/git/liri/shell/compositor/qml/desktop/HotCorners.qml:43: ReferenceError: TopLeftHotSpot is not defined
file:///home/plfiorini/git/liri/shell/compositor/qml/desktop/WorkspacesView.qml:52: TypeError: Cannot read property 'overlays' of undefined
Pick up the primary dark color based on the application's primary color (used for the toolbar color).
It seems to launch the index of the search results in the full app model.
Clicking on a running app should focus it instead of launching it. We already have the Application class used by the LauncherModel, so we can come up with some method that shares application instances between the launcher panel and popup.
We need a way to customize the window shadow that GreenIsland adds so we can use ElevationEffect from Fluid.
Every time one of the following directories is changed (that is a file is added, modified or deleted) the list needs to be changed: ~/.local/share/applications, /usr/share/applications, /usr/local/share/applications - those are the XDG_DATA_DIRS that we can find with QStandardPaths
Papyros would bounce icons in the panel while they were starting. Would be nice to do this for apps pinned to the panel and for apps launched from the launcher.
There are probably others, but these are the ones I've noticed so far. Not sure if this is something that can be fixed in GreenIsland or if we'll need to add mappings to find the correct desktop ID.
Text is white on white background, haven't checked yet but maybe Material.theme must be forced to Material.Light for the PowerDialog.
Move the polkit agent UI here.
Benefits: one process less to start and manage, no more icon in the panel
The D-Bus service keeps track of runnings apps and close them on logout.
Being a service it could be used from C++ as well as from QML, but it should be made private otherwise any program can use which I don't think it is a good idea.
We could just make a QML component in the compositor process that way only the shell can use it.
Stacktrace:
#0 0x00007ffff2f6ba77 in ?? () from /usr/lib/libQt5Core.so.5
#1 0x00007ffff2f6c217 in QObject::disconnectImpl(QObject const*, void**, QObject const*, void**, QMetaObject const*) () from /usr/lib/libQt5Core.so.5
#2 0x00007ffff1e1906f in QQuickPopup::setParentItem(QQuickItem*) () from /usr/lib/libQt5QuickTemplates2.so.5
#3 0x00007ffff1e3281a in QQuickToolTipAttached::show(QString const&, int) () from /usr/lib/libQt5QuickTemplates2.so.5
#4 0x00007ffff1e41b14 in ?? () from /usr/lib/libQt5QuickTemplates2.so.5
#5 0x00007ffff1e4220b in QQuickToolTipAttached::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQt5QuickTemplates2.so.5
#6 0x00007ffff6251832 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) ()
from /usr/lib/libQt5Qml.so.5
#7 0x00007ffff6253043 in QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) ()
from /usr/lib/libQt5Qml.so.5
#8 0x00007ffff62c079c in QQmlBinding::write(QQmlPropertyData const&, QV4::Value const&, bool, QFlags<QQmlPropertyPrivate::WriteFlag>) () from /usr/lib/libQt5Qml.so.5
#9 0x00007ffff62c18e5 in QQmlBinding::update(QFlags<QQmlPropertyPrivate::WriteFlag>) () from /usr/lib/libQt5Qml.so.5
#10 0x00007ffff62c222e in QQmlBinding::refresh() () from /usr/lib/libQt5Qml.so.5
#11 0x00007ffff6297044 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#12 0x00007ffff624119c in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) () from /usr/lib/libQt5Qml.so.5
#13 0x00007ffff2f69c0c in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#14 0x00007ffff6297044 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /usr/lib/libQt5Qml.so.5
#15 0x00007ffff624119c in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) () from /usr/lib/libQt5Qml.so.5
#16 0x00007ffff2f69c0c in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#17 0x00007ffff6a20888 in QQuickMouseArea::setHovered(bool) () from /usr/lib/libQt5Quick.so.5
#18 0x00007ffff6a219db in QQuickMouseArea::hoverEnterEvent(QHoverEvent*) () from /usr/lib/libQt5Quick.so.5
#19 0x00007ffff699f068 in QQuickItem::event(QEvent*) () from /usr/lib/libQt5Quick.so.5
#20 0x00007ffff3e58e3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#21 0x00007ffff3e605b1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#22 0x00007ffff2f3dc80 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#23 0x00007ffff69b1b00 in QQuickWindow::sendEvent(QQuickItem*, QEvent*) () from /usr/lib/libQt5Quick.so.5
#24 0x00007ffff69b44f6 in QQuickWindowPrivate::sendHoverEvent(QEvent::Type, QQuickItem*, QPointF const&, QPointF const&, QFlags<Qt::KeyboardModifier>, bool) ()
Reorganize the shell/ directory like protoshell.
https://blog.qt.io/blog/2014/06/13/qt-weekly-13-qstringliteral/
https://woboq.com/blog/qstringliteral.html
http://catchchallenger.first-world.info/wiki/Benchmark_for_conception#String
http://code.qt.io/cgit/qt/qtbase.git/commit/?id=bf1df558461f21827eaad9d5d9541def784980a2
TL;DR: Use QString() for empty strings, use QLatin1String unless a QString object needs to be created otherwise it blows up binary size.
The first time you open the launcher everything slows down.
Probably it wasn't noticeable before because there were less items to show.
Maybe we can improve performance by making the model inherit from QQmlParserStatus and populate with a thread started by componenteComplete().
We have logout and shutdown, add lock in the middle so that the session can be locked without keybindings.
Looks like there's code in the sound indicator that's supposed to handle this, but it doesn't seem to be working.
Broken after refactor
Wayland windows are placed randomly, what if we saved window geometry per appId when the app is closed?
This is just an idea, I don't know if we can have a unique window id to make the algorithm find the windows when the placement is restored.
Hi, I think the beneficial of using ubuntu-ui-toolkit as backend of qml-material is:
Currently we have a different login screen and lock screen but they must be identical in order to look coherent.
The whole boot process in Hawaii had the idea of transitions, here's an early prototype: https://www.youtube.com/watch?v=A-NbOK4ZDl8
It got refined but as far as the transition goes it's still the same.
The boot process goes like this:
The lock screen should look exactly like SDDM
After testing the shell I noticed that when user tries to leave the shell, it says "Your computer will shutdown/logout/something else in N seconds.". That is completley fine. However, the OK button lets user think that after clicking it, he will be able to continue to work for the remaining amount of time. That is just my opinion, but I think it would be better to change OK buttons to " shutdown/logout/something else NOW".
Improve the UI and use Fluid/QQC2
Mute, increase/decrease volume keys do not show the overlay.
It is shown when changing volume from the slider though.
Latest changes broke the shell:
file:///home/plfiorini/git/qmlos/shell/shell/base/Keyboard.qml:25:1: module "QtQuick.VirtualKeyboard" is not installed
Make sure keyboard is really loaded when the IM module is set to qtvirtualkeyboard
This would be similar to the Frequent tab in the GNOME launcher and would show apps that user has used frequently/recently. Useful for users with a lot of apps installed.
The window's appId is still the original app ID (the executable name), and not the canonicalized version used in the panel and launcher.
file:///home/plfiorini/git/qmlos/shell/shell/desktop/HotCorners.qml:40:5: QML Connections: Cannot assign to non-existent property "onHotSpotTriggered"
Animator works on the graphic thread and is faster but it updates the property value at the end of the animation. We should always use it unless a normal animation is better (for example when we need to be notified on property changes during the animation).
In Slack, we discussed having the drawer go behind the indicators so it could be full height and so users could switch indicators without having to close the drawer.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.