Cuatro Libertades

Reader

Read the latest posts from Cuatro Libertades.

from c57

https://guix.gnu.org/manual/en/html_node/Binary-Installation.html >ATENCIÓN PUNTO 4

install glibc >saldrá error,

exports > sin respuesta

pull; -u >esta parte se demora, baja hartas cosas

$guix enviroment -C emacs >saldra error, hay que cambiar el contenido de un archivo de 0 a 1. Con # nano /proc/...... > volver a intentar, entrará a la maquina wix en terminal.

$[env] exit > salir de~

$ guix install emacs > instala emacs ¿porqué no con guix package -i? ni idea.

$ guix enviroment -C emacs >entra a: $[env]

$[env] emacs >sh: emacs: command not found


hasta ahí he llegado.

 
Read more...

from c57

En estos días en 4libertades estamos definiendo las reglas que queremos que nos guíen como comunidad. La idea partió por la propuesta que se hizo en el canal gnu propaganda y tras una votación en el grupo se decidió revisar una por una para discutir si se adoptan para el grupo o no.

La discusión de las reglas estaba haciéndose a partir de un mensaje que yo enviaba diariamente, que abría la conversación respecto a si se tomaba tal cual o se modificaba. No todos los días he podido cumplir con postear una regla a la misma hora, así que decidí usar el bot para que lo haga.

Antes de dejar el código, comento: – creé un archivo de texto plano (reglas4lib) en el que están las reglas, una por línea. Al comienzo de cada una está el número de la regla a revisar; en los números inferiores a 10 agregué un cero, para que quedara de dos dígitos (para efectos de la generación del hashtag). – con cron hice que el archivo expuesto a continuación se ejecute una vez al día.

<?php
# datos del bot y canal de 4lib
$token = "token-del-bot"; 
$channel = "-1001087935936";

function sendMethod($token, $method, $params = array()) {
	$ch = curl_init("https://api.telegram.org/bot$token/$method");
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux i686; rv:32.0) Gecko/20100101 Firefox/40.0');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5000);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	return curl_exec($ch);
}

# lee reglas, guarda la primera
$reg0 = file('reglas4lib');
$reg1 = $reg0[0];

# escribe archivo de reglas, borrando la primera
$file = fopen('reglas4lib', "w+");

for($i = 0; $i <= (count($reg0)-1); $i++){
    if($i != 0){
        fwrite($file, $reg0[$i]);
    }
}
fclose($file);

$msj= 'Estamos creando las normas de la comunidad 4lib. Por <a href="https://t.me/c/1087935936/74507">votación de los participantes</a> de este grupo se decidió discutir diariamente una por una las <a href="https://t.me/GNUKCG">reglas de comunidad</a> creadas por Richard Stallman y modificadas por Brett Gilio para adaptarlas como nuestras.'.PHP_EOL.'La regla en discusión hoy es la siguiente:'.PHP_EOL.PHP_EOL.'<b>'.$reg1.'</b>'.PHP_EOL.PHP_EOL.'Los comentarios sobre esta regla, por favor, acompáñalos del hashtag #regla'.substr($reg1,0,2).'. Las reglas definitivas serán publicadas en la <a href="https://wiki.cuatrolibertades.org/reglas_de_la_comunidad">wiki de 4libertades</a>.';

# array para enviar por telegram con sendmethod
$params = array(
    "chat_id" => $channel,
    "parse_mode" => "HTML",
    "text" => $msj
);

// manda mensaje
sendMethod($token, "sendMessage", $params);
 
Read more...

from c57

Imagino que deben haber más soluciones para este asunto, pero hasta el momento, esta me ha funcionado mejor que ninguna.

Problema: al editar el archivo css de una página, los cambios no se ven reflejados inmediatamente porque el navegador ocupa el archivo css que está en el caché. Para ver el resultao final, era necesario o borrar caché o entrar en modo de navegación privada.

Esta solución funciona en php, pero puede ser adaptada a cualquier otro lenguaje.

Al momento de incluir la línea dentro del html que llama al css <link rel="stylesheet" href="estilo.css" /> hay que agregar algo que agregue un dato siempre distinto después de css. Puede ser un arreglo con date() o, lo que yo prefiero, un número al azar (rand()):

