Teclado personalizado en Ubuntu 14.04

Hace poco tuve la necesidad de comprar un teclado USB para una laptop que tenía algunas teclas que no funcionaban.

Desafortunadamente, ningún mapeo se ajustaba por defecto a los dibujitos que tenía en mi teclado.

entradas

El más cercano era el de español de España, pero tenía los acentos invertidos (la tecla con la tilde normal la ponía invertida y viceversa).

Así que tuve que modificar el mapeo manualmente. Para esto se necesitan abrir los mapeos del español con permiso de administrador. Desde una terminal teclea:

cd /usr/share/X11/xkb/symbols/
sudo gedit es

En mi caso intercambié las entradas:

key <AD11> { [dead_grave, dead_circumflex, bracketleft, dead_abovering ] };
key <AC11> { [dead_acute, dead_diaeresis, braceleft, braceleft ] };

Dejándolas como:

key <AC11> { [dead_grave, dead_circumflex, bracketleft, dead_abovering ] };
key <AD11> { [dead_acute, dead_diaeresis, braceleft, braceleft ] };

Y lo mismo para las teclas que deseen cambiar. Después de guardar, hay que regenerar la configuración:

sudo dpkg-reconfigure xkb-data

Al lanzar la aplicación Entrada de Texto de Ubuntu ya deberían ver los cambios reflejados en el vistazo del teclado que aparece ahí.

Entrada De Texto

teclado

Después de cambiar todo lo necesario, para que los cambios se vieran en el editor de texto que ya tenía abierto, yo tuve que decirle a Ubuntu que cambiará el mapa de caracteres con el atajo Super+Espacio, osea la tecla Windows y el espacio.

Y ya se puede usar la nueva configuración personalizada en todas las aplicaciones.

Cómo instalar Node.js en Ubuntu 14.04

Node.js es una plataforma construida sobre el JavaScript runtime de Chrome, útil para crear aplicaciones de red rápidas y escalables.

Se recomienda (por seguridad) no usar npm o node con sudo, nvm sirve bien para este propósito.

Primero, instala los prerequisitos para Ubuntu:

sudo apt-get install python g++ make
#sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get build-dep nodejs

Clona el repositorio y configura tu $SHELL:

git clone https://github.com/creationix/nvm.git ~/.nvm
echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
exec $SHELL
echo "nvm use 0.11" >> ~/.bashrc

Revisa las versiones disponibles con:

nvm ls-remote

Instala la versión más reciente de v0.11.x con:

nvm install 0.11

Prueba que esté todo bien revisando las versiones de node y npm:

node -v #v0.11.13
npm -v #1.4.9

Instala un par de cosas que te serán útiles (Yeoman, Grunt y Bower), no uses sudo, no lo necesitas con nvm:

npm install -g yo grunt-cli karma-cli bower jake generator-angular generator-karma jshint uglify-js karma-jasmine karma-chrome-launcher karma-mocha karma-phantomjs-launcher jade gulp

Ya con Node.js instalado, podemos echarle un ojo al tutorial de AngularJS ¿no? ;)

Para iniciar una nueva aplicación AngularJS con Yeoman, abre una terminal, entra a tu directorio de desarrollo y teclea:

mkdir hola-angular
cd hola-angular
yo angular

El instalador de Yeoman te hará algunas preguntas sobre qué deseas integrar a tu nueva app.

Si usas Ruby, te recomiendo instales el soporte para Sass (con Compass). Y la versión Sass de Bootstrap.

Te sugiero que inicialices un repositorio git con:

git init
git add .
git commit -m "Commit inicial"

Después actualiza la versión de Angular de 1.2 a 1.3 (en lo que sale la 2.0):

bower install angular#1.3.0 --save
bower install angular-resource#1.3.0 --save
bower install angular-cookies#1.3.0 --save
bower install angular-sanitize#1.3.0 --save
bower install angular-animate#1.3.0 --save
bower install angular-touch#1.3.0 --save
bower install angular-mocks#1.3.0 --save-dev
bower install angular-scenario#1.3.0 --save-dev

