Table of Contents

Welcome From The Chief Editor

MP3 Bitrate Batch Convertor

Skrooge, Revisited, Part 2: Importing Other File Formats

PCLinuxOS Recipe Corner: A Twist on the Cabbage Roll Casserole

2021 LinuxQuestions.org Members Choice Awards

GIMP Tutorial: A Simple Floating Logo

Short Topix: Polkit Vulnerability Discovered, Patched

My Favorite Java Program Stopped Working. Now What?

PCLinuxOS Recipe Corner Extra: Outrageous Chocolate Chip Cookies

PCLinuxOS Puzzled Partitions

Screenshot Showcase

From The Chief Editor's Desk...

I admit it. I'm a tinkerer. I love to tinker with all sorts of things. Lawnmowers. Cars. Building "stuff" from wood or metal. I made the mailbox on the front of my house from 1x10 pine boards. I built the chicken coop from plans that were just floating around in my head ... using mostly reclaimed lumber. I built the run for my chickens.

Of course, that carries over to my computing life. I've already mentioned in the forum about replacing the power supply board of my Samsung laser printer when it burned out. But I also like to write custom bash scripts to make certain tasks easier and more efficient. I haven't been writing bash scripts for all that long, and I still consider myself a novice.

In my Windows 3.1 and Windows 95 days, I used to write shareware software. Much of what I wrote centered around Windows Help files. More specifically, the 16-bit version of Windows Help. I used to write my programs in C. Because of limited financial means and the costs of the programming environments, I wasn't able to continue as Windows moved into 32-bit and then 64-bit territories.

So, bash scripts it is for me, at least at this point. That early programming experience in C has been invaluable. If nothing else, it has taught me about functions, variables, and the general flow of computer programs. I apply that same mentality to my bash scripts.

Many of my bash scripts use Zenity to add graphical user interface elements to what would otherwise be entirely a command line/terminal experience. The way I look at it, using Zenity dialogs gives the user a true GUI experience. It also alleviates requiring the end user to enter a long string of cryptic command line switches and parameters. You simply set those up from within the script (as much as possible), with individual prompts from the user as they go through the script. There are a lot of Linux users who avoid the command line like the plague.

This month, I wrote an article about one such script I recently created to change the bitrate of MP3 files en masse. Otherwise, I could have done the same thing, one file at a time, in some very capable sound file editors. The latter way would have taken much, much more time, so my script makes the task much easier and much, much more efficient. With the new script, it's a trivial task that is completed in less than a minute. In my way of thinking, this is way more efficient, and allows me to get on with other tasks.

Because I'm a Xfce desktop user, I typically build my scripts so they can be used either directly from the command line, or more importantly, so they can be used as a Thunar custom action (Thunar is Xfce's file manager, if you're not familiar). They can also be used from other file managers of other desktop environments, like Caja in Mate or Dolphin in Plasma. It's a trivial task to learn how to set them up in those environments, as there is a lot of documentation/tutorials on how to do it floating around on the internet.

********************

Apparently, I'm not the only one who likes to "tinker." Back in 2013 (and updated in 2019), I wrote a script to download the "Picture of the Day" from the NatGeo website. It seems that they also like to periodically restructure (tinker with) their web pages. I presume it's to prevent people from downloading those images. Neither the original script from 2013 nor the updated script from 2019 work as intended. Thus, I've created yet a third update (February 2022) to the script that keeps the images coming in. Like with the original script, just set up a cron job to download the images to your computer every day. Simply save the script to the directory where you typically store your bash scripts, remove the ".txt" file extension, and make the file executable.

********************

This month's cover was created by Meemaw, to commemorate St. Patrick's Day on March 17.

********************

Until next month, I bid you peace, happiness, serenity, prosperity ... and continued good health!

MP3 Bitrate Batch Convertor

by Paul Arnote (parnote)

Call me old fashioned if you must, but I usually listen to the radio when I'm driving in my pickup truck. I usually listen to news talk radio, country & western music, and classic rock & roll. The radio in my truck also has a MP3 CD player, as well as USB ports that I have no idea of what to do with (owner's manual? Meh! tl;dr! ... alright ... alright ... I finally read THAT section of the manual from a PDF of my truck's owner's manual that I downloaded online). Every once in a while, when the kids are in the truck and we're all "headed down the highway," I'll put in the MP3 CD I made for my daughter (you can put hours and hours of music on a MP3 CD). It's full of music from some of her favorite movies ... Frozen, Frozen II, Chitty Chitty Bang Bang, Moana, Mary Poppins, and a smattering of some of her favorite pop/rock songs. Those usually are classic rock. Queen and The Beatles are her favorite bands. Hey ... the young girl has GREAT taste!

Well, today it seems like everyone has a podcast. To be perfectly honest, I had no idea how many podcasts are available. So, ok. I'm late to the podcast party. Despite being around for quite a while, I've never jumped on the whole podcast or streaming bandwagon. For a noob like me, the number of podcasts out there is mind numbing. So, especially when I'm listening to news talk radio, someone out there is advertising a podcast on some random topic.

Lately, I've been hearing advertisements for a new (to me anyways) podcast. It sounded like something I might be interested in, full of espionage, intrigue, drama, etc. It's called "The Agent." It's about a KGB agent during the height of the "Cold War," who slipped into the U.S. unnoticed, and managed to blend into the everyday fabric of life while carrying out his KGB tasks. So, I went looking for it.

I was getting pretty discouraged trying to find it. Most of the results I checked initially were from places like iTunes or some other place that wanted you to sign up for an account. iTunes was a no-go, since I run Linux (PCLinuxOS) and Apple doesn't have a Linux client for iTunes. Then, I stumbled on a whole treasure trove of podcasts on iHeart radio ... including the podcast I was searching for. It debuted in late October, 2021, and finished up in January, 2022.

Here is the description for "The Agent" podcast, from iHeart:

The Agent is the remarkable true story of Jack Barsky, the longest-surviving known member of the KGB illegals program operated during the height of the Cold War. Barsky hid in plain sight in America for 10 years, all the while leading dual lives on both sides of the Atlantic Ocean. On one fateful day, he was confronted with an impossible choice. The Agent is a production of Imperative Entertainment in association with Windjoy and is created, written, produced and edited by Jason Hoch. Narration by Alden Ehrenreich. Executive Producers are Jason Hoch, Jack Barsky and Alden Ehrenreich. Original score by Jasha Klebe. Sound engineering and additional editing by Shaine Freeman.

If you have an interest, there's probably a podcast that covers it. There are many "categories" of podcasts. They include politics (of course), crime, fiction, comedy, sports, self-help, finance/money, kids & family, entertainment, food, music, games & hobbies, history, and many, many more.

Having found the podcast I wanted to hear, I proceeded to download the MP3 files of the podcast to my computer. That part was fairly easy, using a browser plugin. For this particular podcast, there are 13 parts, if you include the "trailer" for the podcast.

iHeart and iTunes (the latter of which is pretty much inaccessible to Linux users anyways, as far as I can tell) aren't the only place to grab podcasts from, either. Here are some others:

Stitcher, where I just grabbed another "historical" podcast called "The MLK Tapes" that takes another look at the MLK assasination. From the podcasts I've downloaded thus far, all of the MP3 files from Stitcher are encoded at 192 kbps, which offers great sound fidelity at a smaller file size.

Spotify, of course, is (or should be) familiar to most people. They have a rather extensive collection of podcasts available, covering a wide range of topics and interests. The one podcast (The Trojan Horse Affair, nine episodes total, including the trailer) were all MP3 files at 128 kbps, which offers perfectly acceptable sound fidelity at a reasonable file size.

Google (yes, I know there are a growing number of users who have no interest ... at all ... in using services provided by Google ... so this is for those who are "ok" with using Google services) has a collection of podcasts from all over the internet. From what I can tell, it appears to be a smish-smash collection of podcasts. I've not really found anything here that's unique or exclusive ... yet. Maybe you should think of it as a good starting point when you're not sure what you want to listen to.

Podcasts-Online.org is another "clearing house" of available free podcasts. Like all of the other podcast sites, there are different categories to match up with varied interests.

