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.
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;
}
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