quinta-feira, março 22, 2018

Arch Linux Experiment

I am a Fedora user since Fedora 20 and I can't see myself using any other distribution in the near future. Before that I used openSuse and Slackware. The latter by the way, it was my first and only distribution until 2010, I believe. It was a long ride because I used Slackware since 1997.

I've some experience with other distributions as well. Debian, Ubuntu, Linux Mint and Arch Linux are some of them. The latter is the distribution that I keep running my Raspberry Pi B+, only because Fedora doesn't support ARMv6 architecture, but I'm thinking about moving it back to Raspbian just because I don't need to have the latest software to run a file server.

Recently I decided to test Arch Linux in my main development machine as well. It's an i5 Acer laptop with 8GB RAM and 1TB HDD. It was a fun ride, but after one week I believe, I returned to Fedora. Not because Arch Linux is a bad distribution, quite the opposite, I think it's great, fast and light.

So this post is a recipe for installing Arch Linux in case I want to return to it in the future. First, you need to setup your keyboard layout. Mine is Brazillian Portuguese:

loadkeys br-abnt2

Then, disk partition. This is a trick one because you need to check if you system is UEFI or not. Most new hardware do, just like mine, so here is the layout I used:

# 1 - ef02 (boot partition 200MB)
# 2 - 8300 (root partition all the rest)
# 3 - 8200 (swap partition == RAM size)
gdisk /dev/sda
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkswap /dev/sda3
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda3

Just as a reference, this is a BIOS layout - no, you don't need to format the boot partition:

# 1 - ef02 (boot partition 1Mb)
# 2 - 8300 (root partition all the rest)
# 3 - 8200 (swap partition == RAM size)
gdisk /dev/sda
mkfs.ext4 /dev/sda2
mkswap /dev/sda3
mount /dev/sda2 /mnt
swapon /dev/sda3

Connect to your wireless network:


In order to start installing software, first you'll need to enable your country's mirrors:

vi /etc/pacman.d/mirrorlist

Now, you need to install all your system. Basically you'll need base and grub packages. If you use EFI, it's nice to have efibootmgr as well. Below is a list of all software I had to install to achieve my regular workflow. I use GNOME in Fedora, but here I tried other desktop environments too, so below setup is for XFCE:

pacstrap /mnt base base-devel grub intel-ucode efibootmgr pulseaudio networkmanager blueman tlp sudo cronie openssh nfs-utils autofs rsync wget git xorg-server xf86-video-intel xfce4 xfce4-pulseaudio-plugin xfce4-whiskermenu-plugin xfce4-notifyd pavucontrol network-manager-applet redshift python-gobject python-xdg librsvg lightdm-gtk-greeter-settings light-locker adapta-gtk-theme papirus-icon-theme arc-gtk-theme arc-icon-theme archlinux-wallpaper ttf-hack gedit firefox-i18n-pt-br libreoffice-fresh-pt-BR audacity keepassxc meld gnome-builder flatpak-builder pdfgrep audacious mpv thunar-volman gvfs gnome-disk-utility neovim docker xorg-xhost gitg tracker scrot gthumb hexchat

Then KDE:

pacstrap /mnt base base-devel grub intel-ucode efibootmgr pulseaudio networkmanager blueman tlp sudo cronie openssh nfs-utils autofs rsync wget git xorg-server xf86-video-intel plasma konsole kate dolphin archlinux-wallpaper firefox-i18n-pt-br libreoffice-fresh-pt-BR audacity keepassxc meld gnome-builder flatpak-builder pdfgrep audacious mpv docker xorg-xhost gitg scrot hexchat

And finally GNOME:

pacstrap /mnt base base-devel grub intel-ucode efibootmgr pulseaudio networkmanager blueman tlp sudo cronie openssh nfs-utils autofs rsync wget git xorg-server xf86-video-intel gnome gedit archlinux-wallpaper firefox-i18n-pt-br libreoffice-fresh-pt-BR audacity keepassxc meld gnome-builder flatpak-builder pdfgrep audacious mpv docker xorg-xhost gitg scrot polari

There are other software that I use regularly in my development machine, like spotify, steam, skype but I didn't bother to install them for this test.

Last thing before going chroot, we need to generate our fstab:

genfstab -U /mnt > /mnt/etc/fstab

Then, chroot to your new system:

arch-chroot /mnt

Set hostname:

echo myacer.mydomain > /etc/hostname

Set local time and enable clock synchronization:

