website/content/posts/a-ricing-starting-checklist.adoc

412 lines
16 KiB
Plaintext
Raw Normal View History

2019-08-26 03:54:17 +00:00
---
title: "A 'ricing' starting checklist"
date: 2019-08-25T18:03:43+08:00
categories: ["linux"]
tags: ["foss", "ricing", "linux"]
---
= A "ricing" starting checklist
Gabriel Arazas <foo.dogsquared@gmail.com>
2019-08-19
:imagesdir: ../images/a-ricing-starting-checklist/
I just started ricing at the start of August 2019.
So I made this list of things you might want to know when
getting started with ricing your setup so that I couldn't
forget it easily.
Hopefully, it can be useful for you, too.
NOTE: The listed programs is mostly applied to
Linux-based systems.
You can look for some alternatives if you're using
anything else.
Sorry, can't help much with that.
== A display server
In order to fully make use of window programs like
Firefox, Inkscape, GIMP, Blender, and many others, you have
to install a display server (or windows server).
Otherwise, you would be stuck using with a command line.
NOTE: This is required for any setup with a graphical
desktop.
There are
https://en.wikipedia.org/wiki/List_of_display_servers[many display servers out there]
but one of the more popular choices are https://www.x.org/wiki/[Xorg]
(an implementation of X protocol) and
https://wayland.freedesktop.org/[Wayland].
If your hardware is a bit old, I recommend to stick with
Xorg since it is older thus more developed than Wayland.
Wayland is still a relatively new technology still in development
but still keep an eye for it since it is meant to replace X
with simpler options.
Also, I recommend to look at their respective Arch Linux wiki entry
if you want to get started.
(Pretty much I recommend the Arch Linux wiki for most of the
Linux stuff, really.)
== A desktop environment/window manager
In order to have that graphical desktop experience, you
either need a _desktop environment_ or a _window manager_
(or even both).
A window manager does what its name does: manages and controls
windows from its appearance, content, and behavior.
There are
https://wiki.archlinux.org/index.php/window_manager[many choices to choose from]
but personally I recommend https://i3wm.org/[i3], https://swaywm.org/[Sway],
https://wiki.archlinux.org/index.php/Bspwm[Bspwm], and
https://awesomewm.org/[awesome].
Usually with a window manager, you can extend more stuff with it
such as a status bar and a lock screen to improve your
desktop experience.
Anyways, you should try and experiment with the configuration
of the window manager of your choosing.
Meanwhile, a desktop environment is a more detailed setup
built on top of a window manager.
They have more built-in stuff like a status bar,
a session manager, a display manager, and a window manager of
their own.
Like window managers,
https://wiki.archlinux.org/index.php/Desktop_environment#List_of_desktop_environments[You have many choices]
here.
For my personal recommendations, https://xfce.org/[Xfce] and
https://www.kde.org/plasma-desktop[KDE Plasma] is the
top-tier choices.
Usually, desktop environments let you replace their
window manager (or any of their components, if they provided
one).
For example, you can install Xfce and replace their built-in
window manager (https://docs.xfce.org/xfce/xfwm4/start[Xfwm])
with i3wm.
Don't forget to use some themes for the desktop environment
of your choice.
TIP: Always check for the requirements of the window manager
or the desktop environment before trying it.
It can affect performance or simply won't work because
of incompatibility.
== A compositor
A https://en.wikipedia.org/wiki/Compositing_window_manager[compositor]
(or a composite manager) is a program that provides
an off-screen buffer for application windows.
Thus, repainting and rendering application windows will mitigate
against common graphical issues such as screen tearing or leaving a
"trail" or a black block.
Those issues will be way more obvious when moving your windows or
using an application with a lot of moving parts on your screen.
(I can't record it since it's not present when viewing it in a video.)
It can also provide additional processes with those application
windows such as adding transitions, adding animations, and
applying opacity for the windows.
In other words, it can add pizzazz to your setup.
TIP: Like window managers, always check for the requirements
before using it.
Certain compositors can only support certain setups or
will break under certain conditions in your setup.
One of the more popular compositors are
https://github.com/yshui/compton[Compton] for X window system
and https://swaywm.org/[Sway] for Wayland.
Once you have configured the compositor, you can certainly see
some notable differences with it.
Since I have installed Xorg which is an implementation of the X window
system, I'm using Compton.
The following videos are demonstrations using without and with Compton
running in the background.
Here's a video of my setup using no Compton.
video::compton-less-demo.mp4[width=100%]
Here's another video of my setup using Compton this time.
Take note that it uses the default config located at
`/etc/xorg/compton.conf`.
video::compton-demo.mp4[width=100%]
== A display manager
A display manager is a graphical interface for logging in a session.
It could be pretty useful for those who are using with multiple users
that might be intimidated with using a TTY as their first screen.
Most importantly, it could be used for additional swag.
Aside from giving the user login interface a makeover, it can also
do other things such as authenticating users and session management.
https://wiki.archlinux.org/index.php/Display_manager#List_of_display_managers[There is a list of choices out there]
and my pick is https://github.com/CanonicalLtd/lightdm/[LightDM]
since I find it easy to start and it does have a cool login interface.
== GUI library themes
GUI library such as https://www.gtk.org/[GTK] and
https://www.qt.io/[Qt] might have a unified configuration that
describes the widgets appearance, color scheme, and fonts.
I'll be mainly discussing on GTK theming since a lot of widely used
programs are built with it.
https://www.gtk.org/[GTK] is a cross-platform free and open source GUI library.
Popular programs built (as of this writing) with the library include
https://www.mozilla.org/en-US/firefox/new/[Firefox],
https://www.thunderbird.net/[Thunderbird],
http://www.gimp.org/[GIMP], and http://www.inkscape.org/[Inkscape].
One of the features of GTK is a unified configuration that'll be applied to
all GTK-built programs.
It also means that you get to edit it into a consistent-looking theme
from the color scheme, widgets, to icons.
There are many ways on configuring your color scheme and icon sets but
I recommend to start with http://wiki.lxde.org/en/LXAppearance[LXAppearance]
or https://github.com/themix-project/oomox[oomox].
Even better you could use them to take a look at a GTK config file and edit
it yourself afterwards.
You could also not customize it and leave it to the distro.
For Arch Linux, it has Raleigh as the default GTK theme which looks
very dated if you ask me.
.GTK Raleigh theme
image::gtk-raleigh-theme-demo.png[]
For my custom configuration, I chose the https://github.com/NicoHood/arc-theme[Arc]
theme along with its https://github.com/NicoHood/arc-icon-theme[icon set] simply
because they're the popular choice. I also think the darker scheme is pretty
cool.
.GTK Arc Darker theme
image::gtk-arc-darker-theme-demo.png[]
You can look for more GTK themes at https://www.gnome-look.org/[GNOME Look].
NOTE: Not all GTK-built programs follow and apply the configuration.
You could also set individual themes for each program given that they provided one.
== Color scheme generator
Having your own color scheme for your setup is very great.
However, if you're inexperienced with choosing your own colors,
a color scheme generator can help.
There are a lot software built for it such as https://coolors.co/[Coolors],
https://color.adobe.com/create[Adobe Color], and
https://colorpalettes.net/[a color pallete sharing site] but
there are two particular program that I personally recommend
because they're specifically made for ricing.
=== pywal
Enter https://github.com/dylanaraps/pywal[pywal], a program that easily generates a
color scheme and replace it with your already existing terminal setup.
You could also make some templates in order to apply it to other programs like
https://github.com/DaveDavenport/rofi[rofi], for example.
One of the most popular highlights of pywal is that you can generate color schemes
with images.
So far, I'm content with the color scheme generated from [this image].
It's pretty easy on the eyes and it is also cool to be background image for
your desktop.
You can certainly automate it to make it as your theme selector similar
to how https://www.youtube.com/watch?v=Es79N_9BblE[Luke Smith] did with his setup.
Or just like how
https://www.reddit.com/r/unixporn/comments/973qcn/i3rofipywal_automated_theme_switching_with_rofi/[this ricer from `/r/unixporn` made rofi to be the theme selector].
=== wpgtk
wpgtk, as it is described in its https://github.com/deviantfero/wpgtk[own GitHub page],
is a colorscheme, wallpaper and template manager for *nix-based systems.
It is what it is.
* It can generate and manage different color scheme with
https://github.com/dylanaraps/pywal[pywal] which I discussed it shortly earlier.
* It can manage wallpapers and templates.
* Comes with a graphical user interface built with https://www.gtk.org/[GTK].
It is a pretty cool tool and can turn ricing into a more satisfying
experience with the convenience it offers.
I fully recommend looking into this tool if you want a cool color scheme
generator and a manager for common ricing tasks.
== A notification system
A status bar is not enough fill up some info especially if it's not
needed that much.
A desktop notification system could be handy for those situations.
It can also be useful for immediate feedback that is shortly
not needed after.
In order to setup a notification system working, you need two components:
* a notifier that sends notifications
* a notification daemon that recieves those notifications
NOTE: If you're using with a desktop environment, usually it already
has a notification system installed. Feel free to skip this section
if you want.
For the former, https://developer.gnome.org/libnotify/[`libnotify`]
(with `notify-send`) is the toolbelt for that.
For the latter, you have more choices.
In my setup, I have https://dunst-project.org/[`dunst`] since I see
it included in a lot of posts at `/r/unixporn`.
`dunst` is also easy to configure and extend.
You can change the color of the text and background, change the
appearance for notifications of varying urgency levels, and integrate
scripts that'll run whenever a certain type of notification has been
recieved.
It's pretty fantastic.
One very useful example in my case is making a notification for screenshots.
I made a script which takes a screenshot which will be binded with the `PrintScr` key
which will be used in i3.
In i3, running a script takes place in the background so there's no way to know
if the screenshot capture is a success or not unless you send some data to a
server. Simply sending a notification with `notify-send` while running `dunst` in the
background can go a long way.
.Using dunst for screenshot notifications
image::dunst-screenshot-demo.png[Using dunst for screenshot notifications]
I also made it to send notifications for delayed screenshots.
video::dunst-delayed-screenshot-demo.mp4[width=100%]
If you're curious about the screenshot script, you can find it
https://github.com/foo-dogsquared/dotfiles/blob/master/.scripts/maim-screenshot.sh[here].
== A dotfiles manager
Managing your dotfiles can be tricky since different programs have
different ways on where to store their configuration files.
NOTE: Dotfiles simply means your configurations of the installed
programs. Its name also came from how Linux considers a file/folder
with a period in front of the name to be hidden (i.e.: `.config`,
`.vimrc`, `.bashrc`).
If you would continue with no tool at all, you would most likely:
* edit and manage it by hand
* create a folder where all of your dotfiles are in and symlink it
in various locations
* create a script that'll manage your dotfiles for you ;p
Depending on your experience, it could be elegant or a nightmare.
Which is why I totally recommend to use a dotfiles manager.
https://wiki.archlinux.org/index.php/Dotfiles[You have some choices]
(or you know create one yourself) for managing your dotfiles easily.
For me, I chose https://www.gnu.org/software/stow/[`stow`] since it is
widely distributed among Linux-based systems. The runner-up is
https://github.com/TheLocehiliosan/yadm[`yadm`] which integrates the
concepts usually found in Git.
== A backup tool
Imagine spending time for your setup that you visioned then having
to put all of that down for a ridiculous reason.
That's what backups are for.
It's a simple thing to backup your dotfiles whether through simple
copy-pasting it in another storage device, an online drive, or
a self-hosted server.
For my dotfiles, I simply use a remote Git repo as my online "backup".
I also have the benefit of putting my dotfiles under version control
which means I can easily experiment with my settings.
== Anything else?
Your usual programs, of course.
Your web browser, text editor, terminal, file manager, or even some
games (granted that they support it on Linux).
If you feeling adventurous and want to explore more, you can
https://wiki.archlinux.org/index.php/List_of_applications[view this application list on Arch Linux wiki].
Or explore around on GitHub, GitLab, or wherever that is.
You can also check out
https://wiki.archlinux.org/index.php/Desktop_environment#Custom_environments[this list of components]
if you want more stuff for your desktop setup.
If you want some inspiration for your ricing journey, be sure
to check out https://www.reddit.com/r/unixporn/[`/r/unixporn`].
The amount of creativity is overflowing from the community.
I also have my own set of dotfiles that you can check it
up on https://github.com/foo-dogsquared/dotfiles[my GitHub repo]
(also have it on https://gitlab.com/foo-dogsquared/dotfiles[GitLab as a mirror]).
== Further looking
You can find most of the valuable stuff on https://wiki.archlinux.org/[Arch Linux wiki].
Most of the concepts apply even when you're not using Arch Linux.
The documentation is pretty thorough and periodically updated so be sure to
check it out often.
=== Web
https://wiki.archlinux.org/index.php/Desktop_environment[_Desktop environment_ from *Arch Wiki*]::
An Arch Linux wiki entry on desktop environments.
Features a list of desktop environments with their own
wiki page and a list of components that make up a
graphical environment.
https://wiki.archlinux.org/index.php/Desktop_notifications[_Desktop notifications_ from *Arch Wiki*]::
An entry on desktop notifications on Arch Linux wiki.
Also contains a list of programs to look out for and
information on setting up one.
https://wiki.archlinux.org/index.php/Display_manager[_Display manager_ from *Arch Wiki*]::
An Arch Linux wiki entry on display managers.
Features a list of display managers with their own
wiki page.
https://wiki.archlinux.org/index.php/Dotfiles[_Dotfiles_ from *Arch Wiki*]::
It's a page on Arch Wiki that shortly describes about dotfiles.
Also features a list of programs that can help you process and
manage your dotfiles.
https://github.com/addy-dclxvi/i3-starterpack[_i3-starterpack_ GitHub repo by *addy-dclxvi*]::
A great start on starting with your i3 setup and can also teach
a little of bit of ricing.
http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html[_Using GNU Stow to Manage Your Dotfiles_ by *Brandon Invergo*]::
It's a short but sweet article on https://www.gnu.org/software/stow/[GNU Stow],
a symbolic link farm manager suitable for controlling configuration files.
https://wiki.archlinux.org/index.php/window_manager[_Window manager_ from *Arch Wiki*]::
An Arch Linux wiki entry on window managers.
Provides a list of window managers with their own
wiki entry that documents the installation and configuration
process.
=== Video
https://www.youtube.com/playlist?list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf[i3wm series from *Code Cast*]::
A fantastic video series by Code Cast on getting started with i3 and ricing.
It's a bit outdated (heads up for the part where you setup for rofi)
but most of the concepts still apply today.