tag:blogger.com,1999:blog-3179343626011295552023-11-16T08:50:34.033-07:00Ramblings of a software engineerHere I share stories of things I'm working on or have worked on recently. I enjoy contributing to open source software, so most posts will be related to that.<br>
I also post a chinese word every day <a href="https://zhwotd.blogspot.com">here</a>.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.comBlogger83125tag:blogger.com,1999:blog-317934362601129555.post-58428851572939350212019-04-16T09:55:00.002-06:002019-04-16T09:55:29.545-06:00Uninitialized member variablesDear lazyweb,<br />
<br />
In the past week or so I've been bitten twice by failing to initialize member variables in a C++ class's constructor. So I went looking for compiler options, static analyzers, etc. to tell me when I fail to do this. So far I've found nothing that correctly reports to me that I forgot to add m_foobar initialization to my constructor. /Wall on msvc -Weff-c++, cppcheck, etc. all fail me here. Isn't there something out there that will say "Jeremy, you dork, you forgot to initialize m_startCount as 0, you'll get garbage" (sometimes and only on M$ Windows, but still) ?Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com1tag:blogger.com,1999:blog-317934362601129555.post-90083307998812023412016-09-22T10:09:00.000-06:002016-09-22T10:09:05.344-06:00GSettings vs QSettingsA few weeks ago after discussing with Luke Yelavich about what to work on in speech-dispatcher next I decided to take a stab at making it use GSettings for its settings. (You can see the work in progress <a href="https://github.com/TheMuso/speechd-wip/tree/wip/gsettings-migration">here</a> if you like.) I've used GSettings before for work projects so thought it would be a good/easy thing to take on.<br />
<br />
There are many advantages of using GSettings over plain ini-style files.<br />
<ul>
<li>Type checking (You can't enter a string for a numeric setting for example).</li>
<li>Notification of setting changes.</li>
<li>Command-line changing of settings.</li>
<li>Default values for settings defined in the schema(s).</li>
</ul>
<br />
On that wip branch speech-dispatcher itself has been changed to use GSettings and also reacts to many setting changes dynamically. It doesn't react to changing the port type or port number or unix socket path dynamically, since we have no mechanism to tell client applications that it is changing. There are also GSettings schemas for the output modules, just need to make them read their settings from GSettings instead of the old ini-style .conf files. spd-conf also has been modified to write to GSettings rather than .conf files. That change alone reduced the spd-conf python script by quite a few lines of code and made it a lot easier to read.<br />
<br />
As I was doing this work I got thinking about the differences between GSettings and QSettings. Besides one being glib/c based and the other being Qt/C++ they are really pretty similar. There are a few differences though:<br />
<ul>
<li>QSettings doesn't emit signals when a setting changes. (I found a few forum posts asking why this is with possible workarounds. Nothing built into QSettings though).</li>
<li>QSettings doesn't have a schema for the settings themselves. There's no way to introspect a setting file to see what settings are possible. It just depends what keys the application reads.</li>
<li>QSettings doesn't have a command-line tool to set the settings. Since QSettings is cross platform it uses the Registry by default on Windows, PList files by default on macOS, and ini-style files on linux</li>
<li>QSettings does have type checking, but no range checking or anything like that.</li>
</ul>
<br />
I was a bit disappointed that QSettings that I've used for many many years is lacking these seemingly obvious and probably useful features. I wonder if we as a community implemented these features in QSettings if the Qt company would accept them.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com14tag:blogger.com,1999:blog-317934362601129555.post-9956212492310835062016-08-09T17:38:00.000-06:002016-08-10T14:40:00.410-06:00I'm hereIt's been over a year since I posted anything. That's way too long. So what's going on in the projects I care about lately?<br />
Speech-dispatcher will soon have a 0.8.5 release. There's a set of patches in the works on a branch on <a href="https://github.com/TheMuso/speechd-wip">github </a> that moves the audio to the server so we will be able to do useful things like label each pulse audio output with the client application name rather than a generic sd_espeak, sd_pico name for each output module. This way you'll see stuff like "Konsole speech", "Konversation speech" etc. volume controls for the speech volume control of the application's speech output. In order for this to work some other refactoring needs to be done in the espeak and other modules so stopping audio playback will be immediate etc.<br />
QtSpeech has had some work done. The android and windows versions have been seeing some love lately. I'm optimistic that it can be included in an upcoming Qt release. Though I'm not sure why it hasn't been included yet.<br />
KMouth has been waiting a QtSpeech release in order for it's kf5/qt5 branch to be merged to master.<br />
KNewStuff could use some work. There was talk at a recent conference about adding the properties and such necessary for it to be used from QML. I'll follow up on that and see what has become of it.<br />
All in all I feel like I haven't been around as much in the above projects as I'd like to have been. Life is busy and work is busy and such. I plan to spend a bit more time on these though. Even if it means I get slightly less sleep. Looking forward to a good rest of the year.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com2tag:blogger.com,1999:blog-317934362601129555.post-19552380196991691362015-06-11T19:15:00.001-06:002015-06-11T19:15:57.457-06:00Speech Dispatcher 0.8.3 is outSpeech Dispatcher 0.8.3 is out now. I'll shamelessly post the release announcement e-mail below, but with this you can build and use QtSpeech for linux from the dev branch of qtspeech. It contains all the api QtSpeech requires for it's speech capabilities (QtSpeech is an optional dependency of knotifyconfig, knotifications, kanagram, khangman, and okular (frameworks version) as well as the replacement for Jovie.<div>
<br /></div>
<div>
<span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">Speech Dispatcher 0.8.3</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">=====================</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">Announcing the availability of Speech Dispatcher 0.8.3 developed as a part of</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">the Free(b)Soft project.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">* What is new in 0.8.3?</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Add API methods to get language, rate, pitch, and volume.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - A lot of code cleanup, and compatibility improvements.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Removed all references to GNOME Speech, since it has long since been</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> deprecated.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Fix some inconsistancy in the SSIP API for voice type.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - The SET VOICE SSIP command is now deprecated, and will be removed in 0.9.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - The C library API now provides macro definitions for major, minor, and micro</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> versions in libspeechd_versions.h.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - The libsndfile library is now a mandetory dependency to improve the user</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> experience around sound icons.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Fix a possible crash in the festival driver.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Add a configuration option to the espeak driver to show voice variants in</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> the voice list. This will remain until a proper variants retrieval API is</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> added for compatible synthesizers.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">* Where to get it?</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> You can get the distribution tarball of the released version from</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> </span><a href="http://www.freebsoft.org/pub/projects/speechd/speech-dispatcher-0.8.3.tar.gz" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8000001907349px;" target="_blank">http://www.freebsoft.org/pub/<wbr></wbr>projects/speechd/speech-<wbr></wbr>dispatcher-0.8.3.tar.gz</a><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> We recommend the use of sound icons with Speech Dispatcher.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> They are available at</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> </span><a href="http://www.freebsoft.org/pub/projects/sound-icons/sound-icons-0.1.tar.gz" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8000001907349px;" target="_blank">http://www.freebsoft.org/pub/<wbr></wbr>projects/sound-icons/sound-<wbr></wbr>icons-0.1.tar.gz</a><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> Corresponding distribution packages should soon be available at</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> your distribution mirrors.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> The home page of the project is </span><a href="http://www.freebsoft.org/speechd" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8000001907349px;" target="_blank">http://www.freebsoft.org/<wbr></wbr>speechd</a><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">* What is Speech Dispatcher?</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> Speech Dispatcher is a device independent layer for speech</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> synthesis, developed with the goal of making the usage of speech</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> synthesis easier for application programmers. It takes care of most</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> of the tasks necessary to solve in speech enabled applications. What</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> is a very high level GUI library to graphics, Speech Dispatcher is</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> to speech synthesis.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> Key Speech Dispatcher features are:</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Message priority model that allows multiple simultaneous</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> connections to Speech Dispatcher from one or more clients</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> and tries to provide the user with the most important messages.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Different output modules that talk to different synthesizers so</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> that the programmer doesn't need to care which particular</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> synthesizer is being used. Currently Festival, Flite, Epos, Espeak</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> and (non-free) Dectalk software, IBM TTS, Pico and others are</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> supported. Festival is an advanced Free Software synthesizer</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> supporting various languages. Espeak is a very fast multi-lingual</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> Free Software synthesizer.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> - Simple interface for programs written in C, C++ provided through a</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> shared library. Python, Common Lisp and Guile interfaces. An Elisp</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> and Java libraries are developed as sperate projects speechd-el</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> and speechd-java. Possibly an interface to any other language can</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> be developed.</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">* How to report bugs?</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> Please report bugs at </span><a href="https://its.freebsoft.org/its/issues/project/1876" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8000001907349px;" target="_blank">https://its.freebsoft.org/its/<wbr></wbr>issues/project/1876</a><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> .</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> For other contact please use either the above link or our mailing list</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"> <</span><a href="mailto:speechd@lists.freebsoft.org" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8000001907349px;">speechd@lists.freebsoft.org</a><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">> .</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">Happy synthesizing!</span></div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-73686656760433506822015-05-05T18:39:00.002-06:002015-05-05T18:39:45.890-06:00KMouth is alive and wellI meant to have a post about Gardening efforts next, but KMouth is improving lately, so I'll throw out a quick post about progress.<br />
<br />
KMouth master branch is now Qt3 free. It's still using K3Process for the speech synthesizer command-line calls, but all Qt3Support is gone.<br />
<br />
In other news I started a quick Qt5/kf5/QtSpeech port of it on the frameworks branch. It runs, it speaks (with a bug <a href="https://codereview.qt-project.org/#/c/111799/" target="_blank">fix</a> in gerrit for QtSpeech).<br />
<br />
It looks like this currently:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-wzpwQxsaydgsDZGAbqhuzBxIR-6ct5p5llS5p8PeTF6DAC3vmcWb_TMnz_2iN6lwtdP7Hje0cmU41cPLAof8mCLt7rAt5XzpyII4p5hHmJFV3q2PcIWlWrY9Gz6j8gPM3dpKkeJeHY/s1600/kmouthalive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-wzpwQxsaydgsDZGAbqhuzBxIR-6ct5p5llS5p8PeTF6DAC3vmcWb_TMnz_2iN6lwtdP7Hje0cmU41cPLAof8mCLt7rAt5XzpyII4p5hHmJFV3q2PcIWlWrY9Gz6j8gPM3dpKkeJeHY/s1600/kmouthalive.png" height="233" width="320" /></a></div>
<br />
There's definitely room for improvement, but it's a good start I think. Note this wont be hitting master until after QtSpeech gets a release and KDE Applications depend on it (probably Qt 5.6).Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-67360914722224410322015-04-23T20:03:00.000-06:002015-04-23T20:03:37.670-06:00Dusting KMouthBesides gardening lately (more on that next time) lately I've been looking into what needs and used to use KSpeech/KTTS/Jovie. As QtSpeech will replace the functionality Jovie provided I thought I'd look at what needs doing to get stuff using QtSpeech.<div>
<br /></div>
<div>
Okular's frameworks branch (or maybe it's been merged to master by now, not sure) is optionally using QtSpeech.</div>
<div>
KNotifyConfig and KNotification are optionally using QtSpeech as of the last frameworks release already.</div>
<div>
KHangMan and KAnagram have been using QtSpeech optionally since December of last year or so.</div>
<div>
<br /></div>
<div>
This leaves the big one, KMouth. Unfortunately KMouth has been bitrotting since about 2006 or so. All commits since have been minor or bug fixes. Many because KFoo classes changed and were used in KMouth. It's master branch still uses Qt3Support and K3ListItem, etc.</div>
<div>
<br /></div>
<div>
I started a couple of months ago to start porting it away from Qt3Support and K3* so it can be ported to Qt5 and QtSpeech, but it's been a long slow process. Current progress can be seen on the noqt3support branch, but even the last commit there is from a couple of months ago. Part of the trouble has been getting the PhraseBookDialog with it's accompanying model and treeview to work as it used to including drag and drop, copy/paste, import, export, save/load, etc.. Many bug fixes are also in the works, and I am positive it will be better than before once it's done, but it's taking time since I don't want to break loading phrasebook files of any existing users (If there are any out there, please shout, I'd love to hear from you about how you use KMouth).</div>
<div>
<br /></div>
<div>
Once KMouth is ported to QtSpeech I believe most/all users of the old KSpeech dbus api will be safely using the new QtSpeech library.</div>
<div>
<br /></div>
<div>
P.S. Once it's ported to Qt5/KF5 and QtSpeech KMouth could use some updating. A couple of years ago I saw a fancy speech application on the evening news that enabled a young man to speak with his family by tapping icons on an ipad which then spoke for him. KMouth could be useful in the same way with a bit of polish in my opinion.</div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-14286744345844372292015-03-31T16:34:00.001-06:002015-03-31T16:34:22.154-06:00Next KDE Gardening project api.kde.org docs.kde.org and englishbreakfastnetwork.org<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
The KDE gardening team has chosen as it's next target for gardening the documentation/api websites. <a href="https://community.kde.org/Gardening/docwebsites" style="color: #1155cc;" target="_blank">https://community.<wbr></wbr>kde.org/Gardening/docwebsites</a> The initial objectives are there on the wiki, but feel free to modify/update them if I got anything wrong or something is already in the works. The general idea is to improve these sites by getting kf5 based applications and libraries (which aren't frameworks themselves) apidocs, documentation, and code checks on these sites as they were in Qt4/KDELibs times. </div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
Another good objective is to make them work faster/better by not recreating everything each day, but only incrementally updating their content somehow if possible. </div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
And finally I'd like to get bug products/components for each of them so if issues are found we, as a community, can track the issues and fix them as a team.</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
The plan is to focus on these over the course of April and May and at the end of May have a gardening day on a saturday to wrap it up like we did on the KRecipes gardening day.</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
P.S. we'll be using #kde-devel for discussion of this project and how to help contribute, come join us and let's get some stuff working better in this area.</div>
<div>
<br /></div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com2tag:blogger.com,1999:blog-317934362601129555.post-29592241487925814402015-03-23T16:02:00.001-06:002015-03-23T16:02:48.372-06:00KRecipes 2.1The KDE Gardening team has at last finished the Love project KRecipes with the 2.1 release which can be found here: http://download.kde.org/stable/krecipes/2.1.0/src/krecipes-2.1.0.tar.xz.mirrorlist<br />
<br />
Enjoy.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-48488374983605707582015-02-28T15:28:00.001-07:002015-02-28T15:28:24.463-07:00node.js experience wantedHello all,<br />
<br />
If there's anyone in the community, or even just reading this blog, that has experience with node.js and a bit of time I would like to recruit you for a special task. The task is to get bodega-server (and maybe the webapp or admin client too if you're so inclined) to actually work again. It worked at some point in the past year from what I hear, but currently it just spews 404 error pages for any api call it gets. I gather that this is because the nodes that it uses have changed their api since it was written. My time is limited and I've poked it enough to not give warnings at runtime anymore, but someone that really knows the ins and outs of node.js could probably fix it much faster than I so I am asking for such a brave soul to come forward and get the next generation software/data/"stuff" distribution system to do so. I know you're out there and you're considering, stop considering, hop on #kde-devel or #kde-www or anywhere on freenode and find me or others trying to get this going. Or just look at the code itself <a href="https://projects.kde.org/projects/extragear/network/bodega-server" target="_blank">here</a> and throw me some pointers.<br />
<br />
I can't promise much except fame, thanks, admiration of your peers, etc. but hopefully that's enough.<br />
<br />
P.S. this couldn't happen soon enough, ocs/attica, knewstuff, and opendesktop/kde-look, etc. are really showing their age. Having bodega working would make a lot of awesome things possible again.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com2tag:blogger.com,1999:blog-317934362601129555.post-49046518557298444452015-02-13T13:35:00.000-07:002015-03-02T19:49:14.768-07:00QtSpeech progressThis week some changes in knotifications/knotifyconfig/kanagram/okular are in the works. The kanagram changes are already on master, the others are in review. Those changes are bringing back the use of text to speech features via the new QtSpeech module. Some have asked what the status of QtSpeech is, so I thought I'd share a bit about it here.<br />
<div>
<br /></div>
<div>
Frederik Gladhorn created the QtTextToSpeech module a while ago as a test to see how feasible it would be to wrap all the platforms Qt is supported on's TTS APIs in one easy to use Qt API. This turned out to be a great idea in my opinion. The predecessor to QtSpeech in KDE applications was Jovie, formerly known as kttsd. While it worked for the most part it required a daemon to be running which spoke with different synthesizers (originally) then was modified to use speech-dispatcher directly instead (when it was renamed to Jovie). QtSpeech on the other hand is a library. If you want to use it, you link to it in your application, create a QTextToSpeech object, and pass any text to speak to it's "say" method. No D-Bus connection required, no daemon required, just a small, light library that wraps the native platform TTS API directly.</div>
<div>
<br /></div>
<div>
As for the status of QtSpeech, I'm afraid it's not quite ready for prime time. It wont likely get added to Qt 5.5 which has feature freeze next Monday. It is however ready to be tested, improved, etc. on each platform. Most of it's API is implemented completely on linux, The basic API (saying text) is implemented on Android, Windows and Mac OS X. Patches are on gerrit to implement the rest of the API (getting available voices, locales, setting the voice) on OS X and will be written soon for Windows also. I plan to spend a bit of time on it each week so it will be ready for release with Qt 5.6 and I hope anyone else interested will join us.</div>
<div>
<br /></div>
<div>
More information about QtSpeech can be found here <a href="http://qt-project.org/wiki/QtSpeech" target="_blank">http://qt-project.org/wiki/QtSpeech</a>. I hope this update has been helpful.<br />
<br />
P.S. Here's a work in progress screenshot of the example widget Frederik created which is inside the QtSpeech git repository as it appears on OS X.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRoKAGarp6QEIaKggnSnO2ehHmF5oZy8z0L6mNXD3yaUnattMjUOLTad7-eZ1EEwtI04kGV-Dfz6DoYHughc-FcJvnPQP50HgJldV66GYKCzolYSEyBSsrpa-iUNJiRi2w40B15bpwP-I/s1600/Screen+Shot+2015-02-13+at+1.34.59+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRoKAGarp6QEIaKggnSnO2ehHmF5oZy8z0L6mNXD3yaUnattMjUOLTad7-eZ1EEwtI04kGV-Dfz6DoYHughc-FcJvnPQP50HgJldV66GYKCzolYSEyBSsrpa-iUNJiRi2w40B15bpwP-I/s1600/Screen+Shot+2015-02-13+at+1.34.59+PM.png" height="272" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Edit: The wiki has been moved apparently. It's now found here: <a href="https://wiki.qt.io/index.php?title=QtSpeech" target="_blank">https://wiki.qt.io/index.php?title=QtSpeech</a></div>
<br /></div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com3tag:blogger.com,1999:blog-317934362601129555.post-55311346900306214072014-12-17T22:08:00.000-07:002015-11-09T07:22:02.237-07:00kdesrc-build is a very useful tool, here's whyI've been thinking for some time about writing a post about my favorite tool for building, rebuilding, testing, fixing random parts of kde software and how I use it (many times a day, depending on the situation).<br />
<br />
For anyone that doesn't know, <a href="https://kdesrc-build.kde.org/" target="_blank">kdesrc-build</a> is a script, written in perl, it lives in <a href="https://projects.kde.org/projects/extragear/utils/kdesrc-build/" target="_blank">extragear/utils/kdesrc-build</a> in the kde project heirarchy and can be cloned from kde:kdesrc-build if you've got your ~/.gitconfig as follows (if you don't you should add it, go add it now, I'll wait):<br />
<br />
<br />
<div>
<span style="font-family: monospace;">[url "git://anongit.kde.org/"]
<br /> insteadOf = kde:
<br />[url "git@git.kde.org:"]
<br /> pushInsteadOf = kde:<br />
</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build is very useful in that running it with no arguments it will build all of your kde stack. This includes all the frameworks (including Qt if you want it to), all library dependencies that come from git.kde.org and all applications. To start using it, just clone it, build it (mkdir build, cd build, cmake ../, make, make install, or sudo make install if you aren't the owner of /usr/local yet) and you can run kdesrc-build from any path your terminal happens to be in. The one thing needed is a .kdesrc-buildrc file to tell it what you want to build, where you want it installed to, which build options etc. you want. This is pretty straightforward though and most of the kde stack is in include files you can add from your .kdesrc-buildrc itself. Mine looks like this:</span></div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<div>
<span style="font-family: monospace;"># Adjust all these settings at will
<br />
<br />global
<br />
<br />
<br /> qtdir /usr
<br /> # qtdir /home/jeremy/devel/kde/src/qt5bulid/qtbase
<br /> source-dir /home/jeremy/devel/kde/src
<br /> build-dir /home/jeremy/devel/kde/build
<br /> kdedir /usr/local
<br />
<br /> git-repository-base kde-projects kde:
<br />
<br /> cxxflags -pipe -DQT_STRICT_ITERATORS -DQURL_NO_CAST_FROM_STRING -DQT_NO_HTTP -DQT_NO_FTP -Wformat -Werror=return-type -Wno-variadic-macros -Wlogical-op
<br /> # WARNING: opensuse users need -DLIB_SUFFIX=64 here, as long as FindKDE4Internal.cmake is used
<br /> # if you're using a distro without "lib64", remove the option.
<br /> # cmake-options -DKDE4_BUILD_TESTS=TRUE -DLIB_SUFFIX=64
<br /> cmake-options -DBUILD_TESTING=TRUE -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_LIBDIR=lib
<br />
<br /> make-options -j8
<br /> #install-session-driver true
<br /> branch-group kf5-qt5
<br />
<br />end global
<br />
<br />include devel/kde/src/extragear/utils/kdesrc-build/kf5-qt5-build-include
<br /><br />
I go back and forth sometimes between distro packaged qt (in /usr) and my own built qt from git (in the other path) so I uncomment the one I want to use in those first few lines.</span></div>
</div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<span style="font-family: monospace;">It's pretty simple and short, set 9 variables, include the kf5-qt5-build-include file and we're good to go. So for me, kdesrc-build with no arguments builds and installs many different kde applications, with their sources nicely organized under ~/devel/kde/src and their build folders easy to delete if needed in ~/devel/kde/build and installs into /usr/local where I have my XDG_* variables set to find applications, libraries, data, default configurations, etc. Also if some part of the workspace becomes deprecated and I need to remove old libraries, .desktop files, and such I can safely (from a terminal, not within X) nuke /usr/local/* and rerun kdesrc-build to rebuild everything that's current.</span></div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<span style="font-family: monospace;">kdesrc-build frameworks - builds all the parts of kf5 itself.</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build kdeedu - builds all the libraries and applications that have been ported to qt5/kf5 from kdeedu.</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build --no-src kanagram - builds kanagram with my local changes for testing before committing the next feature, also useful to test patches from reviewboard (download, patch, kdesrc-build --no-src foo to build/install, run to test).</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build --no-src khangman - builds whatever I've got checked out in kde/kdeedu/khangman at the time (currently an almost complete gsoc student's qml ui of <a href="http://quickgit.kde.org/?p=clones%2Fkhangman%2Frahulc%2Fmyclone.git&a=shortlog&h=5757b22575c95db7a35b4882965885416d91e0c0" target="_blank">khangman from his branch</a>).</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build --refresh-build - rebuilds everything with clean build folders using the cmake options from your .kdesrc-buildrc file, this is useful if you change these options and want to test them</span></div>
<div>
<span style="font-family: monospace;">kdesrc-build --refresh-build --no-src foo - rebuilds everything with a clean build and doesn't do any git updates, only tries to build what's on your local clone, this is useful when porting applications to kf5/qt5 to make sure cmake is reran when trying a build of local changes.</span></div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<span style="font-family: monospace;">A good thing to know is that errors are all logged, and you can check them simply by checking source-dir/log/latest/foo/error.log (which symlinks to cmake.log, build.log, or install.log, depending where the error was).</span></div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<span style="font-family: monospace;">One more nice thing, since kdesrc-build uses kde-project-metadata it can guess some projects from their location on projects.kde.org. So even if I don't have skrooge or some other extragear application in my .kdesrc-buildrc file or it's not in the included kf5-qt5-build-include file or whatnot, kdesrc-build skrooge will guess where skrooge comes from and clone it to the proper place in the heirarchy and build it.</span></div>
<div>
<span style="font-family: monospace;"><br /></span></div>
<div>
<span style="font-family: monospace;">In summary, kdesrc-build is useful for what it was created for, building the kde stack of software with your preferences.</span></div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com2tag:blogger.com,1999:blog-317934362601129555.post-54391068066091503922014-11-26T19:02:00.003-07:002014-11-26T19:02:52.714-07:00Gardening RecipesYou thought this would have something to do with working outside and/or cooking something. You were wrong.<br />
<br />
As <a href="http://tsdgeos.blogspot.com/2014/11/kde-gardening-love-project-krecipes.html" target="_blank">Albert</a> blogged previously the KDE gardening team's love project this time is <a href="https://community.kde.org/Gardening/KRecipes" target="_blank">KRecipes</a>.<br />
The mailing list has been moved.<br />
The website content has been added to userbase.<br />
The 2.0 release is on upload.kde.org, soon to be moved into place (a new place since download.kde.org hasn't done a krecipes release before).<br />
<br />
Anyone that would like a relatively small way to quickly help KRecipes out it could use some patches on reviewboard (group added, sending to the new mailing list already) to port away from Qt3support classes. Some other ideas off the top of my head also:<br />
<br />
1. Make it use kunitconversion to convert metric units to imperial units for those of us stuck in countries that use imperial measuring systems.<br />
2. Freshen up the ui a bit so it looks less like a database viewer and more like a recipe viewer/editor.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com1tag:blogger.com,1999:blog-317934362601129555.post-16771452734487719632014-11-12T00:00:00.003-07:002014-11-12T00:00:22.036-07:00KDE Fundraiser 2014In case you didn't hear, KDE is running a <a href="https://www.kde.org/fundraisers/yearend2014/" target="_blank">fundraiser</a> which helps fund sprints and other expenses of your favorite desktop/applications/games brought to you by the KDE community. Plus there are cool konqi postcards!<br />
<br />
Ok, back to your regularly scheduled blog reading, have a nice day.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-7253477565313477152014-11-09T14:47:00.003-07:002014-11-09T14:47:36.810-07:00Autostart in Plasma 5In the past few days as I got more and more annoyed that git pushes and svn updates and commits were always asking for my ssh key password I looked at what the current status of plasma autostart is. When I set up my plasma 5 environment I copied all the scripts that were in ~/.kde/Autostart to ~/.config/autostart thinking they would "just work" there, but it turns out they don't. My needs are simple I only had two .sh bash scripts in there, one for running ksshaskpass to ssh-add my ssh key. The other to launch synergys on login. Both scripts showed up in the autostart kcm, but neither was getting launched at login time.<div>
<br /></div>
<div>
Digging a bit in the code of kinit and klauncher I found that when it looks at ~/.config/autostart it only looks for .desktop files. It turns out this comes from an xdg spec for autostart scripts. Ok, simple enough, so I removed my synergys.sh script and in the autostart kcm created a new autostart item that launches synergys for me at login time. Works like a charm.</div>
<div>
<br /></div>
<div>
Next I went to look at ssh-add using ksshaskpass (there's a kf5 port of ksshaskpass in kdereview now by the way, which works pretty well and has some small improvements from the kdelibs4 version). For one thing, files that aren't .desktop files in ~/.config/autostart aren't getting launched, because klauncher doesn't even look at them. To fix this the autostart kcm was modified to not show these anymore.</div>
<div>
<br /></div>
<div>
The other question then is where should plain bash scripts be put that users and sysadmins used to put into ~/.kde/Autostart ? One solution is to put them into ~/.config/plasma-workspace/env/ . This is what I did here with ssh-add.sh and that works fine. The only thing to note though is that these are sourced, not executed, and they are sourced before plasma has started, so they can set environment variables and such if needed. This may not be ideal for scripts that need to talk to running services, so we may need to add something to ksmserver to launch scripts from ~/.config/ksm-autostart or something like that. There's a bug about it here https://bugs.kde.org/show_bug.cgi?id=338242 already, so don't file new bugs about this issue.</div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com4tag:blogger.com,1999:blog-317934362601129555.post-37410052620722950372014-10-28T16:05:00.000-06:002014-10-28T16:05:11.330-06:00Accessibility is alive (QtSpeech progress, Jovie's deprecation)For some time I've been considering what to do about Jovie which was previously known as ktts (KDE Text To Speech). Since before the first KDE Frameworks release actually, since kdelibs used to host a dbus interface definition for the KSpeech dbus interface that ktts and then Jovie implemented. I have a qt5 frameworks branch of Jovie, but it didn't make much sense to port it, since a lot of it is or could become part of the upcoming QtSpeech module. So Jovie has no official qt5 port and wont be getting one either.<br />
<br />
What will Okular, KNotify, and other applications that want to speak to users do instead? The answer is <a href="http://qt-project.org/wiki/QtSpeech" target="_blank">QtSpeech</a>. QtSpeech is a project started by Frederik Gladhorn to bring speech api's to all the platforms that Qt supports. It is still in its infancy, but is quickly improving. A few weeks ago when I built my kf5 stack with kdesrc-build I noticed that kdepim(libs?) was depending on it and it hasn't been released yet, so I got motivated to send some improvements to qt-project. Frederik and Laurent Montel have been pushing fixes and improving it also. It is as easy if not easier to use than the KSpeech dbus api (and doesn't require dbus either) and can be used to speak text on linux/unix, osx, windows, and android platforms so far. If you are an expert on any of these platforms please send patches to implement api on these platforms in their backends, the more eyes on this project the faster we can get it solidified and released.<br />
<br />
You may be asking but what about feature X in Jovie that I will miss desperately. Yes there are a few things that QtSpeech will not do that Jovie did. These will either need to be done in individual applications or we can create a small framework to add these features (or possibly add them to QtSpeech itself if they make sense there). The features I'm thinking of are:<br />
<br />
1. Filtering - Changing "<jpwhiting>: Hey QtSpeech is really coming along now" to "jpwhiting says 'Hey QtSpeech is really coming along now'" for KNotifications and the like. This could likely be implemented easily in knotify itself and exposed in the notifications configuration dialog.</jpwhiting><br />
2. Voice switching - Changing which voice to use based on the text, or the application it is coming from or anything else. This might make sense in QtSpeech itself, but time will tell if it's a wanted/needed feature.<br />
3. User configuration - Jovie had a decent (not ideal, but it was functional) ui to set some voice preferences, such as which voice you wanted to use, which pitch, volume, speed, gender, etc. This will become the only part of Jovie that will get ported, which is a KDE Control Module for speech-dispatcher settings. This may also change over time, as speech-dispatcher itself possibly grows a ui for it's settings.<br />
<br />
All in all, progress is being made. I expect QtSpeech to be ready for release with Qt 5.5, but we'll see what happens.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com1tag:blogger.com,1999:blog-317934362601129555.post-11305855012641915552014-10-18T15:22:00.001-06:002014-10-18T15:22:21.035-06:00Upcoming KDE Applications 14.12 release prepHello,<br />
<br />
In preparing for the upcoming releases of KDE Applications 14.12 (2014 Month 12) I realized the other day that we have an interesting situation. For Qt4 based applications there's libkdeedu which contains the kvtml parsing and manipulating code and also a handful of .kvtml files that KAnagram and KHangMan use to get their word lists. KAnagram has been ported to Qt5 and KDE Frameworks for some time now, and will have it's first Qt 5 based release at the end of this year. It uses libkeduvocdocument which was ported to Qt 5 also at about the same time this year. libkeduvocdocument uses Qt 5 and KDE Frameworks 5, and also ships the same handful of kvtml files that libkdeedu ships. (libkdeedu has been split for the Qt 5 based releases) KHangMan hasn't yet been ported to frameworks and Qt5 or at least the port isn't stable yet, so it will depend on libkdeedu still, as will KWordQuiz and Parley from what I understand. So we have two libraries that ship the same files, makes them not coinstallable. So we'll be moving the kvtml files out of the libraries and into kdeedu-data soonish to solve this problem. The moral of this story is to look around, see what will be released using Qt5 in the upcoming release, and what will be using Qt4 still. https://community.kde.org/Frameworks/Application-release-status-December-2014 may help also. If you maintain an application and haven't put your application on that page under the Qt4 or Qt5 tables yet, please do, the more we coordinate, the better this release will be.<br />
<br />
Thanks, and keep up the good work all.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com4tag:blogger.com,1999:blog-317934362601129555.post-17266978074308733112014-10-11T14:18:00.002-06:002014-10-11T14:18:53.982-06:00Simple EleganceI just noticed a couple of features today and yesterday in plasma next and kwin that I appreciate and wanted to thank whoever thought of adding them. Both are simple but very handy to have. I'm talking about the little X buttons on both the wallpaper configuration dialog and the kwin present windows effect. I don't use either of these features very often, but yesterday when I was testing knewstuff with the wallpaper config it was very handy to be able to delete the installed wallpaper from the wallpaper selection dialog. Then just now it was very handy to be able to close extra windows I had open that I no longer need when I was in the present windows effect looking at what I need to be doing next. Makes it very simple to clean up a workspace.<br />
<br />
Just throwing this out there, thanks whoever added these simple nice features.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-81035075924912390592014-10-07T16:56:00.000-06:002014-10-07T16:56:03.276-06:00Plasma Next Improvements and KApplication -> QApplication gotchastldr, if you port from KApplication to QApplication, remove the %i from the Exec lines of your .desktop files.<br />
<br />
Hey all, so I've been running plasma-next on my main development machine for a month or two now and have definitely enjoyed the speed at which improvements come. Just in time for plasma 5.1 release timezone support was added to the digital clock, so you can choose which timezones you want to see, use your mouse scrollwheel to change which one is visible, and so on. Also because our translators are awesome we got a last minute change in after the string freeze with their permission to show all the configured timezones in the clock's tooltip (similar but not identical to how it worked in kdelibs4 based plasma times). I enjoy the new Breeze theme and icons, and the alternatives system for switching between different k-menus, different task managers (I'm currently enjoying the icons only one) etc. is so handy.<br />
<br />
In other news something that has been bothering me for a while is that okular just didn't want to get launched from any visual launcher. Clicking on a pdf in dolphin acted like it was launching, but no Okular ui would appear. Clicking view book on pdf books in Calibre would do likewise. So I spent a couple of days adding debug messages to kinit and klauncher trying to figure out what was going on. Kate launches just fine, so I tried copying the kate.desktop to okularApplication_pdf.desktop and replaced kate with okular etc. and that worked fine also.<br />
<br />
So today I asked Albert if he had any ideas and got thinking it had to be something in the .desktop files themselves. So I uncommented another qDebug line in klauncher that said exactly what it was asking kinit to start and found it using "/usr/local/bin/okular blah.pdf --icon okular. So I tried the same from a terminal and found that okular's binary failed to launch because it doesn't understand the --icon parameter. A bit of digging found that KApplication handled that argument, while QApplication doesn't and the frameworks port of okular like a good example ported from KApplication to QApplication already.<br />
Klauncher puts --icon blah in when you have %i in the Exec line of the .desktop file. So if you port from KApplication to QApplication, be sure to remove the %i from the .desktop files of your application also.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com6tag:blogger.com,1999:blog-317934362601129555.post-38164047068491464032014-07-09T22:21:00.003-06:002014-07-09T22:21:36.763-06:00Plasma Next is pretty darn stableToday I wanted to share some of my experiences with using Plasma Next for the past couple of weeks. Since I had been working on some frameworks development (just a small bit here and there), I thought I'd try running Plasma Next a couple of weeks ago to see how things were coming along and to be able to work on and test some things I helped with back in KDE 4.0 days.<br />
<br />
I have to say I'm very impressed with the stability. I hit two issues since then, and one of the issues has been fixed. The issue I hit that has already been fixed was a crash in yakuake or konsole when closing a tab that caused the whole application to crash. I looked into the Konsole codebase with Eike Hein's guidance, but Argonel ultimately found the best patch to fix the problem.<br />
The second issue I hit with Plasma Next has to do with disconnecting and reconnecting an external monitor. I don't do that very often at all, but when I tried last weekend I got a variety of issues. For example sometimes when disconnecting Plasma (or maybe KSmServer?) crashes and I am taken back to the sddm login screen. Other times when connecting my external screen my panel ends up floating on the external monitor but nothing on it is clickable.<br />
<br />
I just realized this post probably sounds like a rant or complaining about Plasma Next, but that's not what I intended at all. The main point I wanted to get across is that I haven't used Plasma more than once in the past 2 weeks since Plasma Next is stable enough for my usage.<br />
<br />
Now for the obligatory desktop screenshot:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKq33KYKAhGkwmLXLdmVfA90HN2l3dI4NJF-pPpbFgXfuRyr9bF6vP_ETNKVKASiKgiuKZHRh99Zqy0Vv42FRjiOOlnObxgtWTuJFAXXh0MDOOLou0kX7QWFkUw5hVJpaiGGrdZfmauoc/s1600/plasmanext.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKq33KYKAhGkwmLXLdmVfA90HN2l3dI4NJF-pPpbFgXfuRyr9bF6vP_ETNKVKASiKgiuKZHRh99Zqy0Vv42FRjiOOlnObxgtWTuJFAXXh0MDOOLou0kX7QWFkUw5hVJpaiGGrdZfmauoc/s1600/plasmanext.png" height="105" width="320" /></a></div>
<br />
So good job to all the people that have worked on this new iteration of the Plasma Desktop.<br />
<br />
P.S. One other minor thing I miss from plasma is the ability to show multiple timezone's times in the clock's tooltip. I'll see if I can get that fixed though. :)Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com1tag:blogger.com,1999:blog-317934362601129555.post-47737581315382984272014-07-08T23:42:00.002-06:002014-07-08T23:42:40.255-06:00Qt5/KDE Frameworks porting stepsAs I said in my last post I would elaborate about how porting of libkeduvocdocument (name pending currently) from Qt4 and kdelibs4 to Qt5 and KDE Frameworks happened.<br />
<br />
Commits can be seen <a href="http://quickgit.kde.org/?p=libkeduvocdocument.git" target="_blank">here</a> but it went like this:<br />
1. Change CMakeLists.txt to look for frameworks and Qt5 packages.<br />
2. Try to build, fix any errors. All while checking the <a href="https://community.kde.org/Frameworks/Porting_Notes" target="_blank">Porting Notes</a>.<br />
3. Port away from deprecated methods.<br />
4. Port away from kdelibs4support.<br />
<br />
I forget which part of the above involved each of these, but this is what was changed:<br />
Ported from KUrl to QUrl.<br />
Ported from KStandardDirs to QStandardPaths<br />
Ported from KGlobal::locale() to QLocale<br />
Ported away from other deprecated methods and classes.<br />
<br />
So rinse and repeat until it's in a state where you are happy with it.<br />
Note that step 4 above isn't strictly necessary, and is similar to porting Qt4 applications away from Qt3Support (Some kde4 applicationss never were ported away from Qt3Support sadly...) Yes KMouth, I'm looking at you.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-14784130140177139642014-07-06T19:49:00.000-06:002014-07-06T19:49:24.133-06:00Libkeduvocdocument Qt5/KDE Frameworks port<div dir="ltr">
Hello all. Yes I'm still alive. Yes I'm still doing KDE stuff as I find time or make time. I'll report in the next few posts about what is happening and where we are going.</div>
<div dir="ltr">
One of the things that happened recently was the port of libkeduvocdocument to Qt5 and frameworks. Vishesh started the effort, and I completed it with some review by Aleix Pol. It was decided as documented <a href="https://community.kde.org/KDEEdu/RouteToKF5#LibKdeEdu_Porting" target="_blank">here</a> that since libkdeedu only contains libkeduvocdocument it should be split up. Upon further investigation we realized that the other parts of libkdeedu are not used anymore. Besides the icons subfolder that are still looking for a home, the rest of the git repo is only libkeduvocdocument related, so we decided to just rename the git repository for the frameworks and going forward release. So the libkdeedu git repository holds the kde sc 4 codebase, while the libkeduvocdocument git repo holds the qt5 and frameworks based code. Both contain the history so all history is preserved. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I'll write next time about the steps taken to port the library to Qt5 and KDE Frameworks.</div>
Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0tag:blogger.com,1999:blog-317934362601129555.post-7397397200080105112012-09-18T09:03:00.000-06:002012-09-18T09:11:13.259-06:00Remember for N9 (0.0.4)<b>Announcing the latest (0.0.4) release of "Remember" for your Nokia N9.</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfUlczPebwj9DUG66BZdhUJf7cfU2RO9lfW2chvIRG-A1xqvwG2X5U973xVcoGc6bGKyNZrWLH6eZNQ2sEsxG0ladhKRpr9IeuFijpTF2dqmH0pX9SlykPW56Bo4C-QGdrq3mCrSCkj6Y/s1600/Screen_12-Jul-12_10-40-45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfUlczPebwj9DUG66BZdhUJf7cfU2RO9lfW2chvIRG-A1xqvwG2X5U973xVcoGc6bGKyNZrWLH6eZNQ2sEsxG0ladhKRpr9IeuFijpTF2dqmH0pX9SlykPW56Bo4C-QGdrq3mCrSCkj6Y/s320/Screen_12-Jul-12_10-40-45.png" width="179" /></a></div>
<br />
By a rough estimate about 50% of you that read this have an N9 device. If you don't already have a task list system in place, or if you already use Remember The Milk, "Remember" for your N9 is the perfect, and free, way to use your task list from your phone itself. Current features include:<br />
<ul>
<li>Reading your tasks and task lists including smart lists</li>
<li>Showing your lists in the same sort order you see on the web interface</li>
<li>Support for marking tasks as complete</li>
<li>Editing tasks (name, priority, due date (tags and list coming soon)</li>
<li>Add a new task</li>
<li>Add a new list (regular lists only, smart list adding will come later)</li>
</ul>
Download it <a href="http://store.nokia.com/content/297385" target="_blank">here</a>.<br />
<ul>
</ul>
<b>Plan for 0.0.5 and beyond</b> <br />
<ul>
</ul>
My plan for the upcoming 0.0.5 release is tag editing and changing a task's list. Then we'll get going with some fun useful features like search and storing the tasks and lists on your device for offline use.<br />
<br />
<b>Technical details</b><br />
<br />
Under the hood "Remember" 0.0.2 was using libqrtm which was found on github and improved to provide a TasksModel and ListsModel for the QML interface to display. With 0.0.3 I changed it to use librtm which comes from KDE (and was developed for the rememberthemilk plasma applet) with some improvements and bug fixes. Because I use librtm to do the work of talking to Remember The Milk service adding storage and sync capabilities will be added to librtm itself, the KDE plasmoid will get those same features.<br />
<br />
If you have any ideas for features you'd like to see added, drop me a comment or e-mail and I'll get to it at some point.<br />
<br />
P.S. This application is completely open source, the code can be grabbed from github.com/jpwhiting/remember and instructions for building it are included. I didn't commit my rtm apikey however, so if you want to build it yourself you'll need one of those.Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com2tag:blogger.com,1999:blog-317934362601129555.post-88241219419639793452011-09-04T10:48:00.004-06:002011-09-04T10:56:16.474-06:00Improving the user experience in Kiten, guest postNote: Today's guest post brought to you by Daniel Moctezuma.
<br />
<br /><div><b><span style="font-size:130%;">Improving the user experience in Kiten</span></b></div> <div>
<br /></div><div>As part of Google Summer of Code 2011 I worked on improving Kiten in various aspects:</div><div>1. Write a better deinflection system</div> <div>2. Add more filtering options</div><div>3. Update EDICT and KANJIDIC dictionaries</div><div>4. Write a Kanji Browser tool to help users learn kanji</div><div>5. Bugfixes and code polishing</div><div>
<br /></div><div>Before going deep in each point, I would like to tell you what Kiten is (in case you haven't heard about it).</div> <div>Kiten is a Japanese Reference Tool that consists mainly of a Dictionary and a Radical Selector, it uses the EDICT (for vocabulary) and KANJIDIC (for kanji) dictionaries.</div><div>The Dictionary lets you translate from japanese to english and from english to japanese, this means you can write in english, hiragana, katakana or kanji to search in the dictionaries.</div> <div>The Radical Selector lets you to search for a kanji by filtering its radicals, this way you can find a kanji without knowing anything about its readings or meanings.</div><div>
<br /></div><div>With this GSoC project, Kiten is now more than that.</div> <div>
<br /></div> <div><b>1. Deinflection system</b></div><div>Kiten now has a better deinflection system that deconjugates a verb/adjective and gives you the result of it. Example: 笑った is the past tense form of 笑う (to laugh), but (like in any language) if you search a past tense verb in a dictionary you will not find it. So Kiten can deconjugate the input and search for it.</div> <div>You might wonder, "but why is this necessary?", the truth is that some japanese language learners can be confused of some verb tenses, so they might not know the dictionary form of a verb. Kiten can help you with that and give you feedback about your input, so next time you will know if you entered a verb in past tense or so.</div> <div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6gD8kii6X2APhQTNo4zn7N4ehyNdE2Hx4tZuiYoTaZc3zCVxFcwLzBYifTRWQ-kb71J_3m5gzUUIUw6oxdLz-97673WDpLzkOKg8BV3xvrjIZ8uJrWu8Htt7R68C-kB91Xwo_2rW6ru0/s1600/kiten-new-deinflection-system.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 120px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6gD8kii6X2APhQTNo4zn7N4ehyNdE2Hx4tZuiYoTaZc3zCVxFcwLzBYifTRWQ-kb71J_3m5gzUUIUw6oxdLz-97673WDpLzkOKg8BV3xvrjIZ8uJrWu8Htt7R68C-kB91Xwo_2rW6ru0/s200/kiten-new-deinflection-system.png" alt="" id="BLOGGER_PHOTO_ID_5648547799613472402" border="0" /></a></div><div><b>2. Add more filtering options</b></div><div>This improvement helps users to filter results that "start/end with" or "contain" what the user entered to be searched. Also it shows the results in a better order:</div> <div><ul><li>exact match</li><li>words starting with the user's input</li><li>words ending with the user's input</li><li>words containing (anywhere/in the middle) the user's input</li></ul>It helps a lot to have order in what we see, most of the time the user wants to know the meaning for a exact match, but also it is good to know if a word is used different, as at the end of an expression or somehow in the middle.</div> <div>
<br /></div><div><b>3. Update EDICT and KANJIDIC dictionaries</b></div><div>For some years Kiten was not being maintained regarding dictionaries, now that has changed with this improvement. These dictionary files are the core of Kiten and having the latest updates of them is a must. As part of the project, the user is now able to update the dictionaries at any time (if an update is available).</div> <div><b>4. Write a Kanji Browser tool to help users l</b><b>earn kanji</b></div><div>You can browse all the kanji available in the KANJIDIC dictionary and be able to search by Grade and Number Strokes. Just click on the kanji and you can access detailed information such as stroke order, onyomi/kunyomi readings, meanings, grade, etc.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinHlsw9NKyeKy6R-hyPPGblSzMEFVoQ8lRpvcPIagYuuzc9tApRcbpvTWCX-0kaeAeClBwGvPynfQhdvx9IFEaqOL8hOk47p8GA9XdKYBrmK-UI25Wta8tVetJY_nH_HLkXY1baH3HV3A/s1600/kanjibrowser-list.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 173px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinHlsw9NKyeKy6R-hyPPGblSzMEFVoQ8lRpvcPIagYuuzc9tApRcbpvTWCX-0kaeAeClBwGvPynfQhdvx9IFEaqOL8hOk47p8GA9XdKYBrmK-UI25Wta8tVetJY_nH_HLkXY1baH3HV3A/s200/kanjibrowser-list.png" alt="" id="BLOGGER_PHOTO_ID_5648548603399325394" border="0" /></a></div> <div>This tool helps you to learn Kanji by Jouyou Grade, in other words, KanjiBrowser can filter kanji by grade difficulty so you will only see those in the current grade you are interested in learning.</div><div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi61wpp6t81szw9XLGKvJTOC8dPh2sCyfW3QF0oU6Aa_OeHWyUDBk1FEdu8BC_ivgprVPEMHsHNVB7-mRb9qF8NxiqdeBASyn2pNsY8fCmrhDE4bGlr3cA56TDnJWPL_qB2bezRWSC5kiY/s1600/kanjibrowser-info.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 173px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi61wpp6t81szw9XLGKvJTOC8dPh2sCyfW3QF0oU6Aa_OeHWyUDBk1FEdu8BC_ivgprVPEMHsHNVB7-mRb9qF8NxiqdeBASyn2pNsY8fCmrhDE4bGlr3cA56TDnJWPL_qB2bezRWSC5kiY/s200/kanjibrowser-info.png" alt="" id="BLOGGER_PHOTO_ID_5648548602512166802" border="0" /></a></div> </div> <div><b>5. Bugfixes and code polishing</b></div><div>This includes various areas of Kiten like libkiten maintenance, bugs in the dictionary, etc.</div><div>Just to name a few:</div><div><ul><li>You can add more dictionaries (EDICT/KANJIDIC format), as well as having deinflection system compatibility with them.</li><li>Libkiten can be considered mature now.</li><li>Fixed memory leaks.</li><li>Code simplification (for better performance and readability).</li><li>Clear separation between common/uncommon entries.</li><li>and more.</li></ul></div><div>So, now we can say Kiten is not only a Japanese Reference Tool, but a Set of Tools:</div><div><ol><li>Dictionary (Japanese <---> English)</li><li>Radical Selector</li><li>Kanji Browser</li></ol></div> <div>
<br /></div> <div>Also I am proud to say this contribution is now merged on the master branch and expected to be released in KDE 4.8 along with other contributions from the KDE community.</div><div>
<br /></div><div>Finally I would like to thank the following people:</div> <div><ul><li>Jeremy Whiting, for being my mentor in this project.</li><li>Anne-Marie Mahfouf, for her support since the beginning.</li><li>Joseph Kerian (previous Kiten developer/maintainer), for his support on some questions I had about the code base.</li><li>KDE, for choosing my proposal and for letting me have this amazing experience.</li><li>Google, for Free Software Development promotion by paying to students and encouraging them to learn and contribute to our world.</li></ul></div><div>Thanks a lot!</div><div>
<br /></div><div>
<br /></div><div>Daniel E. Moctezuma</div>Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com4tag:blogger.com,1999:blog-317934362601129555.post-72120000265047126962011-04-22T16:24:00.010-06:002011-04-22T16:53:53.469-06:00Kontact with google calendarHey all, with the help of some friendly folks in #kontact I was able to get mail/calendar set up and working in kontact today. I previously had some bad settings in akonadi from my last attempt a few months (maybe a year?) back. and clearing .config/akonadi helped alleviate that problem.<br /><br />Since I've been using an android phone lately much of my calendar and mail stuff is on google services, so naturally I wanted to sync my calendar, contacts, and mail with google. Fortunately this is all possible, unfortunately it's not all that clear how to set it up. So here's a quick walkthrough for future reference.<br /><br />Lets look at the tricky one, calendars. To add a google calendar to your korganizer you just need the caldav address which you can get from the calendar's settings like this.<br /><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_OtVY6czHIsnNgAMih3RkPELoQCdc1vRmvDNy0U4q5aMLte5FuiuWsCwCMDtkt5aiFp-AbRtpeEpgUO3Z3javIhSZ_FRPVziP0vd0TdkMkRkv2I8eDUge47V3xWUzNpdXhEfK_Bl59cI/s1600/calsettings.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 154px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_OtVY6czHIsnNgAMih3RkPELoQCdc1vRmvDNy0U4q5aMLte5FuiuWsCwCMDtkt5aiFp-AbRtpeEpgUO3Z3javIhSZ_FRPVziP0vd0TdkMkRkv2I8eDUge47V3xWUzNpdXhEfK_Bl59cI/s200/calsettings.png" alt="" id="BLOGGER_PHOTO_ID_5598541706188220562" border="0" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnH7zSlXZZ_SS6pNo_d7zGXs40XBKvNB2MKua_Haq6x7np-8vwqiTzwkzVbSbZwiT07hN3p9tuqO4TEEaiSjNeH5VaTIubw_IUoyTBbA8riDcULMm0FtNHzHk43ioxh4ucZZuRIZcuDzE/s1600/calsettings1.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 40px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnH7zSlXZZ_SS6pNo_d7zGXs40XBKvNB2MKua_Haq6x7np-8vwqiTzwkzVbSbZwiT07hN3p9tuqO4TEEaiSjNeH5VaTIubw_IUoyTBbA8riDcULMm0FtNHzHk43ioxh4ucZZuRIZcuDzE/s200/calsettings1.png" alt="" id="BLOGGER_PHOTO_ID_5598542024416507554" border="0" /></a><br /><br /><br /><br />Then you'll need the google calendar url to plug your calendar's address into which can be found in the help section, here for convenience:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhavUzpoMXNsDuSnYM4p6xxKJI64cAD6g6b17UZAaXbwY0j0X_GeRbD3KnqCpA3upsQrecrkHs8_69C-ptGLaLLr99qnoKkjQF5Fo5SWLUGpaJ6Ydu32z49SebFH5AnVnH_y19gemrWcSY/s1600/calsettings2.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 17px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhavUzpoMXNsDuSnYM4p6xxKJI64cAD6g6b17UZAaXbwY0j0X_GeRbD3KnqCpA3upsQrecrkHs8_69C-ptGLaLLr99qnoKkjQF5Fo5SWLUGpaJ6Ydu32z49SebFH5AnVnH_y19gemrWcSY/s200/calsettings2.png" alt="" id="BLOGGER_PHOTO_ID_5598542581777246354" border="0" /></a><br /><br />Then you can open korganizer (or kontact) and right click the calendar manager and choose Add Calendar. It will give you a list of resources like this:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5yXgaDHHq56shxpldRh4MiEW5FYnsC6CCe0jRw89w2ksQzhMyPbob812Uyg3EvEH1bIJJR1oGy9kghfcvEp0KJwNk2v-LlzVGo31EwgKyUUcsRwMWQx15i28PVzLP7j0H145k27-VYo/s1600/addcalendar.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 151px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5yXgaDHHq56shxpldRh4MiEW5FYnsC6CCe0jRw89w2ksQzhMyPbob812Uyg3EvEH1bIJJR1oGy9kghfcvEp0KJwNk2v-LlzVGo31EwgKyUUcsRwMWQx15i28PVzLP7j0H145k27-VYo/s200/addcalendar.png" alt="" id="BLOGGER_PHOTO_ID_5598542932060554818" border="0" /></a><br /><br /><br /><br />Since google calendars support CalDav choose the Dav groupware resource. Here's where the ui could use some update and/or simplification. The next thing you will see is a list of calendar providers, of which google is not a part like this:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWp6msobQmE7U1sip2PsbXWQepOu2dvrvYqBsZ1B4WeH1RvNWwsx2vtQdeLzgo6sbZ_ujX5uI2pbtkHBj1Av-yg4muLFV1I19G4guZEXOAXZexYeetNNKCu-gJPdoAdznS-ttnYhONWfc/s1600/addcalendar1.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 155px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWp6msobQmE7U1sip2PsbXWQepOu2dvrvYqBsZ1B4WeH1RvNWwsx2vtQdeLzgo6sbZ_ujX5uI2pbtkHBj1Av-yg4muLFV1I19G4guZEXOAXZexYeetNNKCu-gJPdoAdznS-ttnYhONWfc/s200/addcalendar1.png" alt="" id="BLOGGER_PHOTO_ID_5598543496884612514" border="0" /></a>The trick (thanks Leo) here is to click cancel since google is not on the list. Strangely (most cancel buttons close instead of continuing) this continues to a dialog to let you add your calendar by url that looks like this:<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn3QoOGLblqEJF6tEcbqqzvhz5vPgLX52Xvz5YuTdJp95RfNrljE44oZ0BXiJMYXV1pQcEabSD-fYCGFQ9WlAhOxpQMgQChJuFVlSrl5xo2f1XZw4V4yUxtmLFC-Py8ot5Pyg3ToAZOIM/s1600/addcalendar2.png"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 182px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn3QoOGLblqEJF6tEcbqqzvhz5vPgLX52Xvz5YuTdJp95RfNrljE44oZ0BXiJMYXV1pQcEabSD-fYCGFQ9WlAhOxpQMgQChJuFVlSrl5xo2f1XZw4V4yUxtmLFC-Py8ot5Pyg3ToAZOIM/s200/addcalendar2.png" alt="" id="BLOGGER_PHOTO_ID_5598544137343539458" border="0" /></a><br /><br /><br />You can finally put in your url (combine the google calendar url with your calendar's address) and enter your username (foo@gmail.com) and hit the fetch button. After entering your username again (not sure why it doesn't take the one you already set) and password you are able to choose your calendar and add it to korganizer.<br /><br />Anyone that votes we simplify this process raise your hand :) o/Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com14tag:blogger.com,1999:blog-317934362601129555.post-42763612758651890492011-04-03T20:03:00.001-06:002011-04-03T20:03:37.640-06:00School's out<div><p>KDE-Edu is out of subversion and now in git. Take a look. And not a moment too soon. This coming week there will be a KDE Edu sprint in Bilbao Spain. What better place to learn how to use git than a sprint with peers eh?  Anyway this message is brought to you by the hard work of Ian Monroe and Nicolas Alvarez who worked very hard to get the conversion rules set up. (And fixed a few bugs in svn2git in the process).</p>
</div>Jeremy Whitinghttp://www.blogger.com/profile/00406833894255909243noreply@blogger.com0