Cuando te pregunte a qué versión resolver, siempre contesta con la 1.3.0.

Para iniciar y ver tu aplicación en el navegador, teclea en la terminal:

grunt serve

Recomiendo el cambio de angular-route por ui-router.

Teclea en la terminal:

bower uninstall angular-route --save
bower install ui-router --save

Deberás modificar el archivo en app/scripts/app.js, ya que ese archivo contiene código que utiliza angular-route. Para que la aplicación siga funcionando debes modificar su contenido para que se vea así:

angular
  .module('holaAngularApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ui.router',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/');
 
    $stateProvider
      .state('home', {
        url: '/',
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })
      .state('about', {
        url: '/about',
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
      });
  });

Y en el app/index.html, cambia:

<div ng-view=""></div>

Por:

<div ui-view=""></div>

Con esto tu aplicación recién creada debe volver a funcionar sin problema.

Referencia

nvm – Node Version Manager

Sin sonido HDMI en laptop con ATI Radeon HD 4200 RS880 en Ubuntu

Si tienes sonido en las bocinas de tu laptop pero al conectar el cable HDMI a una televisión no se oye nada, hay varias cosas que puedes probar: ajustar el volumen y verificar que no esté en mute la salida.

Si a pesar de todo sigues sin sonido, espero esto te ayude.

Abre una terminal y teclea:

gksudo gedit /etc/default/grub

Busca esta línea:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Y cámbiala por esta otra:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.audio=1"

Por último:

sudo update-grub

¡Reinicia y listo!

Referencia

Fast video playback with no sound

Mi Ubuntu Desktop — Puesta a punto de una Alienware M11x R2

¿Qué hacer con una Alienware M11x R2 que trae por defecto Windows 7?

Instalarle Ubuntu, por supuesto. Je.
Estos son mis apuntes.

Ubuntu recién instalado

Para comenzar, no me late que aparezcan resultados de Amazon en mi menú de aplicaciones. Esto lo soluciona:

sudo apt-get remove unity-lens-shopping

Activa el firewall:

sudo ufw enable

Buscar e instalar actualizaciones

Ya sea con la aplicación de Actualización de software o con:

sudo apt-get update
sudo apt-get upgrade

Navegador

El mejor navegador en este momento: Google Chrome
Instalar chat de voz y video para gmail: Chat de vídeo y voz de Google
Instalar un color browser útil : Chroma
Instalar un color picker útil : Eye Dropper
Y una app para leer feeds: Feedly

Misceláneos

Algunas cosas útiles que he encontrado a través de los años y que siempre termino instalando:

sudo apt-get install byobu alpine testdisk mlock conky-all gddrescue
sudo apt-get install comix gimp gimp-ufraw gnote calibre inkscape unetbootin
sudo apt-get install denyhosts logwatch chkrootkit unrar curl nmap htop mtr-tiny
sudo apt-get install pdftk wkhtmltopdf imagemagick poppler-utils pandoc

Instala youtube-dl

Clonar en un directorio, entrar a él y después ejecutar:

make cleanall
make all
sudo make install

Configuración básica

Abre una terminal y teclea:

echo "export EDITOR=nano" >> ~/.bashrc

Esto pone a nano como el editor por defecto, en lugar de vi.

Activa TRIM para mejorar el rendimiento de tu disco duro de estado sólido

Si cuentas con un SSD, lo más recomendable es que pongas un trabajo cron a realizar las tareas de mantenimiento que necesita este tipo de disco duro:
Enable TRIM on SSD in Ubuntu for better performance (Using a daily cron job – recommended)

Ubuntu desktop y entretenimiento

La Alienware M11x R2 cuenta con la tecnología Optimus de nVidia y Ubuntu no trae soporte para esta tecnología, por lo tanto es necesario instalar un software que nos ayude a tomar control sobre la tarjeta de video (y de paso que no consuma tanta energía cuando no está siendo usada): Instala Bumblebee

Si tienes algún problema con los drivers y/o la pantalla, es posible que encuentres la solución aquí.

Para ajustar los tonos del monitor de acuerdo a la hora del día