echo '<link rel="stylesheet" href="estilo.css?'.rand(0,99999).'" />

Con esto, la llamada al css siempre será distinta, el navegador no la tendrá guardada y los cambios que se hagan al css serán cargados al instante. Siempre y cuando no ocurra que se repita el número al azar (por eso recomendaría usar date('U')).

 
Read more...

from c57

A continuación explicaré como crear un modo en i3 que permita crear atajos rápidos para ejecutar programas con solo una tecla, sin embargo, si no quieres personalizar tanto i3 (además de no arriesgarte a caer en la demencia) dejé al final una explicación rápida para crear atajos sin necesidad de un modo. En el archivo .config/i3/config hay que agregar algo, más o menos, así:

mode "atajos" {
        bindsym e exec emacs
        bindsym g exec gimp
        bindsym f exec firefox

        bindsym $mod+c mode "default"
}
bindsym $mod+c mode "atajos"

Para hacer esto me inspiré en el modo “resize” que está también en el mismo archivo. El formato de las líneas es el siguiente:

  • bindsym: indica que se señalará una(s) tecla(s) que ejecutarán un(os) comando(s).
  • [tecla(s)]: cualquier tecla... en caso de querer referirse a Alt (o Super, si es la que se usa), indicar con $mod.
  • comando: en el ejemplo usé exec + programa. Se pueden usar otros comandos (ver en el mismo config. Ej: workspace, move, restart, etc.). en caso de querer ejecutar más de un programa, separar con punto y coma, ej: bindsym a exec killall firefox; exec emacs, el efecto de esto sería que, al presionar a, dentro del modo “atajos”, se cerraría firefox y se abriría emacs.

