mywiki/linux/debian/rofi.md

219 lines
6.7 KiB
Markdown

# Rofi
Rofi non è solo un lanciatore di applicazioni, ma permette di fare molte più cose, tra cui:
- aprire file;
- eseguire comandi bash;
- navigare tra le finestre aperte;
- ...
## Modalità
Rofi ha diverse modalità integrate che implementano casi d'uso comuni e possono essere estese da vari script o plugin.
Di seguito è riportato un elenco delle diverse modalità:
- **run**: permette di lanciare eseguibili nel terminale, a partire dal loro `$PATH`;
- **drun**: avvia le applicazioni installate nel sistema;
- **window**: permette di passare tra le varie finestre aperte;
- **ssh**: avvia il collegamento a un host remoto via ssh;
- **combi**: combina più modalità.
## Installazione su Debian e derivate
```bash
sudo apt update && sudo apt install -y rofi
```
## Configurazione
Per generare il file di configurazione predefinito:
```bash
mkdir -p ~/.config/rofi
rofi -dump-config > ~/.config/rofi/config.rasi
```
Questo comando crea un file chiamato `config.rasi` nel seguente percorso: `~/.config/rofi/`. È possibile modificare questo file per personalizzare rofi, anche graficamente con dei temi personalizzati.
Eccone un esempio: [config.rasi](./asset/rofi//config.rasi)
### Abilitare le varie modalità
È sufficiente specificare un elenco ordinato e separato da virgole delle modalità da abilitare. Ecco un esempio, con abilitate solo le modalità `run` e `ssh`:
```bash
rofi -modes "run,ssh" -show run
```
Per ottenere una visione combinata di due o più modalità:
```bash
rofi -show combi -combi-modes "window,run,ssh" -modes combi
```
## Temi personalizzati
Qui si trovano moltissimi temi:
[https://github.com/adi1090x/rofi](https://github.com/adi1090x/rofi)
Dopo aver installato `rofi`, clonare il precedente repository:
```bash
git clone --depth=1 https://github.com/adi1090x/rofi.git
cd rofi
chmod 755 setup.sh
./setup.sh
```
Quindi, per scegliere lo stile, modificare il file `~/.config/rofi/launchers/type-X/launcher.sh`, dove `X` è un numero da 1 a 7, inserendo lo stile prescelto.
Nell'esempio:
```bash
theme='style-10'
```
Ecco il file in questione:
```
davide@piccihud:~$ cat ~/.config/rofi/launchers/type-4/launcher.sh
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
#
## Available Styles
#
## style-1 style-2 style-3 style-4 style-5
## style-6 style-7 style-8 style-9 style-10
dir="$HOME/.config/rofi/launchers/type-4"
theme='style-10'
## Run
rofi \
-show drun \
-theme ${dir}/${theme}.rasi
```
Come prima, per cambiare i colori predefiniti del tema, modificare il seguente file:
```bash
davide@piccihud:~$ cat ~/.config/rofi/launchers/type-4/shared/colors.rasi
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
*
* Available Colors Schemes
*
* adapta catppuccin everforest navy paper
* arc cyberpunk gruvbox nord solarized
* black dracula lovelace onedark yousai
*
**/
/* Import color-scheme from `colors` directory */
@import "~/.config/rofi/colors/dracula.rasi" #Inserire il colore prescelto
```
Questo è tutto. Ora basta inserire nel file `config.rasi` la seguente riga, una volta scelto lo stile del tema:
```bash
davide@piccihud:~$ cat .config/rofi/config.rasi
@theme "~/.config/rofi/launchers/type-4/style-10.rasi"
```
![Rofi](./asset/rofi/rofi.png 'Rofi')
### Alcune aggiunte al tema
`~/.config/rofi/launchers/type-4/style-10.rasi`
```bash
10 /*****----- Configuration -----*****/
11 configuration {
12 modi: "drun,window,run"; /*aggiunte alcune modalità, come quella per mostrare le finestre attive o per eseguire comandi da terminale*/
13 show-icons: true; /*le icone sono visibili*/
14 display-drun: " Apps";
15 display-run: "";
16 display-filebrowser: "";
17 display-window: "";
18 /* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]"; */
19 drun-display-format: "{name}"; /*solo il nome dell'applicazione diventa visibile, senza descrizione, come sopra*/
20 window-format: "{w} · {c} · {t}";
21 }
[..]
53 /*****----- Main Window -----*****/
54 window {
55 /* properties for window widget */
56 transparency: "real";
57 location: south; /*rofi è posizionato in basso*/
58 anchor: south;
59 fullscreen: false;
60 width: 100%;
61 x-offset: 0px;
62 y-offset: 0px;
```
Quindi modificare il file `.config/rodi/config.rasi`:
```bash
1 configuration {
3 terminal: "konsole";
4 run-command: "{cmd}";
5 run-list-command: "";
6 run-shell-command: "{terminal} -e {cmd}"; /*Questa è la sintassi del comando*/
7 kb-select-1: "Super+1";
8 kb-select-2: "Super+2";
9 kb-select-3: "Super+3";
10 kb-select-4: "Super+4";
11 kb-select-5: "Super+5";
12 kb-select-6: "Super+6";
13 kb-select-7: "Super+7";
14 kb-select-8: "Super+8";
15 kb-select-9: "Super+9";
16 kb-select-10: "Super+0";
17 }
18 @theme "~/.config/rofi/launchers/type-4/style-10.rasi"
```
In questo modo, è possibile lanciare comandi bash direttamente da rofi, tramite la seguente sintassi:
```bash
terminal_name command
konsole ncdu
```
oppure passare tra le finestre attive, infine selezionare i risultati con delle scorciatoie (`Alt+X`), dove `X` indica un numero maggiore o uguale a 1, corrispondente al risultato dell'applicazione che si desidera avviare.
Il risultato finale:
![Rofi](./asset/rofi/final.png 'Rofi')
### Gestire le connessioni di rete
Rofi può essere esteso tramite plugin. Eccone uno per poter controllare la connessione ad intenet:
```bash
git clone https://github.com/ericmurphyxyz/rofi-wifi-menu.git
cd rofi-wifi-menu
mv rofi-wifi-menu.sh ~/bin
```
È possibile richiamare lo script dopo aver assegnato una scorciatoria da tastiera: `$HOME/bin/rofi-wifi-menu.sh`
![WiFi](./asset/rofi/wifi.png)
## Collegamenti
- [https://github.com/davatorium/rofi](https://github.com/davatorium/rofi)
- [https://github.com/adi1090x/rofi](https://github.com/adi1090x/rofi)
- [https://github.com/adi1090x/rofi/blob/master/files/config.rasi](https://github.com/adi1090x/rofi/blob/master/files/config.rasi)