ln -sf /usr/share/zoneinfo/Brazil/East /etc/localtime
timedatectl set-ntp true

Set locale:

echo pt_BR.UTF-8 UTF-8 > /etc/locale.gen
echo LANG=pt_BR.UTF-8 > /etc/locale.conf

Set keyboard for console:

echo KEYMAP=br-abnt2 > /etc/vconsole.conf

Install kernel:

mkinitcpio -p linux

Set root password:


Config boot loader with your kernel parameters and install it:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux --recheck
# for ACER screen freeze: GRUB_CMDLINE_LINUX_DEFAULT="quiet i915.enable_rc6=0"
# for DELL screen freeze: GRUB_CMDLINE_LINUX_DEFAULT="quiet video=SVIDEO-1:d"
# for ACPI warning message: GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3"
vi /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg

Add users:

useradd -m -G wheel myuser
useradd -m otheruser
passwd myuser
passwd otheruser

Enable login manager (gdm for GNOME, sddm for KDE or lightdm for everything else) and other services (tlp is specific for notebooks):

systemctl enable lightdm
systemctl enable NetworkManager
systemctl enable bluetooth
systemctl enable autofs
systemctl enable tlp
systemctl enable tlp-sleep
systemctl mask systemd-rfkill.service
systemctl mask systemd-rfkill.socket
systemctl enable cronie

Enable wheel group in sudoers:

vi /etc/sudoers

Add your servers' IP to your hosts file:

echo 999.999.999.999 server.domain server > /etc/hosts

Exit chroot, reboot, login and install pamac:

cd /tmp
git clone https://aur.archlinux.org/pamac-aur.git
cd pamac-aur/
makepkg -si

Prevent bluetooth from starting on boot:

gsettings set org.blueman.plugins.powermanager auto-power-on false

Enable tap-to-click in gdm for GNOME and show date in GNOME Desktop clock:

gsettings set org.gnome.desktop.interface clock-show-date true
sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true

Enable redshift for XFCE (GNOME and KDE doesn't need that):


That's it and if you want to take a look in the end result, presenting XFCE:

terça-feira, fevereiro 27, 2018

GNOME Notes 3.27.90

I know, I'm late, but after releasing 3.27.90 I took some days off GNOME Notes development to enjoy my holidays with my son - girls stayed at home, doing girls stuff, this time.

When I get back, I was involved in trying new Linux distros to see how my workflow would work with them. That took some days too, so here we go with my thoughts on GNOME Notes 3.28.

I'm using 3.27.90 version, which will become our 3.28, daily and it's becoming more stable every release. We're able to release in time on every scheduled date. We had 3.27 1, 2, 3, 4 and 90 dot releases and I believe that's great to make community to believe in GNOME Notes development team again.

This development cycle was so fun and productive, but most changes are "under the skin". You'll notice small UI changes though.

Fixed horizontal alignment

Everything started with our move to meson build system. This tool is amazingly fast and it has decreased application building time to more reasonable numbers - in my modest i5, these are the numbers:

real    0m13,665s
user    0m35,811s
sys     0m5,797s

That work and gettext port was done by Iñigo Martínez. Thanks man!

Another great contribution was done by Jonathan Kang who added the Shortcuts window and added support to GNOME Notes remember the view style (icon or list) used last time. Thank you Mr. Kang!

New shortcuts window

But the programming tractor on this release was Mohammed Sadiq, who is doing the heavy duty, improving and cleaning up the code, migrating widgets to GtkBuilder, improving code adherence to GNOME code standards, changing code to use g_auto* and fixing some annoying bugs, one of them was crashing application when importing notes and another one when running in X11 instead of Wayland. So, I don't have words to describe how thankful I am for having Mohammed in the team! Thank you man, you have made a huge difference!

We also had other contributors fixing code, translating, improving the application as a whole.  To all of you guys, my sincere gratitude! I hope you can continue contributing next cycle! Thank you!

One thing we are considering to remove from our code base is the support for Zeitgeist. This cycle we disabled support by default, but if you still want it, just configure meson to add it back:

$ meson configure -Dzeitgeist=true

If you still use Zeitgeist, please comment below and we can discuss how we can mitigate that. If we don't hear from the community then, we'll drop it from next release cycle.

Last but not least, we finally managed to improve {own|next}cloud support. Notes are not being lost any more, at least in my tests :) so please start to open ticket if that still happens. It is slow though, but this is something we'll try to address in the next cycle.