Finalmente, y lo señalo aparte, la orden bindsym $mod+c mode "default", que está dentro de “atajos”; y, `bindsym $mod+c mode “atajos”, que está fuera, son respectivamente para salir y entrar del modo.

No hay límite para la cantidad de modos que se puedan crear, ni tampoco para los atajos (que no necesariamente tienen que ser de sólo una tecla). Las posibilidades son prácticamente infinitas¹.

¹ no, no son infinitas, pero son muchas. Muchísimas.

Bonus Track! Comparto mi modo de atajos, seguido de una imagen que muestra los programas que ejecuto con cada tecla.

mode "atajos" {
        # fast-switch to workspace
        bindsym 1 workspace $ws1
        bindsym 2 workspace $ws2
        bindsym 3 workspace $ws3
        bindsym 4 workspace $ws4
        bindsym 5 workspace $ws5
        bindsym 6 workspace $ws6
        bindsym 7 workspace $ws7
        bindsym 8 workspace $ws8
        bindsym 9 workspace $ws9
        bindsym 10 workspace $ws10

        # workspace 1
        bindsym q exec emacs

        # workspace 2
        bindsym w workspace $ws2; exec Telegram
        bindsym x exec "killall Telegram"

        #workspace 3
        bindsym e exec firefox

        # workspace 4
        bindsym r exec i3-sensible-terminal
        bindsym f exec pavucontrol

        # workspace 5
        bindsym t exec audacity
        bindsym g exec gimp
        bindsym b exec inkscape

        #workspace 6
        bindsym y exec loffice
        bindsym h exec xpdf
        bindsym n exec firefox --private-window

        # workspace 7
        bindsym u exec mcomic

        # workspace 8
        bindsym i exec vlc

        #workspace 9
        #bindsym o exec 
        #bindsym l exec 
        #bindsym . exec 

        # workspace 10
        #bindsym p exec 
        #bindsym ñ exec 
        #bindsym - exec 

        # back to normal: Enter or Escape or $mod+c
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+c mode "default"
}

bindsym $mod+c mode "c57"

No! un modo es demasiado para mí

Propuesta para usuarios que no quieran jugar i3 en nightmare, agregar atajos con las teclas F. Agregar en .config/i3/config lo siguiente

bindsym $mod+F1 exec emacs
bindsym $mod+F2 exec pavucontrol
bindsym $mod+F3 exec firefox
bindsym $mod+F4 exec vlc
bindsym $mod+F5 exec audacity
bindsym $mod+F6 exec gimp
bindsym $mod+F7 exec loffice
 
Read more...

from HerlockSholmes

Archivos útiles en doom

Como se ha visto en entradas anteriores, las usuarias pueden seleccionar dentro del conjunto de paquetes que vienen definidos ya en doom-emacs mediante la manipulación en ~/.doom.d/init.el (al que se puede acceder rápidamente mediante los atajos C-x p p lo que EViL sería SPC f p); en el directorio ~//.doom.d están los tres archivos que permiten cambiar el funcionamiento de Emacs doom: init.el, config.el, y packages.el.

En el caso de que la usuaria necesite agregar un paquete nuevo a su configuración, basta con que lo declare en el archivo de su configuración personal ~/.doom.d/packages.el, y que luego edite las opciones que quiere de ese paquete en el archivo ~/.doom.d/config.el.

Instalando un paquete de ejemplo:

Para esta entrada de blog, se guiará a través del proceso de instalación del paquete org-super-agenda como ejemplo del proceso de personalización de doom. Lo primero que se debe hacer es definir el paquete a utilizar en el archivo packages.el, en este archivo la usuaria puede tener toda la lista de paquetes que quiera agregar incluyendo la fuente desde dónde descargarlo (un repositorio en git, melpa, elpa, etc.) pero sin declarar la versión del paquete. Para hacerlo es tan simple como agregar la siguiente línea en el archivo packages.el:

(package! nombre-del-paquete)

En nuestro caso, sería:

(package! org-super-agenda)

Una vez guardado el archivo, se debe correr la orden refresh de doom, para que éste busque e instale las fuentes más actuales en elpa:

$ sh ~/.emacs.d/bin/doom refresh

Va a reconocer el nombre del nuevo paquete y debemos aceptar mediante la tecla y cuando se nos consulte.

Configurando el paquete instalado:

Una vez lista la instalación del paquete, podemos configurarlo de acuerdo a las necesidades de la usuaria mediante una macro bastante útil que se llama def-package! y es una capa de abstracción del conocido use-package. Para esto, se debe abrir el archivo config.el y escribir la configuración que se requiera, por ejemplo:

(def-package! org-super-agenda :after org-agenda :init (setq org-super-agenda-groups '(grupos que correspondan, ver)) :config (org-super-agenda-mode))

Ya cuando se haya configurado el paquete, basta con que la usuaria guarde el archivo config.el, vuelva a abrir una instancia de Emacs y revisar las nuevas funcionalidades que integran sus paquetes preferidos.

El uso de otra macro:

Si la usuaria quiere configurar un paquete que ya está incluido en Emacs doom, en vez de utilizar def-package! es posible que quiera probar con after!, que es una macro parecida a la primera pero que permite configurar algo después de que se haya cargado un paquete, revisemos un ejemplo configurando org-mode:

(after! org (setq alguna-configuración-deseada))

De esta manera, Emacs doom se convierte en una configuración de Emacs que es muy personalizable y que puede ser amigable para las usuarias novicias para experimentar con esta interfaz de texto programable.

#emacs #doomemacs #instalarpaquetes

 
Read more...

from HerlockSholmes

Buffers en Emacs

Emacs, más allá de editor de texto, es (si la usuaria permite esta redefinición) una interfaz orientada a texto que además es programable. Este cambio en la perecepción de ¿Qué es Emacs? permite a las usuarias comprender el ¿Por qué? hay términos cuya definición cambia en Emacs.

Tal es el caso de los buffers y las ventanas que pueden confundir a las usuarias novicias en Emacs, ya que tradicionalmente llamamos ventana a la interfaz del programa que estamos corriendo; mientras en Emacs este concepto aplica a nuevos cuadros (o frames) abiertos dentro del programa. Para abrir una “nueva” ventana se debe presionar C-x 3 para dividir la ventana verticalmente (SPC w v en EViL) o si se quiere divir de manera horizontal se debe presionar C-x 2 (SPC w s en EViL). En el caso de los buffers, estos se refieren a la interfaz de todo aquello que tiene nombre o dicho con otras palabras: cuando se abre un archivo, estoy editando un buffer, pero lo mismo se puede decir en el caso de dired o de la terminal eshell.

Entre buffers

Utilizando la redefinición anterior, la navegación en Emacs se hace mucho más fluida ya que considera toda aquella interfaz de texto abierta como un buffer (que puede a su vez ser un espacio de trabajo u otro tipo). Para cambiar entre estos buffers basta con presionar C-x b en Emacs (SPC b B en EViL) y se mostrará una lista de los buffers a la que nos podemos mover; y debido a que son todo aquello que tiene nombre, la usuaria puede escribir el nombre (o alguna parte del mismo) para encontrar el buffer deseado.

Esto también es aplicable al contexto de un proyecto en que se esté trabajando con projectile. Si la usuaria ya se encuentra en un archivo que está editando, pero quiere acceder a otro, lo puede hacer con C-x C-f en Emacs (SPC SPC con EViL siempre y cuando se haya abierto anteriormente el archivo), esto le permitirá buscar todos los archivos que integran el proyecto (y de ser necesario, buscar archivos en otros proyectos).

Entre ventanas

Cuando las usuarias acostumbran tener varias ventanas abiertas, navegar entre ellas se puede hacer con el atajo C-x o que marcará cada ventana con una letra diferente para así moverse a ella. Pero muchas veces este atajo resulta algo tosco, por lo que usar C-w w que irá circulando entre las ventanas abiertas pero podría tardar tiempo demás; por lo que utilizar C-w (teclas de movimiento de Vi) en Emacs (SPC w (teclas de movimiento de Vi) con EViL) es lo que permite un mayor control de los movimientos de selección para ventanas.

Las ventanas se cierran mediante el atajo C-w c en Emacs (SPC w c en EViL), pero además la usuaria podría variar el tamaño de las ventanas utilizando C-w < o C-w > para reducir o ampliar el ancho de la ventana (SPC w < o SPC w > con EViL); pero si se quiere igualar el ancho, basta con presionar C-w = (SPC w = en EViL). Esto también se puede aplicar para ventanas divididas horizontalmente, usando C-w + para aumentar el alto (SPC w +) o C-w - para disminuirlo (SPC w -).

Notas de interés

Si bien este capítulo fue algo más abstracto en cuanto a su primera sección, espero que el control de navegación en Emacs le pueda servir a la lectora para introducirse con mayor profundidad en esta interfaz orientada a texto que es ajustable a las necesidades de quien lo ocupa (un pilar fundamental de las 4 libertades de software según el autor de estas entradas).

#emacs #doomemacs #guix #navegación

 
Read more...

from HerlockSholmes

Capítulo 4: Agregando un canal público.

Una vez más ha vuelto esta serie, luego de un breve descanso que permite hacer lindos experimentos con Guix. Si bien en otras distros también existen repositorios personales (como los ppa's y AUR), en Guix la construcción de los mismos se ve facilitada por la extensibilidad de Guile-Scheme.

Se puede tener una máquina personal dedicada a compilar los programas que la usuaria estima convenientes y luego hacer las actualizaciones desde ahí ya pre-compiladas, porque al ser construcciones reproducibles, los estados generados en /gnu/store serán siempre los mismos.

Además de esa facilidad, las usuarias de Guix pueden mantener recetas de configuración de paquetes (que idealmente sigan las posturas éticas del Software Libre) escritas en la implementación de Scheme llamada Guile; estas recetas se pueden mantener en un repositorio público (indicando desde dónde descargar el código fuente) para compartir nuevos paquetes definidos según las reglas que detalla el manual.

Una vez las usuarias tienen un canal escrito con las definiciones necesarias, se puede incluir en la ruta de descargas mediante el siguiente procedimiento, que se detalla en profundidad en esta sección del manual.

Se debe crear un archivo de configuración en la ruta ~/.config/guix/channels.scm, si la usuaria desea usar otra fuente para descargar los paquetes principales de guix (diferentes de los oficiales de GNU), lo que debe incluir es lo siguiente:

;; Le dice a "guix pull" que use un repositorio local. (list (channel (name 'guix) (url "<https://ejemplo.org/mi-guix.git>") (branch "super-hacks")))

Así, cuando se invoque guix pull para calcular las diferencias de las fuentes con el local, se hará la derivación desde https://ejemplo.org/mi-guix.git.

Pero si lo que desea la usuaria es seguir usando las fuentes oficiales de GNU, entonces no es necesario que se agregue un canal llamado 'guix; haré énfasis en esto: Para guix, las fuentes personales o de voluntarias mantenedoras se llaman canales.

Si la usuaria quiere configurar un canal que tiene sólo nuevos paquetes (sin reemplazar las fuentes de GNU), lo que debe hacer es editar ~/.config/guix/channels.scm y agregar lo siguiente:

;; Añade mis paquetes personales a aquellos que Guix provee. (cons (channel (name 'mis-paquetes-personales) (url "<https://ejemplo.org/paquetes-personales.git>")) %default-channels)

Y luego de esto, ejecutar guix pull lo que actualizará todos los canales desde los que se buscan definiciones de paquetes.

Aplicando el uso de canales: instalación de telega.el

Ahora veamos un ejemplo real en que esto puede ser útil, el mantenedor de este canal se ha dedicado a empaquetar tanto tdlib (la librería que se usa para generar clientes de Telegram) y telega.el lo que es de especial interés tanto para el autor de este blog, como para unos amigos integrantes del canal 4libertades Chile.

Los procedimientos para usar telega desde Emacs son los siguientes:

  • Instalar emacs y emacs-guix desde guix (lo que hace de este gestor de paquetes una dependencia fuerte).
  • Añadir el canal de https://git.sr.ht/~brettgilio/cfg.
  • Instalar emacs-telega desde el nuevo canal.
  • Instalar emacs-visual-fill-column desde guix.

Para instalar guix en una máquina hospedera con una distribución diferente a Guix system, es recomendable revisar esta entrada del blog (sigo recalcando lo de leer el manual). Luego de eso, se procede a instalar la versión de Emacs y el paquete emacs-guix que está en los repositorios oficiales de GNU Guix (esto es porque esa versión de Emacs lee lo que está en la /gnu/store además de los clásicos directorios de configuración para Emacs).

Esto se hace simplemente mediante:

guix package -i emacs emacs-guix

o

guix install emacs emacs-guix

Luego pasamos a editar los canales que formarán parte de nuestros repositorios en ~/.config/guix/channels.scm, sin alterar el original de GNU, sería un archivo en blanco al que agregar lo siguiente:

;; Canal de Brett, para su config (cons (channel (name 'brett) (url "<https://git.sr.ht/~brettgilio/cfg>")) %default-channels)

Y para que se actualicen los canales nuevos, actualizamos las fuentes mediante:

guix pull

Lo que entrega el mensaje de que hay nuevos paquetes disponibles (los que están definidos en esa configuración).

Una vez listo esto, se puede instalar emacs-telega y emacs-visual-fill-column invocando guix package de la siguiente forma:

guix install emacs-telega emacs-visual-fill-column

Con este conjunto de procedimientos listos, basta con que la usuaria haga correr la versión de Emacs instalada mediante guix (que será la única que reconozca estos paquetes recién instalados) y correr M-x guix-emacs-autoload-packages, luego de eso invocar a Telega mediante M-x telega.

Actualización

Desde hace unas semanas que tanto TDLib como emacs-telega están disponibles en la rama master de guix, por lo que añadir el canal de Brett no es necesario.

Sin embargo, esta entrada de blog quedará como ejemplo e instructivo para esta función tan versátil de guix.

#guix #canalesPersonales #emacs #telega

 
Read more...

from HerlockSholmes

¿Qué es Dired?

En el capítulo anterior se presentaban herramientas para el flujo de trabajo en Emacs por medio de proyectos; en esta entrada se hará una breve introducción al uso del paquete Dired que viene de “Directory editor” y significa Editor de directorios en inglés.

Para revisar un archivo de proyecto, se utiliza Projectile, pero ¿Qué pasaría cuando en vez de abrir un archivo, se abre un directorio?. En esta situación es cuando se invoca el modo Dired, que muestra detalles del contenido en el directorio y permite interactuar con el mismo presionando ( en Emacs () en EViL) para ver más o menos información; si la usuaria desea seleccionar un archivo o directorio, lo puede hacer presionando RET (la tecla Enter en ambas configuraciones de teclado) o se puede mover al directorio anterior presionando ^ (- en EViL).

En caso de que la usuaria quiera cambiar esos atajos de teclado, basta con agregar en ~/.doom.d/config.el lo siguiente:

(global-set-key (kbd "atajo que desee") 'nombre-de-la-función)

Dired nos permite gestionar los directorios tal como se hace desde la terminal, creando, moviendo, borrando o incluso generando symlinks entre los directorios de una manera simple y directa.

Funciones avanzadas de Dired

Para crear un nuevo directorio, basta con presionar la tecla +, lo que abrirá una intefaz de consulta sobre el nombre de este nuevo directorio. Si lo que se quiere es borrar un directorio, se debe marcar con la tecla d y luego eso se presiona x para ejecutar la deleción marcada; si se marca algo accidentalmente, se puede deshacer la selección con u (si es un único archivo) o con U si son todos los archivos los que se quieren dejar de marcar.

Se puede usar s (o en EViL) para ordenar los archivos y directorios según nombre o fecha de modificación, también se le pueden modificar los atributos a directorios o archivos presionando la tecla M (esto mostrará opciones de modificación para lectura y escritura). Modificar las usuarias a las que pertenece un archivo o la carpeta se puede realizar presionando O.

Si la usuaria quiere trabajar con dos buffers abiertos, lo puede hacer con C-x 3 (que corresponde a SPC w v en EViL), moviéndose entre estos buffers con C-x o y luego, para copiar archivos entre dos carpetas con Dired lo único que debe hacer es marcar los archivos a transferir con m para después presionar C que lo ejecutará en el buffer adyacente. Por otra parte, si lo que se quiere es mover archivos, se deben marcar con m y luego presionar R para que se transfieran los archivos o directorios marcados al buffer adyacente.

Finalmente, para renombrar los directorios o archivos, se puede hacer con C-x C-q (i que activa el modo insert de EViL) y, una vez finalizada la edición del nombre, presionar C-c C-c (C-w en EViL) para que se escriba al disco.

Esto no es más que una pincelada de lo que se puede hacer con Dired, una herramienta que facilita la interacción tanto con archivos como con directorios de nuestros proyectos.

#doomEmacs #emacs #dired #distroEmacs #guix

 
Read more...

from HerlockSholmes

En el capítulo anterior se detalla el inicio rápido de esta configuración dogmática que es Doom Emacs, ahora profundizaremos en el uso de tres herramientas incluidas en esta distribución.

Como somos animales de costumbres, suele ser bueno tener espacios cuyo comportamiento sea consistente; la administración de ese trabajo (documentos de texto, programas de configuración, pequeños y grandes programas creados) también debería tener cierta consistencia. Como Emacs es un editor de texto tan hackeable, hay quienes escriben paquetes para que su utilización sea semejante a los editores más modernos.

Durante estas entradas, utilizaré los atajos por defecto de Emacs y entre paréntesis los que corresponden a EViL. Por ejemplo, para abrir un archivo el atajo es C-x f que significa presionar la tecla Control junto a x y luego, la tecla f (con EViL, sería SPC f . o SPC . donde SPC es la tecla espacio). En Doom Emacs, cuando se presiona C-x o C-c (SPC) se abre un pequeño buffer en la zona inferior de la ventana que permite visualizar las siguientes teclas asociadas a este atajo, mostrando en azul los comandos, y en violeta secuencias que se pueden encadenar (simbolizadas también por un + como prefijo).

En la presente entrada, las usuarias podrán aprender a usar tres herramientas versátiles incluidas en Doom Emacs, la primera de ellas un gestor de proyectos llamado Projectile.

Projectile

Es un gestor de proyectos en los que los directorios marcados por la usuaria son tratados con accesos más directos (por ejemplo usando treemacs). Para estos efectos, la usuaria puede asociar sus proyectos por medio del comando M-x projectile-discover-in-directory (donde M es la tecla Meta o Alt, también se puede presionar Alt gr para que de inmediato se tome como M-x) y luego seleccionando un directorio que contenga los proyectos, así Projectile lo anexará a sus entradas marcadas.

Projectile reconoce los contenidos para un directorio como proyectos si contienen archivos relacionados a git, mercurial, darcs, y bazaar. Si se quiere que reconozca un directorio como proyecto, basta con que ese directorio contenga un archivo vacío llamado .projectile.

Luego de marcar los directorios que la usuaria quiere tener asignados como proyecto, puede acceder a la lista presionando C-c p p (SPC p p) lo que puede tratar para seleccionar directamente archivos en los que esté trabajando.

Así mismo, se pueden especificar un conjunto de directorios en los que projectile puede buscar, si la usuaria así lo estima, puede modificar en su configuración personal accediendo al archivo config.el en el directorio .doom.d (el atajo para esto es C-c f c o SPC f p), ingresando lo siguiente:

(setq projectile-project-search-path ("/Directorio1" "/Directorio2"))

Y luego actualizar mediante M-x projectile-discover-in-path, lo que agregará nuevos proyectos en dichos directorios.

Si bien trabajar en proyectos definidos es siempre útil, también se puede querer visualizar los directorios en los que se está trabajando; una excelente herramienta para esto es Treemacs.

Treemacs

Es un paquete que da visualización a los directorios de trabajo, o a proyectos que uno desee agregar directamente, se puede acceder presionando <f9> o invocando M-x treemacs (SPC o p). Inmediatamente se abrirá un buffer de tamaño 35 caracteres por defecto, que permitirá navegar por los directorios o proyectos que la usuaria haya destacado para su configuración, mostrando la jerarquía de los mismos con fuentes vistosas e íconos.

Finalmente, si se llega a necesitar usar la línea de comandos, Emacs posee un emulador de terminal integrado, llamado EShell.

EShell

Emulador de terminal al que se puede acceder con M-x eshell (SPC o e), como los objetivos de estas entradas no son analizar en profundidad el uso de la shell de Emacs, me remito a decir que es versátil para cuando la usuaria quiere ahorrar tiempo trabajando en su proyecto y (en vez de abrir un nuevo programa) mantiene todo su flujo de trabajo en Emacs, pudiendo cambiar rápidamente entre el archivo en que trabaja y la terminal abierta en Emacs.

#doomEmacs #emacs #projectile #distroEmacs #guix

 
Read more...

from c57

EN CONSTRUCCIÓN!

respaldar configuración de impresoras

Crear un archivo comprimido con los archivos que están en /etc/cups. Se puede hacer con xarchiver u otro. O por terminal:

# tar -cvzf impresoras.tar.gz /etc/cups

Hay que respaldar el archivo impresoras.tar.gz (en un pendrive, otro pc, etc) y, tras haber instalado el nuevo sistema, sobreescribir su contenido en la carpeta /etc/cups. Tras hacerlo, reiniciar el servicio.

Con systemd:

# systemctl restart cups

o con initd (nunca se sabe):

# /etc/init.d/cupsys restart

Fuente: https://www.cyberciti.biz/tips/linux-migrate-printer-configuration.html


Instalación

Esto está documentado por todas partes (dejo dos links de ejemplo tras las imágenes), pero como respaldo, dejo capturas de como dejé las particiones. En mi caso, quería conservar intacta la partición que uso como /home.

PS: mientras subía las fotos me di cuenta que había un botón para capturar pantalla, jaja.

Links de tutoriales de instalación: https://www.forosla.com/como-instalar-debian-10-buster-ilustrado-paso-a-paso/ https://www.solvetic.com/tutoriales/article/7658-como-actualizar-a-debian-10-como-instalar-debian-10-paso-a-paso/


Agregar usuario a sudo

También se pueden ejecutar programas como root entrando como root, pero siempre será más rápido tener sudo a mano.

Editar /etc/sudoers. Desde una terminal, con # nano /etc/sudoers

# User privilege specification
root 	ALL=(ALL:ALL) ALL
usuario	ALL=(ALL:ALL) ALL

Obviamente cambiar usuario por tu nombre de usuario.


Configuración de red (ath10k)

Decidí no agregar repos non-free hasta que sea imprescindible, así que bajé el paquete (que es non-free :–( )desde: https://packages.debian.org/buster/all/firmware-atheros/download Instalar con

# dpkg -i firmware-atheros_20190114-1_all.deb

En caso de que salga error de dpkg, ver paso subsiguiente. Si no, reiniciar.


Configuración de bluetooth y otros (rtl)

Lo mismo de arriba, pero con este paquete: https://packages.debian.org/buster/firmware-realtek


error dpkg: aviso: `ldconfig’