Tune-In.com, like all of the others, offers a ton of podcasts that are sure to appeal to just about any interest. I downloaded one episode of an ongoing serial podcast, Stuff You Should Know, and found the MP3 file encoded at an acceptable 96 kbps bitrate, with more than adequate sound fidelity.

I would be negligent if I didn't point you to some Linux-themed podcasts, while we're at it. Be sure to explore the shows from our friends at Jupiter Broadcasting. While there, check out both the active shows and the archived shows. The Late Night Linux podcast is from the U.K., and is produced weekly. Another weekly podcast comes from the folks at Destination Linux. For others, just enter "free linux podcasts" in your favorite search engine (the previous link should open a search with DuckDuckGo).

There are literally TONS of free podcasts available. I just searched for "free podcasts" on DuckDuckGo. I'm sure you'll find more than enough podcasts to keep you busy for quite a long time.

Granted, the quality of the podcasts is wide and varied. So, if you don't find what you're looking for right away, keep looking.

Then, it was time to start gathering some information about the MP3 files I downloaded. The first thing I noticed was that, all together, all of the MP3 files for the podcast series I downloaded (The Agent) totalled up to 1.2GB in total file size. My goal is to burn them to a MP3 CD that I can play in my truck so I can listen to it while driving to and from work, or while tooling around town, and 1.2GB of files aren't going to fit on the 700MB of space on a single CD. Now, I know that CDs are so "yesterday" on the technology spectrum, but they work for my intended use.