f.lux para una pantalla agradable al trabajar durante la noche.

Para escuchar música

Un reproductor de música decente: Clementine
Puedes descargar la versión más reciente de Clementine para Ubuntu desde el PPA oficial:

sudo add-apt-repository ppa:me-davidsansome/clementine
sudo apt-get update
sudo apt-get install clementine

Ubuntu para desarrollo de software

git es mi herramienta predilecta para control de versiones, y la necesito para poder instalar otras cosas como Ruby y rbenv: Cómo instalar git

Para facilitar los cambios de directorio en la terminal: z

git clone https://github.com/rupa/z ~/z
echo '. ~/z/z.sh' >> ~/.bashrc

Ruby, qué puedo decir, es mi lenguaje favorito en estos momentos, el que me abrió los ojos a la programación funcional, hasta que llegue otro que me permita ser más productivo: Cómo instalar Ruby.

Si te interesa el gamedev en Ruby, checa los prerequisitos para Ubuntu: Getting Started on Linux

Y estas las gemas necesarias para darle rienda suelta al hobby:

gem install gosu chipmunk texplay lotu

Otro ambiente con el que me estoy involucrando últimamente es Node.js, aquí la guía de cómo instalarlo en Ubuntu.

PostgreSQL es una base de datos sólida y robusta: Cómo instalar PostgreSQL

emacs era mi editor de código favorito, aquí la guía para instalarlo: Cómo instalar emacs

Cómo instalar Google Chrome en Ubuntu 14.04

Selecciona de aquí la que gustes: Chrome Release Channels

Después de que descargues el .deb, da doble clic sobre él, te aparecerá el Centro de software de Ubuntu, da clic sobre Instalar y listo.

Ubuntu 12.10 y anteriores

Instala dependencias

Abre una terminal y teclea:

sudo apt-get install libxss1 libnss3-1d libgconf2-4

Descarga el navegador

Bájalo de aquí Navegador Chrome, o teclea en una terminal:

Para la versión de 64bit:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

Para la versión de 32bit:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

Ahora, sigue con la instalación dándole doble clic al .deb que descargaste o teclea en la terminal:

sudo dpkg -i google-chrome-stable_current_amd64.deb

¡Listo, ya cuentas con Google Chrome en tu máquina! ;)

Error: El paquete es de mala calidad

Si al tratar de instalar Google Chrome en Ubuntu te aparece un diálogo que dice:

El paquete es de mala calidad
 
No se permite la instalación de cualquier paquete que viole los estándares de calidad.
Eso podría causar problemas serios a su equipo. Contacte con la persona u organización
que le proporcionó este archivo de paquete e incluya los detalles a continuación.
 
Detalles:
Lintian check results for /home/victor/Descargas/google-chrome-stable_current_amd64.deb:
E: google-chrome-stable: file-in-etc-not-marked-as-conffile etc/cron.daily/google-chrome

Instálalo con el procedimiento manual descrito arriba, usando sudo dpkg -i …

Referencia

Install Latest Google Chrome in Ubuntu 12.10/12.04/11.10/Linux Mint

No es posible cargar el complemento — Problema con Flash en Google Chrome Linux

Desde el día de ayer me dejó de funcionar el complemento Flash que viene con Google Chrome. Esto se debe a que Chrome maneja su propia extensión Flash y alguien metió la pata con las versiones del plugin o algo. ;)

La forma de solucionar esto de manera rápida es con un:

rm -rf ~/.config/google-chrome/PepperFlash/

Cierra y abre tu navegador y ya está.

Referencias

No es posible cargar el complemento – Problema con Flash en Chrome bajo Linux
flashplayer plugin not loading

Cómo compilar e instalar Emacs 24.3 en Ubuntu 13.04

Emacs se ha convertido en mi editor de código favorito, aquí presento los pasos necesarios para compilarlo e instalarlo en Ubuntu a partir del código fuente (ya sabes, la versión más reciente aún no se encuentra en los repositorios oficiales). ;)