Abrimos un Terminal como root y ponemos:

export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin

Para que se quede fijo en el sistema tenemos dos opciones. Añadimos al fichero /etc/sudoers las siguientes líneas:

Defaults   env_reset
Defaults   secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

O ponemos dentro de nuestro .bashrc:

echo 'export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin' >> /home/usuario/.bashrc

Fuente: https://blog.desdelinux.net/como-solucionar-error-dpkg-aviso-ldconfig-en-debian-testing/


Repositorios

Editar archivo /etc/apt/sources.list.

### Debian 10 Buster
 
# Oficiales
deb http://ftp.cl.debian.org/debian/ buster main contrib
#deb-src http://ftp.cl.debian.org/debian/ buster main contrib
 
# Actualizaciones de segudidad
deb http://security.debian.org/debian-security buster/updates main contrib
#deb-src http://security.debian.org/debian-security buster/updates main contrib

# Updates
deb http://ftp.cl.debian.org/debian/ buster-updates main contrib 
#deb-src http://ftp.cl.debian.org/debian/ buster-updates main contrib

Luego, actualizar los repositorios con # apt update. Si se quiere actualizar los programas, #apt upgrade.


ntfs-3g

Posiblemente en algún momento será necesario tener compatibilidad con discos NTFS, por defecto no se leerán hasta que se instale el programa que le da compatibilidad:

