Ramon Miranda has just finished a new video, this time he’s doing impressionism in Krita! And with that, there’s also a new brush preset bundle for you to download! Click on the image to go to the video on Krita’s channel!
The post New Video by Ramon appeared first on Krita.
After several product collaborations, today we celebrate an extension of this partnership by welcoming Slimbook to the KDE Patrons family.
Alejandro López, Slimbook CEO explains,
“Since our early days in 2015, we at SLIMBOOK have been trying our best not only to sell GNU/Linux compatible quality hardware, but also to contribute and help those who make Free and Open Source Software.
Our variety of contributions range from giving support to local groups of developers, the making of forums and tutorials to help the Linux community and sharing a common vision with KDE, to hit the market with a device able to provide the end user with the best out-of-the-box Linux experience available.
But our mission doesn’t end there and there’s more than meets the eye. Our main goal is to share our knowledge and experience, help each other, and of course, to give the GNU/Linux users the best in hardware excellence the same way as the KDE Team do with their excellent software experience.
We take our duty of supporting the KDE Community full of pride, and we are honored to be KDE Patrons."
Aleix Pol i Gonzalez, President of KDE e.V. stated,
“Slimbook’s attention towards FOSS users as a hardware provider is very important to KDE and the community at large. For KDE, being able to reach beyond the software experience to tangible and properly integrated solutions has been a dream come true. Working together in the different collaborations over the years has been really exciting, and we look forward to continuing doing so with Slimbook as a Patron.”
Slimbook will join KDE e.V.’s other Patrons: The Qt Company, SUSE, Google, Blue Systems, Canonical and Enioka to continue to support Free Software and KDE development through the KDE e.V.
Here, at KDAB, we get to spend 10% of our time on learning what we don’t know or practicing and improving what we already know. Recently, I decided to use that time to learn more about the Qt Quick Rendering Engine. The best way to do so, I found, is to use it in a way it wasn’t intended to be used: for making simple 3D graphics — creating my own little 3D paintings, as one would in Minecraft, starting with a ground plane. I’d like to take this time to share with you how to play.
My mini voxel-editor should be using Isometric Perspective to display colorful cubes, which can be placed in a world. Therefore, I create a QML Rectangle that contains the transformations necessary for isometric perspective.
By combining three transforms, I create my ground plane:
These actions can be achieved by combining three 4-by-4 matrices for each of the transformations, via multiplication. Note that, although QML comes with predefined Transform Items, I use raw matrices for each transform, to keep the code consistent.
//The ISO perspective transform:
transform: Matrix4x4 {
id: isometric_perspective
property real rotationZ: 45/360 * Math.PI * 2
property matrix4x4 flipMatrix:
Qt.matrix4x4(1, 0, 0, 0,
0, -1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1)
property matrix4x4 rotationZMatrix:
Qt.matrix4x4(Math.cos(rotationZ), -Math.sin(rotationZ), 0, 0,
Math.sin(rotationZ), Math.cos(rotationZ), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1)
property real flatness: 0.5
property matrix4x4 scaleYMatrix:
Qt.matrix4x4(1, 0, 0, 0,
0, flatness, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1)
matrix: flipMatrix.times(scaleYMatrix).times(rotationZMatrix)
}
Because all transforms originate in the top-right of my window, I position my world-origin to the bottom-center of my window, to reveal the full world inside of it. Since QML’s scene graph is hierarchical, all of its child Items (Rectangles, Circles, …) are inherently in the right perspective and appear as lying on the ground of my iso-world. Both the empty world and the world filled with Rectangle, Circle, and a star Image can be seen here:
Next would be the cubes. I already have the top faces, since they would be simple squares in my iso-world (just like the red rectangle in the image above). To “elevate” them to the cubes height (32px), I apply an offset of 32 in x, as well as in y, as a transform. Going up in the iso-world means adding the same value to x and y, thus moving straight out of the corner pointing towards you. Sometimes, this additional axis combined out of x and y is called the w axis, for the isometric perspectives. There is a certain ambiguity, still, since the viewer does not know if a shape was moved on the ground plane (a), or elevated (b). Small tricks in lighting, such as adding a shadow, can help here:
For the side faces, I also would need an upwards-effect to make them rise from the bottom to the top of my cubes. This, I achieve with a transform matrix, increasing x as well as y. For the right side, this happens in the first row of the transform matrix. Conversely, the left side has this double increase in its second row.
For the colors, I decided to simply make the top Qt.lighter(cubeColor), the left normal cubeColor, and the right Qt.darker(cubeColor). So, overall, it looks like light is coming from top left.
I found out that all MouseAreas are transformed, together with the visible Item (as they behave as transformed Rectangles). So, just by filling a MouseArea to each of the sides, I could make them clickable, individually, also working with all the transforms. To reuse the MouseArea, I refactored out a universal FaceArea, which allows you to create a cube at an arbitrarily chosen vector offset.
So, to give an example, I instantiate it with the vector Qt.vector3D(0, 0, 1), for the top face to create the new cube on top, when clicking.
//FaceArea.qml
MouseArea{
property var creationOffset: Qt.vector3d(
0
,
0
,
1
)
anchors.fill: parent
acceptedButtons: Qt.AllButtons
onWheel: {isoCube.color = Qt.hsla(Math.random(),
0.8
,
0.5
,
1
)}
onClicked: {
if
(mouse.button & Qt.LeftButton) {
isoWorld.createCubeAt(isoCube.xpos + creationOffset.x,
isoCube.ypos + creationOffset.y,
isoCube.level + creationOffset.z);
}
else
{
isoCube.destroy()
}
}
}
There are 3 possibilities of interaction:
Bonus: To make the whole thing a bit more vivid, I made it wobble up and down. I also added an indicator where new cubes are placed on the ground plane.
Here is the final result in a video:
Tip: To make the Cubes stack well, Z-ordering has to be done right. There are 3 simple rules:
So, I simply set the z to 1000 * stacklevel – x – y, and it worked well.
Although QML is intended to be used with 2D graphics, mainly 2.5D, including interaction is well possible through Item-specific transforms. The QML Scene Graph implicitly allows nested transforms and makes perspective drawings an easy task.
I had lots of fun while playing and learning through this small example. Maybe it’s useful to you, or maybe it just makes you as happy as it made me.
The code for this mini Minecraft can be found and played with at: https://github.com/chsterz/isoworld
KDAB offers unique Qt expert services. Develop unique Qt and QML applications with KDAB’s expertise. For more information on our services surrounding Qt and QML, click here.
If you like this blog and want to read similar articles, consider subscribing via our RSS feed.
Subscribe to KDAB TV for similar informative short video content.
KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.
The post A 3D Block Building Game in QML appeared first on KDAB.
The Krita team is releasing the first beta of Krita 4.4.3. This is purely a bugfix release.
If you’re using the portable zip files, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.
(If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.)
Note: the gmic-qt is not available on OSX.
This time, the Android releases are made from the release tarball, so there are translations. We consider Krita on ChromeOS and Android still beta. There are many things that don’t work and other things that are impossible without a real keyboard.
For all downloads:
The Linux appimage and the source .tar.gz and .tar.xz tarballs are signed. You can retrieve the public key with gpg: “gpg –recv-key 7468332F”. The signatures are here (filenames ending in .sig).
Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos! With your support, we can keep the core team working on Krita full-time.
The post First Beta Release for Krita 4.4.3 appeared first on Krita.
In Okular:
Some settings are okular wide, if you change them, they will be changed in all the future okular instances, an easy example is if you change the shortcut for saving from Ctrl+S to Ctrl+Shift+E.
Some other settings are document specific, for example zoom, if you change the zoom of a document it will only be restored when opening the same document again, but not if you open a different one. There's also a "default zoom value for documents you've never opened before" in the settings.
Some other settings like "Continuous View" are a bit of a mess and are both. "Continuous View" wants to be a global setting (i.e. so that if you hate continuous view you always get a non continous view) but it is also restored to the status it had when you closed the document you're just opening.
That's understandably a bit confusing for users :D
My suggestion for continuous view would be to make it work like Zoom, be purely document specific but also have a default option in the settings dialog for people that hate continous view.
I'm guessing this should cover all our bases?
Opinions? Anything i may have missed?
Exactly 2 months after NeoChat 1.0, the NeoChat team is happy to announce a new release of NeoChat. NeoChat is a native client for the decentralized communication network Matrix.
Aside from the many bug fixes, performance improvements, and subtle appearance improvements, NeoChat 1.1 brings many new features that will make your experience with it more convenient.
Thanks to the work of Hannah, Nicolas, and Tobias, this release also brings NeoChat to many more platforms. Nightly builds of NeoChat are now available on Android, Flatpak, AppImage, macOS and Windows. Not all of them are considered production ready, but we hope to improve the support for them in future release.
Probably the highlight of this release is the completely new login page. It detects the server configuration based on your Matrix Id. This allows you to login to servers requiring Single Sign On (SSO) (like the Mozilla or the incoming Fedora Matrix instance).
Servers that require agreeing to the TOS before usage are correctly detected now and redirect to their TOS webpage, allowing the user to agree to them instead of silently failing to load the account.
TOS webpage, allowing the user to agree to them instead of silently failing to load the account.
Everyone loves cute stickers, so now NeoChat supports displaying them too. We don’t yet support sending them.
Editing messages is another popular feature of every IM client. NeoChat is now able to show edited messages correctly and also make it possible to edit your messages. The behavior is the same as in Element.
It is now possible to open a room into a new window. This allows you to view and interact with multiple rooms at the same time.
We added a few commands to NeoChat. Previously you could use /me
and /rainbow
, and we added a few mores: /shrug
, /lenny
, /rainbowme
, /join
, /invite
, /part
, /ignore
, /unignore
.
We improved the Plasma integration a bit. Now the number of unread messages is displayed in the Plasma Taskbar. It is using the com.canonical.Unity.LauncherEntry
DBus protocol, so that should be reasonably supported across desktops.
Version 1.1.1 of NeoChat is availabe here. The package is signed with my gpg key 14B0ED91B5783415D0AA1E0A06B35D38387B67BE.
For users, a Flathub version will be updated shortly.
Here is the second update on Sok 2021 Promo team project : Make a single app to post to multiple platforms.
I have completed a lot of the server side work now . I have figured out the endpoints on which the API will work . I have decided that /post/{platform} is going to be the endpoint where platforms are hard-coded as Twitter , Mastodon and Reddit.
To complete the post you will have to call the API like this
/post/{platform}?image=<path to image>&text=<text you want to post>
One big advantage with FastAPI is that you can just do localhost:8000/redoc to get the redocs api documentaion fo the same and no additional work needs to be on the server side.
I have also made a very initial prototype of the desktop client we are planning to use.
This client is based on PySide2.
If you want to suggest some addition to the project or just want to chat , hit me up on insaanimanav:matrix.org or mail [at] manav.co.in
Plasma Mobile team is happy to announce availability of tarballs for several of Plasma Mobile applications, they are available to download from download.kde.org
Following are their details,
a228f6d41b5524bfbb0a63fdeb28dfb71c31c4a0468afda86769931a52373102 plasma-dialer-0.2.tar.xz.sig
92c2425ebd0aaaa074b69c6b243fbdbe090468c9207f8f1cb0f77e1b9c2aa31b plasma-dialer-0.2.tar.xz
1eea821ad160a45a39cfae13fae18cc0ffde353a4c1365db0b764354fbd120f0 spacebar-0.1.tar.xz.sig
678746dca09866fae1d1ffe2f5e267c16f10f739abaeca6981762938e36fbb5b spacebar-0.1.tar.xz
88d57876dc28fff9fad79c99d2d239282f9cd24bcd372152084c2ca7a91f1845 angelfish-1.8.0.tar.xz.sig
def9a40de962c634304eadb91d505aa21faa70d327270e9de85b34c471ca8cd8 angelfish-1.8.0.tar.xz
ec7fee1b4dcf07f98be5a631de397638e035608d52ed3fbc074f15a7c6697e5b plasma-settings-0.1.tar.xz.sig
909123625ba916bcf3ef2e35077817387b84f4f28e0a81368ac8465f86d538c9 plasma-settings-0.1.tar.xz
f1ccb64c88ab9c8a5d680e3d3a79795e2174b4acf44cb92cfa34810935ce4d1a alligator-0.1.tar.xz.sig
bca28252907cee344e551bd0801c5fff58d52f1c033dabf1c82bbcfdb14fe051 alligator-0.1.tar.xz
11185c7358dfc82e8b86473b967b7333c16db52406c8802e4d425798afdb9e81 plasma-phonebook-0.1.tar.xz.sig
c8cf9bbd3518353b30402b233e1ce1506a5878aa2d319dc2b8d4aa777ffbd68e plasma-phonebook-0.1.tar.xz
f548be1fafbd6041d09f4c4f2a8e48b9a0da607a1acdbc762291924529cfd6d6 kclock-0.4.0.tar.xz.sig
434b66e3c88a799e3f39e161620a0f944b3d0782f3ac54f10bd3c9e3912903e8 kclock-0.4.0.tar.xz
124e136d4b5734bd93f9eed719a88ea01d27cda42a92373db0f4e30fb8398dd3 kalk-v0.2.tar.xz
13c4a2dff831f7eb5ee7521f531ce2a4888a90bf7fc8e65d3e4062d89c1c2d90 kalk-v0.2.tar.xz.asc
e2847139663eecba36b27c6e050b80235ec9fa1c82e8530b36c8f0d67e14c32c kweather-0.4.tar.xz
edf976d24408909f5205b14366851fab584dd21477ba2e9c08bf4076a3b4a901 kweather-0.4.tar.xz.asc
All of the tarballs are signed with my PGP key,
0AAC775BB6437A8D9AF7A3ACFE0784117FBCE11D bshah at mykolab dot com
Tuesday, 23 February 2021
Today KDE releases a bugfix update to KDE Plasma 5, versioned 5.21.1. Plasma 5.21 was released in February with many feature refinements and new modules to complete the desktop experience.This release adds a week’s worth of new translations and fixes from KDE’s contributors. The bugfixes are typically small but important and include:
It’s been a long time since I have published my first blog on SoK. To make up for that, I plan on writing successive blog posts to catch you all up with the progress of my project, foKus. foKus is a simple task management app for plasma mobile.
I have written why we need a dedicated task management app instead of using a calendar app to plan our days in my proposal for SoK. Here I want to highlight the main reason for the need for a dedicated task management app. Calendar apps are great for static events like meetings, appointments, etc. Tasks management apps are great for actionable items(tasks) that we need to do in a day or a week. Sometimes the Calendar might become overpopulated with the “tasks”(which may be small things like listening to a podcast, walk the dog) and might be counter-productive. Using the Calendar and the Task management app in tandem together, we can be our most productive selves. As the task management app isn’t heavy, it won’t affect the performance of the device(if that is your concern).
Like most other apps of KDE, foKus is also built using the Kirigami and Qt. I had to start the app from scratch as there were no todo apps that I could use as a base for my app. As I was new to this community (and also to programming, this is my first coding project), these past 40 days have been a challenge. I had a tough time writing the backend logic as it was full of pointers, classes, and objects which I didn’t understand back then(admitting the weakness was the first sign of improvement). But with the help of my mentor, I am learning more than ever and getting better every day.
As of today, foKus is at a better place than I have expected it to be. The basic model of the app will be ready after I add the local storage(to store the tasks, which I plan on doing tonight or mostly by tomorrow). The user interface of the app is still crude. I’ll refine it once the basic model is ready.
That’s it for this post, and thank you for reading. Until next time, cheers!