Displaying items by tag: GNOME

Tuesday, 15 October 2019 16:36

Benefits of centralizing GNOME in GitLabs

The GNOME project's decision to centralize on GitLab is creating benefits across the community—even beyond the developers.



“What’s your GitLab?” is one of the first questions I was asked on my first day working for the GNOME Foundation—the nonprofit that supports GNOME projects, including the desktop environment, GTK, and GStreamer. The person was referring to my username on GNOME’s GitLab instance. In my time with GNOME, I’ve been asked for my GitLab a lot.

We use GitLab for basically everything. In a typical day, I get several issues and reference bug reports, and I occasionally need to modify a file. I don’t do this in the capacity of being a developer or a sysadmin. I’m involved with the Engagement and Inclusion & Diversity (I&D) teams. I write newsletters for Friends of GNOME and interview contributors to the project. I work on sponsorships for GNOME events. I don’t write code, and I use GitLab every day.


The GNOME project has been managed a lot of ways over the past two decades. Different parts of the project used different systems to track changes to code, collaborate, and share information both as a project and as a social space. However, the project made the decision that it needed to become more integrated and it took about a year from conception to completion. There were a number of reasons GNOME wanted to switch to a single tool for use across the community. External projects touch GNOME, and providing them an easier way to interact with resources was important for the project, both to support the community and to grow the ecosystem. We also wanted to better track metrics for GNOME—the number of contributors, the type and number of contributions, and the developmental progress of different parts of the project.

When it came time to pick a collaboration tool, we considered what we needed. One of the most important requirements was that it must be hosted by the GNOME community; being hosted by a third party didn’t feel like an option, so that discounted services like GitHub and Atlassian. And, of course, it had to be free software. It quickly became obvious that the only real contender was GitLab. We wanted to make sure contribution would be easy. GitLab has features like single sign-on, which allows people to use GitHub, Google, GitLab.com, and GNOME accounts.

We agreed that GitLab was the way to go, and we began to migrate from many tools to a single tool. GNOME board member Carlos Soriano led the charge. With lots of support from GitLab and the GNOME community, we completed the process in May 2018.

There was a lot of hope that moving to GitLab would help grow the community and make contributing easier. Because GNOME previously used so many different tools, including Bugzilla and CGit, it’s hard to quantitatively measure how the switch has impacted the number of contributions. We can more clearly track some statistics though, such as the nearly 10,000 issues closed and 7,085 merge requests merged between June and November 2018. People feel that the community has grown and become more welcoming and that contribution is, in fact, easier.

People come to free software from all sorts of different starting points, and it’s important to try to even out the playing field by providing better resources and extra support for people who need them. Git, as a tool, is widely used, and more people are coming to participate in free software with those skills ready to go. Self-hosting GitLab provides the perfect opportunity to combine the familiarity of Git with the feature-rich, user-friendly environment provided by GitLab.

It’s been a little over a year, and the change is really noticeable. Continuous integration (CI) has been a huge benefit for development, and it has been completely integrated into nearly every part of GNOME. Teams that aren’t doing code development have also switched to using the GitLab ecosystem for their work. Whether it’s using issue tracking to manage assigned tasks or version control to share and manage assets, even teams like Engagement and I&D have taken up using GitLab.

It can be hard for a community, even one developing free software, to adapt to a new technology or tool. It is especially hard in a case like GNOME, a project that recently turned 22. After more than two decades of building a project like GNOME, with so many parts used by so many people and organizations, the migration was an endeavor that was only possible thanks to the hard work of the GNOME community and generous assistance from GitLab.

I find a lot of convenience in working for a project that uses Git for version control. It’s a system that feels comfortable and is familiar—it’s a tool that is consistent across workplaces and hobby projects. As a new member of the GNOME community, it was great to be able to jump in and just use GitLab. As a community builder, it’s inspiring to see the results: more associated projects coming on board and entering the ecosystem; new contributors and community members making their first contributions to the project; and increased ability to measure the work we’re doing to know it’s effective and successful.

It’s great that so many teams doing completely different things (such as what they’re working on and what skills they’re using) agree to centralize on any tool—especially one that is considered a standard across open source. As a contributor to GNOME, I really appreciate that we’re using GitLab.


Published in GNU/Linux Rules!
Tagged under
Friday, 16 August 2019 19:35

GNOME desktop: Best extensions



Add functionality and features to your Linux desktop with these add-ons.


The GNOME desktop is the default graphical user interface for most of the popular Linux distributions and some of the BSD and Solaris operating systems. Currently at version 3, GNOME provides a sleek user experience, and extensions are available for additional functionality. We've covered GNOME extensions before, but to celebrate GNOME's 22nd anniversary, I decided to revisit the topic. Some of these extensions may already be installed, depending on your Linux distribution; if not, check your package manager.


 How to add extensions from the package manager