El procedimiento para hacernos con la versión más reciente de Emacs es descargar el código fuente, descomprimir el archivo, instalar las dependencias necesarias para compilarlo, compilar el código fuente e instalar.

Al momento de editar este artículo, la última versión disponible era la 24.3
Revisa cuál es la más reciente aquí.

Instalación

Abre una terminal, ingresa al directorio en donde se va a descargar el código fuente de Emacs (por ejemplo ~/tmp), luego teclea lo siguiente:

1
2
3
4
5
6
wget http://ftp.gnu.org/pub/gnu/emacs/emacs-24.3.tar.gz
tar -xzvf emacs-24.3.tar.gz
sudo apt-get install xorg-dev libjpeg-dev libpng-dev libgif-dev libtiff-dev autoconf automake libgconf2-dev libgpm-dev libtool libdbus-1-dev libgtk2.0-dev libm17n-dev libncurses-dev libotf-dev librsvg2-dev libXpm-dev texinfo
cd emacs-24.3
./configure
make

Prueba si se compiló bien:

src/emacs -q

Si no hubo problemas para ejecutarlo, instálalo con:

sudo make install

Listo, para probar tu instalación teclea esto:

emacs &

Cierra la aplicación, cerrando la ventana o con la combinación Control+x+c, que usualmente se denota así:

C-x-c

Un ambiente más amigable: emacs-starter-kit

Primero debemos agregar el repositorio donde se encuentra el starter-kit:

gedit ~/.emacs.d/init.el