I'll write another post about our plans for the next release, so stay tuned!

terça-feira, junho 06, 2017

GNOME Notes 3.24

This is awesome! I have done my first deploy as a GNOME maintainer:

GNOME Notes 3.24.

I started to work in GNOME Notes (Bijiben) on Feb 27th, 2017 to be exact, when I started to talk with Pierre-Yves Luyten, the former maintainer, about taking over his work in that module.

The last GNOME Notes release was about one year ago, on May 30th, 2016, and it was not even a stable one (3.21.2), so we were overdue for a new one.

The road was not easy though because we had to prioritize things and try to fix as many bugs as possible, in a short period of time. The biggest challenge: to convert from WebKitGTK+ v.1 to WebKitGTK+ v.2.

The good thing about open source and GNOME community is that everybody is willing to help. The whole WebKitGTK+ migration was done by Carlos Garcia Campos - if you read this my friend, thank you very much.

Lots of building and memory leaks fixes done by Philip Withnall.

There are others, off course, who contributed with smaller patches, bug reporting and menthoring.

In these 3 months working in this project I met very nice people, who's doing the heavylifting: Iñigo Martínez and Jonathan Kang. They were already engaged in the project, so it was nice to have them working hard, fixing stuff, reviewing patches. Thank you guys, I hope to have you around working side by side in the next version.

Last but not least, I would like to thank Georges Basile Stavracas Neto, for being so helpful and pacient answering tons of questions I throw him in a daily basis. He also helped with some bug fixes and to improve the preferences dialog layout:

Preferences dialog.

So, that's it for now. Much more to come. Stay tuned!

quinta-feira, fevereiro 23, 2017

Scratch 2 in Fedora

My 8yo son started to have what he calls "Robotic Lessons" at school, which is not actually robotics yet, but introduction to programming using Scratch.

The first time I heard about it I though it was great because I though Scratch was Linux compatible, due to it comes installed by default in Raspbian. However I was disappointed to know that it was not like that.

Fedora has Scratch 1.4 in the repos which is not the version he's using at school, so I tried to find information about how to install the new version. The problem is that the version 2 run in Adobe Air and despite it says that it runs on Linux, it's not all distros.

So, after a few attempts trying to understand what was missing to run in Fedora, I gave it up, installed wine and the Windows version of those products. It simply worked!

This would be a great candidate for flatpak or snap.

segunda-feira, outubro 19, 2015

CoyoteTM 0.8 - Match Your Desktop

Is this the last version? Not sure yet! Is it stable? I hope so - for my usage, it seems fine, please prove me wrong!

The nicest thing in this version are the four color schemes added. The idea is to match your desktop theme. I know, I know, four is a low number, but if you use the default Gnome or Unity themes, you are covered. If you use Numix theme, you should be fine too and there is the now old dark theme as well. Enjoy!

Here is the complete ChangeLog:
  • Fixed compilation warnings when including xpm files;
  • Removed borders from all menubar and toolbar buttons;
  • Added code to persist chosen color scheme and selected show all tasks option across sessions;
  • Added 4 color schemes, 2 light (the default based on Adwaita palette and another one based on Ambiance palette) and 2 dark (the previous dark one and the new one based on Numix palette);
  • Added read-only mode for notes fields, so use can select text. Before it was not possible;
  • Cancel pending work code refactoring done.
 You already know the link!

sexta-feira, setembro 04, 2015

CoyoteTM 0.7 - Lots of Fun

I was not expecting this but CoyoteTM have got to version 0.7 - huge number.
There are lots of changes in the code. I don't split between bugfix and enhancements, so here is a narrowed list of changes - check ChangeLog for more:
  • Changed window icon handling supporting fltk version distributed in Ubuntu among others;
  • Improved keyboard handling for list views;
  • Added window button for common usage functions;
  • Improved messages; and
  • much more.
 So, reach out CoyoteTM download page and Godspeed!

terça-feira, julho 14, 2015

CoyoteTM 0.6 - small improvements

Another day and another batch of changes - most fixes:
  • Added a task combobox in history view, so you'll know which task that history is refering too;
  • Changed remove button in history view to only remove history of tasks in progress. It will ask to open the task view otherwise;
  • Small fix to some parts where CoyoteTM was displaying Coyote TM;
  • Fixed spacing between menus and shortcuts; and
  • Merged canceled and completed view menu checkboxes to only "show all" now.
As usual, you can download it from sourceforge.
History view now shows which task you are working on
You just have to ask