Planet KDE Planet KDE Planet KDE 48 48 Mon, 06 Jul 2020 17:10:36 +0000, Week #5 Status Report [Preset Editor MyPaint Engine] Mon, 06 Jul 2020 11:21:00 +0000 <div dir="ltr" style="text-align: left;" trbidi="on"> <div>The second month of Google Summer of Code has been started. This month my prime focus would be to improve the mypaint brush engine, fix some issues and also I aim to add a better preset editor than the one provided by other painting applications.</div> <div><br></div>Last week I worked solely on the preset editor for the newly available MyPaint brush engine in Krita.<br><div>This was in accordance to the mockup as was presented in the proposal and contained only the very basic 3-4 settings for the engine. All most all of the applications with MyPaint integration just provide some 3-4 basic settings for the engine. Though the library does provide api to add all of the mentioned settings.</div> <div><br></div> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody> <tr><td style="text-align: center;"><a href="" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="440" data-original-width="671" src="//"></a></td></tr> <tr><td class="tr-caption" style="text-align: center;">Preset Editor</td></tr> </tbody></table> <div><br></div> <div>This week I will look at how shall I add more settings and customization options to it. I have some thing like this in mind. Though as per the standard procedure will discuss it with Boud first.</div> <div><br></div> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody> <tr><td style="text-align: center;"><a href="" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="456" data-original-width="562" src="//"></a></td></tr> <tr><td class="tr-caption" style="text-align: center;">Mockup for Preset Editor with All the Settings</td></tr> </tbody></table> <div><br></div> <div>This week I shall focus on this and will try to add as much settings as possible in the widget.</div> <div><br></div> <div>Till then,</div> <div>Good Bye :)</div> <div><br></div> <div><br></div> </div> Ashwin Dhakaita This week in KDE: A little bit of everything Sat, 04 Jul 2020 05:03:41 +0000 <p><a href="">A lot of exciting things are happening behind the scenes these days</a>, but in terms of what landed this week, we focused on bugfixing–including a few nice high DPI fixes–and also got a few nice Dolphin and Konsole features.</p> <h2>New Features</h2> <p>Dolphin <a href="">now has a new “Copy Location” menu item</a> (Yann Holme-Nielsen, Dolphin 20.08.0):</p> <div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="5396" data-permalink="" data-orig-file="" data-orig-size="1084,1511" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="screenshot_20200701_124217" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-5396" width="374" height="521" srcset=" 735w, 374w, 748w, 108w, 215w" sizes="(max-width: 374px) 100vw, 374px"></figure></div> <p>…<a href="">And so does Konsole</a>! (Tomaz Canabrava, Konsole 20.08):</p> <div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="5403" data-permalink="" data-orig-file="" data-orig-size="1036,1441" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="screenshot_20200702_142348" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-5403" width="377" height="524" srcset=" 736w, 377w, 754w, 108w, 216w" sizes="(max-width: 377px) 100vw, 377px"></figure></div> <p>Konsole’s <a href="">split view headers can now be optionally disabled, and the thickness of the separator can be optionally increased</a> (Tomaz Canabrava, Konsole 20.08.0):</p> <div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="5408" data-permalink="" data-orig-file="" data-orig-size="1701,1529" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="screenshot_20200702_143225" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-5408" width="600" height="538" srcset=" 1024w, 600w, 1197w, 150w, 300w, 768w" sizes="(max-width: 600px) 100vw, 600px"></figure></div> <h2>Bugfixes &amp; performance Improvements</h2> <p>Various non-default Task Switchers <a href="">now have the right size when using a high DPI scale factor</a> (me: Nate Graham, Plasma 5.18.6 and beyond)</p> <p>Fixed <a href="">various system tray items’ context menus popping up in the wrong location</a> (Konrad Materka, Plasma 5.18.6 and beyond)</p> <p>When using a wallpaper package with multiple sizes (e.g. the default Plasma wallpaper), <a href="">the correct size is now displayed when using a high DPI scale factor or changing screen resolutions</a> (David Edmundson, Plasma 5.19.3)</p> <p>The plasma start-up sound <a href="">is no longer cut off when starting up the computer</a> (David Edmundson, Plasma 5.19.3)</p> <p>The new System Monitor widgets <a href="">now always have the correct text color when using a Plasma theme with a different color scheme from the Application color scheme</a> (Marco Martin, Plasma 5.19.3)</p> <p>System Settings <a href="">no longer crashes when you open the Applications page without any file managers installed</a> (Alex Merry, Plasma 5.19.3)</p> <p>Krunner is now faster to open so <a href="">the text that you type winds up in KRunner rather than in the app below it</a> (David Redondo, Plasma 5.20)</p> <p>When changing the default browser, <a href="">the “default browser” entry visible in Kickoff and the Task Manager by default now automatically updates too</a> (Alexander Lohnau, Plasma 5.20)</p> <p>Dolphin <a href="">can once again execute script files with spaces in the filename or path</a> (David Faure, Frameworks 5.72)</p> <p>Close buttons in Kirigami sheets <a href="">are no longer subtly pixelated some of the time</a> (Nicolas Fella, Kirigami 5.72)</p> <p>Several Breeze icons which had subtle pixel mis-alignments that could make them appear blurry <a href="">no longer suffer from this issue</a> (Maksym Hazevych, Frameworks 5.72)</p> <p>When using Qt scaling in Plasma by setting the <code>PLASMA_USE_QT_SCALING=1</code> environment variable, <a href="">windows now minimize to the correct locations in the Task Manager</a> (Marco Martin, Frameworks 5.72)</p> <h2>User Interface Improvements</h2> <p>The System Settings Screen Locking page <a href="">has been rewritten in QML</a>, which <a href=";list_id=1763833&amp;product=systemsettings&amp;resolution=---">fixes all of the open bugs</a> (David Redondo, Plasma 5.20):</p> <div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="5391" data-permalink="" data-orig-file="" data-orig-size="2786,2039" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="screenshot_20200701_091314" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-5391" width="700" height="512" srcset=" 1024w, 700w, 1400w, 150w, 300w, 768w" sizes="(max-width: 700px) 100vw, 700px"></figure></div> <p>The Keyboard Layout System Tray item <a href="">now always uses a monochrome icon, to better match the style</a> (Nicolas Fella, Plasma 5.20):</p> <div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="5381" data-permalink="" data-orig-file="" data-orig-size="387,232" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="kl_after" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-5381" width="323" height="194" srcset=" 323w, 150w, 300w, 387w" sizes="(max-width: 323px) 100vw, 323px"></figure></div> <h2>How You Can Help</h2> <p>Have a look at <a href=""></a> to discover ways to help be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!</p> <p>Finally, consider <a href="">making a tax-deductible donation</a> to the <a href="">KDE e.V. foundation</a>.</p> Nate Graham Third alpha release of my project Fri, 03 Jul 2020 14:45:00 +0000 <p>I’m glad to announce the third alpha of <a href="">my GSoC 2020 project</a>. For anyone not in the loop, I’m working on integrating <a href="/blog/posts/2020/05/19/what-is-seexpr-about.html">Disney’s SeExpr expression language as a new type of Fill Layer</a>.</p> <p>Releases are available here:</p> <ul> <li>Windows x64: <a href=""></a> </li> <li>Linux x64: <a href=""></a> </li> </ul> <p>Integrity hashes:</p> <pre><code class="language-plaintext" data-lang="plaintext">d5aa5138650c58ac93e16e5eef9e74f81d7eb4d3fa733408cee25e791bb7a3e1 krita-4.3.1-alpha-0b32800-x86_64.appimage 634d1c0dedc96bc8b267f02b5c431245eefde021a1e7b8e6fcdce33f5e62c25a</code></pre> <p>In this release, I fixed the following issues:</p> <ul> <li>SeExpr textures use the scRGB color space, which is not supported by Qt’s <code>QColor</code> until 5.12. This makes the conversion to Krita space unbearably slow (thanks Wolthera van Hövell)</li> <li>Refactored SeExpr error reporting to make messages Qt-translatable. <ul> <li><strong>This adds KDE’s ECM to the list of (optional) dependencies of SeExpr.</strong></li> </ul> </li> <li>Error reporting is now available, including highlighting! (thanks Wolthera too for noticing)</li> <li>Configuration is saved and restored when changing between Fill layer types (<a href="">bug 422885</a>, thanks Boudewijn Rempt)</li> <li>Cleaned up SeExpr headers <ul> <li>They are now installed only if used in the UI library itself.</li> </ul> </li> <li>UI labels have extra spacing (thanks Wolthera van Hövell)</li> </ul> <p>Another outstanding issue is SeExpr’s vulnerability to the current <code>LC_NUMERIC</code> locale, due to its use of <code>sscanf</code> and <code>atof</code>. I am sad to announce I won’t be able to change this; the library I wanted to use, <a href="">scn</a> is <a href="">itself vulnerable</a> to locale changes.</p> <p>But the most important feature, and final contribution, are <strong>bundleable presets</strong>!</p> <figure class="text-center d-block figure"> <div class="row figure-img"> <div class="col-12 col-md-6"> <img class="img-fluid" src="//"> </div> <div class="col-12 col-md-6"> <img class="img-fluid" src="//"> </div> </div> </figure> <p>This enables SeExpr scripts to be bundled just like any other resource in Krita. Below you can find a bundle containing all of <a href="">the example scripts</a> posted by Wolthera on the Krita Artists thread.</p> <figure class="text-center figure"> <img class="figure-img img-fluid" src="//"> </figure> <p>Link: <a href="'_SeExpr_examples.bundle">'_SeExpr_examples.bundle</a></p> <p>Integrity hash:</p> <pre><code class="language-plaintext" data-lang="plaintext">1e4a1bc6a9b8238cee96dfee9a50e7db903fe7b665758caf731d53c96597dc20 Krita_Artists'_SeExpr_examples.bundle</code></pre> <p>Looking forward to your comments!</p> <p>Cheers,</p> <p>~amyspark <span class="emoji" aria-label=":sparkles_nonconforming:" role="img"><img aria-hidden="true" alt=":sparkles_nonconforming:" title=":sparkles_nonconforming:" style="width: 1em; height: 1em;" src="//"></span></p> <p>PS: The Git hash in the files point <a href="">to a cleaned up branch at my own fork of Krita</a>. I am reviewing options to sync this work back to the main <code>krita/4.3</code> branch.</p> Amyspark GSoC’20 First Evaluation Fri, 03 Jul 2020 00:00:00 +0000 <p>Hello everyone,</p> <p>In the last blog, I wrote about my first two weeks on the GSoC period. In this blog, I will write about the activities on which I have worked further to implement multiple datasets.</p> <p>Until now, I have implemented the multiple datasets in the following activities:</p> <ol> <li>Enumeration memory game</li> <li>Addition memory game with Tux and without Tux</li> <li>Subtraction memory game with Tux and without Tux</li> <li>Multiplication memory game with Tux and without Tux</li> </ol> <h3 id="why-multiple-datasets-for-gcompris-activities">Why multiple datasets for GCompris activities?</h3> <p>All of the GCompris activities had a generalized dataset so for some of the age groups like 3-5 yrs the activity were quite difficult to play, while for older age groups the activity were easy. So, multiple datasets helps in resolving this issue and making the activity adaptive for children of all age groups.</p> <h3 id="enumeration-memory-game">Enumeration memory game</h3> <p>In this activity, the child needs to turn the cards to count the images and match with the corresponding number cards. I started my work of implementing multiple datasets to memory activities with this activity. To do this I needed to change the logic of the code to support both the default datasets and the multiple datasets. I made the required changes to the code and after implementing multiple datasets there was an issue in case of just two images so I updated the condition which checks that the resources of images, sounds, texts are enough to load a particular level or not. There is a total of 8 multiple datasets for this activity. <br> Below image shows the dataset screen for Enumeration memory game activity</p> <p><img src="//" alt="enumeration-multiple-datasets"></p> <p>After implementing multiple datasets for this activity there was a regression that affected all memory activities as a blank activity config was displayed for activities with no multiple datasets. I fixed this too and pushed the changes to my branch for review. Once I had everything perfectly done and tested, I made a merge request from my working branch so that it could be merged to master.</p> <h3 id="addition-memory-game">Addition memory game</h3> <p>In this activity, the child needs to turn the cards to match an addition and its result, until all the cards are gone. The goal of this activity is to practice addition. After the implementation of multiple datasets for enumeration memory games it’s not that difficult to add multiple datasets for other memory activities as we just need to create different Data.qml files in the resource directory and load the datasets. For this activity we need to use the function getAddTable() implemented in math_util.js and pass the arguments for the respective numbers. In this activity there is a total of 10 multiple datasets. This activity has two mode as a second mode “with Tux” so I have implemented multiple datasets for this too. The dataset content of the activity Addition memory games with Tux is the same as without Tux. Once I have implemented the datasets for both modes, I made a merge request from my working branch.</p> <p>Code of Data.qml file</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import GCompris 1.0 import "qrc:/gcompris/src/activities/memory/math_util.js" as Memory Data &#123; objective: qsTr("Addition table of 1.") difficulty: 4 data: [ &#123; // Level 1 columns: 5, rows: 2, texts: Memory.getAddTable(1) } ] } </code></pre></div></div> <p>You can see that the content of the dataset is in json format. And to just add another multiple dataset we need to change the number from 1 to 2 and update the goal. Quite easy to add ten multiple datasets :)<br> Below image shows the dataset screen for Addition memory game activity</p> <p><img src="//" alt="addition-memory-games"></p> <h3 id="subtraction-memory-game">Subtraction memory game</h3> <p>In this activity, the child needs to turn the cards to match an subtraction and its result, until all the cards are gone. The goal of this activity is to practice subtraction. The datasets implementation procedure is same as for addition memory game just we need to use the getSubTable() function from math_util.js. This activity also have two modes so I have implemented multiple datasets to both mode.<br> Below image shows the dataset screen for Subtraction memory game activity</p> <p><img src="//" alt="subtraction-memory-games"></p> <h3 id="multiplication-memory-game">Multiplication memory game</h3> <p>In this activity, the child needs to turn the cards to match an multiplication and its result, until all the cards are gone. The goal of this activity to practice multiplication. The dataset implementation procedure is the same as for addition and subtraction memory game just we need to use the getMulTable() function from math_util.js. This activity also have two modes so I have implemented multiple datasets to both mode.<br> Below image shows the datasets screen for Multiplication memory game activity</p> <p><img src="//" alt="multiplication-memory-games"></p> <h3 id="whats-next">What’s next?</h3> <p>I will further work on the implementation of multiple datasets to division memory games activity and other memory activities. As our project is moving to KDE Gitlab instance. I will be push all of my further work there only on a different git branch for each activity group</p> <p>Regards<br> Deepak Kumar</p> Deepak Kumar KSnip and Spectacle Thu, 02 Jul 2020 22:00:00 +0000 <p>I have two screenshot applications installed – <a href="">KSnip</a> and <a href="">Spectacle</a> – because they offer different, and independently useful, functionality. Here’s some notes on what each does well.</p> <blockquote> <p>Spectacle has been in the FreeBSD ports collection for some time now, since it ships as part of the KDE release service.</p> <p>KSnip was recently added to the FreeBSD ports collection: we already had KColorPicker as a dependency for Spectacle, so packaging up the rest of the stack from Damir was a natural next-step.</p> </blockquote> <h2 id="ksnip">KSnip</h2> <p>The <strong>biggest</strong> reason I have for KSnip is the multiple-screenshots-in-tabs feature it has. Like any other document reader, it has tabs and you can switch between them relatively quickly. I use this particularly for keeping track of visual changes while developing Calamares: by screenshotting the Calamares window repeatedly, I can see what changes (for instance, while doing screen-margin tweaks for mobile).</p> <p><img src="//" alt="KSnip in Action" class="inline-image"></p> <p>Switching back-and-forth between the tabs gives me a “pixels moved” sense, and that’s really useful. KSnip’s wide selection of annotation tools – it’s nearly a specialized drawing application – helps, too: I tell people to draw big red arrows on screenshots pointing to problems (because describing things is difficult, and a glaring visual glitch to you may be totally invisible to me).</p> <p>With KSnip, adding detail to a screenshot is child’s play.</p> <p>That’s not to say that KSnip doesn’t have its issues. But a blog post is not a place to complaing about someone else’s Free Software: the issue tracker is (with constructive bug reports, not complaints).</p> <h2 id="spectacle">Spectacle</h2> <p>Spectacle on the other hand integrates more nicely with my Plasma desktop on the whole, can screenshot pop-ups and tooltips and understands weird screen geometry.</p> <p><img src="//" alt="Spectacle shot" class="inline-image"></p> <p>I end up using Spectacle more for the “quick screenshot needed” part of writing blogs, and sometimes for sharing bits of screen where no annotations are needed.</p> <p>With Spectacle, delivering or sharing the screenshot is simple.</p> <blockquote> <p>Overall, I like having two applications that each do their own thing, and do their thing pretty well. Since the <strong>shared</strong> code stack is enormous, each of the two applications is only small: less than 1MB. That’s a small price for specialization.</p> </blockquote> Adriaan de Groot ([ade]) Bringing modern process management to the desktop Wed, 01 Jul 2020 13:03:58 +0000 <p>A desktop environment's sole role is to connect users to their applications. This includes everything from launching apps to actually displaying apps but also managing them and making sure they run fairly. Everyone is familiar the concept of a "Task manager" (like ksysguard), but over time they haven't kept up with the way applications are being developed or the latest developments from Linux.</p> <h1>The problem</h1> <h2>Managing running processes</h2> <p>There used to be a time where one PID == one "application". The kwrite process represents Kwrite, the firefox process represents Firefox, easy. but this has changed. To pick an extreme example:<br> <strong>Discord in a flatpak is 13 processes!</strong></p> <p>It basically renders our task manager's process view unusable. All the names are random gibberish, trying to kill the application or setting nice levels becomes a guessing game. Parent trees can help, but they only get you so far.</p> <p>It's unusable for me, it's probably unusable for any user and gets in the way of feeling in control of your computer.</p> <p>We need some metadata.</p> <h2>Fair resource distribution</h2> <p>As mentioned above discord in a flatpak is 13 processes. Krita is one process.</p> <ul> <li>One will be straining the CPU because it is a highly sophisticated application doing highly complicated graphic operations</li> <li>One will be straining the CPU because it's written in electron</li> </ul> <p>To a kernel scheduler all it would see are 14 opaque processes. It has no knowledge that they are grouped as two different things. It won't be able to come up with something that's fair.</p> <p>We need some metadata.</p> <p>(caveat: Obviously most proceses are idling, and I've ignored threads for the purposes of making a point, don't write about it)</p> <h2>It's hard to map things</h2> <p>Currently the only metadata of the "application" is on a window. To show a user friendly name and icon in ksysguard (or any other system monitor) we have to fetch a list of all processes, fetch a list of all windows and perform a mashup. Coming up with arbitrary heuristics for handling parent PIDs which is unstable and messy.</p> <p>To give some different real world examples:</p> <ul> <li>In plasma's task manager we show an audio indicator next to the relevant window, we do this by matching PIDs of what's playing audio to the PID of a window. Easy for the simple case... however as soon as we go multi-process we have to track the parent PID, and each "fix" just alternates between one bug and another.</li> <li>With PID namespaces apps can't correctly report client PIDs anymore.</li> <li>We lose information on what "app" we've spawned. We have bug reports where people have two different taskmanager entries for "Firefox" and "Firefox (nightly)" however once the process is spawned that information is lost - the application reports itself as one consistent name and our taskbar gets confused.</li> </ul> <p>We need some metadata.</p> <h1>Solution!</h1> <h2>This is a solved problem!</h2> <p>A modern sysadmin doesn't deal in processes, but cgroups. The cgroup manager (which will be typically systemd) spawns each service as one cgroup. It uses cgroups to know what's running, the kernel can see what things belong together. </p> <p>On the desktop flatpaks will spawn themselves in cgroups so that they can use the relevant namespace features.</p> <p>You're probably already using cgroups. As part of a <a href="">cross-desktop effort</a> we want to bring cgroups to the entire desktop.</p> <h2>Example</h2> <p>Before and after of our system monitor<br> <a href=""><img src="//" alt=""></a></p> <p><a href=""><img src="//" alt=""></a></p> <p>Ultimately the same data but way easier to read..</p> <h1>Slices</h1> <p>Another key part of cgroup usage is the concept of slices. Cgroups are based on a heirachical structure, with slices as logical places to split resource usage. We don't adjust resources globally, we adjust resources within our slice, which then provides information to the scheduler.</p> <p><a href=""><img src="//" alt=""></a></p> <p>Conceptually you can imagine that we just adjust resources within our level of a tree. Then the kernel magically takes care of the rest.</p> <p>More information can be found on slices in this excellent series <a href=""> World domination with cgroups</a>.</p> <h2>Default slices</h2> <p>This means we can set up some predefined slices. Within the relevant user slice this will consist shared of</p> <ul> <li>applications</li> <li>the system (kwin/mutter, plasmashell)</li> <li>background services (baloo, tracker)</li> </ul> <p>Each of these slices can be given some default prioritisations and OOM settings out of the box.</p> <h2>Dynamic resource shifting</h2> <p>Now that we are using slices, and only adjusting our relative weight within the slice, we can shift resource priority to the application owning the focused window.</p> <p>This only has any effect if your system is running at full steam from mulitple sources at once, but it can provide a slicker response at no drawback.</p> <h2>Why slice, doesn't nice suffice?</h2> <p>Nice is a single value, global across the entire system. Because of this user processes can only be lowered, but never raised to avoid messing with the system. With slices we're only adjusting relative weight compared to services within our slice. So it's safe to give the user full control within their slice. Any adjustments to an application, won't impact system services or other users.</p> <p>It also doesn't conflict with nice values set by the application explicitly. If we set kdevelop to have greater CPU weight, clang won't suddenly take over the whole computer when compiling.</p> <h1>Fixing things is just the tip of the iceberg</h1> <h2>CGroup extra features</h2> <p>CGroup's come with a lot of new features that aren't available on a per-process level. </p> <p>We can:</p> <ul> <li>Set limits so that a CPU can't use more than N% </li> <li>We can gracefully close processes on logout</li> <li>We can disable networking</li> <li>We can set memory limits</li> <li>We can prevent forkbombs</li> <li>We can provide hints to the OOM killer not just with a weight but with expected ranges that should be considered normal</li> <li>We can freeze groups of processes (which will be useful for Plasma mobile)<br> ... </li> </ul> <p>All of this is easy to add for a user / system administrator. Using drop in's one can just add a .service file [example file link] to ~/.config/systemd/user.control/app-firefox@.service and manipulate any of these.</p> <p>[caveat, some of those features works for applications created as new transient services, not the lite version using scopes that's currently merged in KDE/Gnome - maybe worth mentioning]</p> <h1>Steps taken so far</h1> <p>Plasma 5.19 and recent Gnome now spawn applications into respective cgroups, but we're not yet surfacing the results that we can get from this.</p> <p>For the KDE devs providing the metadata is easy.</p> <p>If spawning a new application from an existing application be sure to use either <a href=""><code>ApplicationLauncherJob</code></a> or <a href=""><code>CommandLauncherJob</code></a> and set the respective service. Everything else is then handled automagically. You should be using these classes anyway for spawning new services.</p> <p>For users, you can spawn an application with either <code><code>kstart5 --application foo.desktop"</code></code></p> <p>That change to the launching is relatively tiny, but getting to this point in Plasma wasn't easy - there were a lot of edge cases that messed up the grouping correctly.</p> <ul> <li>kinit, our zygote process really meddled with keeping things grouped correctly</li> <li>drkonqi, our crash handler and application restarter</li> <li>dbus activation has no knowledge of the associated .desktop file if an application is DBus activated (such as spectacle our screenshot tool)</li> <li>and many many more papercuts throughout of different launches</li> </ul> <p>Also to fully capitalise on slices we need to move all our background processes into managed services and slices. This is worthy of another (equally lengthy) blog post.</p> <h2>How you can help?</h2> <p>It's been a battle to find these edge cases.<br> Whilst running your system, please run systemd-cgls and point out any applications (not background services yet) that are not in their appropriate cgroup.</p> <h1>What if I don't have an appropriate cgroup controller?</h1> <p>(e.g BSD users)</p> <p>As we're just adding metadata, everything used now will continue to work exactly as it does now. All existing tools work exactly the same. Within our task manager we still will keep a process view (it's still useful regardless) and we won't put in any code that relies on the cgroup metadata present. We'll keep the existing heuristics for matching windows with external events, cgroup metadata would just be a strongly influence factor in that. Things won't get worse, but we won't be able to capitalise on the new features discussed here, </p> David Edmundson Google Summer of Code 2020 – week 4 and 5 Wed, 01 Jul 2020 04:11:04 +0000 <p>Hi, today I will talk about my week 4 and week 5 and bring some news!</p> <p>The last post was short but this one will make up for it, explaining some important bits, and changes, in the structure of mark that changed/improved during the first month of coding in GSoC.</p> <p>In week 4, I documented a huge part of the existing code, although there is still a need for some updates. Currently in week 5, I am fixing some bugs of the new logic and I will document the newly created Painter class (more information below), also start developing the logic for text annotation.</p> <p>The structure of marK had some changes that I had like to highlight and explain. this diagram represents the current structure, with marK also being the main window class.</p> <figure class="wp-block-image"><img src="//" alt=""><figcaption>Current relationship of classes.</figcaption></figure> <p>Container was an abstract class and its children handled the loading of the necessary items, such as the image for the previous ImageContainer and text for the to be TextContainer, and also annotate the data. After talking with my mentor, we decided that it could change for better and be simpler.</p> <p>Now marK has only one Container, this one is a “canvas” to the Painter and he will be switched accordingly to the file type, the painters now are the ones responsible for load and display the contents of the files, and also handle the annotation of data.</p> <p>The container holds the current MarkedObject being annotated and also a vector of the previous ones. With this change the code is smaller and it is easier and faster to change between different types of annotation.</p> <figure class="wp-block-image size-large"><img data-attachment-id="136" data-permalink="" data-orig-file="" data-orig-size="703,219" data-comments-opened="1" data-image-meta='&#123;"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="markedobjectdiagram4" data-image-description="" data-medium-file="" data-large-file="" src="//" alt="" class="wp-image-136" srcset=" 703w, 150w, 300w" sizes="(max-width: 703px) 100vw, 703px"><figcaption>Children of MarkedObject, each one represents, respectively, audio, image (and video) and text annotation.</figcaption></figure> <p>MarkedObject represents the annotated data. Each MarkedObject has a reference of a MarkedClass, and use it to have a color and identifier for the annotation. It also uses d pointer to avoid problems related to ABI changes (as I said in the previous post).</p> <p>The existing markedClasses are shown in the marK’s comboBox, being possible to select and also modify the name identifier and color. Allowing the user to personalize and edit accordingly to his needs.</p> <p>Serializer is responsible for reading and saving the MarkedObjects resulted from the annotation in marK. Its functions have been refactored to support text annotation (and others types of annotation). Currently, serializer only exports to two file formats, xml and json.</p> <figure class="wp-block-image"><img src="//" alt=""><figcaption>Existing and futures children of Painter.</figcaption></figure> <p>Painter is the base class of all Painters and is friend of the Container, as said before, it takes over the responsibility of the containers (of the previous logic). There will be a derived class for each type of annotation (such as the ones shown above). Currently, only ImagePainter exists and works but this month I will develop the TextPainter and change this.</p> <p>In the next post I will explain about the TextPainter and show the initial text annotation in marK.</p> <p>That is it, see you in the next post ; )</p> Jean Lima Andrade Plasma 5.19 testing in Groovy Gorilla Tue, 30 Jun 2020 14:34:49 +0000 <p>Are you running the development release of Kubuntu Groovy Gorilla 20.10, or wanting to try the daily live ISO?</p> <p>Plasma 5.19 has now landed in 20.10 and is available for testing. You can read about the new features and improvements in Plasma 5.19 in the <a href="">official KDE release announcement</a>.</p> <figure class="wp-block-image"><img src="//" alt="" class="wp-image-4444"></figure> <p>Kubuntu is part of the <a href="">KDE community</a>, so this testing will benefit both Kubuntu as well as upstream KDE Plasma software, which is used by many other distributions too.</p> <p><strong>The Kubuntu development release is not recommended for production systems. If you require a stable release, please see our LTS releases on </strong><a href=""><strong>our downloads page</strong></a><strong>.</strong></p> <p><strong>Getting the release:</strong><br><br>If you are already running Kubuntu 20.10 development release, then you will receive (or have already received) Plasma 5.19 in new updates.<br><br>If you wish to test the live session via the daily ISO, or install the development release, the daily ISO can be obtained from <a href="">this link</a>.</p> <p><strong>Testing:</strong></p> <ul> <li>If you believe you might have found a packaging bug, you can use a <a href=""></a> to post testing feedback to the Kubuntu team as a bug, or;</li> <li> If you believe you have found a bug in the underlying software, then <a href=""></a> is the best place to file your bug report.</li> </ul> <blockquote class="wp-block-quote"><p>[Test Case]<br>* General tests:<br>– Does plasma desktop start as normal with no apparent regressions over 5.18 or whatever version you are familiar with?<br>– General workflow – testers should carry out their normal tasks, using the plasma features they normally do, and test common subsystems such as audio, settings changes, compositing, desktop affects, suspend etc.<br>* Specific tests:<br>– Check the changelog in the KDEannouncement:<br>– Identify items with front/user facing changes capable of specific testing. e.g. “clock combobox instead of tri-state checkbox for 12/24 hour display.”<br>– Test the ‘fixed’ functionality.</p></blockquote> <p>Testing is very important to the quality of the software Ubuntu and Kubuntu developers package and release.<br><br>Plasma 5.19 has 3 more scheduled bugfix releases in the coming months, so by testing you can help to improve the experience for Kubuntu users and the KDE community as a whole.<br><br>Thanks! Please stop by the <a href="irc://">Kubuntu-devel IRC channel</a> or <a href="">Telegram group</a> if you need clarification of any of the steps to follow.</p> <p><em>Note: Plasma 5.19 has not currently been packaged for our backports PPA, as the release requires Qt &gt;= 5.14, while Kubuntu 20.04 LTS has Qt 5.12 LTS. Our </em><a href=""><em>backports policy for KDE packages to LTS releases</em></a><em> is to provide them where they are buildable with the native available stack on each release.</em></p> <p> [1] – irc://<br> [2] –<br> [3] –</p> Kubuntu News 4436 at KDE's GitLab is now Live Tue, 30 Jun 2020 08:28:04 +0000 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"> <!-- <figure class="topImage"><p> <a href="" data-toggle="lightbox"><br /> <img src="//" style="display: block; margin-left: auto; margin-right: auto; width: 60%; height: auto;" alt="Plasma 5.19" /><br /> </a><br /> </figure><br /> --> <p><figure style="float: right; padding: 1ex; margin: 1ex; width: 400px"><br> <a href="" data-toggle="lightbox"><br> <img class="img-fluid" src="//"><br> </a><br> </figure> </p> <p>After our final decision to adopt <a href="">GitLab</a> in November 2019, KDE started the work of tackling the many challenges that come with moving a whole development platform for a large open source community. KDE has now officially completed Phase One of the adoption and contributors have begun to use GitLab on a daily basis.</p> <h2>Why did we migrate to GitLab?</h2> <p>By switching to GitLab we will be offering our community one of the most popular and latest, fully-featured, actively developed, and supported DevOps platforms in existence today. This will contribute to boosting collaboration and productivity, and making our workflow more transparent and accessible to everyone who wants to contribute.</p> <h2>How will it benefit the wider community?</h2> <p>By using a platform offering an interface that most open source developers are nowadays familiar with, we will be lowering the bar for new contributors to join us, and providing a way for our community to continue to grow even faster in the coming years.</p> <p>GitLab will also help us to achieve goals like "Consistency", as it will help our community members have a single solution to their needs. Now, we will be able to host and review code, manage projects/issues, communicate, collaborate, and develop software/applications on a single platform.</p> <p>By adopting GitLab as a platform, we will be adding stability to our framework, as we will count on the support of GitLab as a company. GitLab, Inc. has nearly a decade of experience behind it, releases new versions on a regular basis and, apart from its in-house team, counts on an active community of third party contributors. This guarantees that our new development platform will be updated and maintained throughout the years.</p> <p>KDE has migrated to GitLab and our instance is now live. Start discovering projects, groups and code on by visiting <a href=""></a>.</p> <p>You can read more about this migration on <a href="">GitLab's blog</a>.</p> <!--break--> </div></div></div> KDE Dot News Review Report 1 Tue, 30 Jun 2020 00:00:00 +0000 <h1 id="gsoc-review-1---qt3d-based-backend-for-kstars">GSoC Review 1 - Qt3D based backend for KStars</h1> <p>In the fourth week of GSoC, I worked on adding support for Skybox which supports the projection modes implemented last week. I also added the grid implementation in KStars based on the prototype.</p> <h2 id="whats-done-this-week">What’s done this week</h2> <ul> <li> <p>Custom Skybox and Skybox shaders for Lambert, Azimuthal, Orthographic, Equirectangular, Stereographic and Gnomic projections.</p> </li> <li> <p>Custom Window3D class extending Qt3DWindow for mouse movements.</p> </li> <li> <p>Equatorial grid based on the prototype.</p> </li> </ul> <h2 id="the-challenges">The Challenges</h2> <ul> <li> <p>Integration issues with the original SkyPainter API written to support multiple backends - Had to prototype outside of KStars.</p> </li> <li> <p>Had to remove QCamera and first person controllers since they don’t conform to projection modes we use.</p> </li> <li> <p>Switching SkyQPainter’s 2D projector class to GLSL.</p> </li> </ul> <h2 id="what-remains">What remains</h2> <p>My priorities for the next week include.</p> <ul> <li> <p>Adding mouse input.</p> </li> <li> <p>Display of basic star catalog.</p> </li> </ul> <h2 id="demo">Demo</h2> <p><img src="./../assets/posts/images/week-4-1.png" alt="Skybox Projection - Lambert"> <img src="./../assets/posts/images/week-4-2.png" alt="Equatorial Grid - Lambert"></p> <h2 id="the-code">The Code</h2> <ul> <li><a href="">Celestial Sphere Prototype</a></li> <li><a href="">My fork for KStars</a></li> </ul> Paritosh Sharma