Bookmarks

You haven't yet saved any bookmarks. To bookmark a post, just click .

  • One week of Linux as a Developer

  • It's exactly one week since I switched from Windows to Linux (Fedora). And, Oh Boy!!! This is god level! and now I am Linux Fanboy.😍

    Backstory first. So around a week earlier, my SSD crashed. I don't keep anything other than Programs and Operating System on my SSD, so I was on the safe side as my Data was on a secondary Harddrive.

    And I have been using Windows since childhood. I came across Linux only when I was in high school. Then around in my 2nd year of college, 2021, I tried switching to Linux. Not once but twice. Yes, I switched between Windows and Linux, twice as my daily driver. And, only I know the pain of reinstalling all programs again.

    But there was more pain using Linux in 2020 and 2021 than it is now. Now I think they are resolved. Mostly due to constant improvements and efforts by the developer community and some by getting over my rookie mistakes of negligence.

    Here are a few tips, that should help you put your first step when moving to Linux and what has been my experience.


    Choosing the Right Distro

    So, Linux isn't an Operating System. It's a Kernel; the base software layer that provides a higher-level Interface to work with underlying Hardware. On top of this Linux Kernel, a Distro/Distribution is created.

    A Distro is just a packaged bundle of the Kernel, GNU core utilities, and Desktop Environment (The UI that you see) to create the "LINUX" that you see (overly simplified).

    Each distro requires a different level of experience, ranging from beginner-friendly to all the way to DIY.

    I started from Ubuntu; a completely beginner-friendly distro; with a fixed-length release cycle (a new release every 6 months). Was good, but I needed something else to learn more about the Linux space.

    Then I switched to Manjaro and then to Arch; the former being based on Arch is intermediate level and later one complete DIY. Both have a rolling release cycle (new releases as soon as possible). The DIY made me go on to try a variety of things, which I wanted to do but the focus was not on doing my day-to-day work.

    Finally, I choose to stay with Fedora, an intermediate-level distro, with a fixed-length release cycle (every 6-month) so I can care less about breaking updates and more about my work.

    Choosing your Desktop Environment (DE)

    If you aren't from Linux desktop space, you might have never heard of Desktop Environments. To put it simply, it is the User Interface for the distro that you use.

    If you have ever seen Ubuntu, you instead had seen a modified GNOME. If you have seen Manjaro, you probably would have seen it with KDE Plasma.

    The thing is DEs vary a lot, each one serving a different set of people, build with specific things in mind. Major DEs are now instead, becoming a complete platform in themselves. Shipping default apps along with the DE.

    And Interesting thing is, that you can pair different distros with different DEs as per your needs and preferences. Rather than just sticking with one UI as on Windows or Mac. + you can customize them.

    Some quite known DEs are:

    • GNOME (minimalistic)
    • KDE Plasma (customizable)
    • Cosmic (a fork of GNOME for Pop!_OS
    • XFCE (Ultra light-weight)
    • LXQT
    • and long list

    I previously tried KDE, and I went on a customization spree to customize. Check r/Unixporn if you want to know what level of customization is possible with KDE (TLDR; most post uses KDE as their Desktop Environment).

    The problem being KDE's customizability, also means there is quite a lot to fix (umm, uugghh, bugs). Usually, devs fix it soon enough. But this customizability option also means I am doing customization with inconsistent results, instead of doing my daily chores with my laptop.

    So, I choose to go with GNOME, embracing minimalism.

    Touchpad Gestures are now finally there...🥳

    Gestures were neglected for a long time in the past for Linux.

    Just 2 years back, the support for gestures was pathetic. Even on major DEs like GNOME and KDE. No one-to-one gesture, and required installation of extensions or plugins for any kind of usable gestures. And with every laptop user, touchpad gestures just mean cherry on top.

    But now, they are finally here!

    Or at least, now GNOME has better support right out of the box. GNOME starting with version 40 started offering in-built 3 fingers gestures. As of 2022, with GNOME 42.1, we still don't have support for 4-finger gestures or customizing them. Probably we'll need to wait for some more time.

    The KDE team is also working on gestures support, so stay tuned.

    To make up for the problem though, the community came up with a solution. An extension to customize default gestures and even add 4 finger gestures.

    GitHub - harshadgavali/gnome-gesture-improvements: Touchpad gesture improvements for GNOME on Wayland/X11
    Touchpad gesture improvements for GNOME on Wayland/X11 - GitHub - harshadgavali/gnome-gesture-improvements: Touchpad gesture improvements for GNOME on Wayland/X11

    The terminal is your friend!🤝

    I almost forgot how applications are installed on Windows. I never for even once clicked on a long list of "NEXT" buttons to install an application.

    • I either used dnf; the default package manager shipped with Fedora
    • Or using "GNOME Software" app to install anything that wasn't on dnf repositories, but instead on Flathub or something Proprietary.

    DNF repositories don't deal with any Proprietary applications. To overcome the problem you can either do (I did both):

    sudo dnf groupupdate core
    • Add Flathub repositories using the command line.
    flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

    Also, DNF does feel really slow. So I updated dnf.conf as well, right through the terminal.

    $ sudo nano /etc/dnf/dnf.conf
    
    fastestmirror=True
    max_parallel_downloads=10
    defaultyes=True
    keepcache=True

    After that, I went on to install all the required tools for my dev environment.

    Almost all developer tools, IDE, and editors offer native support

    If not through the package manager, then maybe via Flathub; or even straight shell scripts to run as an install file. But, then you might need to leave aside MS Office and Adobe suite behind.

    Open-source tools are still there. And they pack quite a punch.

    Battery Conserve Mode on a press of a command🔋

    Optimize the battery consumption using TLP. At times Linux can become a monster and go onto drain the battery. Or, you might want to keep the device plugged in without charging it to 100%. This tool came to the rescue:

    GitHub - linrunner/TLP: TLP - Optimize Linux Laptop Battery Life
    Optimize Linux Laptop Battery Life. Contribute to linrunner/TLP development by creating an account on GitHub.
    $ sudo dnf install tlp
    $ sudo nano /etc/tlp.conf
    Install TLP and edit the configuration file changing values for STOP_CHARGE_THRESH_BAT0 and START_CHARGE_THRESH_BAT0
    $ sudo systemctl enable tlp.service
    $ sudo tlp-stat -b
    Enable TLP service and view battery stats 

    There was a problem that my battery didn't like with tlp. You see, it only accepted either 0 or 1 for STOP_CHARGE_THRESH_BAT0. Lenovo laptops offer something called Conservation Mode for their batteries, which can be enabled by Lenovo Vantage Software. This mode limits the charging to 60%. Hence, what I needed was to set this value to 1 if I wanted Conservation Mode.

    $ sudo tlp setcharge 60 1 BAT1
    My battery is interestingly referred to as BAT1; an external battery even though it is built-in.

    And When I wanted to temporarily bring the battery to a full charge, issue the following terminal command.

    $ sudo tlp fullcharge

    The battery will then charge to its maximum capacity, and revert to the previous thresholds afterwards.

    Keeping my batteries safe and healthy and fully charge when I am on an adventurous trip.


    Overall, I am satisfied as a developer with my dev setup on Fedora Linux. Except for Video Games or Microsoft Office that I don't really care about; this is the perfect place to do development stuff, I ever came across.

    I am going to stay here until I cause havoc or I needed something that only Windows could have done. At which point I'll probably consider keeping the dev station separate.

    Until then, have fun.

    Singning off, Anurag Dhadse.