To install extensions that aren't in your distro, open the package manager and click Add-ons. Then click Shell Extensions at the top-right of the Add-ons screen, and you will see a button for Extension Settings and a list of available extensions.


To install extensions that aren't in your distro, open the package manager and clic Then clic Shell Extensions at the top-right of the Add-ons screen, and you will see a button for Extension Settings and a list of available extensions.



1. GNOME Clocks

GNOME Clocks is an application that includes a world clock, alarm, stopwatch, and timer. You can configure clocks for different geographic locations. For example, if you regularly work with colleagues in another time zone, you can set up a clock for their location. You can access the World Clocks section in the top panel's drop-down menu by clicking the system clock. It shows your configured world clocks (not including your local time), so you can quickly check the time in other parts of the world.




2. GNOME Weather

GNOME Weather displays the weather conditions and forecast for your current location. You can access local weather conditions from the top panel's drop-down menu. You can also check the weather in other geographic locations using Weather's Places menu.



GNOME Clocks and Weather are small applications that have extension-like functionality. Both are installed by default on Fedora 30 (which is what I'm using). If you're using another distribution and don't see them, check the package manager. You can see both extensions in action in the image below.





3. Applications Menu
I think the GNOME 3 interface is perfectly enjoyable in its stock form, but you may prefer a traditional application menu. In GNOME 30, the Applications Menu extension was installed by default but not enabled. To enable it, click the Extensions Settings button in the Add-ons section of the package manager and enable the Applications Menu extension.




Now you can see the Applications Menu in the top-left corner of the top panel.



4. More columns in applications view
The Applications view is set by default to six columns of icons, probably because GNOME needs to accommodate a wide array of displays. If you're using a wide-screen display, you can use the More columns in applications menu extension to increase the columns. I find that setting it to eight makes better use of my screen by eliminating the empty columns on either side of the icons when I launch the Applications view.


Add system info to the top panel
The next three extensions provide basic system information to the top panel.

5. Harddisk LED shows a small hard drive icon with input/output (I/O) activity.
6. Load Average indicates Linux load averages taken over three time intervals.
7. Uptime Indicator shows system uptime; when it's clicked, it shows the date and time the system was started.


8. Sound Input and Output Device Chooser
Your system may have more than one audio device for input and output. For example, my laptop has internal speakers and sometimes I use a wireless Bluetooth speaker. The Sound Input and Output Device Chooser extension adds a list of your sound devices to the System Menu so you can quickly select which one you want to use.


9. Drop Down Terminal
Fellow writer Scott Nesbitt recommended the next two extensions. The first, Drop Down Terminal, enables a terminal window to drop down from the top panel by pressing a certain key; the default is the key above Tab; on my keyboard, that's the tilde (~) character. Drop Down Terminal has a settings menu for customizing transparency, height, the activation keystroke, and other configurations.


10. Todo.txt
Todo.txt adds a menu to the top panel for maintaining a file for Todo.txt task tracking. You can add or delete a task from the menu or mark it as completed.



11. Removable Drive Menu
the editor Seth Kenlon suggested Removable Drive Menu. It provides a drop-down menu for managing removable media, such as USB thumb drives. From the extension's menu, you can access a drive's files and eject it. The menu only appears when removable media is inserted.




12. GNOME Internet Radio
I enjoy listening to internet radio streams with the GNOME Internet Radio extension, which I wrote about in How to Stream Music with GNOME Internet Radio.


please read more at opensource.com



Published in GNU/Linux Rules!

With Cast To TV Extension (v6 And v7 Released)


Cast to Chromecast Gnome Shell extension

If you own a Chromecast device and you're using Gnome Shell, you should give Cast to TV a try. This Gnome Shell extension adds a new entry in the system menu which allows casting local files to Chromecast or other devices over the local network.

Cast to TV features:

  • Cast videos, music and pictures from your Linux desktop (Gnome Shell) to Chromecast and other devices on the local network
  • Videos can be streamed using subtitles - it supports both external and built-in subtitles
  • Videos not supported by the Chromecast can be transcoded on the fly
  • Allows selecting multiple files to be streamed
  • Adds a Chromecast remote controller on the Gnome Shell top bar
  • VAAPI video encoding support
  • Can show a music visualizer on the TV while casting music

The extension had 2 releases over the past 5 days. 

The first (v6) added some important new features like support for Chromecast subtitles without video transcoding, an option for setting the subtitles character encoding, and the ability to select and cast multiple files to Chromecast.

Other smaller improvements in the v6 release include showing the music cover when playing music for both Chromecast and webplayer, a position slider for the top bar remote control widget, and the ability to skip tracks using skip buttons.

The v6 release had a bug I stumbled upon while trying the extension on my Ubuntu 18.10 desktop (which uses Gnome 3.30.1), that made it unusable on Gnome 3.30 or newer. 

To fix this, a new Cast to TV v7 version was released, which also added WebSockets functionality. Thanks to this new feature, users can turn any device with a web browser into a Chromecast (sort of...), and use Cast to TV to stream videos, music or pictures to it.

To use this new WebSockets functionality, open the Cast to TV settings and change the Receiver type from Chromecast to Other device. Next, select a file to stream from the Cast to TV menu. Now you can open a web browser on a device on your local network and in the address bar, use the IP of the desktop running Cast to TV, followed by 4000 as the port (http://IP:4000). You can now start playing the video in the web browser. The next time you select a new file in Cast to TV, the web browser tab that has the http://IP:4000address open will automatically refresh, and start playing whatever you've selected.

As pointed out by the Cast to TV page, this can be useful to connect your smartphone (which has the http://IP:4000 page open) to some speakers to turn them into wireless speakers, streaming music from your Linux desktop. On Android you can even use this with the screen turned off.

It's worth noting that the extension doesn't yet support casting to multiple Chromecast devices (it doesn't let you choose to which Chromecast it should cast).

Using Cast to TV to stream videos, music or pictures to Chromecast. With the extension enabled and all required dependencies installed, Cast to TV creates a new Cast Media entry in the Gnome system menu. From here you can select the type of media you want to stream to Chromecast: video, music or pictures. In the media select dialog, you can hold the Control key to select multiple files (or Shift to select a range):

For videos you'll find a Transcode Video checkbox in the bottom left-hand side corner of the video select dialog, which you can enable to transcode videos not directly supported by Chromecast. You'll also find an extra Add Subtitles button in this video select dialog, so you can add subtitles to the videos you're streaming to Chromecast:

Cast to TV select video dialog

Some settings, like enabling hardware encoding, changing the listening port or FFmpeg path, Chromecast remote position on the top panel, enabling the music visualizer, or changing the subtitles encoding can be done from the Cast to TV settings, available in the same menu.

How to install Cast to TV extension for Gnome Shell


Cast to TV is available via the Gnome Shell extensions repository, so it can be installed from extensions.gnome.org or using Gnome Software. But the current version published there is v2 (while the latest version at the time I'm writing this article is v7), which is old, buggy and misses some features, so the instructions below explain how to install Cast to TV by downloading its latest release from its project page, and installing it manually.

As a side note, even when installed from extensions.gnome.org, Cast to TV requires some extra steps to get it to work (steps 2-4 in the instructions that follow below).

1. Download Cast to TV and install it.

Download the latest Cast to TV source from the GitHub releases page and extract it in your home folder. 

To install it, open a terminal, navigate to the Cast to TV folder (that was extracted from the archive), and run make install to install it to ~/.local/share/gnome-shell/extensions. These steps can be done using a terminal as follows:

cd gnome-shell-extension-cast-to-tv-*
make install

2. Install Cast to TV dependencies.

Cast to TV requires ffmpegnpm and nodejs. We'll later use npm to install some additional dependencies. libglib2.0-bin is also required on Debian / Ubuntu for the glib-compile-schemas executable, which is used when running make install to compile the extension schemas.

On Debian or Ubuntu, you can install ffmpegnpmnodejs and libglib2.0-bin using:

sudo apt install ffmpeg npm nodejs

On Fedora you need to enable the RPM Fusion repository to install ffmpeg. Enable this repository and install ffmpegnodejs and npm using:

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

sudo dnf install ffmpeg npm nodejs

On other Linux distributions, these packages are most probably available in the repositories so install them from there. For Node.js and npm you may want to check out the installation instructions on its website.

3. Install npm dependencies.

Now you'll need to navigate to the extension installation folder and run npm install there:

cd ~/.local/share/gnome-shell/extensions/This email address is being protected from spambots. You need JavaScript enabled to view it.
npm install

4. Enable the Cast to TV Gnome Shell extension.

Gnome Tweaks Cast to TV extension enabled

When installed from source, Gnome Shell extensions are disabled by default. To enable it, start by restarting Gnome Shell (using Xorg: press Alt + F2, type r, and press Enter, or logout/login if you're using Wayland) and the extension should show up in the Tweaks application. Use Tweaks to enable it and you're done.

The extension menu will now be available in the system menu on the top bar (top right-hand side corner). When casting some files to your Chromecast, a remote control will show up on the top bar, in the position set in the Cast to TV settings.

Published in GNU/Linux Rules!