Commit 9a8498ab authored by Arjun Thekoot Harisankar's avatar Arjun Thekoot Harisankar 💻

Added Jekyll-Planet Plugin to fetch Developer Blog Posts from RSS Feeds.

parent 795fc4ad
......@@ -9,4 +9,6 @@ group :jekyll_plugins do
gem "jekyll-feed", "~> 0.6"
gem "jekyll-paginate", "~> 1.1.0"
gem "jekyll-paginate-multiple", "~> 0.1.0"
gem 'jekyll-planet', '~> 0.2.1'
gem 'pluto', '~> 1.3', '>= 1.3.1'
end
......@@ -141,7 +141,7 @@ paginate_multiple:
sub_dir: "/official"
- paginate: 3
paginate_path: "/dev/page:num/"
sub_dir: "/dev"
sub_dir: "/"
exclude:
- Gemfile
......@@ -151,3 +151,4 @@ plugins:
- jekyll-feed
- jekyll-paginate
- jekyll-paginate-multiple
- pluto
<div class="announcement-feed mb-3">
<h2>
{% if site.announcements %}
{{site.announcements}}{% else %}Announcements
{%
<h2>
{% if site.announcements %} {{site.announcements}}{% else %}Announcements {%
endif %}
</h2>
{% for post in paginator.posts %}
<div class="card announcements">
<div class="card-body">
<h4 class="card-title">
{{ post.title }}<small class="float-right">{{ post.date | date_to_string }}</small>
</h4>
<p class="card-text">
<q>{{ post.excerpt | strip_html | truncatewords:30 }}</q>
</p>
{% if post.type == 'official' %}
<a href="{{ post.url }}" class="btn btn-primary" role="button">Read Full Announcement</a>
{% endif %}
{% if post.type == 'devblogs' %}
<a href="{{ post.url }}" class="btn btn-primary" role="button">Read Blog Post</a>
{% endif %}
</div>
</div>
{% endfor %}
{% if paginator.total_pages > 1 %}
<div class="pagination justify-content-center mt-3">
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path }}" class="ml-1 mr-1">Prev</a>
{% else %}
<span class="ml-1 mr-1">Prev</span>
{% endif %}
<span class="ml-1 mr-1 ">Page:
{{ paginator.page }}
of
{{ paginator.total_pages }}</span>
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path }}" class="ml-1 mr-1">Next</a>
{% else %}
<span class="ml-1 mr-1 ">Next</span>
{% endif %}
</div>
</h2>
{% for post in paginator.posts %}
<div class="card announcements">
<div class="card-body">
<h4 class="card-title">
{{ post.title }}<small class="float-right"
>{{ post.date | date_to_string }}</small
>
</h4>
<p class="card-text">
<q>{{ post.excerpt | strip_html | truncatewords:30 }}</q>
</p>
{% if post.type == 'official' %}
<a href="{{ post.url }}" class="btn btn-primary" role="button"
>Read Full Announcement</a
>
{% else %}
<a href="{{ post.url }}" class="btn btn-primary" role="button"
>Read Blog Post</a
>
{% endif %}
</div>
</div>
{% endfor %} {% if paginator.total_pages > 1 %}
<div class="pagination justify-content-center mt-3">
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path }}" class="ml-1 mr-1">Prev</a>
{% else %}
<span class="ml-1 mr-1">Prev</span>
{% endif %}
<span class="ml-1 mr-1 "
>Page: {{ paginator.page }} of {{ paginator.total_pages }}</span
>
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path }}" class="ml-1 mr-1">Next</a>
{% else %}
<span class="ml-1 mr-1 ">Next</span>
{% endif %}
</div>
{% endif %}
</div>
---
title: "The Purpose of things"
created_at: 2018-07-08 21:28:10 UTC
author: Adventures in KDE
layout: post
---
<p>Hi,</p>
<p>For once this is not a post about KDE Connect (at least not directly). Besides KDE Connect I also work on several other KDE projects, one of them being the awesome <a href="https://api.kde.org/frameworks/purpose/html/index.html">Purpose</a> framework created by Aleix Pol.</p>
<p>After Nate highlighted my latest work on Purpose (the new share menu in Dolphin) in his <a href="https://wp.me/p9uUIp-on">blog post</a> I received quite some feedback. I&#8217;m glad that many people like the idea, but I also received some criticism/suggestions for improvements. This is always welcome as long as it is fair and objective. This was true for most comments, but unfortunately not all of them. I won&#8217;t even bother to reply to unfair and personal attacks for a useful feature, but rather like to respond to appropriate criticism and inform you about my future plans for Purpose.</p>
<p>First of all, for those who don&#8217;t know what Purpose is, it is an extensible framework to fulfill the developer&#8217;s purpose while providing an abstraction. Right now the only use-case is exporting/sharing a file, but more could be added in the future. It is used by Dolphin, Spectacle, Okular and other KDE applications and can export files to Email, Telepathy, KDE Connect, Nextcloud, Telegram (I did that one myself), Twitter, Imgur and many more.</p>
<p>For the share menu in Dolphin&#8217;s I received some critisism/suggestions for improvements:</p>
<ul>
<li><strong>Send via Bluetooth and send via KDE Connect are still separate in Dolphin&#8217;s context menu and should be in the &#8216;Share&#8217; sub-menu as well.</strong> I 100% agree on that. In fact send via KDE Connect is already in the &#8216;Share&#8217; sub-menu and I&#8217;ve uploaded a <a href="https://phabricator.kde.org/D13967">patch</a> to remove the old entry. As for Send via Bluetooth: Someone would need to turn Bluedevils FileItemActionPlugin into a Purpose plugin. I&#8217;ll probably do it myself as soon as I find the time for it.</li>
<li><strong>Dolphin&#8217;s context menu will be even more cluttered with this. </strong>It actually achieves the opposite. By combining actions like Send via Bluetooth and Send via KDE Connect into a sub-menu the top-level menu will be less cluttered.</li>
<li><strong>I&#8217;m not going to use it, so I don&#8217;t want to have it. </strong>You can disable it in Dolphin&#8217;s settings.</li>
<li><strong>I&#8217;m never going to use option XY, but it&#8217;s still there.</strong> Fair point. Some options are loaded conditionally, so e.g. the Telegram option is only present if Telegram is actually installed. For others this is not the case. I&#8217;m planning to make a config module to en-/disable options.</li>
<li><strong>I don&#8217;t want to share my files by accident. </strong>Virtually all of the options require more than one click to do something, so it needs a weird accident to actually do something unwanted.</li>
</ul>
<p>I&#8217;d love to see more applications/services adopting Purpose. So if you are a developer interested in integrating your application with Purpose please get in touch with me and we will figure out a solution. I&#8217;m especially looking at you, fellow KDE developers <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Happy sharing <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
\ No newline at end of file
---
title: "KDE Connect – New Stuff II"
created_at: 2018-07-31 14:30:46 UTC
author: Adventures in KDE
layout: post
---
<p>It&#8217;s time for another feature update for KDE Connect!</p>
<p>You can now run commands on connected devices from the Plasmoid.</p>
<div class="lightbox-image-frame"><img class="" src="https://phabricator.kde.org/file/data/efceohbdflljsqmcxbki/PHID-FILE-2g5rpbjbnhrztkzxgoer/rc.png" alt="" /></div>
<div></div>
<p>The Dolphin context menu entry for sending files to a connected device has been dropped in favour of a <a href="https://nicolasfella.wordpress.com/2018/07/08/the-purpose-of-things/">Purpose plugin</a>, which groups nicely with other Share features and supports more apps such as Okular and Spectacle.</p>
<p>Albert Vaka added a presentation mode to Android which allows you to control slideshows from your phone. Aleix Pol added the same to the Kirigami app.</p>
<p><img class="" src="https://phabricator.kde.org/file/data/622tjt2v7wqsshovusmq/PHID-FILE-uun2yarn44osg6yaam7t/Screenshot_20180731-120640.jpg" alt="" width="427" height="901" /></p>
<p>&nbsp;</p>
<p>As I&#8217;ve mentioned before it is quite hard to find the settings where you can define your commands for the Run Command feature.  The command list on Android now has a button that opens the appropriate settings on the desktop. Ivan Čukić added a few useful command suggestions to the menu.</p>
<p>Friedrich Kossebau added support for a &#8220;Find my PC&#8221; plugin. You might wonder now how often he loses his PC, but it also helps finding other devices that run the C++ version of KDE Connect, such as Plasma Mobile and SailfishOS devices. I added support for triggering it on the Android side.</p>
<p>Following a request on Reddit I added a dedicated Stop button to the media controller.</p>
<p>Chansol Yang made sure that the pointer speed when controlling the mouse from the phone is the same across Android devices with various DPIs.</p>
<p>Philip Cohn-Cort added the much requested dark theme option to Android.</p>
<p><img data-attachment-id="103" data-permalink="https://nicolasfella.wordpress.com/2018/07/31/kde-connect-new-stuff-ii/screenshot_20180731-154621/" data-orig-file="https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg" data-orig-size="1080,1920" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot_20180731-154621" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=169" data-large-file="https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=576" class="alignnone wp-image-103" src="https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=576" alt="Screenshot_20180731-154621" width="466" height="829" srcset="https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=576 576w, https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=466 466w, https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=932 932w, https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=84 84w, https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=169 169w, https://nicolasfella.files.wordpress.com/2018/07/screenshot_20180731-154621.jpg?w=768 768w" sizes="(max-width: 466px) 100vw, 466px" /></p>
<p>You can now use special URLs to trigger commands on connected devices. The urls have the form kdeconnect://runcommand/&lt;deviceid&gt;/&lt;commandid&gt;. As those are quite complex I added a helper for it. You can copy an URL to the clipboard by long-pressing a command in the command list. You can write those URLs into a NFC tag to trigger the command when your phone reads the tag or use it to integrate with services such as Tasker.</p>
<p>The <a href="https://nicolasfella.wordpress.com/2018/04/30/volume-control-in-kde-connect/">system volume patches</a> have been merged. To make use of it you will need the latest KDE Connect from master for Desktop and Android and pulseaudio-qt installed. You can get pulseaudio-qt from <a href="https://cgit.kde.org/pulseaudio-qt.git">git</a>. We will to an initial 0.1 release soon and hope that distros will ship it soon.</p>
<p>Besides these features we also fixed some bugs and polished the UI a little.</p>
<p>Bluetooth support is progressing slowly. Matthijs Tijnk and Qt 5.11 fixed some issues. However, it is still not ready for the public.</p>
<p>We also improved our device support:</p>
<p>Aleix and I improved the Kirigami <a href="https://nicolasfella.wordpress.com/2018/06/07/kde-connect-on-plasma-mobile/">app.</a> We improved the basic pairing workflow and  you can now run commands and control media sessions.</p>
<p>Bart Ribbers fixed an issue that was blocking KDE Connect from building it for postmarketOS. I hope to see KDE Connect there as well!</p>
<p>Adam Pigg made a huge step towards bringing KDE Connect to Sailfish OS.</p>
<p>We like to see KDE Connect on as many platforms as possible, and we need your help for it! Our <a href="https://phabricator.kde.org/project/board/159/">workboard</a> contains lots of ideas for new people to get started. You can ask for any assistance in our <a href="https://t.me/joinchat/AOS6gA37orb2dZCLhqbZjg">Telegram group</a>.</p>
<p>Thanks to all contributors!</p>
\ No newline at end of file
---
title: "KDE Connect on IRC and Matrix.org"
created_at: 2018-09-07 15:38:12 UTC
author: Adventures in KDE
layout: post
---
<p>Since a few months KDE Connect has a <a href="https://t.me/joinchat/BRUUN0bwMhNfn8FIejA-nw" target="_blank" rel="noopener">Telegram group</a> to discuss development. Since the over 100 people joined. I did not expect such an interest in it. Few people asked to have this group bridged to an IRC channel since they prefer IRC over Telegram. I&#8217;m happy to announce that we finally made this happen. Let&#8217;s celebrate the birth of #kdeconnect on Freenode. You can also access it from matrix.org (#freenode_#kdeconnect:matrix.org).</p>
<p>The rest is up to you! If you are interested in contributing to KDE Connect go and share your ideas with us and ask any question you have!</p>
\ No newline at end of file
---
title: "KDE Connect – New stuff 0x3"
created_at: 2018-11-04 22:14:13 UTC
author: Adventures in KDE
layout: post
---
<p>Today we released version 1.10 of the KDE Connect Android app. Therefore it&#8217;s time again to share what we&#8217;ve been working on.</p>
<h2>Targeting Android Oreo</h2>
<p>As of this month app updates uploaded to Google Play need to <a href="https://developer.android.com/distribute/best-practices/develop/target-sdk">target Android 8</a>. This has several implications. Targeting Oreo comes with an updated Support Library, which forces us to drop support for Android 4.0 and below. According to our Google Play data this will affect approximately 400 users. We are very sorry about that, but these users won&#8217;t receive further updates. Furthermore, Android Oreo introduced some restrictions in regard to apps running in the background. In the future in order to be able to run in the background KDE Connect needs to show a persistent notification. The good news is that you can hide the notification. The (slightly) bad news is that we cannot do it by default. To hide the notification you need to long-press it and switch it off. Other notifications from KDE Connect are unaffected by this.</p>
<h2>1.10 Changes</h2>
<p>These are the main changes of version 1.10. Not mentioned are countless small improvements and under-the-hood changes.</p>
<p>Mouse input now works with the same speed independent from the phones pixel density.</p>
<p>The media controller now allows stopping playback.</p>
<p>Run command supports triggering commands using kdeconnect:// URLs. Useful for integration with NFC tags and 3rd-party apps.</p>
<p>The notification filter allows quickly (de-)selecting all apps.</p>
<p>Several settings scatterd across the UI have been bundled into a single settings screen.</p>
<p>A lot of work has gone into how we handle SMS on the Android side in preparation for something huge. Stay tuned <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Other changes</h2>
<p>The desktop side has improved as well since my last post.</p>
<p>The windows build of KDE Connect gained support for keyboard input.</p>
<p>The plasmoid gained a couple of additions. In my last update I mentioned that it is possible to run commands from there. It is now also possible to lauch the command setup from there. Furthermore it is now possible to select files to share them from there.</p>
<p>The Linux Mobile App gained many visual improvements and features. It now supports sharing files and controlling the system volume.</p>
<p>If you are using <a href="https://volkerkrause.eu/2018/08/19/kde-itinerary-introduction.html">Itinerary</a> you can send booking information from the PC directly to the phone via KDE Connect.</p>
<p>It is now possible to send files directly from Pantheon Files (and other Elementary apps) and Thunar via KDE Connect.</p>
<p>Again, there are countless other improvements that I did not explicitly mention.</p>
<p>A big thanks to all people who contributed to this!</p>
<p>&nbsp;</p>
\ No newline at end of file
---
title: "Creating a Plasma Mobile application"
created_at: 2019-02-20 21:16:15 UTC
author: Adventures in KDE
layout: post
---
<p>From February 4th until February 9th I attended a Plasma Mobile sprint in Berlin, Germany. I met a lot of people that share the vision of an open, privacy-friendly mobile platform. However, we all agree that such a platform can only succeed if there are enough people sharing that vision creating suitable apps for it. There already is a nice amount of <a href="https://mglapps.frama.io/">mobile-friendly Linux apps</a>, many of them created by the KDE Community, but of course we need more <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>One app that is essential for my use case is an app that allows me to check departures and routes for public transport. Since I&#8217;m not aware of any existing one I decided to do my own and share my road here. The purpose of this is to be educating for both me and you and to inspire you to create your own mobile-friendly Linux apps.</p>
<p>Like the other KDE mobile apps I&#8217;m going to use QML/QtQuick and <a href="https://www.kde.org/products/kirigami/">Kirigami</a>. QML is the declarative UI language from the Qt project. Unlike the older QWidgets it is designed with (embedded) touch systems in mind and thus is ideal for mobile apps. Kirigami is a set of QtQuick components designed for creating convergent mobile/desktop apps.</p>
<p>Unlike other KDE projects I&#8217;m not going to use C++ for the business logic. Instead I&#8217;m going to use Python, which is now <a href="https://www.qt.io/qt-for-python">officially supported by Qt</a>. Since my Python skills are fairly basic this will be a fun challenge for me. Therefore take everything I write with a grain of salt and feel free to point out anything that is wrong or can be improved. </p>
<p> This won&#8217;t be a 100% complete reference for developing for Plasma Mobile, but I&#8217;ll try to cover as many different aspects as fit into the concept of this app. I&#8217;ll also try to focus on one aspect/feature/goal per post. Also most of this will not be specific to Plasma Mobile but will work on any desktop or mobile Linux.</p>
<p>So lets get started <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Part 0: Basic application</h2>
<p>Before getting started we need to install a few things. First of all we need Python (obviously) and Qt for Python. Qt for Python was formerly known as PySide2. You can install it via &#8216;pip install pyside2&#8217;. Next there is Kirigami. On Ubuntu you can install it via &#8216;sudo apt install qml-module-org-kde-kirigami2&#8217;. </p>
<p>After that we can start coding. The following main.py file is creating an app and loading the UI from a .qml file. The exact details are not too important at this point.</p>
<pre class="wp-block-code"><code>#!/usr/bin/env python3
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QGuiApplication()
engine = QQmlApplicationEngine()
context = engine.rootContext()
engine.load("qml/main.qml")
if len(engine.rootObjects()) == 0:
quit()
app.exec_()
</code></pre>
<p>Next we need to define our UI in a QML file. To keep things organized we are going to put our QML files in a qml/ subfolder. Our first main.qml is rather simple</p>
<pre class="wp-block-code"><code>import QtQuick 2.2
import QtQuick.Controls 2.4
import org.kde.kirigami 2.0 as Kirigami
Kirigami.ApplicationWindow
{
width: 480
height: 720
Label {
text: "Hello world!"
anchors.centerIn: parent
}
}</code></pre>
<p>width and height are a bit arbitrary since the window will always be maximized on the phone, but this way we get a somewhat realistic window on the desktop. Executing the python file should result in something like this</p>
<figure class="wp-block-image"><img data-attachment-id="160" data-permalink="https://nicolasfella.wordpress.com/image/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image.png" data-orig-size="528,790" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image.png?w=201" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image.png?w=528" src="https://nicolasfella.files.wordpress.com/2019/02/image.png" alt="" class="wp-image-160" /></figure>
<p>In the next post we are going to fill this window with more life using QtQuick and Kirigami components. Stay tuned <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The source code will be available at <a href="https://invent.kde.org/nicolasfella/kstraba">https://invent.kde.org/nicolasfella/kstraba</a></p>
\ No newline at end of file
---
title: "Creating a Plasma Mobile App 1 – Basic Controls"
created_at: 2019-02-28 20:32:15 UTC
author: Adventures in KDE
layout: post
---
<p>My last post shows how to create a stub Python/Kirigami app that doesn&#8217;t do anything. Time to change that! In this post we&#8217;re filling the screen with some controls.</p>
<h2>Kirigami Pages</h2>
<p>Kirigami apps are typically organized in Pages. Those are the different &#8216;Screens&#8217; of an app. If you come from the Android world you can think of them as the view part of activities. In our case we want to have an initial page that offers to enter a stop or a destination and opens a new page that shows a list of possible routes. Clicking on one of the list items opens a new page with a detailed view about the connections.</p>
<p>Pages are organized in a pagestack where pages can be pushed and popped. On a phone only the topmost page is shown, whereas on a larger screen (desktop or tablet) multiple pages can be shown next to each other.</p>
<figure class="wp-block-image"><img data-attachment-id="173" data-permalink="https://nicolasfella.wordpress.com/image-3/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-3.png" data-orig-size="540,810" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-3" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-3.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-3.png?w=540" src="https://nicolasfella.files.wordpress.com/2019/02/image-3.png" alt="" class="wp-image-173" /><figcaption>A single page on the phone</figcaption></figure>
<figure class="wp-block-image"><img data-attachment-id="174" data-permalink="https://nicolasfella.wordpress.com/image-4/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-4.png" data-orig-size="1214,919" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-4" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-4.png?w=300" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-4.png?w=1024" src="https://nicolasfella.files.wordpress.com/2019/02/image-4.png" alt="" class="wp-image-174" /><figcaption>Two pages next to each other on the desktop</figcaption></figure>
<p>So let&#8217;s create some pages! I&#8217;m going put each page in its own .qml file and let the name end with Page. Our first version of StartPage.qml looks like this:</p>
<pre class="wp-block-code"><code>import QtQuick 2.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.4
import org.kde.kirigami 2.0 as Kirigami
Kirigami.Page
{
title: "Start journey"
}</code></pre>
<p>It produces an empty page with a title. Before we can actually see it we need to add it to the pageStack. Replace the Label {} declaration in main.qml with</p>
<pre class="wp-block-code"><code>pageStack.initialPage: Qt.resolvedUrl("StartPage.qml")</code></pre>
<p>pageStack.initialPage is, well, setting the initial Page of the Page stack. Qt.resolveUrl is converting the relative URL of the QML file into an absolute one. Starting the app gives us an empty page</p>
<figure class="wp-block-image"><img data-attachment-id="177" data-permalink="https://nicolasfella.wordpress.com/image-5/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-5.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-5" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-5.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-5.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-5.png" alt="" class="wp-image-177" /></figure>
<p>Time to fill it with some content.</p>
<h2>Basic controls</h2>
<p>On the start page we need need a way to enter start and destination of our journey as well as the date and time of our travel. For start and destination we are using simple TextFields from QtQuick Controls 2. Note that the older version 1 of QtQuick Controls is still around for the foreseable future, but we want to avoid using that. We&#8217;re extending StartPage.qml with our controls</p>
<pre class="wp-block-code"><code>ColumnLayout {
width: parent.width
Label {
text: "From:"
}
TextField {
Layout.fillWidth: true
placeholderText: "Würzburg..."
}
Label {
text: "To:"
}
TextField {
Layout.fillWidth: true
placeholderText: "Berlin..."
}
}</code></pre>
<p>A ColumnLayout is a component that positions its children vertically. We set it to be as wide as its parent, the page. The TextFields shall span the whole width as well. Instead of using the same &#8216;width: parent.width&#8217; we are using &#8216;Layout.fillWidth: true&#8217;. This property is only available to children of a Layout. The difference to the first way is that all the width that is not already occupied by other elements in the layout is filled.</p>
<p>Next we need some way to enter a departure date and time. Unfortunately I&#8217;m not aware of any ready-to-use date and time pickers in QtQuick and Kirigami, so I&#8217;ll leave this open for a future post. For the time being two simple placeholder buttons shall be enough. Let&#8217;s add them to our ColumnLayout</p>
<pre class="wp-block-code"><code>RowLayout {
width: parent.width
Button {
text: "Pick date"
Layout.fillWidth: true
}
Button {
text: "Pick time"
Layout.fillWidth: true
}
}</code></pre>
<p>Now our app looks like this. Both buttons have the &#8220;Layout.fillWidth&#8221; property set to true, resulting in each one getting 50% of the space.</p>
<figure class="wp-block-image"><img data-attachment-id="180" data-permalink="https://nicolasfella.wordpress.com/image-6/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-6.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-6" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-6.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-6.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-6.png" alt="" class="wp-image-180" /></figure>
<p>The buttons look a bit weird, don&#8217;t they? That&#8217;s because they are using the built-in QtQuick Controls style. If you are using Plasma you are probably used to the org.kde.desktop style which emulates the active Qt Widgets style. We can force our app to use the org.kde.desktop style by running &#8216;QT_QUICK_CONTROLS_STYLE=&#8221;org.kde.desktop&#8221; ./main.py&#8217;</p>
<p></p>
<figure class="wp-block-image"><img data-attachment-id="181" data-permalink="https://nicolasfella.wordpress.com/image-7/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-7.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-7" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-7.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-7.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-7.png" alt="" class="wp-image-181" /></figure>
<p>Looks closer to what we have on the desktop, doesn&#8217;t it? Qt also offers a &#8216;material&#8217; style that follows Android&#8217;s material guidelines</p>
<figure class="wp-block-image"><img data-attachment-id="182" data-permalink="https://nicolasfella.wordpress.com/image-8/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-8.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-8" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-8.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-8.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-8.png" alt="" class="wp-image-182" /></figure>
<p>Next we need a way to press &#8220;Search&#8221;. We could solve that with yet another button, but Kirigami offers another way. Pages in Kirigami can have Actions associated with them. The presentation differes from the phone to the desktop. On the phone actions are displayed on the bottom where they are easily reachable while on the desktop they are displayed in form of a toolbar at the top of the page. Let&#8217;s add an action to our page</p>
<pre class="wp-block-code"><code>Kirigami.Page
{
id: root
title: "Start journey"
actions.main: Kirigami.Action {
icon.name: "search"
text: "Search"
onTriggered: pageStack.push(Qt.resolvedUrl("ConnectionsPage.qml"))
}
ColumnLayout {
</code></pre>
<p>On the phone we get this</p>
<figure class="wp-block-image"><img data-attachment-id="184" data-permalink="https://nicolasfella.wordpress.com/image-9/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-9.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-9" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-9.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-9.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-9.png" alt="" class="wp-image-184" /></figure>
<p>while on the desktop we get that</p>
<figure class="wp-block-image"><img data-attachment-id="185" data-permalink="https://nicolasfella.wordpress.com/image-10/" data-orig-file="https://nicolasfella.files.wordpress.com/2019/02/image-10.png" data-orig-size="480,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-10" data-image-description="" data-medium-file="https://nicolasfella.files.wordpress.com/2019/02/image-10.png?w=200" data-large-file="https://nicolasfella.files.wordpress.com/2019/02/image-10.png?w=480" src="https://nicolasfella.files.wordpress.com/2019/02/image-10.png" alt="" class="wp-image-185" /></figure>
<p>You can force the mobile view on the desktop by setting the QT_QUICK_CONTROLS_MOBILE variable to 1.</p>
<p>Triggering the action pushes ConnectionsPage.qml on the pageStack. Of cource we need to create that one now:</p>
<pre class="wp-block-code"><code>import QtQuick 2.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.4
import org.kde.kirigami 2.4 as Kirigami
Kirigami.Page
{
title: "Connections"
}
</code></pre>
<p>Right now it&#8217;s just an empty page, we&#8217;re going to fill it with life in the next post.</p>
<p>You can find the full source code for all posts on <a href="https://invent.kde.org/nicolasfella/kstraba">Git</a>.</p>
<p>Happy hacking!</p>
\ No newline at end of file
---
title: "Google Summer of Code with KDE Connect"
created_at: 2019-02-28 17:59:04 UTC
author: Adventures in KDE
layout: post
---
<p>KDE is happy to announce that we will be part of <a href="https://dot.kde.org/2019/02/27/google-summer-code-2019">Google Summer of Code 2019</a>. GSoC is a program where students recieve stipends to work on free software for 3 months. Getting paid for open source work, that&#8217;s the dream, right?</p>
<p>KDE Connect is participating with 3 interesting projects that also involve other areas of KDE</p>
<h3>1. Improving KDE Connect on Windows</h3>
<p>KDE Connect builds and runs on Windows, but there are a lot of things that can be improved. This mostly involves the functionality that makes use of notifications. A large part of this task is about improving KNotifications on Windows. </p>
<h3>2. An SMS app for Plasma Mobile</h3>
<p>Plasma Mobile does not have a functional SMS app yet. We believe that the best way to create one is to reuse the SMS UI we&#8217;ve been developing for KDE Connect. We verified that the Plasma Mobile SMS stack is functional on the Nexus 5 (I have no information about other devices). The UI is already running on a phone, what&#8217;s missing is a backend that talks to ofono</p>
<h3>3. Barcode scanning infrastructure</h3>
<p>Scanning a barcode is one of those tasks that comes up in various different apps but the developers don&#8217;t want to implement it themselves. For those kind of tasks we have the <a href="https://api.kde.org/frameworks/purpose/html/">Purpose framework</a> in KDE. It allows the developer to specify a desired action and let the user choose from available services to fulfil them. E.g. the Share feature in Dolphin is implemented via Purpose. This task is about adding a new action type to Purpose that allows to scan a barcode. Possible implementations could use the local camera or the camera of a device connected via KDE Connect.</p>
<p>If you are interested in doing one of those tasks and have some basic understanding of C++ please contact us on #kdeconnect on Freenode or on <a href="https://t.me/joinchat/BRUUN0bwMhNfn8FIejA-nw">Telegram</a>. </p>
<p>The deadline for student applications is April 9th and composing a good application takes some time, so please contact us rather soon.</p>
<p>Please note that we require students to have done some minor work (e.g bug fixes) before starting GSoC. Don&#8217;t worry if you don&#8217;t have done anything yet, there is still time for it <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Happy hacking!</p>
<p></p>
\ No newline at end of file
---
title: "KDE Connect and Android"
created_at: 2019-04-01 10:00:50 UTC
author: Adventures in KDE
layout: post
---
<p>As most of you know KDE Connect has recently been removed from Google Play due to a policy violation with regard to our SMS and telephony features. While the public outcry helped to get it back in with all features remaining this is just yet another example of how new Android policies make it harder for us to maintain the level of quality and features you expect from KDE Connect. Android Oreo forced us to drop support for older Android versions and imposed restrictions on background services which force us to have an annoying persistent notification. It is to be expected that Google will further restrict background services which will impose more problems for us. With each new Android versions new restrictions and problems arise which we have to work around, if possible. For example, the upcoming Android Q imposes restrictions on accessing the phone&#8217;s clipboard. It is unclear whether the clipboard sync in it&#8217;s current form is feasible on Android Q. Those are just examples of the problems with the direction Android is moving towards.</p>
<p>With Plasma Mobile KDE has been working on an alternative mobile platform for a while now. We now consider Plasma Mobile stable and suitable for everyone to use. Therefore we decided to stop developing KDE Connect for Android and focus on the Plasma Mobile experience. We have removed the app from Google Play and F-Droid as well as removed the public repositories. We are also in contact with Google about removing the active installations from devices.</p>
<p>We hope that this steps contributes to a better mobile experience in the long term beginning today, April 1st 2019.</p>
\ No newline at end of file
---
title: "2019 Plasma and Usability & Productivity sprint"
created_at: 2019-07-04 17:15:55 UTC
author: Adventures in KDE
layout: post
---
<p>From 19.6. to 25.6. I attended this year&#8217;s combined Plasma and Usability &amp; Productivity sprint in the beautiful city of Valencia.</p>