Normalmente no re-instalo mi sistema operativo frecuentemente; la última configuración de Elementary OS Luna me duro al menos unos 2 o 3 años, pero cuando migré a Juno, la primer pregunta que se me vino a la menta fue ¿Que carajos instalo primero ?

Así que, comencé a instalar cosas según creía conveniente y quise documentarlo para así, tener una especie de guía por si volvía a tener la necesidad de re-instalar todo de nuevo.

Lo chistoso del asunto es que, efectivamente, volví a hacer uso de esta misma guía una vez mas, y me resulto super provechoso. También pues aprovecharé para publicarla en mi blog a modo de guía/documental/histórico/anécdota.

Disclaimer

Nota 1: Después de instalar Elementary OS, tuve problemas para arrancar, por lo que tuve que acudir al boot-repair, y luego en el BIOS cambiar de Legacy a UEFI. (No se por ahora si funciona de esta manera, pero anteriormente jalaba mejor con Legacy).

Nota 2: La segunda vez que instalé Elementary OS, no arrancó, una vez mas acudí al BIOS y cambie a Legacy, y funcionó. Creo que dependerá del modo en el que hagas la instalación, pero preferible hacerlo en Legacy.

Chrome Beta

Mi navegador por defecto es Chrome, la versión beta me permite tener features mas recientes que las liberadas para Linux en su versión estable. Link para descargar chrome beta.

Configurando fstab

En mi laptop tengo 2 discos duros (SSD y HDD), por lo que tengo particionado el directorio principal (/), el directorio home (/home), el directorio opt (/opt) y otros tantos.

Tengo un gist donde guardo esta configuración. Recomiendo hacer un backup de este archivo.

Instalando tools básicas

sudo apt install software-properties-common  

Problema Bluetooth

Tuve problemas para que el bluetooth funcionará, buscando, encontré que hay que desbloquear el servicio.

Primero, instalamos algunos paquetes:

sudo apt-get install bluetooth bluez bluez-tools rfkill

Checamos si esta bloqueado:

sudo rfkill list
0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: ideapad_bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: no
2: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
3: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

Desbloqueamos y reiniciamos

sudo rfkill unblock bluetooth
sudo service bluetooth start

Tuve que reiniciar el equipo para que el tray-icon apareciera correcto en el panel.

Tweaks

Los tweeks permiten modificar varias propiedades que considero importante, como quitar el simple click de pantheon-files

sudo add-apt-repository ppa:philip.scott/elementary-tweaks
sudo apt install elementary-tweaks

Codecs Multimedia

Probablemente me sirva para reproducir algunos archivos multimedia.

sudo apt install ubuntu-restricted-extras
sudo apt install libavcodec-extra
sudo apt install libdvd-pkg

JAVA

Instalando Java

sudo apt install default-jre
sudo apt install default-jdk

Seahorse

Instalamos el administrador de claves GPG

sudo apt-get install seahorse caja-seahorse

Synapse

Instalando lanzador de aplicaciones Synergy

sudo apt-get install synapse

Posteriormente, hay que configurarlo para que el Shortcut Super+Space lo dispare

Instalando Apps de Gnome

sudo apt-get install gnome-system-monitor gnome-terminal gnome-screenshot eog

Error con libdbd-pkg

Después de hacer un apt-get install, arroja un error como el siguiente:

libdvd-pkg: `apt-get check` failed, you may have broken packages. Aborting...

Intentando Corregir:

sudo dpkg-reconfigure libdvd-pkg

Corrigiendo detalle con los Workspaces

Elementary OS Juno a diferencia de Luna, obliga a que los Displays secundarios no puedan intercambiar de workspaces. Esto para mi es un problemón por que estoy tan acostumbrado a cambiar de workspaces de modo general, es decir, para mi display 1 y 2 al mismo tiempo.

Buscando encontré a un tipo que reporto el detalle en stackoverflow. Parece ser que se puede solucionar editando una flag en dconf-editor.

Se puede cambiar desde la terminal así:

sudo apt-get install dconf-editor
# gsettings get org.gnome.mutter workspaces-only-on-primary
gsettings set org.gnome.mutter workspaces-only-on-primary false

Pero, mi recomendación es usar dconf-editor.

Instalando Apps

Para ahorrar tiempo, liste todas las apps que ocupo en mi día a día:

