Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 31 del 10/04/2015 14.04.43

Nascondi questo messaggio


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

i3 è un tiling window manager, leggero, veloce e personalizzabile.

Installazione

Installare il metapacchetto i3 reperibile dal componente universe dei repository ufficiali di Ubuntu.

Avvio

Al termine dell'installazione sarà possibile selezionare la voce i3 dal login manager predefinito.

Per le installazioni minimali, modificare con un editor di testo il file nascosto ~/.xinitrc ed aggiungere la stringa

exec i3

Se il file non esiste crearlo.

Modificare come segue:

  #!/bin/sh
  #
  # ~/.xinitrc
  #
  # Executed by startx (run your window manager from here)
  
  if [ -d /etc/X11/xinit/xinitrc.d ]; then
    for f in /etc/X11/xinit/xinitrc.d/*; do
      [ -x "$f" ] && . "$f"
    done
    unset f
  fi
  
  # exec gnome-session
  # exec startkde
  # exec startxfce4
  # ...or the Window Manager of your choice
  #exec startxfce4
  exec i3

salvare il file ed avviare i3 tramite il comando:

startx

All'avvio della prima sessione di i3, seguire il wizard iniziale per impostare il tasto Modificatore (tasto Super o Alt).

Scorciatoie utili per iniziare:

  • Mod+d: aprire il menu (dmenu)

  • Mod+Invio: aprire una finestra di terminale

  • Mod+Shift+e: logout

  • Mod+Shift+c: ricaricare il file di configurazione

  • Mod+Shift+r: riavviare i3

Per maggiori informazioni sulle scorciatoie visitare questa pagina.

Configurazione

Il file di configurazione di i3 si trova nella cartella nascosta ~/.i3 presente nella propria Home.

Spegnimento, riavvio, blocca schermo, sospensione, ibernazione, logout

Procedere come segue:

  1. Installare il pacchetto consolekit.

  2. Aggiungere al file di configurazione il testo seguente (fonte):

    set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
    mode "$mode_system" {
        bindsym l exec --no-startup-id ~/.i3/i3exit lock, mode "default"
        bindsym e exec --no-startup-id ~/.i3/i3exit logout, mode "default"
        bindsym s exec --no-startup-id ~/.i3/i3exit suspend, mode "default"
        bindsym h exec --no-startup-id ~/.i3/i3exit hibernate, mode "default"
        bindsym r exec --no-startup-id ~/.i3/i3exit reboot, mode "default"
        bindsym Shift+s exec --no-startup-id ~/.i3/i3exit shutdown, mode "default"  
    
        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }
    bindsym $mod+Pause mode "$mode_system"

    Modificare la scorciatoia secondo le proprie esigenze. In questo esempio viene usato il tasto Pausa.

  3. Creare nella cartella .i3/ un file chiamato i3exit e aggiungere al suo interno il testo seguente:

    lock() {
        i3lock
    }
    
    case "$1" in
        lock)
            lock
            ;;
        logout)
            i3-msg exit
            ;;
        suspend)
            lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
            ;;
        hibernate)
            lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
            ;;
        reboot)
            dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
            ;;
        shutdown)
            dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
            ;;
        *)
            echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
            exit 2
    esac
    
    exit 0
  4. Rendere eseguibile il file i3exit con il comando seguente:

    chmod +x ~/.i3/i3exit

Di default la funzione lock, e di conseguenza anche sospensione e ibernazione, presentano una schermata bianca. Per sbloccare lo schermo, inserire la propria password e premere INVIO.

Personalizzazione

Configurare il proprio terminale

Per impostazione predefinita i3 usera' il terminale predefinito nel sistema. Per avviare il proprio emulatore di terminale è possibile impostare una variabile nel proprio .bashrc, aggiungendo:

export TERMINAL=nome_emulatore_terminale

Oppure, più semplicemente, modificare ~/.i3/config cambiando:

bindsym $mod+Return exec i3-sensible-terminal

con

bindsym $mod+Return exec xfce4-terminal

per avviare (ad esempio) il terminale di Xfce.

Modificare il menù

Metodo 1

Il menù di default, accessibile con i tasti mod+d, è dmenu. La caratteristica di questo menù è che mostra tutti gli eseguibili presenti nel sistema, inclusi i comandi del terminale. È possibile cambiare il comportamento del menù, modificando la seguente riga nel file di configurazione:

bindsym $mod+d exec dmenu_run

con

bindsym $mod+d exec --no-startup-id i3-dmenu-desktop

in modo che i3-dmenu-desktop mostri solo le applicazioni fornite di file .desktop, ottenendo così il classico comportamento dei menu sui più comuni ambienti desktop.

Metodo 2

Un'alternativa ad i3-dmenu-desktop è j4-dmenu-desktop, che potra' essere installato scaricandone il sorgente e compilandolo, seguendo le istruzioni presenti su Github nella pagina ufficiale del progetto.

Impostare lo sfondo

Metodo 1

Installare il pacchetto feh. A questo punto, dal terminale impostare lo sfondo tramite il comando seguente:

feh --bg-fill /percorso/per/immagine/di/sfondo.png

È possibile usare diverse opzioni secondo le proprie necessità:

feh --bg-scale
feh --bg-center
feh --bg-max
feh --bg-tile

Per ripristinare lo sfondo ad ogni avvio, aprire il file ~/.i3/config con un editor di testo ed inserire la riga seguente:

exec --no-startup-id sh ~/.fehbg

Metodo 2

In alternativa e' possibile impostare lo sfondo tramite nitrogen.

Installare il pacchetto nitrogen. Lanciare nitrogen dal terminale con:

nitrogen /percorso/cartella/immagini/

Impostare lo sfondo desiderato. Per ripristinare lo sfondo ad ogni avvio, aprire il file di configurazione e inserire la riga seguente:

exec --no-startup-id nitrogen --restore &

Personalizzare la barra di stato di i3

Copiare il file di configurazione globale nella cartella di configurazione della propria home:

cp /etc/i3status.conf ~/.i3

Modificare a proprio piacimento il file di configurazione. Aprire il file di configurazione di i3 ~/.i3/config e modificare la seguente riga

status_command i3status

in

status_command i3status --config ~/.i3/i3status.conf

Per impostare i colori usati nella barra, aggiungere le righe seguenti al file di configurazione, nella sezione bar:

  colors {
separator #ffffff
background #000000
statusline #ffffff
#colorclass           <border> <background> <text>
focused_workspace       #000000 #52AD91 #000000
inactive_workspace      #000000 #000000 #31658C         
urgent_workspace        #333333 #95A7CC #000000
}

Modificare i colori secondo i propri gusti.

E' inoltre possibile usare conky al posto di i3status. Per l'esempio che segue abbiamo seguito la guida ufficiale, modificando solamente il percorso dei files per maggiore comodita' e ordine (per avere tutti i files nella stessa cartella). Installare il pacchetto conky.

Creare un file vuoto nella cartella nascosta ~/.i3/ chiamato conky-i3bar. Aprire il file con un editor di testo e aggiungere:

# Send the header so that i3bar knows we want to use JSON:
echo '{"version":1}'

# Begin the endless array.
echo '['

# We send an empty first array of blocks to make the loop simpler:
echo '[],'

# Now send blocks with information forever:
exec conky -c $HOME/.i3/conkyrc

Salvare le modifiche e dare i permessi di esecuzione al file con il comando:

chmod +x ~/.i3/conky-i3bar

Aprire il file di configurazione di i3 e modificare la riga

status_command i3status --config ~/.i3/i3status.conf

Con

status_command $HOME/.i3/conky-i3bar

Creare il file conkyrc nella cartella ~/.i3 e, come suggerito dalla guida ufficiale, aggiungere:

out_to_x no
own_window no
out_to_console yes
background no
max_text_width 0

# Update interval in seconds
update_interval 2.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off.
short_units yes

# How strict should if_up be when testing an interface for being up?
# The value is one of up, link or address, to check for the interface
# being solely up, being up and having link or being up, having link
# and an assigned IP address. 
if_up_strictness address

# Add spaces to keep things from moving about?  This only affects certain objects.
# use_spacer should have an argument of left, right, or none
use_spacer left

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# Stuff after 'TEXT' will be formatted on screen
TEXT

# JSON for i3bar

 [{ "full_text" : "Home ${fs_free /home} Free" , "color" : "\#ffffff" },
  { "full_text" : "RAM ${memperc}%" , "color" :
    ${if_match ${memperc}<90}"\#ffffff"${else}"\#ff0000"${endif} }],

Modificare conkyrc secondo le proprie esigenze.

Impostare colori finestre

Per impostare i colori dei bordi e della barra del titolo delle finestre, aggiungere queste righe al file di configurazione:

# Colors
#class                 border  backgr. text    indicator
client.focused          #ffffff #31658C #ffffff #31658C
client.focused_inactive #4D4D4D #4D4D4D #4D4D4D #4D4D4D
client.unfocused        #4D4D4D #4D4D4D #4D4D4D #4D4D4D
client.urgent           #4D4D4D #4D4D4D #4D4D4D #4D4D4D

Modificare i colori a proprio piacimento.

alternativa alla barra di i3

un alternativa a i3bar puo' essere xfce4-panel (il pannello di xfce,con i menù per le applicazioni e un contenitore per le finestre aperte,oltre alla systray per volume,gestione connessioni ecc) se non si avesse già xfce4 installato,installare il pannelo di xfce4

sudo apt-get install xfce4-panel xfce4-goodies

a questo punto si puo' aggiungere il pannello al propio file ~./xinirc con

xfce4-panel --disable-wm-check &

oppure aggiungendo al file ~/.i3/config la seguente stringa

exec --no-startup-id i3-msg 'workspace 1; exec xfce4-panel --disable-wm-check &

Regolare il volume

Aggiungere le seguenti righe al proprio file di configurazione:

bindsym $mod+Page_Up exec --no-startup-id amixer -q set Master 3%+ -q
bindsym $mod+Page_Down exec --no-startup-id amixer -q set Master 3%- -q
bindsym $mod+End exec --no-startup-id amixer -q set Master toggle

In alternativa e' possibile avere un tradizionale pulsante nella tray bar installando il pacchetto volumeicon-alsa. Avviarlo aggiungendo al file di configurazione:

exec --no-startup-id volumeicon

Gestione connessioni

Per gestire facilmente le proprie connessioni (come le reti wifi) si può aggiungere una comoda icona nella tray bar. Aprire il file di configurazione ed aggiungere:

exec --no-startup-id nm-applet

Clipboard manager

Per usare le normali funzionalità di copia/incolla è necessario installare un clipboard manager.

Installare il pacchetto parcellite. Avviare il demone di parcellite all'avvio aggiungendo la riga che segue al proprio file di configurazione:

exec --no-startup-id parcellite -d

Se si preferisce è possibile utilizzare il clipboard manager di XFCE. Installare il pacchetto xfce4-clipman. Avviarlo con

exec --no-startup-id xfce4-clipman

Assegnare scorciatoie per avviare applicazioni

Aggiungere al proprio file di configurazione:

bindsym $mod+tasto exec --no-startup-id eseguibile

Esempio per firefox

bindsym $mod+Return exec --no-startup-id firefox

Lanciare applicazioni all'avvio di i3

Aggiungere al proprio file di configurazione:

exec --no-startup-id eseguibile

Avviare applicazione in uno specifico workspace

Per conoscere la stringa class usare il comando xprop contenuto in x11-utils. Avviare xprop in un terminale e cliccare sulla finestra del programma interessato (Skype in questo esempio). Cercare alla fine dell'output generato la riga:

WM_CLASS(STRING) = "skype", "Skype"

copiare la voce in maiuscolo.

Assign [class="Applicazione"] workspace

Esempio per skype

assign [class="Skype"] 1

Avviare applicazioni in floating mode

for_window [class="Applicazione"] floating enable

Esempio per skype

for_window [class="Skype"] floating enable

Selezionare finestre al passaggio del mouse

Le impostazioni di default di i3 permettono di selezionare una finestra posizionando il cursore del mouse su di essa. Se questo non è il comportamento desiderato, i3 permette di selezionare la finestra con un click o con la tastiera. Aggiungere al file di configurazione:

focus_follows_mouse no

supporto multi monitor

i3 gode di un ottimo supporto multimunitor (xinerama)

per usare piu' desktop virtuali su piu' monitor collegati via VGA o HDMI bastera' dare il comando

exec xrandr --output VGA1 --auto --right-of LVDS1 

o nel caso di HDMI

exec xrandr --output HDMI1 --auto --right-of LVDS1

right o left indica la posizione del monitor,destro o sinistro.

.i3/config d'esempio

File di configurazione di i3 da cui poter prender spunto per configurarsene uno ad hoc.

# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#

# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
font pango: FontAwesome 8
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesn’t scale on retina/hidpi displays.

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# start a terminal
bindsym $mod+Return exec urxvt

# kill focused window
bindsym $mod+Shift+q kill

# start dmenu (a program launcher)
bindsym $mod+d exec dmenu_run
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
exec --no-startup-id i3-msg 'workspace 1; exec /usr/bin/xcompmgr-fF -t-5 -l-5 -r4.2 -o.55 -D2 -m.75'
exec --no-startup-id i3-msg 'workspace 1; exec sh ~/.fehbg &'
exec --no-startup-id i3-msg 'workspace 1; exec wicd-gtk --tray'
exec --no-startup-id i3-msg 'workspace 1; exec tomboy --panel-applet'
exec --no-startup-id i3-msg 'workspace 1; exec sh /usr/bin/wallpaper.sh'
#exec --no-startup-id i3-msg 'workspace 1; exec telegram & '
exec --no-startup-id i3-msg 'workspace 4; exec dropbox &' 
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+ograve focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+ograve move right

# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split in horizontal orientation
bindsym $mod+h split h

# split in vertical orientation
bindsym $mod+v split v

# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+space floating toggle

# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# focus the child container
#bindsym $mod+d focus child
#finestre senza bordi
for_window [class="Firefox"] border none
for_window [class="urxvt"] border none
for_window [class="Midori"] border none
for_window [class="xfce4-terminal"] border none
for_window [class="Xfce4-notifyd"] floating enable; border none; focus mode_toggle
#hide_edge_borders both 
#nomi dei workspace
#set $tag1 cmus
#set $tag2 irc
#set $tag3 www
#set $tag4 www2
#set $tag5 fm
#volume
bindsym $mod+Page_Up exec --no-startup-id amixer -q set Master 3%+ -q
bindsym $mod+Page_Down exec --no-startup-id amixer -q set Master 3%- -q
bindsym $mod+End exec --no-startup-id amixer -q set Master toggle
# Custom Variables For Workspaces
set $tag1 cmus
set $tag2 IRC
set $tag3 WWW
set $tag4 Spotify
set $tag5 FM
set $tag6 qemu
set $tag7 telegram
set $tag8 HTOP
set $tag9 free
#set $tag6 
#set $tag7 
#set $tag8 HTOP
#set $tag9 
#set $tag10  

# switch to workspace
bindsym $mod+1 workspace 1 $tag1
bindsym $mod+2 workspace 2 $tag2
bindsym $mod+3 workspace 3 $tag3
bindsym $mod+4 workspace 4 $tag4
bindsym $mod+5 workspace 5 $tag5
bindsym $mod+6 workspace 6 $tag6
bindsym $mod+7 workspace 7 $tag7
bindsym $mod+8 workspace 8 $tag8
bindsym $mod+9 workspace 9 $tag9
bindsym $mod+0 workspace 10 $tag0

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1 
bindsym $mod+Shift+2 move container to workspace 2 
bindsym $mod+Shift+3 move container to workspace 3 
bindsym $mod+Shift+4 move container to workspace 4 
bindsym $mod+Shift+5 move container to workspace 5 
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'hai premuto la scorciatoia x uscire! davvero vuoi uscire da i3? questo chiuderà la sessione X.' -b 'Si Muoviti' 'i3-msg exit'"

# resize window (you can also use the mouse for that)
mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym ograve resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}

bindsym $mod+r mode "resize"

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
  status_command i3status
  position top
mode dock
workspace_buttons yes
binding_mode_indicator yes
font pango: FontAwesome 8
  colors {
    separator  #4F27EC
    background #2300B5
    statusline #FF006E
    focused_workspace #ffffff #7F009
    active_workspace #FF6600 #6c71c4 #FF6600
    inactive_workspace #586e75 #6EEE00 #002b36
    urgent_workspace #d33682 #d33682 #fdf6e3
  }
}

client.focused #859900 #910099 #fdf6e3 #859900
client.focused_inactive #EB0603 #073642 #eee8d5 #6c71c4
client.unfocused #340051 #340051 #93a1a1 #586e75
client.urgent #d33682 #d33682 #fdf6e3 #dc322f

Ulteriori risorse