diff --git a/docs/applications.md b/docs/applications.md index ef23f5e..c35f5e2 100644 --- a/docs/applications.md +++ b/docs/applications.md @@ -1,13 +1,72 @@ -## My applications +## Anwendungen & Konfiguration -|Application|Description| +### Installierte Anwendungen + +| Anwendung | Beschreibung | |---|---| -|rofi|Application launcher and window switcher| -|i3blocks|i3 status bar| -|dunst|Notification for i3| -|picom|Compositor (transparency, shadows)| -|gnome-terminal|Terminal| -|ranger|command line file manager| -|mousepad|Editor| -|flameshot|Screenshot utility| -|scrot|Screenshot for lock screen| +| alacritty | GPU-beschleunigtes Terminal | +| vivaldi-stable | Browser | +| rofi | App-Launcher & Window-Switcher | +| thunar | Grafischer File-Manager | +| ranger | Terminal File-Manager | +| mousepad | Text-Editor | +| ghostwriter | Markdown-Editor | +| keepassxc | Passwort-Manager | +| flameshot | Screenshot-Tool (interaktiv) | +| scrot | Screenshot-Tool (Kommandozeile) | +| picom | Compositor (Transparenz, Schatten) | +| dunst | Notification-Daemon | +| i3blocks | Status-Bar | +| i3lock-color | Lock-Screen mit Blur | +| greenclip | Clipboard-Manager | +| autorandr | Automatische Monitor-Profile | +| arandr | Grafisches Display-Layout | +| autotiling | Automatische Split-Richtung | +| brightnessctl | Helligkeitssteuerung | +| pavucontrol | Audio-Einstellungen | + +### Autostart + +Folgende Anwendungen starten automatisch beim Login: + +| Anwendung | Beschreibung | +|---|---| +| picom | Compositor (Transparenz, Schatten) | +| nitrogen | Wallpaper | +| nm-applet | Netzwerk-Manager | +| blueman-applet | Bluetooth | +| xautolock | Automatischer Bildschirm-Lock nach 10 Minuten | +| autorandr | Automatische Monitor-Erkennung | +| greenclip | Clipboard-Manager Daemon | +| autotiling | Automatische Split-Richtung | +| KeePassXC | Passwort-Manager mit Keyfile | +| sysinfo-notify | System-Info Notification beim Login | + +### Autotiling + +Autotiling läuft automatisch im Hintergrund. Es wechselt die Split-Richtung basierend auf der Fenster-Geometrie: breite Fenster werden vertikal, hohe Fenster horizontal geteilt. Dadurch entsteht ein natürlicheres Layout ohne manuelles Umschalten. + +### Scratchpad-Terminal + +Ein Scratchpad-Terminal (Alacritty) startet automatisch beim Login. Mit `mod+Tab` kann es jederzeit als schwebendes Dropdown-Terminal ein- und ausgeblendet werden. + +### Clipboard (Greenclip) + +Greenclip läuft als Daemon im Hintergrund und speichert die Zwischenablage-Historie. Mit `mod+c` öffnet sich eine Rofi-Auswahl, aus der ein früherer Eintrag eingefügt werden kann. + +### Screenshots + +Screenshots werden in `~/Pictures/Screenshots/` gespeichert. Flameshot (`mod+Ctrl+Shift+4`) bietet eine interaktive GUI zum Annotieren und Speichern. + +### Display-Management (Autorandr/Arandr) + +**Workflow für externe Monitore:** +1. Monitor/Beamer anschliessen +2. `mod+Ctrl+a` drücken, Layout arrangieren, Apply +3. Im Terminal: `autorandr --save profilname` (z.B. "buero", "beamer") +4. Ab jetzt wird das Profil beim Anschliessen automatisch erkannt + +### Benachrichtigungen (Dunst) + +Lautstärke- und Helligkeitsänderungen werden als Progress-Bar in einer Dunst-Notification angezeigt. Beim Login erscheint eine System-Info Notification mit IP, RAM, Disk und Akku-Status. + diff --git a/docs/i3-shortcuts.md b/docs/i3-shortcuts.md index 9dce137..0503a01 100644 --- a/docs/i3-shortcuts.md +++ b/docs/i3-shortcuts.md @@ -1,37 +1,109 @@ -## My Custom i3 shortcuts +## i3 Shortcuts -|Shortcut|Description| +`mod` = Super/Command-Taste (Mod4) + +### Anwendungen starten + +| Shortcut | Beschreibung | |---|---| -|mod+q|Close/Kill window| -|mod+space|Open Rofi application launcher| -|mod+f|Fullscreen a window/container| -|mod+s|Change layout to stack mode| -|mod+d|Change layout to split mode| -|mod+PrintScr|Open Flameshot screenshot application| -|mod+shift+enter|Open Terminal| -|mod+shift+f|Open Ranger command line file manager| -|mod+shift+e|Open Mousepad editor| -|mod+left|Switch focus to container on the left| -|mod+righ|Switch focus to container on the right| -|mod+up|Switch focus to container at the top| -|mod+down|Switch focus to container at the bottom| -|mod+shift+left|Move current container to left| -|mod+shift+right|Move current container to right| -|mod+shift+up|Move current container to top| -|mod+shift+down|Move current container to bottom| -|mod+shift+space|Toggle floating mode of container/window| -|mod+shift+minus|Move current window to scratchpad| -|mod+minus|Bring windows from scratchpad| -|mod+ctl+left|Move to worksapce left| -|mod+ctl+right|Move to worksapce right| -|mod+1|Move to workspace 1| -|mod+2|Move to workspace 2| -|mod+3|Move to workspace 3| -|mod+4|Move to workspace 4| -|mod+shift+1|Move the current window to workspace 1| -|mod+shift+2|Move the current window to workspace 2| -|mod+shift+3|Move the current window to workspace 3| -|mod+shift+4|Move the current window to workspace 4| -|mod+r|(up,down,left,right) Resize current window| -|mod+ctl+r|Restart i3| -|mod+ctl+del|Show (e)xit, (h)ibernate, (r)eboot, (s)hutdown (o)ption| +| mod+Shift+Return | Alacritty Terminal | +| mod+Shift+w | Helium Browser | +| mod+Shift+f | Ranger (Terminal File-Manager) | +| mod+Shift+t | Thunar (grafischer File-Manager) | +| mod+Shift+e | Mousepad (Text-Editor) | +| mod+Shift+m | Typora (Markdown-Editor) | +| mod+Shift+s | Signal | +| mod+Shift+i | Thunderbird (E-Mail) | +| mod+space | Rofi App-Launcher & Window-Switcher | +| mod+Ctrl+p | Pavucontrol (Audio-Einstellungen) | +| mod+Ctrl+b | bmenu im Terminal | + +### Fenster-Management + +| Shortcut | Beschreibung | +|---|---| +| mod+x | Fenster schliessen | +| mod+f | Vollbild umschalten | +| mod+z | Split-Richtung umschalten (horizontal/vertikal) | +| mod+s | Stacking-Layout | +| mod+d | Split-Layout | +| mod+Shift+space | Floating-Modus umschalten | +| mod+Left/Right/Up/Down | Fokus wechseln | +| mod+Shift+Left/Right/Up/Down | Fenster verschieben | +| mod+r | Resize-Modus (dann Pfeiltasten, Enter/Escape zum Beenden) | + +### Scratchpad + +| Shortcut | Beschreibung | +|---|---| +| mod+Tab | Scratchpad-Terminal ein-/ausblenden (Dropdown-Style) | +| mod+minus | Scratchpad anzeigen | +| mod+Shift+minus | Aktuelles Fenster ins Scratchpad verschieben | + +### Workspaces + +| Shortcut | Beschreibung | +|---|---| +| mod+1 bis mod+8 | Zu Workspace wechseln | +| mod+Shift+1 bis mod+8 | Fenster zu Workspace verschieben | +| mod+Ctrl+Left | Vorheriger Workspace | +| mod+Ctrl+Right | Nächster Workspace | + +**Workspace-Zuweisungen:** +- WS 1-3 - Frei verwendbar +- WS 4:WEB - Helium Browser +- WS 5:EDIT - Mousepad, Typora +- WS 6:FILES - Thunar +- WS 7:MAIL - Thunderbird +- WS 8:CHAT - Signal + +### Screenshots (macOS-Style) + +| Shortcut | Beschreibung | +|---|---| +| mod+Ctrl+Shift+3 | Ganzer Bildschirm nach ~/Pictures/Screenshots/ | +| mod+Ctrl+Shift+4 | Bereich auswählen (Flameshot GUI) | +| mod+Ctrl+Shift+5 | Aktives Fenster nach ~/Pictures/Screenshots/ | + +### Clipboard + +| Shortcut | Beschreibung | +|---|---| +| mod+c | Clipboard-Historie anzeigen (Rofi) | + +### Display-Management + +| Shortcut | Beschreibung | +|---|---| +| mod+Ctrl+d | Autorandr: Monitor-Profil automatisch erkennen | +| mod+Ctrl+a | Arandr: grafisches Display-Layout öffnen | +| mod+Ctrl+m | Schnell: externer Monitor rechts neben Laptop | +| mod+Ctrl+Up | Aktuelles Fenster zu externem Monitor verschieben | +| mod+Ctrl+Down | Aktuelles Fenster zurück zum Laptop-Monitor | +| mod+Ctrl+Shift+Down | Alle Fenster vom externen Monitor zurück zum Laptop | + +### Benachrichtigungen (Dunst) + +| Shortcut | Beschreibung | +|---|---| +| mod+n | Aktuelle Notification schliessen | +| mod+Shift+n | Alle Notifications schliessen | +| mod+` (Backtick) | Letzte Notification erneut anzeigen | + +### Media-Keys (MacBook Fn-Tasten) + +| Taste | Beschreibung | +|---|---| +| Fn+F11 / F12 | Lautstärke leiser / lauter | +| Fn+F10 | Stummschalten | +| Fn+F1 / F2 | Helligkeit runter / hoch | + +### System + +| Shortcut | Beschreibung | +|---|---| +| mod+l | Bildschirm sperren (Blur-Lock) | +| mod+Ctrl+r | i3 neustarten (Layout bleibt erhalten) | +| mod+Ctrl+Escape | System-Menü: (e)xit, (u)ser switch, (h)ibernate, (r)eboot, (s)hutdown | +| mod+m | i3bar ein-/ausblenden | +| mod+Shift+g | Gap-Modus: (o)uter / (i)nner Gaps anpassen | diff --git a/files/configs/i3/config/rofi/config.rasi b/files/configs/i3/config/rofi/config.rasi index f6508a2..49a7275 100644 --- a/files/configs/i3/config/rofi/config.rasi +++ b/files/configs/i3/config/rofi/config.rasi @@ -1,5 +1,6 @@ +@theme "gruvbox-dark-hard" + configuration { - theme: "gruvbox-dark-hard"; terminal: "alacritty"; font: "Noto Sans 12"; show-icons: true; diff --git a/files/configs/i3/i3/config b/files/configs/i3/i3/config index 7fd34de..0d758c9 100644 --- a/files/configs/i3/i3/config +++ b/files/configs/i3/i3/config @@ -29,23 +29,49 @@ bindsym $mod+d layout toggle split exec_always --no-startup-id xinput set-prop "bcm5974" "libinput Natural Scrolling Enabled" 1 bindsym $mod+Shift+Return exec alacritty -bindsym $mod+Shift+w exec vivaldi-stable +bindsym $mod+Shift+w exec helium-browser bindsym $mod+Shift+f exec alacritty -e ranger +bindsym $mod+Shift+t exec thunar bindsym $mod+Shift+e exec mousepad -bindsym $mod+Shift+p exec keepassxc -bindsym $mod+Shift+m exec ghostwriter +bindsym $mod+Shift+m exec typora +bindsym $mod+Shift+s exec signal-desktop +bindsym $mod+Shift+i exec thunderbird bindsym $mod+space --release exec "rofi -combi-modi drun,window -show combi -modi combi" bindsym $mod+x kill +# Clipboard manager +bindsym $mod+c exec --no-startup-id clipboard-rofi + bindsym $mod+Ctrl+p exec pavucontrol bindsym $mod+Ctrl+b exec alacritty -e bmenu -bindsym $mod+Print --release exec --no-startup-id flameshot gui +# Screenshots (macOS-Style) +bindsym $mod+Ctrl+Shift+3 --release exec --no-startup-id flameshot full -p ~/Pictures/Screenshots/ +bindsym $mod+Ctrl+Shift+4 --release exec --no-startup-id flameshot gui +bindsym $mod+Ctrl+Shift+5 --release exec --no-startup-id scrot -u ~/Pictures/Screenshots/'window_%Y-%m-%d_%H%M%S.png' + +# Scratchpad terminal (dropdown-style) +for_window [instance="scratchterm"] floating enable, resize set 1200 600, move position center, move scratchpad +exec --no-startup-id alacritty --class scratchterm +bindsym $mod+Tab scratchpad show + +# Media keys (MacBook) +bindsym XF86AudioRaiseVolume exec --no-startup-id volume-notify up +bindsym XF86AudioLowerVolume exec --no-startup-id volume-notify down +bindsym XF86AudioMute exec --no-startup-id volume-notify mute +bindsym XF86MonBrightnessUp exec --no-startup-id brightness-notify up +bindsym XF86MonBrightnessDown exec --no-startup-id brightness-notify down # Display management bindsym $mod+Ctrl+d exec autorandr --change bindsym $mod+Ctrl+a exec arandr -bindsym $mod+Ctrl+m exec xrandr --output eDP1 --auto --output $(xrandr | grep ' connected' | grep -v eDP1 | awk '{print $1}') --auto --right-of eDP1 +bindsym $mod+Ctrl+m exec xrandr --output eDP-1 --auto --output $(xrandr | grep ' connected' | grep -v eDP-1 | awk '{print $1}') --auto --right-of eDP-1 +# Aktuelles Fenster zu externem Monitor verschieben +bindsym $mod+Ctrl+Up move container to output next +# Aktuelles Fenster zurück zum Laptop-Monitor +bindsym $mod+Ctrl+Down move container to output eDP-1 +# Alle Fenster vom externen Monitor zurück zum Laptop +bindsym $mod+Ctrl+Shift+Down exec --no-startup-id i3-msg "[output=$(xrandr | grep ' connected' | grep -v eDP-1 | awk '{print $1}')] move workspace to output eDP-1" # Dunst notification control bindsym $mod+n exec dunstctl close @@ -59,7 +85,9 @@ exec --no-startup-id nm-applet exec --no-startup-id blueman-applet exec --no-startup-id xautolock -time 10 -locker blurlock exec --no-startup-id autorandr --change -exec --no-startup-id keepassxc --keyfile /home/kalle/kgokeyfile /home/kalle/Passwords.kdbx +exec --no-startup-id greenclip daemon +exec_always --no-startup-id autotiling +exec --no-startup-id sysinfo-notify bindsym $mod+Left focus left bindsym $mod+Down focus down @@ -87,11 +115,11 @@ bindsym $mod+Ctrl+Left workspace prev set $ws1 1 set $ws2 2 set $ws3 3 -set $ws4 4 -set $ws5 5 -set $ws6 6 -set $ws7 7 -set $ws8 8 +set $ws4 4:WEB +set $ws5 5:EDIT +set $ws6 6:FILES +set $ws7 7:MAIL +set $ws8 8:CHAT # Switch to workspace bindsym $mod+1 workspace number $ws1 @@ -114,9 +142,12 @@ bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 # Open applications on specific workspaces -# assign [class="Thunderbird"] $ws1 -# assign [class="Pcmanfm"] $ws3 -# assign [class="Skype"] $ws5 +assign [class="Helium"] $ws4 +assign [class="Mousepad"] $ws5 +assign [class="Typora"] $ws5 +assign [class="Thunar"] $ws6 +assign [class="Thunderbird"] $ws7 +assign [class="Signal"] $ws8 # Open specific applications in floating mode for_window [title="alsamixer"] floating enable border pixel 1 @@ -130,11 +161,6 @@ for_window [class="Nitrogen"] floating enable sticky enable border normal for_window [class="Pavucontrol"] floating enable for_window [class="Simple-scan"] floating enable border normal for_window [class="(?i)System-config-printer.py"] floating enable border normal -for_window [class="Skype"] floating enable border normal -for_window [class="Timeset-gui"] floating enable border normal -for_window [class="SimpleScreenRecorder"] floating enable border normal -for_window [class="MPlayer"] floating enable -for_window [class="Spotify"] floating enable # switch to workspace with urgent window automatically for_window [urgent=latest] focus @@ -212,9 +238,9 @@ bar { status_command i3blocks position bottom - # please set your primary output first. Example: 'xrandr --output eDP1 --primary' + # please set your primary output first. Example: 'xrandr --output eDP-1 --primary' # tray_output primary - # tray_output eDP1 + # tray_output eDP-1 bindsym button4 nop bindsym button5 nop diff --git a/files/configs/misc-scripts/brightness-notify b/files/configs/misc-scripts/brightness-notify new file mode 100644 index 0000000..d1da6ae --- /dev/null +++ b/files/configs/misc-scripts/brightness-notify @@ -0,0 +1,14 @@ +#!/bin/bash +# Brightness control with dunst notification + +case "$1" in + up) + brightnessctl set +5% + ;; + down) + brightnessctl set 5%- + ;; +esac + +BRIGHTNESS=$(brightnessctl -m | awk -F, '{print $4}' | tr -d '%') +dunstify -a "brightness" -u low -r 9998 -h int:value:${BRIGHTNESS} " ${BRIGHTNESS}%" diff --git a/files/configs/misc-scripts/clipboard-rofi b/files/configs/misc-scripts/clipboard-rofi new file mode 100644 index 0000000..0321ad9 --- /dev/null +++ b/files/configs/misc-scripts/clipboard-rofi @@ -0,0 +1,4 @@ +#!/bin/bash +# Rofi-based clipboard manager using greenclip + +rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' diff --git a/files/configs/misc-scripts/sysinfo-notify b/files/configs/misc-scripts/sysinfo-notify new file mode 100644 index 0000000..edbd3a0 --- /dev/null +++ b/files/configs/misc-scripts/sysinfo-notify @@ -0,0 +1,15 @@ +#!/bin/bash +# Show system info notification on login + +sleep 3 + +IP=$(ip route get 1.1.1.1 2>/dev/null | grep -o 'src [0-9.]*' | awk '{print $2}') +MEM_TOTAL=$(free -h | grep Mem | awk '{print $2}') +MEM_AVAIL=$(free -h | grep Mem | awk '{print $7}') +DISK_AVAIL=$(df -h / | tail -1 | awk '{print $4}') +BATTERY=$(cat /sys/class/power_supply/BAT0/capacity 2>/dev/null || echo "N/A") +UPTIME=$(uptime -p | sed 's/up //') + +dunstify -a "sysinfo" -u normal -r 9997 -t 8000 \ + "System Info" \ + "IP: ${IP:-nicht verbunden}\nRAM frei: ${MEM_AVAIL}/${MEM_TOTAL}\nDisk frei: ${DISK_AVAIL}\nAkku: ${BATTERY}%\nUptime: ${UPTIME}" diff --git a/files/configs/misc-scripts/volume-notify b/files/configs/misc-scripts/volume-notify new file mode 100644 index 0000000..1e47c68 --- /dev/null +++ b/files/configs/misc-scripts/volume-notify @@ -0,0 +1,24 @@ +#!/bin/bash +# Volume control with dunst notification + +case "$1" in + up) + pactl set-sink-volume @DEFAULT_SINK@ +5% + ;; + down) + pactl set-sink-volume @DEFAULT_SINK@ -5% + ;; + mute) + pactl set-sink-mute @DEFAULT_SINK@ toggle + ;; +esac + +VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]*%' | head -1) +MUTE=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') + +if [[ "${MUTE}" == "yes" ]]; then + dunstify -a "volume" -u low -r 9999 -h int:value:0 " MUTE" +else + VOL_NUM=${VOLUME%\%} + dunstify -a "volume" -u low -r 9999 -h int:value:${VOL_NUM} " ${VOLUME}" +fi diff --git a/tasks/configure-i3.yaml b/tasks/configure-i3.yaml index fa7cac0..40c1341 100644 --- a/tasks/configure-i3.yaml +++ b/tasks/configure-i3.yaml @@ -82,3 +82,33 @@ src: files/configs/misc-scripts/blurlock dest: /usr/bin/blurlock mode: "0755" + +- name: i3 Configuration - Copy clipboard-rofi script + copy: + src: files/configs/misc-scripts/clipboard-rofi + dest: /usr/bin/clipboard-rofi + mode: "0755" + +- name: i3 Configuration - Copy volume-notify script + copy: + src: files/configs/misc-scripts/volume-notify + dest: /usr/bin/volume-notify + mode: "0755" + +- name: i3 Configuration - Copy brightness-notify script + copy: + src: files/configs/misc-scripts/brightness-notify + dest: /usr/bin/brightness-notify + mode: "0755" + +- name: i3 Configuration - Copy sysinfo-notify script + copy: + src: files/configs/misc-scripts/sysinfo-notify + dest: /usr/bin/sysinfo-notify + mode: "0755" + +- name: i3 Configuration - Create Screenshots directory + become_user: "{{ username }}" + file: + path: "{{ userhome }}/Pictures/Screenshots" + state: directory diff --git a/tasks/configure-software-fedora.yaml b/tasks/configure-software-fedora.yaml index d12f2d3..e084ebf 100644 --- a/tasks/configure-software-fedora.yaml +++ b/tasks/configure-software-fedora.yaml @@ -1,6 +1,6 @@ - name: Package Installation - Productivity Tools package: - name: ["alacritty", "ranger", "mousepad", "ghostwriter"] + name: ["alacritty", "ranger", "mousepad", "ghostwriter", "thunar", "xclip"] state: present - name: Package Installation - Development Tools @@ -15,7 +15,16 @@ - name: Package Installation - System Desktop package: - name: ["rofi", "nitrogen", "arandr", "autorandr", "dunst"] + name: + [ + "rofi", + "nitrogen", + "arandr", + "autorandr", + "dunst", + "brightnessctl", + "autotiling", + ] state: present - name: Package Installation - I3 Desktop diff --git a/tasks/configure-software-manjaro.yaml b/tasks/configure-software-manjaro.yaml index 5b81e18..5f4af4a 100644 --- a/tasks/configure-software-manjaro.yaml +++ b/tasks/configure-software-manjaro.yaml @@ -5,9 +5,27 @@ - name: Package Installation - Productivity Tools package: - name: ["alacritty", "ranger", "mousepad", "ghostwriter"] + name: ["alacritty", "ranger", "mousepad", "thunar", "xclip", "signal-desktop", "thunderbird", "pulseaudio", "pavucontrol"] state: present +- name: Package Installation - Install AUR greenclip + become_user: "{{ username }}" + command: yay -S --noconfirm greenclip + args: + creates: /usr/bin/greenclip + +- name: Package Installation - Install AUR helium-browser-bin + become_user: "{{ username }}" + command: yay -S --noconfirm helium-browser-bin + args: + creates: /usr/bin/helium-browser + +- name: Package Installation - Install AUR typora + become_user: "{{ username }}" + command: yay -S --noconfirm typora + args: + creates: /usr/bin/typora + - name: Package Installation - Development Tools package: name: ["binutils"] @@ -20,5 +38,15 @@ - name: Package Installation - System Desktop package: - name: ["rofi", "nitrogen", "dunst", "i3blocks", "arandr", "autorandr"] + name: + [ + "rofi", + "nitrogen", + "dunst", + "i3blocks", + "arandr", + "autorandr", + "brightnessctl", + "autotiling", + ] state: present diff --git a/tasks/configure-software-ubuntu.yaml b/tasks/configure-software-ubuntu.yaml index 130b2c3..c154eeb 100644 --- a/tasks/configure-software-ubuntu.yaml +++ b/tasks/configure-software-ubuntu.yaml @@ -5,7 +5,16 @@ - name: Package Installation - Productivity Tools package: - name: ["alacritty", "ranger", "mousepad", "ghostwriter"] + name: + [ + "alacritty", + "ranger", + "mousepad", + "ghostwriter", + "thunar", + "xclip", + "greenclip", + ] state: present - name: Package Installation - Development Tools @@ -20,5 +29,15 @@ - name: Package Installation - System Desktop package: - name: ["rofi", "nitrogen", "dunst", "i3blocks", "arandr", "autorandr"] + name: + [ + "rofi", + "nitrogen", + "dunst", + "i3blocks", + "arandr", + "autorandr", + "brightnessctl", + "autotiling", + ] state: present