sudo apt-get install git vim vim-gnome openssh-server vlc wget rdesktop gimp inkscape firefox gedit dconf-editor gconf-editor pavucontrol audacity clementine easytag obs-studio sqlitebrowser winff calibre handbrake planner simplescreenrecorder tmux screen snapd ncdu transmission-cli

Instalando Typora

Instalé Typora para Documentar: https://typora.io/#linux

Instalando Ghostwriter

Otro editor que uso muchísimo para escribir mis publicaciones es Ghostwritter, así que, a instalar.

Repositorio: https://github.com/wereturtle/ghostwriter

sudo add-apt-repository ppa:wereturtle/ppa
sudo apt-get update
sudo apt-get install ghostwriter

Instalando Papirus Themes

Papirus Icons es un tema de iconos que me late bastante, así que, decido instalarla siempre

sudo apt-get install papirus-icon-theme

Instalando Arc Theme (Opcional)

Arc Theme es un tema GTK bastante chulo que se usa para algunas distros.

sudo apt-get install autoconf automake pkg-config libgtk-3-dev gtk2-engines-murrine gnome-themes-standard
cd /opt
sudo git clone https://github.com/horst3180/arc-theme --depth 1 && cd arc-theme
./autogen.sh --prefix=/usr
sudo make install

Instalando Virtualbox

Para agregar el repo, hay que crear el archivo /etc/apt/sources.list.d/virtualbox.list

deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bionic contrib

Agregamos las keys

sudo apt-get install wget
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install virtualbox-6.0
sudo apt-get install virtualbox-dkms

Al instalar virtualbox-dkms se solicito una contraseña, se dejó: virtualbox

Luego tuve problemas:

● virtualbox.service - LSB: VirtualBox Linux kernel module
   Loaded: loaded (/etc/init.d/virtualbox; generated)
   Active: failed (Result: exit-code) since Wed 2019-08-21 10:44:15 CDT; 30s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 15460 ExecStart=/etc/init.d/virtualbox start (code=exited, status=1/FAILURE)
  
ago 21 10:44:15 grey systemd[1]: Starting LSB: VirtualBox Linux kernel module...
ago 21 10:44:15 grey virtualbox[15460]:  * Loading VirtualBox kernel modules...
ago 21 10:44:15 grey virtualbox[15460]:  * modprobe vboxdrv failed. Please use 'dmesg' to find out why
ago 21 10:44:15 grey virtualbox[15460]:    ...fail!
ago 21 10:44:15 grey systemd[1]: virtualbox.service: Control process exited, code=exited status=1
ago 21 10:44:15 grey systemd[1]: virtualbox.service: Failed with result 'exit-code'.
ago 21 10:44:15 grey systemd[1]: Failed to start LSB: VirtualBox Linux kernel module.

Busque por aquí: https://askubuntu.com/questions/900118/vboxdrv-sh-failed-modprobe-vboxdrv-failed-please-use-dmesg-to-find-out-why

Aplique primero los pasos 1, 2 y 3 de esta respuesta: https://askubuntu.com/a/900121

Reinicié el laptop, y al parecer, ya que tengo el modo UEFI activado, hay que enrollar el mod, introduciendo el password anterior.

Instalando PIP y VirtualenvWrapper (Python 2.7)

sudo apt-get install python-pip python3-pip
sudo pip install virtualenv

Instalando Vagrant

Para vagrant parece no haber repo, así que hay que bajar el paquete de la página oficial: https://www.vagrantup.com/downloads.html

sudo dpkg -i vagrant_*
sudo apt-get -f install

Instalando pgAdmin 3

Para instalar pgAdmin3 y que soporte diversas versiones de postrgesql, necesito agregar el repo oficial y luego descargarlo.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install pgadmin3

Instalando Dbeaver

Descargamos el paquete de la página oficial: https://dbeaver.io/download/

sudo dpkg -i dbeaver-ce_6.1.5_amd64.deb

Instalando Rescuetime (Opcional)

Rescuetime es un track de tiempo que uso desde hace ya varios años. Primero, hay que descargar la App

sudo dpkg -i rescuetime_current_amd64.deb

Usando Winpanel de Ayatana

Por default, wingpanel no soporta indicadores como los generados por electron y otras herramientas, para ello, disponemos de wingpanel-indicator-ayatana.

Detalles aquí:

Para instalar, hay que seguir los siguiente:

mkdir -p ~/.config/autostart
cp /etc/xdg/autostart/indicator-application.desktop ~/.config/autostart/
sed -i 's/^OnlyShowIn.*/OnlyShowIn=Unity;GNOME;Pantheon;/' ~/.config/autostart/indicator-application.desktop
wget http://ppa.launchpad.net/elementary-os/stable/ubuntu/pool/main/w/wingpanel-indicator-ayatana/wingpanel-indicator-ayatana_2.0.3+r27+pkg17~ubuntu0.4.1.1_amd64.deb
sudo dpkg -i wingpanel-indicator-ayatana_2.0.3+r27+pkg17~ubuntu0.4.1.1_amd64.deb

Agosto 26, 2019

Tiempo después, me dí cuenta que los íconos del wingpanel estaban muy separados, y ese detalle me molesta sobre manera. Buscando en los issues de elementary-indicators encontré una solución editando el css de apps.css.

default

Básicamente, hay que editar /usr/share/themes/elementary/gtk-3.0/apps.css

sudo vim /usr/share/themes/elementary/gtk-3.0/apps.css

Y cambie el código de la clase .composited-indicator

.composited-indicator {
    padding: 0 1px;
}

after

Noviembre 5, 2019

Una actualización de wingpanel ya no considera los estilos de la clase .composited-indicator. Opté por compilar wingpanel con una pequeña modificación.

Si no quieres clonarte el repo, ni compilarlo, también puedes optar por modificar el archivo $HOME/.config/gtk-3.0/gtk.css agregando:

.composited-indicator {
    padding: 0 1px;
}

Luego solo hay que reiniciar wingpanel.

killall wingpanel

Noviembre 21, 2019

Mi reproductor de música local favorito es Clementine, sin embargo, gran parte de su desarrollo está basado en Qt y el trayicon no está soportado por Pantheon, incluso, usando ayatana. Para resolver esto es necesario instalar la librería sni-qt que permite soportarlo.

sudo apt-get install sni-qt

(Alternativa) Wingpanel de Namarupa (No usar)

El wingpanel de namarupa a diferencia de ayatana, agrupa los tray icons de apis anteriores como dropbox, rescuetime, play music, etc. Mas info aquí

Nota 1: Estuve compilando el código, pero después, todo se estropeo. Hay que tener cuidado, tal vez, mejor usar el deb construido.

Nota 2: Creo que no fui el único que tuvo problemas al compilar, en este issue otro usuario postea algo similar.

Instalando Dropbox (Opcional)

Descargamos el paquete: https://www.dropbox.com/es/install-linux

sudo dpkg -i dropbox_2019.02.14_amd64.deb
sudo apt-get -f install

Instalando VSCode (Opcional)

Mi editor por defecto es VIM, pero, como alternativas uso VSCode.

Descargamos el paquete: https://code.visualstudio.com/docs/?dv=linux64_deb

sudo dpkg -i code_1.37.1-1565886362_amd64.deb

Instalando Prezto

Repositorio: https://github.com/sorin-ionescu/prezto

sudo apt-get install zsh
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
zsh
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
chsh -s /bin/zsh

Descargando mis Dotfiles

Basado en mi repo.

    git clone https://github.com/lesthack/dotfiles.git ~/.dotfiles
    cd ~/.dotfiles
    git submodule update --init --recursive
    cd ~
    ln -s ~/.dotfiles/.vim .vim
    ln -s ~/.dotfiles/.vim/vimrc ~/.vimrc
    ln -s ~/.dotfiles/.bash_profile ~/.bash_profile

Agregando bash_profile

El archivo .zshrc debe verse así:

# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
  source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
  
# Customize to your needs...
unalias rm
  
source ~/.bash_profile

Instalando Google Play Music Desktop Player

Uno de mis reproductores de música por defecto es Google Play Music Desktop Player (siempre que tenga internet funciona), así que, lo instalamos.

Descargamos el paquete y lo instalamos: https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/releases

sudo dpkg -i google-play-music-desktop-player_4.6.1_amd64.deb
sudo apt-get -f install

Instalando Google Music Manager

A parte de escuchar música de GPM, tengo otros tantos archivos de música que no se encuentran en la plataforma, y para subirlos a mi cuenta necesito el manager de GPM.

Descargar paquete google-musicmanager-beta

sudo dpkg -i google-musicmanager-beta_current_amd64.deb

Instalando Skype (Opcional)

