MCPcopy Index your code
hub / github.com/Cretezy/i3-back

github.com/Cretezy/i3-back @v0.3.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.2 ↗ · + Follow
4 symbols 6 edges 1 files 1 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

i3-back

An i3/Sway utility to switch focus to your last focused window. Allows for behavior similar to Alt+Tab on other desktop environments.

Features:

  • Can switch between your 2 most recent windows
  • Runs a daemon (background process) to listen for focus changes and sets a mark
  • Supports i3 and Sway
  • Supports floating windows
  • Can be binded to any key through i3's bindsym

Demo

https://user-images.githubusercontent.com/2672503/221384419-3d62413d-8987-4147-82bc-5e87cea8bb90.mp4

Installation

i3-back requires i3/Sway. It is written in Rust. It can be installed through many method:

  • Cargo (Rust's package manager) package:

cargo install i3-back

yay -S i3-back-bin # Or with paru or other AUR wrappers # Or manually: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages

Setup

In your i3/Sway configuration (~/.config/i3/config/~/.config/sway/config):

# Start the daemon which listens to focus changes and sets _back mark
exec --no-startup-id ~/.cargo/bin/i3-back

# Bind a switch key, which focuses the previously focused window
bindsym $mod+Tab [con_mark=_back] focus

Replace ~/.cargo/bin with wherever the i3-back binary is placed if not installed through Cargo.

Options

Options are passed to i3-back as flags. Use --help/-h to see all options.

Example exec with options:

exec --no-startup-id ~/.cargo/bin/i3-back --debug --mark _last

Available options:

  • --help/-h: See help text. Also see --version
  • --mark <MARK>/-m <MARK>: Change the default _back mark name. Make sure to update your switcher bind's con_mark to match
  • --debug/-d: Print extra debugging information

Example i3-back --help:

An i3/Sway utility to switch focus to your last focused window. Allows for behavior similar to Alt+Tab on other desktop environments.

Usage: i3-back [OPTIONS]

Options:
  -m, --mark <MARK>  Change the name of the mark to set [default: _back]
  -d, --debug        Print extra debugging information
  -h, --help         Print help
  -V, --version      Print version

How it works

The daemon (i3-back) listen for i3 window events (through i3's socket, from the I3SOCK environment variable). When a window event is received, i3-back records the previously focused window ID. When the previous focus has changed, it sets the _back mark (or whichever is configured through the --mark flag) to the last focused window.

When the switch bind is called (through i3's bindsym), it focuses the mark set by the daemon.

Prior work

Core symbols most depended-on inside this repo

find_focused_id
called by 2
src/main.rs
run
called by 1
src/main.rs
main
called by 0
src/main.rs

Shape

Function 3
Class 1

Languages

Rust100%

Modules by API surface

src/main.rs4 symbols

For agents

$ claude mcp add i3-back \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact