Installing Citrix Workplace on Ubuntu Linux

Installation

$ cd Downloads
$ sudo dpkg -i Citrix-Workspace.deb

Installing a CA Certificate

The pre-installed certificates might work for you. If you get errors when trying to use Citrix, then you’ll likely need to install a CA certificate.

  • Go to the VPN website you use Citrix for.
  • Click on the lock in front of the url
  • Click on certificate (Chrome) or Connection Secure (Firefox)
  • Note the authority under Issued By (Chrome) or Verified By (Firefox)
  • For example, the certification authority might be: DigiCert TLS RSA SHA256 2020 CA1
  • Search for DigiCert TLS RSA SHA256 2020 CA1 in your favorite search engine.
  • Select the official site that allows you to download the relevant certificates.
  • Download both the PEM and the CRT files.
  • Do the following:
$ sudo cp ~/Downloads/DigiCertTLSRSASHA2562020CA1-1.pem /opt/Citrix/ICAClient/keystore/cacerts
$ sudo chmod 644 /opt/Citrix/ICAClient/keystore/cacerts/DigiCertTLSRSASHA2562020CA1-1.pem
$ sudo /opt/Citrix/ICAClient/util/ctx_rehash

Note: The instructions on the Citrix website seem to be incorrect. It tells you to cp the pem file with a crt extention, even though every other file in the directory is a PEM file. The above copies to the default Citrix directory on Ubuntu, changes the file permissions to -rw-r–r–, and rehashes the new certificate so Citrix can use it.

X.509 Certificate for Chrome or Firefox Browsers

I’m not sure if this is strictly necessary, but it might also be helpful to import the X.509 certificate into Chrome or Firefox. For Chrome (Firefox is similar), do the following:

  • Go to the three dots (hamburger)
  • Select Chrome settings
  • Search for: certificate
  • Click on Security
  • Click on Manage Certificates
  • Click on Authorities
  • Click on Import
  • Select ~/Downloads/DigiCertTLSRSASHA2562020CA1-1.crt
  • Select all three options.

Borogove.io

This is a free hosting service for Interactive Fiction games. You can upload games and share them with others by giving out a link to play online.

Games must be either parser system story files or HTML files. Currently supported file formats:

* HTML (including Twine and Texture)

* Z-Machine (Inform, Dialog, ZIL)

* Glulx (Inform)

.* gam, .t3 (TADS)

* HEX (Hugo)

* Å-Machine (Dialog)

* Ink JSON files

Game uploads can be public or private. Public uploads can be found in the gallery on the front page. Private uploads aren’t listed anywhere and can only be accessed through the direct link.

https://borogove.io/

bash: TOTP From the Terminal With oathtool

TOTP is Time-based One Time Password. Most people use applications on their phone for TOTP, such as andOTP, Google Authenticator, and related apps. But, as we move from using a phone as a second factor for what we are doing on a computer to a phone being the primary way we interact with the Internet, it makes sense to make the computer the second factor. This is the idea behind this script. It is based on analyth’s script, except I stripped out the I/O.

#!/bin/bash

# Assign variables
google=$(oathtool --base32 --totp "YOUR SECRET KEY" -d 6)
wordpress=$(oathtool --base32 --totp "YOUR SECRET KEY" -d 6)
amazon=$(oathtool --base32 --totp "YOUR SECRET KEY" -d 6)

# Print variables
echo "google: ${google} | wordpress: ${wordpress} | amazon: ${amazon}"

This will print:

google: 123456 | wordpress: 123456 | amazon: 123456

However, I didn’t like the idea of my one time password codes only being protected by normal file protections on a Linux system. I thought it should be encrypted with gpg. So, I saved it to a file in my scripts directory, totp, and encrypted it with my public key. If you don’t have a gpg key pair, instructions are available online.

$ gpg -r your@email.com -e ~/pathto/totp

Then, to run the shell script, do:

$ gpg -d ~/pathto/totp.gpg 2>/dev/null | bash

This will prompt you for your gpg password and then run this script. You likely won’t want to remember this string of commands, so you could make your life easier by adding it as an alias under .bash_aliases

alias totp='gpg -d ~/pathto/totp.gpg 2>/dev/null | bash'

Disco Elysium

“This is why I love Disco Elysium. Why I think it is one of the most shit-stained, beautiful, and hopeful games I have ever played. Throughout its entire length it never fails to give testimony to the pain and splendor of Revachol and of life. I have thought about it every day for the last year and a half because it was the game that helped me learn what to do with my own bullets.

Tell stories and never stop, even when it hurts. Reach into the holes and pull out lead. Plant seeds in the wounds, and then watch them bloom.”

-Renata Price, “A Year Later, I Still Can’t Stop Thinking About Disco Elysium.” Kotaku.com. August 30, 2021..