Descargar paquete de la página oficial: https://www.skype.com/es/get-skype/

sudo dpkg -i skypeforlinux-64.deb
sudo apt-get -f install

Instalando Slack (Opcional)

Descargar paquete de la página Oficial: https://slack.com/intl/es-mx/downloads/instructions/ubuntu

sudo dpkg -i slack-desktop-4.0.1-amd64.deb
sudo apt-get -f install

Agregando crontabs

Tengo algunos crontabs, pero, solo puedo publicar algunos. Probablemente tenga un backup completo en otro lugar.

# Cada hora cambiamos de wallpaper
1 * * * * cd /home/lesthack/code/others && ./autowallpaper_unsplash.sh

Shortcuts

Personalmente, uso mucho el teclado, y por tanto, me gusta tener shortcuts para las cosas mas repetitivas que hago, como abrir la terminal, abrir la carpeta home, cambiar de canción, etc.

Los settings de Elementary OS permiten a gusto esto, pero, hay algunos adicionales que siempre me gusta incluir, entre ellos, estos:

# Uso el terminak de gnome
Ctrl + Alt + T : gnome-terminal --hide-menubar
# Mi lanzador de Apps
Super + Space : synapse
# Monitor de procesos
Ctrl + Alt + Del : gnome-system-monitor
# Captura de pantalla de gnome
Super + PrintScrn : gnome-screenshot -i
# Cambiar wallaper random
Ctrl + Shift + F2 : $HOME/code/Utils/autowallpaper_unsplash.sh
# Bloquear pantalla
Super + L : dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
  
# Pause/Play
Ctrl + Alt + x : dbus-send --session --type=method_call --dest=org.mpris.MediaPlayer2.google-play-music-desktop-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
# Next Song
Ctrl + Alt + v : dbus-send --session --type=method_call --dest=org.mpris.MediaPlayer2.google-play-music-desktop-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
# Prev Song
Ctrl + Alt + z : dbus-send --session --type=method_call --dest=org.mpris.MediaPlayer2.google-play-music-desktop-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
# Stop
Ctrl + Alt + c : dbus-send --session --type=method_call --dest=org.mpris.MediaPlayer2.google-play-music-desktop-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop

Nota: En /org/gnome/desktop/wm/keybindings/ están la mayoría de los shortcuts registrados.

Instalando scrcpy

Para el desarrollo en Android que realizo evito en lo mayor de lo posible usar emuladores, son muy lentos y carecen de varias cosas que en la realidad se usan.

Así que, trabajo en vivo sobre dispositivos, pero luego trabajar con una mano en el teléfono, y otra en el teclado es tedioso, así que, me gusta depegar una pantalla de mi teléfono en mi monitor para trabajar, y eso mismo me permite scrcpy.

sudo snap install scrcpy

Nota: la instalación es mediante snap.

Instalando Node y npm

Creo que lo mejor que se puede usar para manejar diferentes versiones es nvm:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Versiones instaladas:

nvm list

Versiones disponibles

nvm ls-remote

Instalar versión:

nvm install v12.13.0

Usar versión:

nvm use v12.13.0

Entorno de Desarrollo para Google Play Music Desktop Player

En varias ocasiones, me gusta colaborar con el desarrollo de la app de GPMDP, así que, necesito montarme un entorno de desarrollo. Para este caso, necesito instalarme una versión de node algo vieja, como la v10.17.0.

Guía Oficial aqui

Los paquetes necesarios para compilar son los siguientes:

sudo apt-get install g++-multilib lib32z1 lib32ncurses5 rpm fakeroot dpkg libdbus-1-dev libx11-dev g++ libavahi-compat-libdnssd-dev gcc-4.8-multilib g++-4.8-multilib libnotify4 libexpat1-dev libbz2-1.0
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libbz2-1.0:i386

Una vez hecho eso, ya puedo trabajar:

npm install
npm run build
npm start

Fin

Creo que hasta aquí, he instalado todas las herramientas que necesito. Me reservo el derecho a modificar cualquier cosa dentro de esta guía.


Imagen del Header de @Ryan Schroeder

Jorge Hernandez :: http://jorgeluis.com.mx

Publicaciones que te pueden interesar...

Resumen 2019

La primer entrega del año; mi resumen del 2019. Y tu, ¿Qué tan productivo fuiste?

Noviembre, Proxy

Enlaces destacados de Noviembre: Vim, github, python, etc.