Mardy (Posts about AppImage)http://mardy.it/categories/appimage.atom2024-02-02T20:11:05ZAlberto MardeganNikolaMiTubo comes to macOShttp://mardy.it/blog/2022/06/mitubo-comes-to-macos.html2022-06-22T22:44:47+03:002022-06-22T22:44:47+03:00Alberto Mardegan<p>I just released <a href="http://mardy.it/mitubo/#downloads">MiTubo 1.2</a>. New in this version:</p>
<ul>
<li>As suggested by <code>alphas12</code> in the comments, I added the author name in the
YouTube search results.</li>
<li>In the same results list, there's now a clickable link to the channel, which
makes it easier to subscribe to it.</li>
<li>Improve layout of some pages on narrow displays (though there's still much to
be done!).</li>
<li>Skip invoking youtube-dl if the video information is already encoded in the
page <code>HEAD</code> meta properties.</li>
<li>Remember the preferred playback resolution; this can be helpful on low
bandwith connections.</li>
<li>First macOS release!</li>
</ul>
<p>While bringing in the macOS version, I updated the <a href="https://gitlab.com/qt-goodies/qscreensaver">QScreenSaver
library</a> to support inhibiting the
screensaver on macOS too.</p>
<p>I also tested the AppImage on openSUSE, and it seems to work fine there too.
So, fewer and fewer people have valid excuses not to try out MiTubo!</p><p>I just released <a href="http://mardy.it/mitubo/#downloads">MiTubo 1.2</a>. New in this version:</p>
<ul>
<li>As suggested by <code>alphas12</code> in the comments, I added the author name in the
YouTube search results.</li>
<li>In the same results list, there's now a clickable link to the channel, which
makes it easier to subscribe to it.</li>
<li>Improve layout of some pages on narrow displays (though there's still much to
be done!).</li>
<li>Skip invoking youtube-dl if the video information is already encoded in the
page <code>HEAD</code> meta properties.</li>
<li>Remember the preferred playback resolution; this can be helpful on low
bandwith connections.</li>
<li>First macOS release!</li>
</ul>
<p>While bringing in the macOS version, I updated the <a href="https://gitlab.com/qt-goodies/qscreensaver">QScreenSaver
library</a> to support inhibiting the
screensaver on macOS too.</p>
<p>I also tested the AppImage on openSUSE, and it seems to work fine there too.
So, fewer and fewer people have valid excuses not to try out MiTubo!</p>MiTubo 1.1: screensaver inhibitorhttp://mardy.it/blog/2022/06/mitubo-11-screensaver-inhibitor.html2022-06-04T13:46:54+03:002022-06-04T13:46:54+03:00Alberto Mardegan<p>Looks like I'm posting a bit too often about <a href="http://mardy.it/mitubo">MiTubo</a>, but don't
worry, I'll soon find something else to write about.</p>
<p>Version 1.1 is now released, bringing you:</p>
<ul>
<li>A screensaver inhibitor, at last!</li>
<li>AppImage now works in Arch and Manjaro</li>
</ul>
<p>More in detail, this means that your computer won't go to sleep or start the
screen saver while you are watching a video. To achieve this, I wrote a
portable (well, for the time being it only supports Linux and Windows, but
macOS support will eventually arrive too) library for inhibiting the
screensaver: <a href="https://gitlab.com/qt-goodies/qscreensaver">QScreenSaver</a>. It
lives in its own repository, and it's written in a way that should be easy to
integrate with your own project. You are welcome to try it out (and add support
for cmake/qmake/meson/…).</p>
<p>The AppImage support has been improved after a user filed a bug about MiTubo
not working in Arch; I myself could not verify the issue as I've grown too lazy
to install a distribution like Arch, but I did it on Manjaro (which is also
based on Arch), and indeed the MiTubo AppImage contained some unnecessary
libraries (while missing some others) that rendered it non-functional in those
distributions. Now it's all fixed, so there's a good chance that the AppImage
will work on your distribution, too.</p><p>Looks like I'm posting a bit too often about <a href="http://mardy.it/mitubo">MiTubo</a>, but don't
worry, I'll soon find something else to write about.</p>
<p>Version 1.1 is now released, bringing you:</p>
<ul>
<li>A screensaver inhibitor, at last!</li>
<li>AppImage now works in Arch and Manjaro</li>
</ul>
<p>More in detail, this means that your computer won't go to sleep or start the
screen saver while you are watching a video. To achieve this, I wrote a
portable (well, for the time being it only supports Linux and Windows, but
macOS support will eventually arrive too) library for inhibiting the
screensaver: <a href="https://gitlab.com/qt-goodies/qscreensaver">QScreenSaver</a>. It
lives in its own repository, and it's written in a way that should be easy to
integrate with your own project. You are welcome to try it out (and add support
for cmake/qmake/meson/…).</p>
<p>The AppImage support has been improved after a user filed a bug about MiTubo
not working in Arch; I myself could not verify the issue as I've grown too lazy
to install a distribution like Arch, but I did it on Manjaro (which is also
based on Arch), and indeed the MiTubo AppImage contained some unnecessary
libraries (while missing some others) that rendered it non-functional in those
distributions. Now it's all fixed, so there's a good chance that the AppImage
will work on your distribution, too.</p>MiTubo 1.0: playlist support, new “website”http://mardy.it/blog/2022/05/mitubo-10-playlist-support-new-website.html2022-05-21T15:53:56+03:002022-05-21T15:53:56+03:00Alberto Mardegan<p>Some news from the MiTubo world:</p>
<ul>
<li>Version 1.0 has been released!</li>
<li>It's also available for Windows (boo!)</li>
<li>Some basic support for remote playlists</li>
<li>New “Check for updates” dialog</li>
<li>Added support for translations</li>
<li>Added Italian translation, of course</li>
<li>Minor cosmetic changes (like using a different unicode symbol for the “Back” button)</li>
<li>New web page for MiTubo</li>
</ul>
<p>Expanding a bit on the points above, the first thing worth saying is that the
choice of releasing this version as “1.0” does not mean that it's more stable
than the previous ones; it just means that I'm rather satisfied with the
feature set, and that I believe that the program is ready for more widespread
use.</p>
<p>This is also the reason why I decided to prepare a web page for it:
<a href="http://mardy.it/mitubo">mardy.it/mitubo</a>. I didn't go for a completely separate website,
unlike what I previously did for <a href="https://mappero.mardy.it">Mappero Geotagger</a>,
<a href="https://phototeleport.com">PhotoTeleport</a> and
<a href="https://imaginario.mardy.it">Imaginario</a> (which reminds me that I haven't been
working on the latter for a long time! I should try to correct this soon!),
both because this way it's simpler to publish news about it (I'll continue
doing that here, instead of cross-posting in two sites), and because having it
in the same domain might be mutually beneficial for the SEO ranking of the blog
and of MiTubo.</p>
<p>As for the Windows version, I want to thank <a href="http://mardy.it/blog/2020/04/new-website-for-mappero-geotagger.html">once
again</a>
the <a href="http://mxe.cc">MXE project</a> for their fantastic cross-compiling suite. I
find it very cumbersome working in Windows, and being able to build my programs
from Linux makes my life a lot easier (if you want to have more information
about how this works with QBS, have a look at the previous MXE post). I wish
there was something similar for macOS; and that's why the macOs version is
going to take more time to arrive — on the other hand, I haven't received any
requests for it, so I'm not in a hurry to work on that.</p>
<p>Last but not least, translation support means that if you want to help with
translations, now you can. I've myself tried
<a href="https://doc.qt.io/qt-5/linguist-translators.html">QtLinguist</a> for the first
time to write the Italian translation, and I found it to be an extremely
effective tool, once you learn the key bindings by heart.</p><p>Some news from the MiTubo world:</p>
<ul>
<li>Version 1.0 has been released!</li>
<li>It's also available for Windows (boo!)</li>
<li>Some basic support for remote playlists</li>
<li>New “Check for updates” dialog</li>
<li>Added support for translations</li>
<li>Added Italian translation, of course</li>
<li>Minor cosmetic changes (like using a different unicode symbol for the “Back” button)</li>
<li>New web page for MiTubo</li>
</ul>
<p>Expanding a bit on the points above, the first thing worth saying is that the
choice of releasing this version as “1.0” does not mean that it's more stable
than the previous ones; it just means that I'm rather satisfied with the
feature set, and that I believe that the program is ready for more widespread
use.</p>
<p>This is also the reason why I decided to prepare a web page for it:
<a href="http://mardy.it/mitubo">mardy.it/mitubo</a>. I didn't go for a completely separate website,
unlike what I previously did for <a href="https://mappero.mardy.it">Mappero Geotagger</a>,
<a href="https://phototeleport.com">PhotoTeleport</a> and
<a href="https://imaginario.mardy.it">Imaginario</a> (which reminds me that I haven't been
working on the latter for a long time! I should try to correct this soon!),
both because this way it's simpler to publish news about it (I'll continue
doing that here, instead of cross-posting in two sites), and because having it
in the same domain might be mutually beneficial for the SEO ranking of the blog
and of MiTubo.</p>
<p>As for the Windows version, I want to thank <a href="http://mardy.it/blog/2020/04/new-website-for-mappero-geotagger.html">once
again</a>
the <a href="http://mxe.cc">MXE project</a> for their fantastic cross-compiling suite. I
find it very cumbersome working in Windows, and being able to build my programs
from Linux makes my life a lot easier (if you want to have more information
about how this works with QBS, have a look at the previous MXE post). I wish
there was something similar for macOS; and that's why the macOs version is
going to take more time to arrive — on the other hand, I haven't received any
requests for it, so I'm not in a hurry to work on that.</p>
<p>Last but not least, translation support means that if you want to help with
translations, now you can. I've myself tried
<a href="https://doc.qt.io/qt-5/linguist-translators.html">QtLinguist</a> for the first
time to write the Italian translation, and I found it to be an extremely
effective tool, once you learn the key bindings by heart.</p>Mitubo 0.9: multiple concurrent video downloadshttp://mardy.it/blog/2022/05/mitubo-09-multiple-concurrent-video-downloads.html2022-05-05T22:16:40+03:002022-05-05T22:16:40+03:00Alberto Mardegan<p>It will never stop surprising me how easy it is to implement big new features
in a QML application! The assumption here is that the C++ part of the
application should be well-written: objects should not be overloaded with
unrelated functionalities just because it seems faster to code them that way,
but one should rather design classes so that each exposes <em>one</em> functionality,
and then QML and javascript act as the glue which binds all the parts together.</p>
<p>In a way, <strong>QML stands to C++ classes like the POSIX shell stands to
command-line tools</strong>: a simple language which allows concatenating small units
of functionality together to build a powerful program.</p>
<p>Anyway, that was not what I wanted to talk you about today. ☺ Today's post is
about <a href="https://gitlab.com/mardy/mitubo">MiTubo</a>, whose version 0.9 has been
released today:</p>
<p></p><center>
<video id="video" controls preload="metadata" width="100%">
<source src="http://mardy.it/archivos/videos/mitubo-0.9.webm" type="video/webm">
</source></video>
<p></p></center>
<p>The big feature in this release is download of audio/video files: I thought,
since I'm using <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a> (or
<a href="https://youtube-dl.org/">youtube-dl</a> on Ubuntu Touch) anyway for
extracting video streams, why not add an option to let users download the media
content? This turned out to be easier than expected, so if you were looking for
a graphical frontend to the YouTube downloader, well, now MiTubo is an option
you could try.</p><p>It will never stop surprising me how easy it is to implement big new features
in a QML application! The assumption here is that the C++ part of the
application should be well-written: objects should not be overloaded with
unrelated functionalities just because it seems faster to code them that way,
but one should rather design classes so that each exposes <em>one</em> functionality,
and then QML and javascript act as the glue which binds all the parts together.</p>
<p>In a way, <strong>QML stands to C++ classes like the POSIX shell stands to
command-line tools</strong>: a simple language which allows concatenating small units
of functionality together to build a powerful program.</p>
<p>Anyway, that was not what I wanted to talk you about today. ☺ Today's post is
about <a href="https://gitlab.com/mardy/mitubo">MiTubo</a>, whose version 0.9 has been
released today:</p>
<p></p><center>
<video id="video" controls preload="metadata" width="100%">
<source src="http://mardy.it/archivos/videos/mitubo-0.9.webm" type="video/webm">
</source></video>
<p></p></center>
<p>The big feature in this release is download of audio/video files: I thought,
since I'm using <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a> (or
<a href="https://youtube-dl.org/">youtube-dl</a> on Ubuntu Touch) anyway for
extracting video streams, why not add an option to let users download the media
content? This turned out to be easier than expected, so if you were looking for
a graphical frontend to the YouTube downloader, well, now MiTubo is an option
you could try.</p>MiTubo 0.8: search, channels, watch later queuehttp://mardy.it/blog/2022/04/mitubo-update-search-channels-watch-later-queue.html2022-04-10T19:06:30+03:002022-04-10T19:06:30+03:00Alberto Mardegan<p>It has been a while since I last posted about
<a href="https://gitlab.com/mardy/mitubo">MiTubo</a>, despite releasing a few new versions
in the last months. But now I think that there is enough new stuff that's worth
a mention here.</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/blog/Mitubo-search.png"><img src="http://mardy.it/archivos/imagines/blog/Mitubo-search.png" width="80%"></a>
<figcaption>Search on YouTube</figcaption>
</figure>
<p></p></center>
<p>Initially MiTubo only came with a search feature that was using Yandex video as
a backend; while that worked generally well, most of the returned results were
not playable due to youtube-dl being unable to extract the video information
from the returned web pages. So, now we have the option to search on YouTube,
via the <a href="https://invidious.io/">Invidious API</a>; furthermore, it's also possible
to search for channels, whose RSS feed can then be added as a subscription.</p>
<p>One other thing that has always bothered me is not being able to enqueue a new
video while watching another one, without having to pause the current one, go
back to the main page, add the new video to a playlist, go back to the current
video, and finally, once that is over, open the playlist and start the new
video.</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/blog/Mitubo-dnd.png"><img src="http://mardy.it/archivos/imagines/blog/Mitubo-dnd.png" width="80%"></a>
<figcaption>Drag and drop a new URL while watching a video</figcaption>
</figure>
<p></p></center>
<p>So now we have that. One can drag and drop an URL (or even a longer text
containing several URLs) while watching another video, and a popup will appear
with a few choices (see the screenshot above). I've also added a “Next” button
next to the “Play” one, which is enabled if the “Watch later” playlist is not
empty, and does the obvious thing when pressed. Once started, the new video is
automatically removed from the “Watch later” playlist and moved into the
“Continue watching” list, where it will remain until it's being watched till
the end, which will cause it to part that list and be added to the watch
history.</p>
<p>To be fair, I haven't being testing this extensively, and this last one is a
feature I've developed just in a few hours during this weekend, so I wouldn't
be surprised if there are serious bugs in it. But hey, that's part of the
adrenaline which comes with hobby projects, I guess.</p><p>It has been a while since I last posted about
<a href="https://gitlab.com/mardy/mitubo">MiTubo</a>, despite releasing a few new versions
in the last months. But now I think that there is enough new stuff that's worth
a mention here.</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/blog/Mitubo-search.png"><img src="http://mardy.it/archivos/imagines/blog/Mitubo-search.png" width="80%"></a>
<figcaption>Search on YouTube</figcaption>
</figure>
<p></p></center>
<p>Initially MiTubo only came with a search feature that was using Yandex video as
a backend; while that worked generally well, most of the returned results were
not playable due to youtube-dl being unable to extract the video information
from the returned web pages. So, now we have the option to search on YouTube,
via the <a href="https://invidious.io/">Invidious API</a>; furthermore, it's also possible
to search for channels, whose RSS feed can then be added as a subscription.</p>
<p>One other thing that has always bothered me is not being able to enqueue a new
video while watching another one, without having to pause the current one, go
back to the main page, add the new video to a playlist, go back to the current
video, and finally, once that is over, open the playlist and start the new
video.</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/blog/Mitubo-dnd.png"><img src="http://mardy.it/archivos/imagines/blog/Mitubo-dnd.png" width="80%"></a>
<figcaption>Drag and drop a new URL while watching a video</figcaption>
</figure>
<p></p></center>
<p>So now we have that. One can drag and drop an URL (or even a longer text
containing several URLs) while watching another video, and a popup will appear
with a few choices (see the screenshot above). I've also added a “Next” button
next to the “Play” one, which is enabled if the “Watch later” playlist is not
empty, and does the obvious thing when pressed. Once started, the new video is
automatically removed from the “Watch later” playlist and moved into the
“Continue watching” list, where it will remain until it's being watched till
the end, which will cause it to part that list and be added to the watch
history.</p>
<p>To be fair, I haven't being testing this extensively, and this last one is a
feature I've developed just in a few hours during this weekend, so I wouldn't
be surprised if there are serious bugs in it. But hey, that's part of the
adrenaline which comes with hobby projects, I guess.</p>MiTubo 0.3 brings basic RSS supporthttp://mardy.it/blog/2021/09/mitubo-03-brings-basic-rss-support.html2021-09-27T23:44:53+03:002021-09-27T23:44:53+03:00Alberto Mardegan<p>I just pushed MiTubo 0.3 to the <a href="https://open-store.io/">Ubuntu Touch app
store</a>, added a link to the AppImage package in <a href="https://gitlab.com/mardy/mitubo/-/releases/VERSION_0.3">the
Releases page</a> and
later during the night the Launchpad builders should import it and build it for
<a href="https://launchpad.net/~mardy/+archive/ubuntu/mitubo">Ubuntu 18.04 and 20.04</a>.</p>
<p>This release adds basic support for RSS feeds. One just needs to type the
address of an RSS (or Atom) feed in the search bar and the "Search" button will
transform itself into a "Subscribe" one. Unfortunately no discovery mechanism
is implemented yet, so one cannot just enter the address of a webpage and
expect MiTubo to find the feed URL(s); I plan to bring that in a future
release, but for the time being you'll have to enter the exact address of the
RSS feed.</p>
<p>Also, there's no tracking of which videos are new and which ones have been
already watched. Again, that's material for a next release.</p>
<p>But as a start, feed are remembered in the configuration, and the next time you
open up MiTubo you'll see them in the main page, and the most recent videos
will be shown.</p>
<p>As usual, you're welcome to report issues <a href="https://gitlab.com/mardy/mitubo/-/issues">in
gitlab</a>.</p><p>I just pushed MiTubo 0.3 to the <a href="https://open-store.io/">Ubuntu Touch app
store</a>, added a link to the AppImage package in <a href="https://gitlab.com/mardy/mitubo/-/releases/VERSION_0.3">the
Releases page</a> and
later during the night the Launchpad builders should import it and build it for
<a href="https://launchpad.net/~mardy/+archive/ubuntu/mitubo">Ubuntu 18.04 and 20.04</a>.</p>
<p>This release adds basic support for RSS feeds. One just needs to type the
address of an RSS (or Atom) feed in the search bar and the "Search" button will
transform itself into a "Subscribe" one. Unfortunately no discovery mechanism
is implemented yet, so one cannot just enter the address of a webpage and
expect MiTubo to find the feed URL(s); I plan to bring that in a future
release, but for the time being you'll have to enter the exact address of the
RSS feed.</p>
<p>Also, there's no tracking of which videos are new and which ones have been
already watched. Again, that's material for a next release.</p>
<p>But as a start, feed are remembered in the configuration, and the next time you
open up MiTubo you'll see them in the main page, and the most recent videos
will be shown.</p>
<p>As usual, you're welcome to report issues <a href="https://gitlab.com/mardy/mitubo/-/issues">in
gitlab</a>.</p>New desktop application: MiTubohttp://mardy.it/blog/2021/04/new-desktop-application-mitubo.html2021-04-14T23:11:16+03:002021-04-14T23:11:16+03:00Alberto Mardegan<p>I've recently started a new project, to enable me to playback videos from
online sources in a desktop application: Mitubo.</p>
<p>Here's a terrible video I quickly made to show what MiTubo can currently do:</p>
<div class="youtube-video align-center">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/P2pdGGTOHEg?rel=0&wmode=transparent" frameborder="0" allow="encrypted-media" allowfullscreen></iframe>
</div><p>MiTubo is currently available for Ubuntu 18.04 and later from <a class="reference external" href="https://launchpad.net/~mardy/+archive/ubuntu/mitubo">this PPA</a> and for all other
distributions from <a class="reference external" href="https://gitlab.com/mardy/mitubo/-/releases">here as an AppImage package</a>.</p>
<p>You are very welcome to try it out and report issues at <a class="reference external" href="https://gitlab.com/mardy/mitubo/-/issues">its bug tracker</a>. I know that there are many of
them, but regardless of them the program is still useful to me, so I hope it
can be useful for other people too.</p><p>I've recently started a new project, to enable me to playback videos from
online sources in a desktop application: Mitubo.</p>
<p>Here's a terrible video I quickly made to show what MiTubo can currently do:</p>
<div class="youtube-video align-center">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/P2pdGGTOHEg?rel=0&wmode=transparent" frameborder="0" allow="encrypted-media" allowfullscreen></iframe>
</div><p>MiTubo is currently available for Ubuntu 18.04 and later from <a class="reference external" href="https://launchpad.net/~mardy/+archive/ubuntu/mitubo">this PPA</a> and for all other
distributions from <a class="reference external" href="https://gitlab.com/mardy/mitubo/-/releases">here as an AppImage package</a>.</p>
<p>You are very welcome to try it out and report issues at <a class="reference external" href="https://gitlab.com/mardy/mitubo/-/issues">its bug tracker</a>. I know that there are many of
them, but regardless of them the program is still useful to me, so I hope it
can be useful for other people too.</p>Using the latest QBS on older distributionshttp://mardy.it/blog/2019/11/using-the-latest-qbs-on-older-distributions.html2019-11-17T21:48:08+03:002019-11-17T21:48:08+03:00Alberto Mardegan<p>A short announcement, probably meaningless to most people, but who knows: I've
created an Ubuntu <a href="https://launchpad.net/~mardy/+archive/ubuntu/qbs-on-lts">PPA with the latest
QBS</a>. The reason why
this might make some sense is that this PPA targets the older Ubuntu
distributions. It's currently built for 14.04 (Trusty, which is no longer
supported by Canonical), and I'll eventually upload the QBS package for 16.04,
too.</p>
<p>This package can be useful to people distributing applications in the <a href="https://appimage.org/">AppImage
format</a>, where one usually builds the application in one
older distribution in order to increase the chances of it being runnable in as
many Linux distributions as possible. A simpler way to obtain QBS on Trusty is
to install QtCreator, but that's not trivial to install in an automated way and
might not come with the latest QBS. Especially when building on Ubuntu, a
package from a PPA is much easier to install.</p>
<p>This QBS is built statically, and won't install any Qt libraries on your
system; this is good, because it allows you to use whatever Qt version you like
without any risk of conflicts.</p><p>A short announcement, probably meaningless to most people, but who knows: I've
created an Ubuntu <a href="https://launchpad.net/~mardy/+archive/ubuntu/qbs-on-lts">PPA with the latest
QBS</a>. The reason why
this might make some sense is that this PPA targets the older Ubuntu
distributions. It's currently built for 14.04 (Trusty, which is no longer
supported by Canonical), and I'll eventually upload the QBS package for 16.04,
too.</p>
<p>This package can be useful to people distributing applications in the <a href="https://appimage.org/">AppImage
format</a>, where one usually builds the application in one
older distribution in order to increase the chances of it being runnable in as
many Linux distributions as possible. A simpler way to obtain QBS on Trusty is
to install QtCreator, but that's not trivial to install in an automated way and
might not come with the latest QBS. Especially when building on Ubuntu, a
package from a PPA is much easier to install.</p>
<p>This QBS is built statically, and won't install any Qt libraries on your
system; this is good, because it allows you to use whatever Qt version you like
without any risk of conflicts.</p>