# apt install ntfs-3g

Poner tema (xfce4)

En mi caso, instalé xfce4. El tema que trae por defecto no es malo, pero creo que ocupa mucho espacio, así que siempre descargo mi favorito: mini (link: https://www.xfce-look.org/p/1016130/) que, a mi parecer, ocupa lo justo y necesario que el encabezado de las ventanas debe tener:

El archivo descargado trae unas instrucciones para instalarlo, pero invito a omitirlo y simplemente descomprimir la carpeta mini y mini-nigra en la carpeta .themes. Adjunto pantallazo de xarchiver:

Es importante que quede desactivada la opción Extraer ficheros en su ruta completa.

Ahora, para cambiar a mini, en el menú principal, acceder a Configuración/Gestor de Ventanas y seleccionar mini o mini-nigra.


Seguridad en firefox

Firefox viene instalado por defecto. Por defecto también, usa google como buscador principal, permite todas las cookies y otras cosillas que pueden cambiarse (en realidad, cosas que cualquier usuario responsable debería cambiar). Sugiero estos dos links (a anclas dentro de la misma) página: addonsabout:config

Al addon uBlock se le pueden agregar filtros, para que bloquee a los clásicos intrometidos. Lo primero es entrar al dashboard de uBlock (cuarto ícono, bajo el botón grande de activación; al costado del campo de url), luego a la pestaña My Rules y, en la sección de la derecha (donde dice behind-the-scene...), agregar al final lo siguiente:

 * facebook.com * block
 * facebook.net * block
 * fbcdn.net * block
 * google.com * block
 * googleapis.com * block
 * gstatic.com * block
 * media-amazon.com * block
 * twitter.com * block
 * youtube-nocookie.com * block
 * youtube.com * block

Finalmente, presionar [save] y después [← commit].

Fuente: FF.


Fondos de pantalla

No es que sea imprescindible, pero igual bien tener una imagen bonita de fondo. Sugerencias recogidas en el chat de 4lib (https://t.me/cuatrolibertadeschile): FF https://unsplash.com/ DELM http://simpledesktops.com/

 
Read more...