Y agrega estas líneas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;; Agrega el repositorio de paquetes Marmalade para poder instalar el starter-kit
(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
 
;; Instala automáticamente paquetes que hagan falta
(when (not package-archive-contents)
  (package-refresh-contents))
 
;; Agrega los paquetes que desees a esta lista, en mi caso los que ocupo son estos:
(defvar my-packages '(starter-kit ruby-mode ruby-end haml-mode sass-mode scss-mode coffee-mode)
  "A list of packages to ensure are installed at launch.")
 
(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

Inicia Emacs y… ¡Listo, a programar!

Configuración

Para personalizar Emacs, abre una terminal y teclea:

gedit ~/.emacs.d/$USER.el

A continuación presento el contenido del mío:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
; tab width to two spaces
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
 
; move across buffers
; http://stackoverflow.com/questions/91071/emacs-switch-active-window
(global-set-key (kbd "S-<up>") 'windmove-up)
(global-set-key (kbd "S-<down>") 'windmove-down)
(global-set-key (kbd "S-<right>") 'windmove-right)
(global-set-key (kbd "S-<left>") 'windmove-left)
 
; resize buffers
; http://www.emacswiki.org/emacs/WindowResize
(global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-set-key (kbd "S-C-<down>") 'shrink-window)
(global-set-key (kbd "S-C-<up>") 'enlarge-window)
 
; default theme
(load-theme 'wombat)
 
; default global mode
; http://stackoverflow.com/questions/6378831/emacs-globally-enable-whitespace-mode
(global-whitespace-mode 1)
(column-number-mode 1)
 
; font settings
;(set-face-attribute 'default nil :height 110)
(if (eq window-system 'x)
  (set-default-font "DejaVu Sans Mono-13"))
 
; incrementar/decrementar el tamaño de la fuente
(defun sacha/increase-font-size ()
  (interactive)
  (set-face-attribute 'default
                      nil
                      :height
                      (ceiling (* 1.10
                                  (face-attribute 'default :height)))))
(defun sacha/decrease-font-size ()
  (interactive)
  (set-face-attribute 'default
                      nil
                      :height
                      (floor (* 0.9
                                  (face-attribute 'default :height)))))
(global-set-key (kbd "C-+") 'sacha/increase-font-size)
(global-set-key (kbd "C--") 'sacha/decrease-font-size)
 
 
; Agregar modo CSS para abrir así los archivos .scss
(add-to-list 'auto-mode-alist '("\\.scss$" . scss-mode))
 
; Agregar modo coffeescript para abrir así los archivos .coffee.erb
(add-to-list 'auto-mode-alist '("\\.coffee.erb$" . coffee-mode))
 
;; https://github.com/bbatsov/emacs-dev-kit/blob/master/ruby-config.el
;; Rake files are ruby, too, as are gemspecs, rackup files, and gemfiles.
(add-to-list 'auto-mode-alist '("\\.rake$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Rakefile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.gemspec$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.ru$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Gemfile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Guardfile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.rabl$" . ruby-mode))
 
;; We never want to edit Rubinius bytecode
(add-to-list 'completion-ignored-extensions ".rbc")
 
;; Load ruby-end minor mode when ruby-mode is loaded
;; http://stackoverflow.com/questions/4767557/how-do-i-get-hs-minor-mode-to-load-automatically-on-php-mode-in-emacs
(add-hook 'ruby-mode-hook (lambda () (ruby-end-mode 1)))
;(add-to-list 'load-path "/home/victor/.emacs.d")
;(require 'ruby-end)
 
;transparent emacs!
(defun djcb-opacity-modify (&optional dec)
  "modify the transparency of the emacs frame; if DEC is t,
    decrease the transparency, otherwise increase it in 5%-steps"
  (let* ((alpha-or-nil (frame-parameter nil 'alpha)) ; nil before setting
         (oldalpha (if alpha-or-nil alpha-or-nil 100))
         (newalpha (if dec (- oldalpha 5) (+ oldalpha 5))))
    (when (and (>= newalpha frame-alpha-lower-limit) (<= newalpha 100))
      (modify-frame-parameters nil (list (cons 'alpha newalpha))))))
 
;; C-8 will increase opacity (== decrease transparency)
;; C-9 will decrease opacity (== increase transparency
;; C-0 will returns the state to normal
(global-set-key (kbd "C-8") '(lambda()(interactive)(djcb-opacity-modify)))
(global-set-key (kbd "C-9") '(lambda()(interactive)(djcb-opacity-modify t)))
(global-set-key (kbd "C-0") '(lambda()(interactive)
                               (modify-frame-parameters nil `((alpha . 100)))))

Referencias

Installing Emacs from Source on Ubuntu
Emacs Starter Kit

Cómo instalar Ruby 2.1 con rbenv en Ubuntu 14.04

Después de haber pasado de instalar Ruby a mano, a instalarlo usando el cómodo RVM, me he ido ahora por rbenv.

Es menos intrusivo, y se siente más pulido que el propio RVM.

Preliminares

Vas a necesitar git, instálalo siguiendo esta guía.

Instalación de rbenv

¿Instalación local o en un VPS?

Si vas a instalar Ruby para desplegar aplicaciones en un VPS (Virtual Private Server, tipo Linode), es recomendable crear un usuario específico para ello.

Si deseas una instalación local, sáltate este paso y pasa a clonar el repositorio directamente en tu $HOME

sudo adduser deployer
sudo usermod -a -G sudo deployer
sudo su deployer
cd ~

Clona el repositorio

git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

Agrega ~/.rbenv/bin al $PATH para tener acceso al comando rbenv.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

Agrega rbenv init a tu shell para habilitar los shims y la función de autocompletar.

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Reinicia tu shell para que los cambios surtan efecto.

exec $SHELL

El mejor amigo de rbenv: ruby-build

ruby-build es un plugin que te permite instalar las diferentes versiones de Ruby de una manera sencilla y accesible.

El proyecto ruby-build te permite usar el comando rbenv install para agregar nuevas versiones de Ruby.

mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

Instalación de Ruby

Instala los prerequisitos (obtenidos de los que lista RVM como requisitos para Ubuntu):

sudo apt-get install bison libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf texinfo libncurses-dev automake libssl-dev build-essential

Para ver la lista de versiones disponibles, teclea en una terminal:

rbenv install --list

Cuando salgan nuevas versiones de Ruby, para poder instalarlas, teclea en una terminal:

cd ~/.rbenv
git pull
cd ~/.rbenv/plugins/ruby-build
git pull

Ahora, para instalar Ruby versión 2.1.2, y ponerlo como la versión por defecto, teclea en la terminal:

rbenv install 2.1.2
rbenv global 2.1.2

Con Ruby instalado y configurado, al escribir esto:

ruby -v

Debe aparecer algo como:

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

Verifica si hay actualizaciones para el administrador de paquetes gem:

gem update --system

También verifica si hay actualizaciones para las gemas que vienen instaladas por defecto:

gem update

¡Listo, ya puedes ejecutar código Ruby en tu máquina!

Instalación de Rails y Compass

Para instalar la versión estable más reciente de Rails y Compass, ejecuta:

gem install rails compass
rbenv rehash

Teclea:

rails --version

Debe aparecer algo como:

Rails 4.1.4

Recuerda usar rbenv rehash

Después de instalar una nueva versión de Ruby, o cualquier gema que provea ejecutables, teclea:

rbenv rehash

Esto pondrá a tu disposición los ejecutables instalados por Ruby y las gemas.

Recursos

Setup Ruby On Rails on Ubuntu 14.04 Trusty Tahr

Cómo descargar videos de YouTube en Ubuntu con youtube‑dl

Para instalar la última versión directa desde el repositorio en github, necesitarás instalar git.

Clona el repo de youtube-dl, compila e instala, en una terminal teclea:

git clone https://github.com/rg3/youtube-dl.git ~/development/github/youtube-dl
cd ~/development/github/youtube-dl
make all
sudo make install

Para usarlo sólo ve al directorio donde desees que se guarde el archivo, copia la URL de algún video de YouTube y ponlo delante del comando youtube-dl, de esta manera:

youtube-dl http://www.youtube.com/watch?v=I1c9KGbgxck

Espera a que finalize la descarga y listo, ¡un video más para la colección!

Cómo ver las resoluciones y formatos soportados

youtube-dl --list-formats http://www.youtube.com/watch?v=I1c9KGbgxck

Lo cual muestra:

[youtube] Setting language
[youtube] I1c9KGbgxck: Downloading video webpage
[youtube] I1c9KGbgxck: Downloading video info webpage
[youtube] I1c9KGbgxck: Extracting video information
Available formats:
37      :       mp4     [1080x1920]
46      :       webm    [1080x1920]
22      :       mp4     [720x1280]
45      :       webm    [720x1280]
35      :       flv     [480x854]
44      :       webm    [480x854]
34      :       flv     [360x640]
18      :       mp4     [360x640]
43      :       webm    [360x640]
5       :       flv     [240x400]
17      :       mp4     [144x176]

Digamos que te interesa bajar el video en formato, webm en resolución 720×1280, que viene siendo el número 45, entonces teclea en tu terminal:

youtube-dl -f 45 http://www.youtube.com/watch?v=I1c9KGbgxck
Si no se le especifica un formato, youtube-dl automáticamente descargará el archivo con la más alta calidad, es decir el que aparece hasta arriba en la lista de formatos.

¿Qué otros proveedores soporta youtube-dl?

youtube-dl --list-extractors

En la versión utilizada aquí (2012.09.27) aparecen estos:

youtube:playlist
youtube:user
youtube:search
youtube
metacafe
dailymotion
video.google
video.google:search
photobucket
video.yahoo
video.yahoo:search
DepositFiles
facebook
blip.tv:user
blip.tv
vimeo
myvideo
comedycentral
escapist
collegehumor
xvideos
soundcloud
infoq
mixcloud
stanfordoc
mtv
Youku
xnxx
generic

Cómo arreglar el infame ERROR: unable to download video

Si al tratar de descargar algún video te aparece algo como esto:

youtube-dl http://www.youtube.com/watch?v=I1c9KGbgxck
[youtube] Setting language
[youtube] I1c9KGbgxck: Downloading video webpage
[youtube] I1c9KGbgxck: Downloading video info webpage
[youtube] I1c9KGbgxck: Extracting video information
 
ERROR: unable to download video

Seguramente es porque necesitas una actualización, abre una terminal y teclea lo siguiente:

sudo youtube-dl -U

Y listo, happy downloading! ;)

Ayuda

El programa cuenta con muchas opciones, para verlas teclea:

youtube-dl -h