Digging deeper, I discovered why the files are so "hefty." Using mediainfo from the PCLinuxOS repository (I use the CLI version, since I'm a Xfce desktop user, and I have it tied to a Thunar custom action. The GUI version will also work equally as well.). All of the MP3 files are recorded at the maximum bitrate: 320 kbps at a constant bitrate. That's pretty much the highest quality you can get from a MP3 file.

The easiest way to get these MP3 files to fit onto a single CD is to decrease the bitrate, and "sacrifice" some of the audio quality. For the most part, that quality loss is quite subjective, which is why I say sacrifice in quotes. Technically, I can reduce the bitrate all the way to 128 kbps, and still not notice any loss of quality in the sound fidelity. You can use a $1,000 set of headphones on a $10,000 stereo system, and you might be able to notice a slight degradation in sound fidelity. Plus, we're not talking about Mozart's or Beethoven's lost concerto. We're talking about (mostly) the spoken word with these podcast episodes.

For a quick review on MP3 compression, the higher the bitrate, the higher the quality, the lower the compression, and the larger the resulting files. MP3 is a lossy compression format, which means every time you recompress a MP3 file, you'll lose more and more fidelity from the file. If you want a compression format/algorithm that is lossless, FLAC is your better choice. However, not all digital players can play FLAC formatted audio files, and you will most likely not get the levels of compression to sufficiently shrink the files to fit onto your destination medium (a 700MB CD in our case here).

So, that means that the converse is true. The lower the bitrate, the lower the quality, the higher the compression, and the smaller the resulting files. I'm compressing the podcast MP3 files (one per episode, for a total of 13 files) to fit on a 700MB CD that's going to be played back on my truck's "audio system" while I'm going down the highway, mixed with road noise. For sure, I'm not going to be noticing any loss of sound fidelity.

And, for the sake of review, there are other things that affect the size of MP3 files. First, reducing a stereo audio file to mono will net you huge gains towards a smaller sized file. But who wants to go around listening to something with the fidelity of AM radio? We/I can do better than that. The "normal" (er, most common) sampling frequency is 44.1kHz. DVDs typically use a 48.0kHz sampling frequency, but increasing it only makes a bigger file. Less common is the 32kHz sampling frequency. While we could decrease the sampling frequency to this level, we're not likely to see the sizes of our files shrink dramatically.

Be careful that you don't take your file compression "too far," unless you just really, really have to. Remember, you're still going to want to listen to this, so you don't want to make it difficult to listen to. The trailer file for "The Agent" was originally 6.5MB (with a CBR of 320 kbps). Using the lowest constant bitrate of 32 kbps, I managed to get the file size down to under 850KB. But then again, it also sounds like it. I could have reduced it further by changing it from stereo to mono, and by using a lower sampling frequency. But at 32 kbps, it already sounds pretty rough. The loss of sound fidelity is VERY apparent. The sound is very "tinny," sounds almost robotic, and the loss of dynamic range is very evident. If you keep your bitrate at 128 kbps or higher, you're very unlikely to notice any degradation of sound fidelity. Even though 128 kbps works fine, I like to use 160 or 192 kbps, just to give a little safety buffer to insure more than adequate sound fidelity.

What I was wanting/needing was a quick way to make the conversions. I explored several options from things I had installed from the PCLinuxOS repository. XCFA worked really well, but I didn't like how it was laid out. Audacity did a good job too, provided I wanted to do the conversions one file at a time. But, being the Xfce user that I am, coupled with my liking to tinker with bash scripts, I figured there had to be a way to do it from right within the Thunar file manager that I'm so accustomed to using. So, I set out to create that method.

My Needs

So, I had to first determine exactly what I wanted and needed the script to do. And, had I just stuck to converting a high resolution MP3 file from one constant bitrate to a lower constant bitrate, I'd have been done and moving on in less than 15 minutes. But, nope. I wanted to choose the output directory for the converted files, the bitrate for the converted files, and whether or not I made the MP3 files use a constant bitrate or a variable bitrate.

Variable bitrate (VBR) MP3 files have a bit more efficiency and do more to preserve sound fidelity than a similarly recorded MP3 file at a constant bitrate (CBR). VBR files dynamically raise and lower the bitrate, depending on need, within a target bitrate range. So, silent areas are recorded at lower bitrates, and louder portions are recorded at higher bitrates. The result is higher sound fidelity at lower average bitrates, resulting in smaller files.

The script also needed graphical components, to make it more user friendly. Since my end goal was to make it accessible from inside Thunar by way of a Thunar custom action, I needed the ability to make data entries on the fly, so some kind of GUI interface was necessary. That is accomplished by leveraging zenity to manage the GUI elements.

The Script

So, here's the script. You can also download it from the magazine website. As you can see below, it's very short (less than 50 lines). The download is only 2.6KB in size. The file is named mp3-bitrate-convert.sh.txt. Save it to wherever on your computer you store your bash files. Then, simply remove the .txt file extension, and make the file executable.

Of course, being a bash script, it opens with the typical bash shebang. Line 3 initializes an integer to start counting at 1. This integer will be important later on when displaying the progress dialog box.

Lines 5 - 11 create the dialog box to enter the destination file's directory. In my tests, I saved my files to ./Test1. If the directory entered does not already exist, it will be created. Because the script writes the output file to a new file to avoid overwriting the original file, you can also write the file to the current working directory. Contrary to the instructions in the dialog box, you can enter ./ as the directory to write the new files to.

Lines 13 - 16 create the dialog box that allows the end user to select whether to re-encode the MP3 file as a CBR (constant bitrate) or VBR (variable bitrate) MP3 file. What you choose here determines which of the next two dialogs you are shown.

Lines 17 - 23 manages the dialog box that is displayed if the end user selects to encode the MP3 file with a constant bitrate. There is some instructional text displayed at the top of the dialog box, and all of the common bitrates from 32 kbps to 320 kbps (you may have to scroll the list to see all of the selections). Simply select the bitrate you want to use, and then select the OK button.

Lines 24 - 30 control the dialog box the end user sees if they choose to encode the MP3 file using a variable bitrate. Just like with the CBR dialog box, some instructional text is provided at the top of the dialog window. The selections range from 0 to 9, so you may have to scroll the list to see all options. The default value in this dialog box is Level 2, which provides an average bitrate of 190 kbps, within a range of 170 to 210 kbps.

Lines 32 - 42 is where the magic happens to re-encode the MP3(s) at the new bitrate. Yes, multiple files can be fed to the script at one time, and the code here will process through those MP3 files one by one, until all of the files have been processed. Lines 33 - 35 make sure the file specified actually exists. If it doesn't, the script will exit.

Line 36 sets up the text that will be displayed in the progress dialog box, so you will know where in the process the script is at. This is especially informative when multiple files are being processed and re-encoded.

Line 37 strips the file extension off of the input file, to make it easier for us to rename the output file with information that makes it unique from the original file. This helps ensure that the original file is not overwritten.

Line 38 calls on ffmpeg to perform the conversion on the input file, and to use the libmp3lame codec to encode the MP3 file. The information for the encoding is stored in the $QUAL string, and it is unique to whether the user chooses CBR or VBR to use when encoding the MP3 file. That variable is written into memory when the end user makes their bitrate choice in either the CBR or VBR bitrate selection dialog boxes. Then, the output file is written to the chosen directory, with the base filename, and appended with the bitrate chosen by the end user and the ".mp3" file extension. If you choose the VBR route, the bitrate appended to the end of the filename will be a single digit between 0 and 9. If you choose the CBR route, the bitrate appended to the end of the filename will be either a double or triple digit number that corresponds to the chosen CBR bitrate.

Lines 39 and 40 set and increment the percentage displayed by the progress bar in the progress dialog box. Line 42 completes the for - do loop, and initializes the progress dialog box. Line 44 exits the script when it is complete.

Using The Script

Don't fret if you don't use Xfce or Thunar file manager. This script also runs PERFECTLY from a command line prompt. I have no doubts that it should be able to run from within the Caja file manager on Mate, and with very little trouble from the Dolphin file manager in KDE. Since I really don't use those desktop environments, I won't stumble through trying to tell you how to set those up. I'm no longer familiar enough with them to be able to guide you on an error-free setup when it comes to integrating the script into those file managers' context menus.

To run the script from the command line, simply execute the script with the files you want to re-encode listed as arguments. I store all of my scripts in a /bin directory in my $HOME directory, and that directory has been added to my default $PATH statement. That way, my scripts can be found whenever they are needed, without having to provide a full path to the scripts. I recommend you do the same (it makes life SO much easier).

Similarly, cd to the directory that contains the MP3 files you want to encode. That way, all you have to provide as command line arguments are the filenames. Otherwise, you will need to provide a fully qualified path and filename for each file you want to re-encode. From there, just follow the prompts in the dialog boxes that appear on your screen.

Also, take note that the script will not complete on filenames that contain spaces. In fact, it will fail every single time. I know there's a fix somewhere for this, but I have not implemented it. First, it's too time consuming. The script works exactly as I intend, and accomplishes what I set out to do. Second, it will make the script larger than it needs to be. Third, since I've come to my senses and stopped using Windows, I've come to absolutely hate spaces in filenames. Spaces are commonly used as delimiters for various command arguments in Linux, so the inclusion of spaces in filenames causes unnecessary problems. I have a one-liner bash command that does nothing but replace spaces in filenames with either a dash or a period. I run it from a Thunar custom action, and I use it ... A LOT. The same thing goes for directory names, meaning NO SPACES. So ... strip filenames (and directory names) of spaces before attempting to run this script on your MP3 files, and you'll have no problem.

To set the script up as a Thunar custom action (that appears on the right-click context menu in Thunar), go to the Edit > Configure custom action menu item. In the dialog box that appears, select the "+" icon, and fill out the dialog boxes (pictured above) as shown. For the command on the "Basic" tab, enter mp3-bitrate-convert.sh %N. Under the "Appearance Conditions" tab, place a checkmark next to "Audio files," and enter "*.mp3;*.MP3" on the "File Pattern" line.

Now, whenever you right click on a MP3 file, you will be given the option to select MP3 Bitrate Convertor from the right-click context menu. Even better, if you have a whole bunch of MP3 files to convert (I had 13 to do here), you can select them all and let the MP3 Bitrate Convertor do its job on all of them, one after another, while you go get a cup of coffee and/or a BLT (bacon, lettuce, tomato ... with mayo) sandwich. Follow the dialog prompts, and you will be able to perform the bitrate conversion without ever having to leave Thunar ... and without even launching any other program.

Summary

I love how robust Linux is. If you can think of a problem, you can probably also come up with a way to solve it.

One thing that helped me write this simple bash script so quickly was code reuse. Much of the code that I used in the bash script was taken from other scripts I have written in the past. I just had to take the time to customize and tailor the script code fragments into a cohesive script, and to the task at hand. The only "new" code in the bash script are those customizations that I made to fulfill the task I set out to do. As a bonus, every time I reuse code fragments, I learn something new about how to make it more efficient. This time was no different. It's always a good thing when you learn new things that make things even more efficient. If I can do this, then I'm sure you also can, if you only set your mind to it.

Skrooge, Revisited, Part 2: Importing Other File Formats

by David Pardue (kalwisti)

In my previous article, I offered some tips for using Skrooge more efficiently. After getting started with the program by manually entering two months' worth of my most recent transactions, I became more adventurous and tried importing all of my checkbook data -- from June 2019 to the present -- into Skrooge. (I do my bookkeeping redundantly with GnuCash, HomeBank as well as a LibreOffice Calc checkbook template).

One of Skrooge's strengths is its impressive import / export capabilities. A list of supported file formats is available at https://skrooge.org/imports.

Since both .xhb and .gnc (.gnucash) formats are supported, I imported my HomeBank and GnuCash data files -- approximately 1600 transactions. As another part of the evaluation, I imported two small test files created with Grisbi (.gsb) and Money Manager EX (.mmb). Each of those files contains approximately 75 transactions.

Later, I experimented with downloading recent transactions from my online banking website in QFX and CSV format, then importing them into Skrooge. I wanted to learn if bank downloads would streamline data entry.

I will summarize my results below, in case you are considering trying this yourself. I hope it will save you time, keystrokes and fruitless experimentation.

To import a file into Skrooge:

From the File menu > choose New or,

Click on the "New" icon in the toolbar or,

Type <Ctrl + N>

Then, from the File menu > select Import > Import...

Importing a HomeBank .xhb File

Note: I created a simple, standardized table to display the results of each import at a glance. This will make it easier to compare Skrooge's handling of different file types.

The data elements which were successfully imported include the Date (and Date format), Payees, Categories (except for the categories involved in Split transactions), Amount and the Comments.

Check numbers transferred but for some unknown reason, they appear at the tail end of the Comment field rather than in the Number field. I consider this to be a minor annoyance.

Another problem was that the Mode field only showed "Check" or "Other" (which lumps together Debit Card purchases and Deposits); a moderate amount of data cleanup would be needed to fix this.

The major issue was that Split transactions were not preserved. Approximately 10% of my transactions have split categories, so I was reluctant to edit that many entries manually.

The screenshots below show the results of the .xhb file import (including the non-preserved split transaction for $89.75):

In the original HomeBank file, the $89.75 payment above was split between three categories: Bills:On-line/Internet Service [69.99]; Postal [15.50]; Hobbies/Leisure:Online Subscriptions [4.26].

Importing a HomeBank .qif File

As a variation, I exported my full HomeBank file in .qif format, then imported the QIF file into Skrooge. This approach yielded much better results than the native .xhb file import.

There are two problem areas: the Mode data element is missing, which is not a deal breaker, in my opinion. Check numbers are in the correct field, so it is clearly apparent which transactions were paid by check. Debit card transactions -- the majority of our purchases -- appear with a negative dollar amount. (We occasionally withdraw cash from the bank, but in those instances, I enter the payee as "cash withdrawal").

The screenshots below show the results of the HomeBank .qif file import (including a preserved Split transaction for $110.74):

Another glitch was an incorrect initial balance after my file import. I was alarmed that my checking account was overdrawn by seven thousand (!) dollars. However, closer scrutiny revealed that in the Accounts section of Skrooge > Initial balance was $0.00. After changing Skrooge's Initial balance to match the Start balance of my HomeBank file, the discrepancy was corrected. To find your initial account balance in HomeBank, go to Manage > Accounts. Next, under the General tab, look for Start balance.

Importing a GnuCash File

The GnuCash file import (.gnucash) was the best of the lot; all checkbook data was imported cleanly and accurately. If you have been keeping your books with GnuCash, this is the preferred route to take.

Data elements which were successfully imported include the Date (and Date format), Payees, Mode (all variations were preserved), Comments, Number, Amount and Categories. I was impressed that all of my numerous Split transactions were accurately transferred.

The screenshots below illustrate the results of the GnuCash data import:

In the screenshot above, you can see that the Split transaction was successfully preserved from my GnuCash source file. In Skrooge's Operations tab, the highlighted triple-arrow icon in the entry line indicates that it is a Split transaction.

Importing a Grisbi .gsb File

The version of Grisbi in the PCLinuxOS repositories was recently updated to 2.0.5. (Thank you, Texstar!). While creating a test file with 75 transactions, I found that Grisbi is user-friendly and has a fairly intuitive interface, reminiscent of Quicken.

The Grisbi data file was imported with excellent results. Based on my tests, this ties for second place (with HomeBank's QIF file).

Data elements which were successfully imported include the Date (and Date format), Payees, Amount, Mode, Comments and Number field. Split transactions were accurately transferred.

One possible caveat involving Categories is that Grisbi's are a bit Francocentric; you might wish to edit them, in order to have them better mesh with Skrooge's default categories. For example,

In Grisbi, the category Housing [French 'Logement'] includes the subcategories Electricity, Gas, Phone, Water.

In Skrooge, those subcategories can either be placed under the parent category Bills, or the parent category Utilities.

For educational expenses, Grisbi has the category Studies, with the subcategories Books, Lessons, School Fees.

Skrooge has the default category Education, which includes the subcategories Books, Fees, Tuition.

The screenshots below illustrate how the Grisbi data was imported (including a correctly preserved Split transaction):

Importing a Money Manager EX .mmb File

I created a test file with the current version of Money Manager EX (1.5.12) in Windows 10. It contained 75 transactions (identical data to the Grisbi test file).

This was my first experience with MMEX; it has some nice features, yet is not intimidating to set up or use. The program also has a very active discussion forum. However, the .mmb file import was flawed in Skrooge. There were numerous errors in Category assignments which would require a lot of time and effort to fix.

First Import Attempt

My first MMEX import attempt failed because a currency unit -- the Azerbaijani manat -- was not found in the Skrooge database:

Second Import Attempt

I opened MMEX and deleted all the foreign currencies. (There are approximately 80 and they must be deleted individually, so it took a while). I retained USD ($) as the sole currency. Note: MMEX continues to function well without those extra currencies.

The single-currency .mmb file imported successfully. On the surface, the results looked promising but this was deceptive. The data elements Date (and Date format), Payees, Amount, Comments and Number were successfully imported. Split transactions were preserved correctly.

A somewhat minor problem was that the Mode field was empty. (This did not surprise me because in MMEX, transaction types can only be classified as a Withdrawal or a Deposit. There is no way to indicate that an entry is a Direct Debit or a Check payment [although there is a Number field for recording check numbers]).

I noticed that some Categories were missing. Upon closer examination, I uncovered a major problem: 57% of transactions had incorrectly assigned categories after being imported into Skrooge. (I should mention that the categories are correct within MMEX).

The screenshots below show the most egregious mistakes:

(4) transactions for car fuel were categorized as Other Income (although they were correctly logged as debit amounts).

(12) grocery purchases were classified as Insurance.

(2) water bill payments were categorized as Healthcare.

I don't know whether this glitch -- a showstopper, in my opinion -- is due to altered associations within MMEX's SQLite internal database, or whether Skrooge's .mmb import rules have a bug.

Importing (Downloaded) Bank Files

Another area I explored was importing files of transactions downloaded from my bank, to determine if it might save data entry time. My bank currently offers free exports/downloads in Quicken (QFX) format and as CSV (Comma-Separated Values) files. So I tried both options.

While experimenting, I kept this basic tenet in mind: Automation's goal is to save time and reduce the chance of miskeyed data. However, if you waste more time trying to automate something than it takes to just do it, then you should assess whether you are doing the right thing.

I was reminded of a tidbit of "programmer humor" from Reddit: "Never spend 6 minutes doing something by hand when you can spend 6 hours failing to automate it."

Importing a .qfx File

The Quicken file format is proprietary; it is owned and maintained by Intuit. QFX (Quicken Financial Exchange) format is the proposed replacement for the older QIF (Quicken Interchange Format). QFX is more robust and easier to work with than QIF, so Skrooge's developers recommend using it if possible.

QIF format has the drawback of not specifying the currency used; it also lacks a defined date format.

Data elements which were successfully imported include the Mode, (Check) Number and Amount. Although the Date appears, it is the date of bank clearance rather than the actual check date, or date of the direct debit transaction.

As expected, Categories are missing; banks rarely include categorization in exported data files. Comments are present but not particularly helpful. They lack the descriptive details I supply with manually entered transactions.

A more serious issue is that Payees do not always appear. For example, in the screenshot below, there is no Payee given for check number 7100 (to my life insurance company) or 7102 (the local public utility company). I concluded that it would be as time-consuming to clean up the QFX import as it is to manually enter transactions.

The screenshots below illustrate how the transactions were imported:

Importing a .csv File

Unfortunately, CSV (Comma-Separated Values) lacks a strictly defined format; banks can format their .csv files as they wish, which creates a great deal of inconsistency.

If the rows and columns in the CSV file are not arranged "just so," the Payees, Amounts etc. will not map to the required field. This is what happened with my first import attempt, using the bank's default (unedited) .csv file, even though Skrooge allows for flexible processing of these files.

To Skrooge's credit, the program generated a specific error message when the import failed: "Columns 'Date' and 'Amount' not found. Set import parameters in Settings. Settings > Configure Skrooge > Import/Export > CSV > Edit regular expressions..."

This gave me a clue as to the problem. It is possible to manually define how the CSV file is processed but I could not figure out how to map the columns to enable a successful import.

Skrooge's import rules require that a column named Amount be present, so my file's separate Withdrawals and Deposits produced a garbage import -- even after deselecting the Automatic search feature and mapping the column positions manually:

As illustrated in the screenshots below, the only data fields that imported were Date and Category. The Amount field (presumably auto-generated by Skrooge) is $0.00 because it does not exist in the original CSV file. The Withdrawals and Deposits columns in the .csv were ignored:

Nevertheless, I discovered that with pre-import editing (as detailed in the subsection below), the bank's .csv file could be successfully imported into Skrooge.

Pre-Import Editing Procedure

The bank's default exported CSV file was very "lossy" compared to QFX and contains six columns of data:

Date | Description | Withdrawals | Deposits | Category (auto-assigned by the bank) | Balance

The Description combines various data elements, such as Mode, Payee and (Check) Number. I could not devise a strategy for how to easily separate the individual elements in this field.

This procedure merges the Withdrawals and Deposits into a single column (which I later rename Amount) and deletes the superfluous Balance column:

1. Open the .csv file in LibreOffice Calc.

2. In the Deposits column, 'Find and Replace' the dollar sign [$] with a plus sign [+].

3. In the Withdrawals column, 'Find and Replace' the dollar sign [$] with a minus sign [-].

4. Merge the Withdrawals and the Deposits columns.

5. Follow the "merge columns" procedure as outlined on the Ask LibreOffice website.

6. Delete the Withdrawals column.

7. Change the name of the Deposits column to "Amount."

8. Finally, delete the Balance column.

The modified .csv file looks like this prior to the Skrooge import:

The results of the CSV import were disappointing, considering how much effort I made to prepare the file. Data elements which were successfully imported include the Amount, Date and Categories. However, the Date is the date of bank clearance, and the Categories were assigned by the bank's software, so they require editing to sync with Skrooge's categories.

These data elements were missing: (Check) Number, Mode, Payee and Comments. All these fields would have to be entered manually.

Since the CSV needs even more cleanup than the QFX file, I decided that in my usage case, manually inputting checkbook data is quicker and cleaner.

The screenshots below illustrate how the modified CSV file was imported:

Conclusion

If you are already a GnuCash user who is interested in trying Skrooge but retaining all your historical data, the .gnucash (.gnc) file format was the clear winner. Everything imported cleanly and accurately.

Based on my experience, the runner-up was a tie between HomeBank's exported .qif format and Grisbi (.gsb). Their files do not appear to need much work to successfully migrate your checkbook data. HomeBank's .qif import just needed the Starting Balance adjusted to correct the discrepancy and/or would need the Mode field added manually (if you regard it as essential). Grisbi's import might need its categories tweaked (depending on how much consistency you want in your recordkeeping).

Third place went to HomeBank's .xhb format. If you do not have a lot of Split transactions to clean up / adjust, this might be a viable option for you.

The most problematic imported test file was Money Manager EX's .mmb format. I believe the high percentage of incorrectly assigned categories would make the required data cleanup unfeasible.

If you wish to eliminate the need for manually entering transactions via a bank download, QFX is the preferred and more robust method. In my case, however, I found it simpler to continue with manual data entry.

In my testing, by far the most labor-intensive method is importing CSV files. Although the process is cumbersome with my bank's current .csv format, I will add the cliché that "Your mileage may vary." If your bank's CSV files have a more granular format than mine, tinkering with them might yield better results.

PCLinuxOS Recipe Corner:

A Twist on the Cabbage Roll Casserole

Serves 6

Ingredients:

1 lb lean ground beef (at least 80%)
2 cups chopped yellow onions
2 tablespoons butter
1 bag (10 oz) angel hair coleslaw mix
4 cloves garlic, finely chopped
1 teaspoon salt
1 teaspoon black pepper
1 can (15 oz) tomato sauce
2 cups cooked white rice
2 eggs
1/2 cup heavy whipping cream
1/4 cup chopped fresh parsley leaves
Sour cream, if desired

Directions:

Heat oven to 350F. Spray 13x9-inch (3-quart) glass baking dish with cooking spray.

Heat a 12-inch nonstick skillet over medium-high heat. Add beef and onions; cook 8 to 10 minutes, stirring to break up chunks, until beef is brown. Remove from skillet; drain and set aside. Wipe out the skillet.

In the same skillet, melt butter over medium-high heat. Stir in coleslaw mix, garlic, salt and pepper. Cook 1 to 2 minutes, stirring frequently, until wilted. Stir in tomato sauce; heat to simmering. Remove from heat. Stir in beef mixture and rice. In a small bowl, beat eggs and whipping cream; stir into mixture in skillet.

Spoon mixture into baking dish. Cover with foil. Bake 22 to 24 minutes or until heated to 165F in the center of the casserole. Top with parsley; serve with sour cream.

Nutrition:

Calories: 390           Carbs: 30g           Fiber: 3g           Sodium: 800mg           Protein: 19g

2021 LinuxQuestions.org Members Choice Awards

by Paul Arnote (parnote)

The 2021 LinuxQuestions.org Member Choice Awards are in.

Just in case you aren't familiar with this "contest," it's an annual "poll" for users of the LinuxQuestions.org forum. It gives users a chance to pick their favorite Linux programs, operating systems, hardware vendor, and much more.

The poll starts in early January (typically January 2) and concludes on February 15. This year's poll consisted of 41 different categories. Respondents can selectively respond to the categories, and are not required to record a vote in every category.

Here are the instructions from LinuxQuestions.org founder, Jeremy:

* We do realize that some polls have nominees that are not directly comparable. There are over 40 polls. If we got down to the granularity some members would like to see, there would be 100's if not 1000's of polls. That would be a net decline in the usefulness of the awards IMHO. We try to strike the best balance we can, and do modify the polls and nominees every year, based on feedback. If you have any suggestions on how the polls can be improved, do let us know.

* There are no set in stone guidelines for voting. Our recommendation is to base your vote on which application you found most valuable to you in 2021, along with which project you feel made the largest improvements in 2021. That being said, in the end the criteria is up to you.

* Posting a comment is optional, but do be aware that for your vote to count you have to select an option and click the "Vote Now" button (regardless of whether you have left a comment or not).

* You must have at least one post to be able to vote.

* All polls will close on February 15th at 12PM LQST.

* Results are not available until after the polls close.

The categories do change somewhat from year to year. For example, over the past few years, there was a Graphics Editor category. I did not see that category this year. But then, the GIMP has run away with first place in that category every year that I can remember.

Some categories do have their perennial winners. Firefox nearly always wins the web browser category. Python usually wins the programming language category. Thunderbird is the perennial winner for the email client category. VLC usually cleans up in the multiple categories it is "entered" in.

So, let's take a look at this year's winners. I have omitted two categories that received exceptionally few votes. The category is followed by how many votes were cast in that particular category, and then the first, second and third place finishers. In some categories, there were ties, so there may be more than three "winners" listed, due to the tie situation.

Linux/Open Source Podcast of the Year (45 votes)

Late Night Linux (12 votes ... 26.67%)
Bad Voltage (5 votes ... 11.11%)
Gnu World Order (4 votes ... 8.89%)
Ubuntu Podcast (4 votes ... 8.89%)

Server Distribution of the Year (227 votes)

Debian Stable (70 votes ... 30.84%)
Slackware (62 votes ... 27.31%)
Ubuntu LTS (54 votes ... 23.79%)

Email Client of the Year (183 votes)

Thunderbird (113 votes ... 61.75%)
mutt (17 votes ... 9.29%)
Claws Mail (15 votes ... 8.20%)

Backup Application of the Year (98 votes)

Timeshift (27 votes ... 27.55%)
Clonezilla (12 votes ... 12.24%)
luckyBackup (10 votes ... (10.20%)

Linux Laptop Vendor of the Year (98 votes)

Lenovo (37 votes ... 37.76%)
System76 (31 votes ... 31.63%)
PINE64 (11 votes ... 11.22%)

Open Source Game of the Year (94 votes)

0 A.D. (14 votes ... 14.89%)
SuperTuxKart (14 votes ... 14.89%)
Freeciv (8 votes ... 8.51%)
Endless Sky (6 votes ... 6.38%)

Image Viewer of the Year (165 votes)

Gwenview (51 votes ... 30.91%)
Geeqie (23 votes ... 13.94%)
feh (19 votes ... 11.52%)

Desktop Distribution of the Year (394 votes)

Ubuntu (72 votes ... 18.27%)
Slackware (69 votes ... 17.51%)
Debian (43 votes ... 10.91%)

Virtualization Application of the Year (157 votes)

VirtualBox (82 votes ... 52.23%)
QEMU (29 votes ... 18.47%)
KVM (25 votes ... 15.92%)

Text Editor of the Year (260 votes)

vim (65 votes ... 25.00%)
Kate (35 votes ... 13.46%)
nano (28 votes ... 10.77%)

Browser of the Year (342 votes)

Firefox (184 votes ... 53.80%)
Chrome (45 votes ... 13.16%)
Vivaldi (26 votes ... 7.60%)

Password Manager of the Year (122 votes)

KeePassXC (39 votes ... 31.97%)
Bitwarden (35 votes ... 28.69%)
LastPass (19 votes ... 15.57%)

Audio Media Player of the Year (190 votes)

VLC (63 votes ... 33.16%)
Audacious (27 votes ... 14.21%)
Clementine (23 votes ... 12.11%)

Desktop Environment of the Year (277 votes)

Plasma Desktop (KDE) (102 votes ... 36.82%)
Xfce (59 votes ... 21.30%)
Gnome Shell (34 votes ... 12.27%)

Video Media Player of the Year (208 votes)

VLC (146 votes ... 70.19%)
mpv (30 votes ... 14.42%)
mplayer (11 votes ... 5.29%)

Digital Audio Workstation of the Year (58 votes)

Ardour (12 votes ... 20.69%)
LMMS (12 votes ... 20.69%)
Reaper (11 votes ... 18.97%)
Rosegarden (11 votes ... 18.97%)
Muse (6 votes ... 10.34%)

Team Communication Application of the Year (87 votes)

Slack (25 votes ... 28.74%)
Jitsi Meet (24 votes ... 27.59%)
Microsoft Teams (23 votes ... 26.44%)

Linux Desktop Vendor of the Year (53 votes)

Dell (23 votes ... 43.40%)
System76 (22 votes ... 41.51%)
ThinkPenguin (3 votes ... 5.66%)

Container of the Year (76 votes)

Docker (42 votes ... 55.26%)
LXC (15 votes ... 19.74%)
Podman (15 votes ... 19.74%)
Singularity (2 votes ... 2.63%)

Media Server of the Year (61 votes)

Kodi (22 votes ... 36.07%)
Plex (19 votes ... 31.15%)
LibreELEC (8 votes ... 13.11%)

Video Authoring Application of the Year (72 votes)

KDEnlive (33 votes ... 45.83%)
Openshot (13 votes ... 18.06%)
Avidemux (6 votes ... 8.33%)
Blender Cinelerra (6 votes ... 8.33%)
Shotcut (6 votes ... 8.33%)

Programming Language of the Year (184 votes)

Python (58 votes ... 31.52%)
C (34 votes ... 18.48%)
C++ (14 votes ... 7.61%)

Database of the Year (205 votes)

MariaDB (100 votes ... 48.78%)
PostgreSQL (41 votes ... 20.00%)
sqlite (31 votes ... 15.12%)

Screen Recording and Streaming Tool of the Year (94 votes)

OBS Studio (40 votes ... 42.55%)
SimpleScreenRecorder (22 votes ... 23.40%)
VLC Media Player (18 votes ... 19.15%)

IDE of the Year (182 votes)

Visual Studio Code (39 votes ... 21.43%)
Emacs (27 votes ... 14.84%)
Geany (25 votes ... 13.74%)

Security Hardening and/or Scanning Application of the Year (65 votes)

nmap (25 votes ... 38.46%)
Rootkit Hunter (13 votes ... 20.00%)
chrootkit (10 votes ... 15.38%)

Privacy Solution of the Year (96 votes)

GnuPG (36 votes ... 37.50%)
Tor Browser Bundle (35 votes ... 36.46%)
VeraCrypt (14 votes ... 14.58%)

Log Management Tool of the Year (40 votes)

Logwatch (18 votes ... 45.00%)
Logstash (8 votes ... 20.00%)
Graylog (6 votes ... 15.00%)
collectd (6 votes ... 15.00%)

Browser Privacy Solution of the Year (139 votes)

uBlock Origin (51 votes ... 36.69%)
DuckDuckGo Privacy Essentials (19 votes ... 13.67%)
NoScript (18 votes ... 12.95%)

File Manager of the Year (222 votes)

Dolphin (64 votes ... 28.83%)
Thunar (47 votes ... 21.17%)
GNOME Files (21 votes ... 9.46%)
Midnight Commander (21 votes ... 9.46%)

X Terminal Emulator of the Year (184 votes)

Konsole (44 votes ... 23.91%)
Terminal (Xfce) (28 votes ... 15.22%)
Xterm (25 votes ... 13.59%)

Window Manager of the Year (122 votes)

Openbox (25 votes ... 20.49%)
Fluxbox (23 votes ... 18.85%)
IceWM (17 votes ... 13.93%)

Linux Automation App of the Year (20 votes)

AutoKey (8 votes ... 40.00%)
Gnome-Schedule (7 votes ... 35.00%)
Texpander (4 votes ... 20.00%)

Network Monitoring Application of the Year (81 votes)

Nagios Core (16 votes ... 19.75%)
Zabbix (14 votes ... 17.28%)
Nagios X1 (10 votes ... 12.35%)
Netdata (10 votes ... 12.35%)

Live Distribution of the Year (119 votes)

Slackware Live Edition (34 votes ... 28.57%)
Knoppix (17 votes ... 14.29%)
antiX (15 votes ... 12.61%)

IRC Client of the Year (74 votes)

HexChat (28 votes ... 37.84%)
Irssi (15 votes ... 20.27%)
Konversation (9 votes ... 12.16%)
XChat (9 votes ... 12.16%)

PDF Viewer of the Year (177 votes)

Okular (72 votes ... 40.68%)
Evince (36 votes ... 20.34%)
Atril (14 votes ... 7.91%)

Single Board Computer of the Year (102 votes)

Raspberry Pi 4 Model B (53 votes ... 51.96%)
Raspberry Pi 400 (12 votes ... 11.76%)
Arduino (9 votes ... 8.82%)

Linux Server Vendor of the Year (49 votes)

System76 (18 votes ... 36.73%)
Dell (16 votes ... 32.65%)
IBM (12 votes ... 24.49%)

If you missed your chance to cast a vote this year, don't forget to log into the LinuxQuestions.org forum right after your New Year's celebration next year. Also, go ahead and join their friendly forum. You might just find some answers to some of your pressing Linux questions. Plus, additional resources are ALWAYS welcome!

GIMP Tutorial: A Simple Floating Logo

by Meemaw

I saw a tutorial about a "floating" logo in GIMP.org/tutorials and thought I'd share it.

Create a new image and fill it with black. You can choose the size you want - mine is 800x600px. Add some text and format it the way you want it. I'm using the font A&S Speedway, size 120. Do not merge your layers.

Once you've gotten the text how you want it, create a new layer from all the visible layers so far. On your Layers tab, right click on the text layer you just made, and choose New from Visible.

Apply a slight Gaussian blur to this layer.

Now, add a new layer. It doesn't matter what background you choose this time because we're going to change it. Click on Filters > Render > Clouds > Plasma, and apply. You can play with this, clicking on "New Seed" until you find a cloud you like, before applying.

We want to use the text we created earlier to generate a fake 3D shape on this plasma layer using something called bump mapping. Open the Bump Map dialog through the menu Filters > Map > Bump Map. Click on the Aux. Input for the Bump map, and choose your "Visible" layer from the list. In the settings, I chose 40 for Elevation and 5 for depth, but this is something you could play with to get it the way you like it.

Now, add a Layer Mask to the plasma layer by clicking Layer > Mask > Add Layer Mask,or right-click on the plasma layer and choose Add Layer Mask from the context menu. In the settings, Initialize Layer Mask to: White (full opacity).

We are going to copy the Visible layer, and paste it into the layer mask for the plasma layer. First, left-click on the Visible layer in the layers palette to activate it, then choose Edit > Copy.

Then, make the plasma layer mask active by Left-Clicking on the mask. Now, choose Edit > Paste to paste the Visible layer into the Layer Mask.

You will now see a Floating Selection (Pasted Layer) into your image and your drawing will look like this.

This layer needs to be anchored by choosing Layer > Anchor Layer. Now the layers should look something like this:

Add a new layer to the image, and place it below the plasma layer. You can click and drag layers to change their order in the layers dialog or use the arrows at the bottom. Whatever background you chose will be there, along with your text. You can bucket fill with a new background color if you wish.

Let's clean up the edges of the text. Right now, the mask being used on the plasma layer is a copy of the gaussian blurred text. We want to make it sharper, so we are going to adjust the levels on the mask for that layer.

Activate the layer mask by clicking on it. Then open the Adjust Color Levels dialog by clicking Colors > Levels. With the Adjust Color Levels dialog, we now want to sharpen up the edges of the mask a little bit:

What we want to do is adjust the two sliders. One is the White point slider which will increase the prominence of the plasma layer, one is the Gamma slider which will emphasize it more. This is also something to experiment with, but in the original tutorial, the settings ended up as 0.27 Gamma and 115 White point.

Make a copy of your Visible layer that had your original blurred text on it. Select the layer first to activate it, then you can click on Layer > Duplicate Layer. Move this layer above your background color layer to just beneath your plasma layer as shown (you can left-click and drag the layer in the palette or use the arrows in the layer dialog).

I know our background doesn't show, but we're going to use this layer to make a drop shadow. First click on Colors > Invert. Now, we need to change the layer so that all of the white areas will be transparent. This can be found in the menu Layer > Transparency > Color to Alpha.

The layer should now have black text over a transparent background. If you aren't sure, turn off the visibility of your top layer and see. We now want to shift this layer a bit to simulate a height by offsetting it down and to the right a bit. To do this we can use the Move Tool. Click on Tools > Transform Tools > Move or choose the Move tool in your toolbox (the one with the 4 arrows). Drag the layer to the right and down a bit to simulate the shadow. You can also add a Gaussian Blur to the shadow to spread it out a little more. This step is one where you will decide on the appearance. My shadow might be too much for you, but you do have to admit, the logo does look like it's floating.

Now you can crop your logo, and use it that way, or put a different background in, or even do away with the background, and the effects and shadow will still be there. Be sure to export it as a .png file.

Short Topix: Polkit Vulnerability Discovered, Patched

by Paul Arnote

Falkon Browser 3.2 Released

Falkon browser, the browser offering from KDE, has seen its first update in nearly three years with the release of Falkon 3.2, according to an article on Phoronix. You can see all of the changes/enhancements to Falkon 3.2 here.

Xorg Video Driver Woes

It's no secret that Linux is superb for resurrecting older hardware. Many Linux users purposefully seek out older, less expensive hardware with the aim of resurrecting it, in fact. But recent woes have beset Linux users recently. Many older X.Org user-space mode-setting drivers for powering old graphics cards, at least for display purposes, can no longer even build with modern toolchains/software components, according to an article on Phoronix.

From the article:

Longtime X.Org developer Alan Coopersmith of Oracle recently looked at going through all of the available X.Org drivers that aren't in an archived state and seeing how they fare -- with a goal of at least setting them up for simple continuous integration (CI) builds on GitLab.

Coopersmith noted in the Sunday status update, "It will probably not surprise folks that a fair number of the drivers would not build when I tried this. Some I got building again with simple fixes (though I have no hardware to test these, so can only claim that they build - they may or may not work), others still need some help or may be ready for archiving if no one wants to make them build again."

Those Linux users trying to milk as much life out of older hardware as possible are no stranger to suddenly finding video drivers that no longer keep pace with advances in Xorg. I know I faced this recently with my HTPC, forcing me to buy another refurbished computer to repurpose as my new HTPC. There have been several reports in the PCLinuxOS forum from users with older hardware being left behind by Xorg advances and updates. Progress is usually good, but it's becoming clear that Linux might not be as friendly to older hardware as it used to be. On the other side of the same coin, though, it's also not reasonable to expect 15 or 20 year old hardware to be supported by a modern operating system forever.

Polkit Vulnerability Discovered, Patched

As reported in an article on BleepingComputer (and in many other media outlets), a 12-year-old vulnerability was discovered in Linux's polkit pkexec. The exploit, identified as CVE-2021-4034 (PwnKit), allowed users to easily gain access to elevated privileges on ALL Linux distros. Never fear; pkexec has been patched on PCLinuxOS. As reported by Texstar in a post on the forum, the vulnerability required the attacker to have either physical access to your computer, or you granted access to that computer via SSH.

Now THAT'S A Portable Battery Bank!

We've become so dependent on devices powered by batteries that a portable battery power bank has nearly become a necessity for many people. It's either that, or you carry a charger and charger cord with you everywhere, and then hope that you have access to a power source to recharge your device. Some people carry both (disclosure: I carry both much of the time).

Many of the power banks available today range from a paltry 5,000mAh (usually found at cheap dollar and outlet stores) to nearly 40,000mAh battery power banks. The sweet spot appears to be between 10,000 and 20,000mAh, and are reasonably priced, between $20 and $40 (U.S.). But, that wasn't good enough for Handy Geng of Hong Kong, according to an article on PetaPixel.

Geng, who has built up a popular YouTube channel by building outrageous or absurd devices, used what appears to be a battery for an electric vehicle to build his "portable" battery power bank ... that is rated at 27,000,000mAh! You can watch his video here. In the video, he charges a couple of dozen phones and computers -- all at the same time. At one point, he even drags it to his favorite fishing hole, where he powers a TV, a washing machine, and cooks dinner in an electric pot ... while fishing. Along the way, he even stops to recharge a man's electric scooter that had run out of juice.

While holding to his reputation for the absurd in his video, it isn't difficult to imagine the impact his device might have in areas hit by natural disasters. It would allow many people, at once, to recharge their portable devices and maintain contact with the outside world.

ISS Days Are Numbered

After spending the last 23 years in low Earth orbit, the International Space Station's days are numbered. But don't expect anything soon, as there's still a lot of life left in the orbiting research platform. NASA plans to add five more modules to the space station before "de-orbiting" the space station after spending more than 30 years in space, according to an article in IGN.

NASA plans to crash the space station into a remote part of the Pacific Ocean in 2030. A true international effort between many countries, such as the U.S., Russia, Japan, Canada, the ESA, and many others, the plans are to continue to use the ISS as the unique research platform that it is.

If you want to know more about the ISS, check out this article from the Observer. Meanwhile, NASA plans to allow the ISS to be replaced with commercial space stations, and will become a customer instead of a provider of the platform.

Now ... if only they could figure out how to get rid of the horrendous smell that's been reported on the ISS. It's not as if they can open the windows and air it out. Maybe someone could send them up a couple of cases of those little green tree air fresheners on the next supply mission. It might make things a little more pleasant for the time the ISS has remaining.

MIT Engineers Create Substance Previously Thought To Be "Impossible"

Leave it to the "brains" at MIT to do what many thought were impossible. This time, MIT engineers have successfully used a novel polymerization process that creates a polymer that "self aligns" itself into two dimensional sheets. Before this, polymers only formed one-dimensional "spaghetti" strands. Scientists had thought that it was "impossible" to induce a polymer to form 2D sheets, according to an article on SciTechDaily.

The result is a material that is stronger than steel, but as light as plastic. The new material is reported to be able to be manufactured in large quantities, too. The new material, dubbed 2DPA-1, could revolutionize construction techniques, such as creating buildings and structures with plastics where they would not be feasible before. The material is also impermeable to gasses, so it could be used to coat items that are susceptible to corrosion or oxidation. It is also stronger than bulletproof glass, requiring up to six times the force before deforming or breaking.

The PCLinuxOS Magazine Short Topix Roundup

PCLINUXOS FARED WELL IN AN ARTICLE COMPARING THE "DESCENDANTS" OF MANDRAKE in an article on The Register. In fact, it performed so well that the article author chose it as the one to install.

ISRAELI SCIENTISTS HAVE COMPLETED A STUDY THAT HIGHLIGHTS VITAMIN D'S ABILITY TO FIGHT COVID, according to an article in The Times of Israel. Their study proves that Vitamin D can significantly impact the severity of the disease. Middle Eastern diets are, as a whole, Vitamin D deficient. Taking a daily Vitamin D supplement prior to infection can help patients avoid the worst effects of the disease.

THE MOST RECOGNIZABLE CAR IN THE UNIVERSE MAY BE MAKING A COMEBACK SOON, according to a widely spread report. Yes, we're talking about the 1.2 Gigawatt DeLorean. Well, sorta. See, a company in Humble, TX that specializes in working on and restoring the iconic sports car, bought the remaining new parts stock, rights to use the DeLorean name, and manufactures replica parts where new old stock parts don't exist. They recently teased on Twitter a NEW DeLorean coming in August 2022. And, with the hashtags accompanying the tweet, it's looking like it's going to be an electric version of the storied car. The new car's designers also want to tell interested buyers to not worry that the new car won't have the performance woes of the original version.

From the "Oops! We didn't see that coming after the Y2K debacle" department, FIREFOX AND GOOGLE CHROME BROWSERS MAY SOON BREAK SOME USER AGENT PLUGINS AND WEBSITES as they approach version 100.

MICROSOFT WILL SOON REQUIRE WINDOWS 11 USER REGISTRANTS TO HAVE AN EMAIL ADDRESS IN ORDER TO REGISTER THE OPERATING SYSTEM. No email address, no registration.

GOOGLE is (finally, light years later) trying to follow Apple's lead in LIMITING IN-APP TRACKING of mobile users.

Video games, like everything else, have become collectible. Especially the vintage stuff in sealed packages. Well, in 1994, a video game store in Nebraska closed up shop, and put all of its remaining stock into storage, waiting for a new owner ... who never materialized. There they sat, forgotten, for nearly 30 years, according to an article on Nintendo Life. The results? SOME OF THE TITLES NOW SELL FOR OVER $1,000 (U.S.), and the collection includes some of the "Holy Grail" titles that collectors covet most.

THERE ARE SOME CONCERNS ABOUT THE STATUS OF THE THE FREE INTERNET in Hong Kong, as the Communist Chinese government tightens the noose and moves more of Hong Kong's internet access behind the Great Firewall of China, according to an article on Aljazeera.

It's no secret that the Linux kernel is written in the C programming language. What you might not realize is that it was written using the ancient (in computer terms) C89 standard, introduced in 1989. Well, now LINUS TORVALDS HAS UPGRADED TO C11, A MUCH MORE MODERN VERSION OF C INTRODUCED IN 2011, according to an article on ZDNet. As an end user, you most likely won't notice any difference.

My Favorite Java Program Stopped Working. Now What?

by Alessandro Ebersol (Agent Smith)

Today we are going to talk about how to make your favorite Java program work. Yes, with the Java updates, many programs have stopped working. Some don't work at all with newer versions of Java.

Let's talk about the progress of the Java language. After all, it is thanks to this progress that many programs have stopped working. One of them is my favorite MORPG.

Progress is not always positive. Sometimes it breaks things that have worked for years.

First, let's check the Java version...

Let's see now, what happens if I try to run my favorite MORPG, Eldevin online, in Java 15.

It stays like that forever, and the game doesn't run.

But, why is that? I'll explain in a moment...

First, we are going to have a little history lesson.

Oracle's purchase of Sun

Oracle bought Sun Microsystems, the creators of the Java language, in 2009 for $7.4 billion. At the time, the statements were as follows:

"The acquisition of Sun transforms the IT industry by combining the best of enterprise software and mission-critical systems," Oracle CEO Larry Ellison stated in an official statement. "Oracle and Sun are industry pioneers and partners. This combination is the natural evolution of the relationship and an event that redefines the industry."

"Java is one of the biggest brands in the computer industry and is the most important Oracle software ever acquired. With the acquisition, Oracle can ensure continued innovation and investment in Java technology for the benefit of customers and the community," the statement said, without citing the consequences for MySQL - the platform acquired by Sun in 2008 for $1 billion.

However, despite the optimistic messages, not everyone was happy with what happened.

So much so that in April 2010, James Gosling, one of the creators of the Java language left Oracle. In his personal blog post in April, Gosling announced his resignation.

As for the reasons, Gosling would only say, "As for why I left, it's hard to answer: Almost anything I could say that would be accurate and honest would do more harm than good."

Other professionals in the area, like Dalton Camargo, developer at JavaBB and founder of the JavaFree.org portal, Sun never gave the proper value to Java, much less the communities that foster it.

According to the developer, Oracle has no charisma in the community and has been showing that it evolves its products without transparency to customers. Besides, Camargo believes that Oracle starts from an unbridled premise for evolutions without harmony, which generates fear in developers.

"We don't know if the technology we are working on today will be discontinued tomorrow without any warning, as has already happened with products such as Oracle WorkFlow that became BPEL, the ADF itself that is now becoming OAF and so on," he adds.

Then, Oracle itself started losing money...

On November 6th, in its 10-Q presentation for Q1 of fiscal 2010, Sun announced a 25% drop in total revenue compared to Q1 of the previous year due to the "economic downturn, the uncertainty associated with our proposed acquisition by Oracle, increased competition, and delays in customer purchasing decisions" - this was Sun's official statement.

Not to mention that the Android operating system used Java for its applications, which led Google to develop its own interpreter (the Dalvik machine) in order not to pay royalties to Oracle, since the Java language had to be licensed for use in mobile applications...

Java Android lawsuit

Oracle has filed a patent infringement lawsuit against Google over its use of Java on the Android platform. Android applications run on the Dalvik Java virtual machine. The apps are written in Java but are compiled in Dalvik's custom bytecode format, which is incompatible with standard Java runtime environments. Google has thus avoided the licensing fees associated with J2ME, the mobile version of Java. However, aspects of the Dalvik system are very similar to the Java technology patented by Sun and now Oracle.

The lawsuit went on for years in the U.S. courts. In 2021 the final verdict came out, clearing Google of copyright infringement and ending the lawsuit.

But, all this brings us to 2019.

2019 and the changes in the Java language license

To protect itself from further cases like the one that occurred with Android, and also to maximize monetization of the Java language, Oracle changed the licensing terms of the language in 2019.

Then, it introduced a new term, for commercial projects. Commercial projects using Java had to pay royalties to Oracle.

So, many companies have not updated their programs to the latest versions of Java, because they fall under the NFTC clause restrictions.

Many programs fall into this category. The Eldevin game client falls into this category, and it has not been updated by Hunted Cow (the company that created the software). I even think that the newer versions of the language have features that could run the game smoothly,

But, copyright issues leave our beloved online RPG out.

Now... What to do???

The answer is to use the open source implementation of the Java language, openJDK.

To do this you should go to: https://jdk.java.net/archive/

At this URL, search for openJDK 10

For PCLinuxOS, download the versions with pre-compiled binaries from the following link

I downloaded it into the Eldevin online game folder. You can download it to wherever your Java program that doesn't work anymore is located.

Then unzip the package, and a jdk-10 folder will appear.

Now you must create a script to run your Java program with the downloaded OpenJDK. For example;

#!/bin/bash

/home/your-user/your-program/jdk-10/bin/java -Xmx1024M -jar your-program.jar

Save with the .sh extension, give execute permission (chmod +ax) and voila, your program will run via OpenJDK 10 and will not modify the Oracle Java already installed on the system.

Of course, leaving the Java program and the OpenJDK in the same folder was a suggestion - I did it with the Eldevin game and it worked very well. You can put it in any other location you want: you just have to modify the script to call the program.

As an example, here is a video in which I show how to make the Eldevin game work with OpenJDK 10: https://www.youtube.com/watch?v=TXYN8fhXDbo

I hope you enjoy it!

PCLinuxOS Recipe Corner Extra: Outrageous Chocolate Chip Cookies

A lightly crisp outside with a chewy center, these chocolate chip cookies are absolutely delicious, with a unique combination of chocolate chips, peanut butter and oatmeal. You won't believe how good they are.

Prep Time: 15 minutes
Cook time : 10 minutes
Yield: 3 dozen (36 cookies)

Ingredients

1/2 cup butter
1/2 cup white sugar
1/3 cup brown sugar (packed)
1/3 cup peanut butter
1/2 teaspoon vanilla extract
1 egg
1 cup all purpose flour
1 teaspoon baking soda
1/2 teaspoon salt
1/2 cup rolled oats
1 cup semisweet chocolate chips

Directions

Preheat oven to 350 degrees (175 degrees C).

In a medium bowl cream together the butter, white sugar and brown sugar until smooth. Stir in the peanut butter, vanilla and egg until well blended.

Combine the flour, baking soda and salt; stir into the batter, just until moistened.

Mix in the oats and chocolate chips until evenly distributed. Drop by tablespoonfuls onto lightly greased baking/cookie sheets.

Bake for 10 to 12 minutes in the preheated oven, until the edges start to brown.

Cool for about 5 minutes before transferring a cooling rack to cool completely.

PCLinuxOS Puzzled Partitions

Sudoku

Download Puzzle Solutions Here!

Scrappler

Download Puzzle Solutions Here!

Crossword

Download Puzzle Solutions Here!

WordFind

Download Puzzle Solutions Here!

Mixed Up meme Scrambler

Download Puzzle Solutions Here!

Screenshot Showcase

Posted by fransco_bat, February 16, 2022, running Trinity

Posted by jogurtmen, February 21, 2022, running Mate

Posted by luikki, February 23, 2022, running KDE

Posted by Meemaw, February 5, 2022, running Xfce

Posted by mutse, February 3, 2022, running Mate

Posted by parnote, February 17, 2022, running Xfce

Posted by Snubbi, February 4, 2022, running Mate

Posted by The_CrankyZombie, February 13, 2022, running KDE

Posted by tuxlink, February 10, 2022, running KDE

Posted by weirdwolf, February 12, 2022, running lxde