The article above has spoilers. The main thing you need to know is that it is highly recommended. To confirm, I checked in with Steam’s reviews. This is the top recommended review on Steam over the last 30 days by someone with over 80 hours in game:

“Masterpiece.

Best RPG I have played in the past years. It is a very strong title. Like Heavy Rain, Dishonored, SOMA, Dragon Age: Origins, Walking Dead, Last of Us, Witcher.

It is like an interactive book. With decisions. With consequences. With unique skills. Memorable characters. Story that is more deep than you can imagine even in the middle of the playthrough.

It is a comedy. It is a drama. It is a world with grey colors in everything: characters, choices, outcomes.

At one moment you will be laughing at great jokes, idiotic situations, main character, somebody else. At the next moment you will be depressed because of some outcomes.

Beware that gameplay mostly consists of reading and choosing the options, so if you are not into this, you may not like it.

Disco Elysium deserves even more than it’s regular price.

This is truly a gem in modern gaming market. Such a pity it happens so rarely.”

WilliamRockwell on Steam

Bookmarketing so I can pick this up in a few years when it is on sale for $10, which is how I buy video games that are not on Linux.

Newsboat

Newsboat is the Mutt of RSS readers. Works and looks pretty much the same as mutt. In making the conversion, I learned that I have over 500 RSS feeds, which in combination with a few dozen newsletters via email is how I discover the material to post to this blog.

I used to use an app on my phone to scroll through when I had time, but I found using Newsboat sped up the process considerably. So, even though I have to sit down at the computer and go through each feed, Newsboat will be my default method moving forward. Recommended.

bash: Cryptocurrency Prices From the Linux Terminal

#!/bin/bash
printf -v coin '%s' -1   # crypto.sh bitcoin

price() {
  # A function that pulls cryptocurrency price data from coingecko
    
  curl -X 'GET' 'https://api.coingecko.com/api/v3/simple/price?ids='"$1"'&vs_currencies=usd' \
     -H 'accept: application/json' 2> /dev/null | # sends download data to /dev/null
      
  sed  's/.*usd"://' |   # Removes everything before the price
  sed 's/..$//' |        # Removes back two }}
  sed 's/^/\$/'          # Adds dollar sign to the front, returns
}

price=$(price $1) # calls function with command line variable
bitcoin=$(price bitcoin)
ethereum=$(price ethereum)

# Checks to see if there is a command line variable and prints to console
if [[ -z $1 ]]; then
    echo "bitcoin: ${bitcoin} | ethereum: ${ethereum}"
else
    echo "${1}: ${price} | bitcoin: ${bitcoin} | ethereum: ${ethereum}"
fi

h/t Techstructive for the basic idea. I simplified their code by cutting out the I/O and putting the coin as a variable when calling the script, e.g. crypto.sh bitcoin, and formatting it by piping it through sed. Have I mentioned how much I love sed?

Edit: Modified this on August 12, 2021 so it is now a function and prints a portfolio of coins. I track two or three, and it was getting annoying to have to do them each individually. All you need to do to modify it for the coins you are interested in is create a new function call:

cardano=$(price cardano)

Then add that to both the if and then print results.

    echo "${1}: ${price} | bitcoin: ${bitcoin} | ethereum: ${ethereum} | cardano: ${cardano}"

Tildeverse & Rawtext.club

I was checking out Lagrange, which is a web browser for the Project Gemini Internet protocol. The Gemini protocol is a text based, privacy focused communications protocol, and Lagrange renders the text beautifully.

But, during the course of checking it out, I was reminded of the Tildeverse. In short, tilde communities are playgrounds for people interested in multi-user *nix systems. It’s a kind of return to old *nix and BBS systems that you, if you are old enough, used to connect to with telnet or a modem, and features tools like IRC, which I haven’t used for years. There are a variety to choose from, e.g,, tilde.team, envs.net, tilde.club, ctrl-c.club, rw.rs, sdf.org, etc. Personally, I found the thinking behind rawtext.club in line with my attitudes about working from the command line, text, and the problems with social media. Their values include: off the web, DIY, resource minimalism, non-profit, and asynchronous. Here’s a bit from their social contract:

“People in democratic countries might be saying, “but don’t we have a government and legal system to protect us?”. In theory yes – but as history shows, these legal systems are often distorted to encourage those abuses. The corporations and wealthy individuals responsible are either good friends with governments, or hard at work “convincing” them. They are funding intense lobbying efforts to influence politicians, and entire media campaigns to erase public awareness of their work (or, similarly, to manufacture consent). The end result is that public service and regulations are being systematically dismantled and neutralized as an obstacle to reckless, short-sighted profiteering. The institutions that are nominally for the people, by the people, and designed to protect the people, turn out to be none of those, and we are being broken apart into a bickering sea of lonely individuals.”

https://rawtext.club/social-contract.html