Difference between revisions of "I3 (Magyar)"

From ArchWiki
Jump to navigation Jump to search
Line 198: Line 198:
 
=== Advanced window navigation ===
 
=== Advanced window navigation ===
  
See [http://www.slackword.net/?p=657 i3 window Navigation Tips].
+
Lásd: [http://www.slackword.net/?p=657 i3 ablak navigációs trükkök].
  
 
=== Jump to open window ===
 
=== Jump to open window ===

Revision as of 16:57, 19 March 2017

Az i3 egy dinamikus csempéző ablakkezelő (tiling window manager), amit a wmii inspirált, legfőképp fejlesztőknek, és haladó felhasználóknak tervezve.

Az i3 céljai a letisztult dokumentáció, több monitor megfelelő támogatása, fa-struktúrájú ablakkezelés, és több mód, ahogyan a vim-ben.

Telepítés

Telepítsd az i3 csoportot. Ez tartalmazza az i3-wm ablakkezelőt, az i3status-t, ami rendszerinformációkat jelenít meg a standard kimeneten keresztül, és az i3lock-ot, egy képernyőzárat.

További csomagok az Arch Felhasználói Tároló (AUR)-ban találhatóak. Lásd a #Patch-ek szakaszt példákért.

Display manager

Az i3-wm tartalmazza a i3.desktop-ot, ami Xsession-ként indítja az ablakkezelőt. i3-with-shmlog.desktop engedélyezi a logokat (debugoláshoz hasznos). Az i3-gnomeAUR integrálja az i3-at a GNOME-ba.

xinitrc

Add hozzá az Xinitrc-hez a következőt:

exec i3

Ha az i3 kimenetét szeretnéd egy fájlban rögzíteni, akkor a következőt kell hozzáadni:

exec i3 -V >> ~/i3log-$(date +'%F-%k-%M-%S') 2>&1

Használat

Lásd a hivatalos dokumentációt további információért, név szerint a felhasználók kézikönyvét.

Billentyűk

Az i3-ban a parancsok egy úgynevezett módosító billentyűvel hajthatók végre, ami $mod-ként lesz említve. Ez alapértelmezetten az Alt (Mod1), és a Super (Mod4) egy népszerű alternatíva. A Super billentyű a billentyűzeten Windows logóval jelölt billyentyű, vagy Apple billentyűzeten a Command billentyű.

Lásd az i3 referencia kártyát és az i3 használatát az alapértelmezett értékekért. Lásd a billentyű hozzárendeléseket új gyorsbillentyűk hozzáadásához.

A nem Querty billentyűzetet használók hasznosnak találhatják a "beállítás varázslót", lásd lejjebb.

Tárolók

Az i3 fa struktúrában kezeli az ablakokat, tárolókat használva blokkok létrehozásához. Ez a szerkezet elágazik vízszintes és függőleges kettéosztásokba. A tárolók alapértelmezésben csempézett kiosztásúak, de ez megváltoztatható füles, vagy halmozott kiosztásra, és lebegő módra is (például párbeszédablakok). A lebegő ablakok mindíg legfölül vannak.

Lásd az i3 fát, és Konténerek és adatszerkezet-et további részletekért.

Alkalmazásindító

Az i3 a dmenu-t használja alkalmazásindítónak, ami alapértelmezetten a $mod+d billentyűkombinációhoz van beállítva.

Az i3-wm tartalmazza az i3-dmenu-desktop-ot, egy Perl wrapper-t a dmenu-hez ami desktop entry-k használatával létrehoz egy lisát a telepített alkalmazásokról. Alternatívaként a j4-dmenu-desktop-gitAUR csomag használható.

Beállítás

Lásd az i3 konfigurálását részletekért. Ennek a fejezetnek nagyrésze feltételezi, hogy az i3 konfigurációs könyvtára az ~/.config könyvtárban van.

Konfiguráció varázsló és alternatív billentyűzetkiosztások

Az i3 első indításakor felajánlja, hogy futtatja az i3-config-wizard beállítás varázslót. Ez az eszköz létrehozza az ~/.config/i3/config-ot az /etc/i3/config.keycodes minta konfigurációs fájl változtatásával. Két módosítást végez a sablonhoz képest:

  1. Megkérdezi a felhasználót, hogy melyik legyen az alapértelmezett módosító billentyű, majd egy sort ad hozzá a konfigurációs fájlhoz, pl.: set $mod Mod1
  2. Az összes bindcode sort bindsym-re cseréli a felhasználó billentyűzet-kiosztásának megfelelően.

A második lépés megerősíti, hogy a j, k, l és "pontosvessző" egy Querty billentyűzeten vannak, és Dvorak billentyűzeten azokhoz a billentyűkhöz lesznek rendelve, amik ugyanazon a helyen vannak, pl.: h, t, n, s. Ennek a folyamatnak a mellékhatása az, hogy több, mint tizenöt másik billentyű is át lesz rendezve, és ezáltal megszűnik a könnyű memorizálhatóság - tehát egy Dvorak felhasználónak az "restart" $mod1+p lesz $mod1+r helyett, a "split horizontally" pedig $mod1+d lesz $mod1+h helyett, és így tovább.

Ebből következően, az alternatív billentyűzet-kiosztásokat használók, akik ugyanolyan gyorsbillentyű elrendezést szeretnének, mint amilyenek a tutorialokban vannak, előnyben részesíthetik a "konfiguráció varázsló" kihagyását. Ez úgy lehetséges, hogy az /etc/i3/config-ot a ~/.config/i3/config-ba másolod (vagy az ~/.i3/config-ba), és azt a fájlt szerkeszted.

Ne felejtsük el, hogy billentyűkód alapú konfiguráció szintén lehetséges, és praktikus lehet olyan felhasználóknak, akik több, eltérő billentyűzetkiosztást használnak, de változatlan i3 gyorsbillentyűket szeretnének.

Színsémák

A konfigurációs fájl lehetőséget ad az ablakkeret színeinek testreszabására, de a szintaxis miatt nehézkes témák létrehozása, megosztása. Számos projekt van, ami ezt könnyebbé teszi, és felhasználók által létrehozott témákat is elérhetővé tesz.

  • i3-style — A konfigurációs fájlt módosítja egy JSON objektumban tárolt téma alapján. Rendszeres témaváltoztatáshoz tervezve.
https://github.com/acrisci/i3-style || nodejs-i3-styleAUR[broken link: archived in aur-mirror]
  • j4-make-config — Egyesíti az alap konfigurációt egy témával, vagy saját beállítás részletekkel, például host-specifikus konfiguráció. Lehetőséget ad a téma gyors cserélésére, és a konfiguráció rugalmas, gyors változtatására.
https://github.com/okraits/j4-make-config || j4-make-config-gitAUR

i3bar

Amellett, hogy a munkaterületekről információt mutat, az i3bar bemenetként szolgálhat az i3status-nak, vagy egy alternatívájának, mint ahogy említve lesz a következő szekcióban. Például:

~/.config/i3/config
bar {
    output            LVDS1
    status_command    i3status
    position          top
    mode              hide
    workspace_buttons yes
    tray_output       none
    
    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

    colors {
        background #000000
        statusline #ffffff

        focused_workspace  #ffffff #285577
        active_workspace   #ffffff #333333
        inactive_workspace #888888 #222222
        urgent_workspace   #ffffff #900000
    }
}

Lásd az i3bar konfigurálását további részletekért.

i3bar alternatívák

Néhány felhasználó esetleg előnyben részesít olyan paneleket, amelyeket a hagyományos asztali környezetek biztosítanak. Ez elérhető a választott panel alkalmazás automatikus indításával az i3 indításakor.

Az XFCE panel indításához add hozzá a következő sort az ~/.config/i3/config-hoz:

exec --no-startup-id xfce4-panel --disable-wm-check

Az i3bar indítása kikapcsolható a ~/.config/i3/config fájlban a bar{ } szakasz hatástalanításával, vagy egy gyorsbillentyű beállításával az i3bar elrejtéséhez:

~/.config/i3/config
# i3bar elrejtése, mutatása
bindsym $mod+m bar mode toggle

i3status

Másold a konfigurációs fájlokat a felhasználói könyvtáradba:

$ cp /etc/i3status.conf ~/.config/i3status/config

Nem minden plugin van definiálva az alapértelmezett konfigurációban, és néhány konfigurációs érték esetleg érvénytelen a rendszereden, ezért szükség szerint szerkesztésre szorulhat. Lásd a man i3status-t a részletekért.

i3status helyettesítők

  • conky — Nagymértékben bővíthető rendszermonitor. Az i3bar-ral való használathoz lásd ezt a tutorialt
https://github.com/brndnmtthws/conky || conky
  • i3blocks — Shell scriptek által bővíthető. Kezelni tudja a kattintásokat, megszakításokat, és a blokkonkénti külön frissítési idótartam beállítását.
https://github.com/vivien/i3blocks || i3blocksAUR
  • i3pystatus — Bővíthető Python 3 rendszermonitor, számos pluginnel és konfigurálási opcióval.
https://github.com/enkore/i3pystatus i3pystatus || i3pystatus-gitAUR
  • i3situation — Még egy Python 3 állapotsor generátor.
https://github.com/HarveyHunt/i3situation || i3situation-gitAUR
  • j4status — Állapotsort biztosít, pluginek által bővíthető, C-ben van írca. További plugineket a j4status-plugins-gitAUR csomag biztosít.
http://j4status.j4tools.org/ || j4status-gitAUR
  • goi3bar — i3status alternatíva, Go-ban van írva. Konfigurációs fájl által vezérelt, jelentős plugin támogatással, minden elemhez saját frissítési időköz beállítása.
https://github.com/denbeigh2000/goi3bar/ || goi3bar-gitAUR
  • goblocks — Gyors, könnyűsúlyú i3status alternatíva, Go-ban írva.
https://github.com/davidscholberg/goblocks || goblocksAUR
  • bumblebee-status — Témák által testreszabható Python állapotsor generátor.
https://github.com/tobi-wan-kenobi/bumblebee-status || bumblebee-status-gitAUR
  • ty3status — i3status alternatíva, Typescript-ben írva. JavaScript blokkokhoz első osztályú támogatással.
https://github.com/mrkmg/ty3status || ty3status-gitAUR

i3status wrapper-ek

  • i3cat — Egy go alapú wrapper, ami több külső forrásból is össze tudja fűzni a bemenetet. Tudja kezelni a kattintást, és továbbítani a felhasználó által meghatározott jeleket az alfolyamatoknak.
http://vincent-petithory.github.io/i3cat/ || i3cat-gitAUR
  • py3status — Egy bővíthető i3status wrapper, Python-ban írva.
https://github.com/ultrabug/py3status || py3statusAUR

Ikonszerű betűk az állapotsoron

i3bar patchelhető XBM icon támogatáshoz, de használhatsz helyette ikonszerű betűket.

  • ttf-font-awesome — Nagyítható vektor ikonok, CSS-el szabhatóak testre. Ez a cheatsheet leírja az Unicode kódjait.
http://fortawesome.github.io/Font-Awesome/ || ttf-font-awesomeAUR
  • ttf-font-icons — Átfedés nélküli, és következetesen méretezett keveréke az Awesome és Ionicons ikonoknak. Szintén megszüntet egy kisebb átfedést a DejaVu Sans és az Awesome között.
http://kageurufu.net/icons.pdf || ttf-font-iconsAUR.

Betűtípusok kombinálásához határozz meg egy tartalék betűtípust a konfigurációs fájlban, a betűtípusokat , karakterrel elválasztva, mint ez:

~/.config/i3/config
bar {
  ...
  font pango:DejaVu Sans Mono, Icons 8
  ...
}

A pango szintaxis szerint a betűméretet csak egyszer kell meghatározni, a vesszővel elválasztott lista végén.Külön méret beállítása minden betűtípushoz az összes betűtípus figyelmen kívül hagyását okozza, az utolsó kivételével.

Az ikonok hozzáadása a formázási sztringekhez a ~/.config/i3status/config-ben a fenti cheatsheet-ben leírt számok használatával lehetséges. A beviteli mód szövegszerkesztőnként változik. Például a "szív" ikon beillesztése (unicode szám f004):

Merge-arrows-2.pngThis article or section is a candidate for merging with Internationalization.Merge-arrows-2.png

Notes: Should be described in one place; see also ArchWiki:Requests#Input methods. (Discuss in Talk:I3 (Magyar)#)
  • többféle GUI szövegszerkesztő: (pl.: gedit, Leafpad) és terminálok (e.g. GNOME Terminal, xfce4-terminal): ctrl+shift+u, f004, Enter
  • Emacs: ctrl+x, 8, Enter, f004, Enter
  • Vim (--insert-- módban): Ctrl+v, uf004
  • urxvt: Ctrl+Shift lenyomva tartása közben írd be: f004

Terminál emulátorok

Alapértelmezetten a $mod+Return lenyomása futtatja az i3-sensible-terminal-t, ami egy szkript egy terminál emulátor meghívására. Lásd man i3-sensible-terminal-t a meghívható terminálok sorrendjéért.

Ha ehelyett egy meghatározott terminált szeretnél indítani, módosítsd a következő sort az ~/.config/i3/config-ben:

bindsym $mod+Return exec i3-sensible-terminal

Esetleg beállíthatod a $TERMINAL környezeti változót.

Tips and tricks

Advanced window navigation

Lásd: i3 ablak navigációs trükkök.

Jump to open window

  • quickswitch-i3 — Python utility to quickly change to and locate windows in i3
https://github.com/proxypoke/quickswitch-for-i3 || quickswitch-i3AUR
  • i3-wm-scripts — search for and jump to windows with particular names matching regexp
https://github.com/yiuin/i3-wm-scripts ||
  • winmenupy — Launches dmenu with a list of clients, sorted after workspaces. Selecting a client jumps to that window.
https://github.com/ziberna/i3-py/blob/master/examples/winmenu.py ||
  • rofi — Search and jump to open and scratchpad window
https://davedavenport.github.io/rofi/ || rofi

Jump to urgent window

Add to .i3/config: [1]

bindsym $mod+x [urgent=latest] focus

Save and restore the window layout

From version 4.8, and onward i3 can save and restore workspace layouts. To do this, the following packages are needed: perl-anyevent-i3 and perl-json-xs from the official repositories.

Note: This section only provides quick tutorial on how to save the current window layout of a single workspace and how to restore it for later use. Refer to the official documentation for more details

Save the current window layout of a single workspace

To save the current window layout, follow these steps:

  1. First, execute various commands to open windows in a preferred workspace and resize them if needed. Make sure to write down each executed command for each window.
  2. Now, in a new workspace, open a terminal and run the following:
    i3-save-tree --workspace N > ~/.i3/workspace_N.json
    where N is the number of the preferred workspace. This will save the current layout of workspace N to the file ~/.i3/workspace_N.json.
  3. The newly created file needs to be edited, however this may be done with the following commands:
    tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json

Restore the window layout of the workspace

There are two ways to restore the layout of the workspace: by writing a script, or by editing ~/.i3/config to automatically load the layout. In this section only the first case will be considered, refer to the official documentation for the second case.

To restore the saved layout in the previous section, write a file named load_layout.sh with the following contents:

  • The starting lines:
~/load_layout.sh
#!/bin/bash
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"

where M is the number of the workspace in which you would like to load the previously saved layout and N is the number of workspace saved in the previous section.

  • And the commands used in the previous section to get the preferred windows, but enclosed in parentheses and with an ampersand appended before the last parentheses.

For example, if the saved layout contained three uxterm windows:

~/load_layout.sh
#!/bin/bash

# First we append the saved layout of worspace N to workspace M
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"

# And finally we fill the containers with the programs they had
(uxterm &)
(uxterm &)
(uxterm &)

Then set the file as executable:

chmod u+x ~/load_layout.sh

And finally, the layout of worskpace N can be loaded onto to workspace M by running:

~/load_layout.sh
Tip: Adding bindsym $mod+g exec ~/load_layout.sh to ~/.i3/config and restarting i3 will bind Mod+g to run the above script.
Note: If the above script does not work properly, refer to the official documentation. The swallows sections of ~/.i3/workspace_N.json needs to be manually edited.

Scratchpad containers

By default, scratchpads only contain a single window. However, containers can also be made a scratchpad.

Create a new container (for example, Mod+Enter), split it (Mod+v) and create another container. Focus the parent (Mod+a), split in the opposite direction (Mod+h), and create again.

Focus the first container (with focus parent as needed), make the window floating (Mod+Shift+Space), and move it to the scratchpad (Mod+Shift+-). You can now split containers to preference.

Note: Containers cannot be resized individually in floating windows. Resize the containers before making windows floating.
Tip: When only using terminal applications, consider a multiplexer such as tmux instead.

See also [2] for multiple scratchpads.

Screensaver and power management

With Power management#xss-lock you can register a screenlocker for your i3 session. The -time option locks the screen after a given time period.

xautolock -time 10 -locker "i3lock -i 'background_image.png'" &

A systemd service file can be used to lock the screen before the system is being sent to sleep or hibernation state. See Power management#Suspend/resume service files. Note that i3lock requires the type of the service to be forking.

See also DPMS.

Kikapcsolás, újraindítás, képernyővédő

Billentyűkombinációk beállíthatók a leállításhoz, újraindításhoz, és képernyővédőhöz a ~/.config/i3/config-ben. Az alábbi példák feltételezik, hogy a polkit telepítve van az energiagazdálkodási parancsok normál felhasználóként való futtatásához.

set $Locker i3lock && sleep 1

set $mode_system Energiagazdálkodás (l) zárolás, (e) kijelentkezés, (s) felfüggesztés, (h) hibernálás, (r) újraindítás, (Shift+s) leállítás
mode "$mode_system" {
    bindsym l exec --no-startup-id $Locker, mode "default"
    bindsym e exec --no-startup-id i3-msg exit, mode "default"
    bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
    bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
    bindsym r exec --no-startup-id systemctl reboot, mode "default"
    bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"  

    # vissza normál módba: Enter vagy Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym $mod+Pause mode "$mode_system"

Ha kész, egy promptot fogsz kapni amikor megnyomod a $mod+pause-t. Komplexebb parancsokhoz készíts saját szkriptet, és hivatkozz rájuk gyorsbillentyűkkel. [3]

Note:
  • sleep 1 egy kis késleltetést ad, hogy mindent le tudjon zárni a gép felfüggeszés előtt. [4]
  • Az -i argumentum a systemctl poweroff kikapcsolja a gépet akkor is, hogyha más felhasználók be vannak jelentkezve (ehhez szükséges a polkit), vagy amikor logind (hibásan) ezt feltételezi. [5]

Alternatív képernyővédők listájához lásd List of applications/Security#Screen lockers.

External displays manual management

Thanks to xrandr there are many ways to easily manage systems displays. The below example integrates it in the i3 config file, and behave as the Power Management section above.

Here a laptop with both VGA and HDMI outputs will use a menu selection to switch them On/Off:

## Manual management of external displays
# Set the shortcuts and what they do
set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF
mode "$mode_display" {
    bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default"
    bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default"
    bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default"
    bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default"

    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
# Declare here the shortcut to bring the display selection menu
bindsym $mod+x mode "$mode_display"

Any window that is still open in a switched Off display will automatically come back to the remaining active display.

The simplest way to determine names of your devices is to plug the device you wish to use and run:

$ xrandr --query

which will output the available, recognized devices and their in-system names to set your config file appropriately.

Refer to the xrandr page or man page for the complete list of available options, the i3 userguide and/or the i3 FAQ on reddit for more info.

Tabbed or stacked web-browsing

Some web-browsers intentionally do not implement tabs, since managing tabs is considered to be the task of the window manager, not the task of the browser.

To let i3 manage your tab-less web-browser, in this example for uzbl, add the following line to your ~/.config/i3/config

for_window [class="Uzbl-core"] focus child, layout stacking, focus

This is for stacked web browsing, meaning that the windows will be shown vertically. The advantage over tabbed browsing is that the window-titles are fully visible, even if a lot of browser windows are open.

If you prefer tabbed browsing, with windows in horizontal direction ('tabs'), use

for_window [class="Uzbl-core"] focus child, layout tabbed, focus

Workspace variables

As workspaces are defined multiple times in i3, assigning workspace variables can be helpful. For example:

set $WS1 term
set $WS2 web
set $WS3 misc
set $WS4 media
set $WS5 code

Then replace workspace names with their matching variables:

bindsym $mod+1          workspace $WS1
...
bindsym $mod+Shift+1    move container to workspace $WS1

See Changing named workspaces for more information.

Correct handling of floating dialogs

While dialogs should open in floating mode by default [6], many still open in tiling mode. To change this behaviour, check the dialog's WM_WINDOW_ROLE with xorg-xprop and add the correct rules to ~/.i3/config (using pcre syntax):

for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable

You can also use title rules and regular expressions:

for_window [title="Preferences$"] floating enable

or WM_CLASS:

for_window [class="(?i)mplayer"] floating enable

Network Download/Upload speed on statusbar

You might adapt this upstream script. For that,

  • rename both network cards according to your system (use ip addr)
  • find them on /sys/devices then replace them appropriately:
$ find /sys/devices -name network_interface
Tip: Use /sys/class/net/interface/statistics/ to not depend on PCI location.

Now, just save the script in a suitable place (for example ~/.config/i3) and point your status program to it.

Patches

Merge-arrows-2.pngThis article or section is a candidate for merging with #Installation.Merge-arrows-2.png

Notes: One package does not warrant a separate section (Discuss in Talk:I3 (Magyar)#)

Packages with patches not merged upstream are available in the AUR:

  • i3-wm-iconpatch — Titlebar icon support
https://github.com/ashinkarov/i3-extras || i3-wm-iconpatchAUR

Troubleshooting

General

In many cases, bugs are fixed in the development versions i3-gitAUR and i3status-gitAUR, and upstream will ask to reproduce any errors with this version. [7] See also Debug - Getting Traces#General.

Buttons in the i3 message bar do not work

Buttons such as "Edit config" in i3-nagbar call i3-sensible-terminal, so make sure your Terminal emulator is recognized by i3.

Faulty line wraps in tiled terminals

i3 v4.3 and higher ignore size increment hints for tiled windows [8]. This may cause terminals to wrap lines prematurely, amongst other issues. As a workaround, make the offending window floating, before tiling it again.

Mouse cursor remains in waiting mode

When starting a script or application which does not support startup notifications, the mouse cursor will remain in busy/watch/clock mode for 60 seconds.

To solve this for a particlar application, use the --no-startup-id parameter, for example:

exec --no-startup-id ~/script
bindsym $mod+d exec --no-startup-id dmenu_run

To disable this animation globally, see Cursor themes#Create links to missing cursors.

Unresponsive key bindings

Some tools such as scrot may not work when used with a regular key binding (executed after key press). In those cases, execute commands after key release with the --release argument [9]:

bindsym --release Print exec --no-startup-id scrot
bindsym --release Shift+Print exec --no-startup-id scrot -s

Tearing

i3 does not properly implement double buffering hence tearing or flickering may occur. To prevent this, install and configure compton. [10]

Tray icons not visible

The tray_output primary directive may require setting a primary output with xrandr, specifying the output explicitly or simply removing this directive. [11] See Xrandr for details. The default configuration created by i3-config-wizard no longer adds this directive to the configuration from i3 4.12.

See also

Arch Linux Forums

Screencasts