From 0c61c35828d997e537d39d8b11cd09088d82922b Mon Sep 17 00:00:00 2001 From: dzaczek Date: Tue, 23 Dec 2025 17:09:38 +0100 Subject: [PATCH] Enhanced documentation and add installation script - Added comprehensive keyboard shortcuts documentation with detailed tables: * Basic operations (window management, launcher, config reload) * Window focus and movement (vim-style keybindings) * Window layout controls (split, stacking, tabbed, fullscreen) * Workspace navigation and assignments * Screenshot shortcuts (file and clipboard modes) * Audio controls (volume, MOC player) * Resize mode instructions - Fixed typos in README (temple -> template, comming -> coming, etc.) - Added Quick Installation section with automated script - Added Features section listing all major components - Improved manual installation instructions formatting - Created install.sh script for automated installation: * Installs all required dependencies * Builds and installs i3-gaps from source * Configures LXDE autostart for i3 * Installs SuckLess Terminal * Copies configuration files and scripts * Creates necessary directories * Provides clear installation progress and next steps --- README.md | 172 ++++++++++++++++++++++++++++++++++++++++++++++------- install.sh | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 320 insertions(+), 23 deletions(-) create mode 100755 install.sh diff --git a/README.md b/README.md index 94065eb..2263266 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,33 @@ # Uconsole-i3 -I3 windows manager on Uconsole device +i3 window manager configuration for Uconsole device ![SCREENSHOT|300](./screen.png) ![SCREENSHOT2|300](./screen2.png) ## Usage -Feel free to fork and modify this configuration to suit your needs. If you're new to i3 like I , take your time to understand how each section works and tailor it to your preferences. +Feel free to fork and modify this configuration to suit your needs. If you're new to i3 like I am, take your time to understand how each section works and tailor it to your preferences. -The base is temple is comming from [icemodding](https://github.com/icemodding/i3) This is my first attempt at working with i3, so please be aware that this project may have bugs, be unfinished, or contain incomplete features. +The base template is coming from [icemodding](https://github.com/icemodding/i3). This is my first attempt at working with i3, so please be aware that this project may have bugs, be unfinished, or contain incomplete features. Enjoy your i3 experience! -## INSTALLATION -At the moment I'm using I3-GAPS [https://github.com/Airblader/i3](https://github.com/Airblader/i3) +## Quick Installation -### Instalation i3 gaps: +For automatic installation, use the provided script: ```bash - apt install dh-autoreconf libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev libxcb-xinerama0-dev libxkbcommon-x11-dev libstartup-notification0-dev libxcb-randr0-dev libxcb-xrm0 libxcb-xrm-dev libxcb-shape0 libxcb-shape0-dev +git clone git@github.com:dzaczek/Uconsole-i3.git +cd Uconsole-i3 +chmod +x install.sh +./install.sh +``` + +## Manual Installation + +This configuration uses I3-GAPS [https://github.com/Airblader/i3](https://github.com/Airblader/i3) + +### Installation i3 gaps: +```bash +sudo apt install dh-autoreconf libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev libxcb-xinerama0-dev libxkbcommon-x11-dev libstartup-notification0-dev libxcb-randr0-dev libxcb-xrm0 libxcb-xrm-dev libxcb-shape0 libxcb-shape0-dev meson ninja-build cd ~/Documents # clone the repository @@ -27,40 +38,155 @@ At the moment I'm using I3-GAPS [https://github.com/Airblader/i3](https://gith mkdir -p build && cd build meson .. sudo ninja - sudo apt install i3blocks i3status rofi fonts-font-awesome - - ``` -open /etc/xdg/lxsession/LXDE-pi/desktop.conf and change windows_manager to i3 ``` + +### Configure LXDE for i3 +Open `/etc/xdg/lxsession/LXDE-pi/desktop.conf` and change window_manager to i3: +```ini [Session] window_manager=i3 ``` -open file /etc/xdg/lxsession/LXDE-pi/autostart and hash lines lxpanel and pcmanfm +Open file `/etc/xdg/lxsession/LXDE-pi/autostart` and comment out lines lxpanel and pcmanfm: ```bash -vim /etc/xdg/lxsession/LXDE-pi/autostart +sudo vim /etc/xdg/lxsession/LXDE-pi/autostart +``` +```ini #@lxpanel --profile LXDE-pi #@pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash ``` -### Confiure and isntall SuckLess Termianl - - ### Configure and install SuckLess Terminal ```bash -sudo -i -cd Documnets +cd ~/Documents git clone https://github.com/LukeSmithxyz/st # OR FROM THERE git://git.suckless.org/st cd st - sudo make install - ``` -### Copy this configuration gaps +### Copy this configuration ```bash cd ~/.config/i3/ -git clone git@github.com:dzaczek/Uconsole-i3.git . -sudo apt install apt-get install maim xclip copyq xdotool +git clone git@github.com:dzaczek/Uconsole-i3.git . +sudo apt install maim xclip copyq xdotool feh pamixer picom rofi ``` + +### Additional Dependencies +```bash +sudo apt install maim xclip copyq xdotool feh pamixer picom rofi i3blocks i3status fonts-font-awesome +``` + +## Keyboard Shortcuts + +**Note:** `$mod` is set to `Alt` (Mod1) in this configuration. + +### Basic Operations +| Shortcut | Action | +|----------|--------| +| `$mod + Enter` | Open terminal (st) | +| `$mod + d` | Open application launcher (rofi) | +| `$mod + Shift + q` | Close focused window | +| `$mod + Shift + c` | Reload i3 configuration | +| `$mod + Shift + r` | Restart i3 | +| `$mod + Shift + e` | Exit i3 (with confirmation) | + +### Window Focus & Movement +| Shortcut | Action | +|----------|--------| +| `$mod + j/k/l/;` | Focus left/down/up/right (vim-style) | +| `$mod + Arrow Keys` | Focus in direction | +| `$mod + Shift + j/k/l/;` | Move window left/down/up/right | +| `$mod + Shift + Arrow Keys` | Move window in direction | +| `$mod + a` | Focus parent container | +| `$mod + space` | Toggle focus between tiling/floating windows | + +### Window Layout +| Shortcut | Action | +|----------|--------| +| `$mod + h` | Split horizontally | +| `$mod + v` | Split vertically | +| `$mod + s` | Stacking layout | +| `$mod + w` | Tabbed layout | +| `$mod + e` | Toggle split layout | +| `$mod + f` | Toggle fullscreen | +| `$mod + Shift + Space` | Toggle floating/tiling | +| `$mod + r` | Enter resize mode (then use j/k/l/; or arrows) | + +### Floating Windows (Uconsole-specific) +| Shortcut | Action | +|----------|--------| +| `$mod + Shift + p` | Move window to right position (695x267px) | +| `$mod + Shift + m` | Move window to left position (695x267px) | + +### Workspaces +| Shortcut | Action | +|----------|--------| +| `$mod + 1-9,0` | Switch to workspace 1-10 | +| `$mod + Shift + 1-9,0` | Move window to workspace 1-9,10 | +| `$mod + Home` | Switch to workspace 1 | +| `$mod + End` | Switch to workspace 10 | +| `$mod + Page Up` | Switch to previous workspace | +| `$mod + Page Down` | Switch to next workspace | + +### Workspace Assignments +- Workspace 1: Terminal +- Workspace 2: Browser (Chrome/Firefox) +- Workspace 3: Telegram +- Workspace 4: Media player +- Workspace 5: Video player (VLC) +- Workspace 6: File manager (Thunar/VirtualBox) +- Workspace 7: Graphics (GIMP) +- Workspace 8: Downloads (qBittorrent) +- Workspace 9: Games +- Workspace 10: Recording (Simplescreenrecorder) + +### Screenshots +#### Save to Files +| Shortcut | Action | +|----------|--------| +| `Print` | Screenshot entire screen → `~/Pictures/screenshot-*.png` | +| `$mod + Print` | Screenshot active window → `~/Pictures/screenshot-*-current.png` | +| `Shift + Print` | Screenshot selected area → `~/Pictures/screenshot-*-selected.png` | + +#### Copy to Clipboard +| Shortcut | Action | +|----------|--------| +| `Ctrl + Print` | Screenshot entire screen → clipboard | +| `Ctrl + $mod + Print` | Screenshot active window → clipboard | +| `Ctrl + Shift + Print` | Screenshot selected area → clipboard | + +### Audio Controls +| Shortcut | Action | +|----------|--------| +| `XF86AudioRaiseVolume` | Increase volume (+5%) | +| `XF86AudioLowerVolume` | Decrease volume (-5%) | +| `XF86AudioMute` | Toggle mute | +| `$mod + m` | Open MOC player in terminal | +| `XF86AudioPlay` | Play/Pause (MOC) | +| `XF86AudioPause` | Play/Pause (MOC) | +| `XF86AudioNext` | Next track (MOC) | +| `XF86AudioPrev` | Previous track (MOC) | +| `XF86AudioStop` | Stop (MOC) | + +### Resize Mode +After pressing `$mod + r`, use: +| Shortcut | Action | +|----------|--------| +| `j / Left` | Shrink width | +| `k / Down` | Grow height | +| `l / Up` | Shrink height | +| `; / Right` | Grow width | +| `Enter / Escape` | Exit resize mode | + +## Features + +- **i3-gaps**: Window gaps for modern look +- **Rofi**: Application launcher +- **Suckless Terminal (st)**: Minimal terminal emulator +- **i3blocks**: Status bar with custom scripts +- **MOC**: Music player integration +- **Screenshot tools**: maim with file/clipboard support +- **Picom**: Compositor for transparency and effects +- **WireGuard VPN**: Status indicator in bar +- **Raspberry Pi monitoring**: Battery and temperature scripts diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..fb3c9fd --- /dev/null +++ b/install.sh @@ -0,0 +1,171 @@ +#!/bin/bash + +# Uconsole-i3 Installation Script +# This script automates the installation of i3-gaps and configuration + +set -e # Exit on error + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Check if running as root for package installation +if [ "$EUID" -ne 0 ]; then + echo -e "${YELLOW}Note: This script needs sudo privileges for package installation${NC}" +fi + +echo -e "${GREEN}=== Uconsole-i3 Installation Script ===${NC}\n" + +# Step 1: Install dependencies +echo -e "${YELLOW}[1/7] Installing dependencies...${NC}" +sudo apt update +sudo apt install -y dh-autoreconf libxcb-keysyms1-dev libpango1.0-dev \ + libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev \ + libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev \ + libxcb-xinerama0-dev libxkbcommon-x11-dev libstartup-notification0-dev \ + libxcb-randr0-dev libxcb-xrm0 libxcb-xrm-dev libxcb-shape0 \ + libxcb-shape0-dev meson ninja-build i3blocks i3status rofi \ + fonts-font-awesome maim xclip copyq xdotool feh pamixer picom \ + numlockx libx11-dev libxft-dev libxext-dev + +echo -e "${GREEN}✓ Dependencies installed${NC}\n" + +# Step 2: Clone and build i3-gaps +echo -e "${YELLOW}[2/7] Building i3-gaps...${NC}" +BUILD_DIR="$HOME/Documents/i3-gaps" +if [ -d "$BUILD_DIR" ]; then + echo -e "${YELLOW}Directory $BUILD_DIR exists. Updating...${NC}" + cd "$BUILD_DIR" + git pull || true +else + mkdir -p ~/Documents + cd ~/Documents + git clone https://www.github.com/Airblader/i3 i3-gaps + cd i3-gaps +fi + +cd "$BUILD_DIR" +mkdir -p build && cd build +if [ -f "build.ninja" ]; then + echo -e "${YELLOW}Previous build found. Rebuilding...${NC}" + sudo ninja +else + meson .. + sudo ninja install +fi + +echo -e "${GREEN}✓ i3-gaps built and installed${NC}\n" + +# Step 3: Configure LXDE autostart +echo -e "${YELLOW}[3/7] Configuring LXDE autostart...${NC}" +DESKTOP_CONF="/etc/xdg/lxsession/LXDE-pi/desktop.conf" +AUTOSTART_FILE="/etc/xdg/lxsession/LXDE-pi/autostart" + +if [ -f "$DESKTOP_CONF" ]; then + echo -e "${YELLOW}Updating $DESKTOP_CONF${NC}" + sudo sed -i 's/window_manager=.*/window_manager=i3/' "$DESKTOP_CONF" || { + echo "[Session]" | sudo tee -a "$DESKTOP_CONF" > /dev/null + echo "window_manager=i3" | sudo tee -a "$DESKTOP_CONF" > /dev/null + } + echo -e "${GREEN}✓ Desktop configuration updated${NC}" +else + echo -e "${RED}Warning: $DESKTOP_CONF not found. Skipping...${NC}" +fi + +if [ -f "$AUTOSTART_FILE" ]; then + echo -e "${YELLOW}Updating $AUTOSTART_FILE${NC}" + # Comment out lxpanel and pcmanfm if not already commented + sudo sed -i 's/^@lxpanel/#@lxpanel/' "$AUTOSTART_FILE" 2>/dev/null || true + sudo sed -i 's/^@pcmanfm/#@pcmanfm/' "$AUTOSTART_FILE" 2>/dev/null || true + echo -e "${GREEN}✓ Autostart configuration updated${NC}" +else + echo -e "${RED}Warning: $AUTOSTART_FILE not found. Skipping...${NC}" +fi + +# Step 4: Install Suckless Terminal (st) +echo -e "${YELLOW}[4/7] Installing Suckless Terminal...${NC}" +ST_DIR="$HOME/Documents/st" +if [ -d "$ST_DIR" ]; then + echo -e "${YELLOW}st directory exists. Updating...${NC}" + cd "$ST_DIR" + git pull || true + sudo make clean install +else + cd ~/Documents + if [ -d "st" ]; then + cd st + git pull || true + sudo make clean install + else + git clone https://github.com/LukeSmithxyz/st + cd st + sudo make install + fi +fi +echo -e "${GREEN}✓ Suckless Terminal installed${NC}\n" + +# Step 5: Create i3 config directory +echo -e "${YELLOW}[5/7] Setting up i3 configuration...${NC}" +I3_CONFIG_DIR="$HOME/.config/i3" +mkdir -p "$I3_CONFIG_DIR" +mkdir -p "$I3_CONFIG_DIR/wallp" +mkdir -p "$HOME/Pictures" # For screenshots + +echo -e "${GREEN}✓ Configuration directories created${NC}\n" + +# Step 6: Copy configuration files +echo -e "${YELLOW}[6/7] Copying configuration files...${NC}" +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Copy main config file +if [ -f "$SCRIPT_DIR/config" ]; then + cp "$SCRIPT_DIR/config" "$I3_CONFIG_DIR/" + echo -e "${GREEN}✓ Config file copied${NC}" +else + echo -e "${RED}Error: config file not found in $SCRIPT_DIR${NC}" + exit 1 +fi + +# Copy i3blocks config +if [ -f "$SCRIPT_DIR/i3blocks.conf" ]; then + cp "$SCRIPT_DIR/i3blocks.conf" "$I3_CONFIG_DIR/" + echo -e "${GREEN}✓ i3blocks.conf copied${NC}" +fi + +# Copy scripts +if [ -d "$SCRIPT_DIR/scripts" ]; then + mkdir -p "$I3_CONFIG_DIR/scripts" + cp "$SCRIPT_DIR/scripts"/* "$I3_CONFIG_DIR/scripts/" 2>/dev/null || true + chmod +x "$I3_CONFIG_DIR/scripts"/* 2>/dev/null || true + echo -e "${GREEN}✓ Scripts copied${NC}" +fi + +# Copy wallpapers +if [ -d "$SCRIPT_DIR/wallp" ]; then + cp -r "$SCRIPT_DIR/wallp"/* "$I3_CONFIG_DIR/wallp/" 2>/dev/null || true + echo -e "${GREEN}✓ Wallpapers copied${NC}" +fi + +echo -e "${GREEN}✓ Configuration files copied${NC}\n" + +# Step 7: Final checks and recommendations +echo -e "${YELLOW}[7/7] Finalizing installation...${NC}" + +# Check if Pictures directory exists for screenshots +if [ ! -d "$HOME/Pictures" ]; then + mkdir -p "$HOME/Pictures" + echo -e "${GREEN}✓ Created Pictures directory for screenshots${NC}" +fi + +echo -e "\n${GREEN}=== Installation Complete! ===${NC}\n" +echo -e "${YELLOW}Next steps:${NC}" +echo -e "1. Log out and log back in, or restart your system" +echo -e "2. i3 will start automatically" +echo -e "3. If prompted, press Enter to accept the default key binding" +echo -e "4. Press $mod + d to open the application launcher (rofi)" +echo -e "\n${YELLOW}Configuration location:${NC} $I3_CONFIG_DIR" +echo -e "${YELLOW}To reload config after changes:${NC} $mod + Shift + c" +echo -e "\n${GREEN}Enjoy your i3 experience!${NC}\n" +