Giter Site home page Giter Site logo

i3-wsman / i3-wsman Goto Github PK

View Code? Open in Web Editor NEW
22.0 3.0 1.0 3.86 MB

Create, reorder, group, and focus workspaces easily in i3. Fully configurable with enhanced polybar modules.

License: GNU Lesser General Public License v3.0

Rust 99.73% Shell 0.27%
i3 i3-gaps i3bar i3blocks i3wm polybar polybar-module workspaces

i3-wsman's Introduction

i3-wsman i3-wsman

Create, reorder, group, and focus workspaces fast and easily in i3.

Features

Focus Mode: Eliminate Distractions

Enable Focus Mode: Use groups and focus mode to hide workspaces so you can focus.

i3-wsman enables distrction free

Stay Focused, by limiting navigation to workspaces in the current focus mode.

i3-wsman allows you to stay focused

Allow Important Distractions Through: Urgent workspaces will peek through, so you don't miss anything.

i3-wsman allows important distractions through

Multitask: Right-click to focus multiple groups at a time.

i3-wsman allows you to multitask

Quickly Group Workspaces: Middle-click to assign the current workspace to a group.

Organize and Create Workspaces

No More Looping: Creating a workspace is now as easy as going to the next workspace! Workspaces are created automatically.

i3-wsman creates new workspaces

Organize Workspaces: Reorder workspaces left and right to optimize workflow.

i3-wsman allows reordering workspaces

Create Adjacent Workspaces: Squeeze in a new workspace to the left or right, so you don't have to reorder!

i3-wsman allows creating adjacent workspaces

Current Features

Focus Mode

  • Assign workspaces to groups
  • Select one or more groups to focus
    • Optional: Auto-focus on nearest workspace
  • Multi-monitor support
    • Optional: Per-monitor groups and focus mode

Create and Navigate

  • Reorder workspaces
  • Create adjacent workspace
  • Next/Prev Workspace
    • Optional: Create new, loop, or do nothing
  • New workspaces inherit the group of the current workspace

Configuration

  • i3-wsman configuration
    • New Startup, Create, and Navigation options coming
  • Polybar module formatting and styling

Coming Soon

  • Finish i3-wsman configuration
  • Polybar formatting:
    • Last missing label styles: label-*-minlen, -maxlen, -ellipsis, -alignment
    • Add missing labels: label-separator, label-output-separator
  • CLI Configurator for config and polybar styling
  • Move window/container to next/prev workspace
  • Move window/container to new workspace on the left/right
  • Auto-assign new workspace based on application

Future Roadmap

  • Polybar animations for actions (fade out workspaces, animation for swapping, etc...)
  • New UI for assigning Workspace to Group
  • Workspace Picker UI: Preview workspaces Expose-style
  • Assign a workspace to multiple groups (maybe?)

Getting Started

This project is brand new. These steps will become easier and more automated soon. Star and watch this repo for updates!

Step 1. Download or Build

Download from Releases Page

  1. Download the i3-wsman executable from the Releases Page
  2. Place it somewhere in your PATH
  3. Ensure that it is executable (chmod +x)

OR, Build from Source

  1. Clone this repo
  2. Build the project with cargo build --release

Step 2. Install

Distro-specific packages will be coming soon. Star and watch this repo for updates!

  • Install i3-wsm by placing it in your PATH

Step 3. Configure

  1. Copy examples/i3-wsman.toml to ~/.config/i3/i3-wsman.toml (CLI Configurator coming soon)
  2. Update your ~/.config/i3/config
    • Be sure to add exec --no-startup-id "i3-wsman polybar watch"
  3. Update your ~/.config/polybar/config.ini
Click to see an example i3/config
# switch to workspace
bindsym $mod+1 exec --no-startup-id "i3-wsman goto 1"
bindsym $mod+2 exec --no-startup-id "i3-wsman goto 2"
bindsym $mod+3 exec --no-startup-id "i3-wsman goto 3"
bindsym $mod+4 exec --no-startup-id "i3-wsman goto 4"
bindsym $mod+5 exec --no-startup-id "i3-wsman goto 5"
bindsym $mod+6 exec --no-startup-id "i3-wsman goto 6"
bindsym $mod+7 exec --no-startup-id "i3-wsman goto 7"
bindsym $mod+8 exec --no-startup-id "i3-wsman goto 8"
bindsym $mod+9 exec --no-startup-id "i3-wsman goto 9"
bindsym $mod+0 exec --no-startup-id "i3-wsman goto 10"

# Left/Right Navigation
# Ctrl + Super + Left/Right
bindsym $mod+Ctrl+Left exec --no-startup-id "i3-wsman prev create group nogroup output"
bindsym $mod+Ctrl+Right exec --no-startup-id "i3-wsman next create group nogroup output"

# Reorder Workspace
# Ctrl + Super + Shift + Left/Right
bindsym $mod+Ctrl+Shift+Left exec --no-startup-id "i3-wsman reorder left"
bindsym $mod+Ctrl+Shift+Right exec --no-startup-id "i3-wsman reorder right"

# Create adjacent workspace
# Ctrl + Alt + Super + Left/Right
bindsym $mod+Ctrl+Mod1+Left exec --no-startup-id "i3-wsman adjacent left"
bindsym $mod+Ctrl+Mod1+Right exec --no-startup-id "i3-wsman adjacent right"

# Assign workspace to group
# Super + Shift + g
bindsym $mod+Shift+g exec --no-startup-id i3-input -F 'exec --no-startup-id "i3-wsman group assign %s"' -P 'Group: '

# Rename workspace
# Super + Shift + n
bindsym $mod+Shift+n exec --no-startup-id i3-input -F 'exec --no-startup-id "i3-wsman rename %s"' -P 'Workspace Name: '

# Start the i3-wsman watcher
exec --no-startup-id "i3-wsman polybar watch"
Click to see an example polybar/config.ini
[bar/my-bar]
; Must enable ipc!
enable-ipc = true
; ...
modules-left = i3wsm-groups i3wsm-workspaces i3wsm-toggle-hidden

[module/i3wsm-groups]
type = custom/ipc
hook-0 = i3-wsman polybar module-groups
initial = 1
format = <label>
format-font = 3

[module/i3wsm-toggle-hidden]
type = custom/ipc
hook-0 = i3-wsman polybar module-toggle-hidden
initial = 1
format = <label>
format-font = 3

[module/i3wsm-workspaces]
type = custom/ipc
hook-0 = i3-wsman polybar module-workspaces
initial = 1
format = <label>
format-font = 3

i3-wsman's People

Contributors

swivelgames avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

inakleinbottle

i3-wsman's Issues

Create Polybar Daemon

i3-wsman polybar run

  • Configuration
    • Configure bars per output
  • Start bars for each output (as specified in config)
  • Run watch to notify i3-wsman modules

Polybar: Implement scroll

Polybar Configuration

  • [i3-wsman]
    • enable-scroll = bool
    • wrapping-scroll = bool
    • reverse-scroll = bool

Move Container

  • Move Container to next/prev workspace
  • Move Container to new next/prev workspace

Create `i3-wsman init` function

  • Read $XDG_CONFIG_HOME/polybar/config.ini, copy internal/i3
    • Support for different configurations for different bars??
  • Init Quiz / Walkthrough to customize config first time around

Remember last focused workspace when switching groups

When toggling between two groups, rather than jumping to the closest workspace, there should be an option to "remember" the workspace that was focused when the previous group was activated and switch to that instead.

Documentation Walkthrough

Documentation Types

  • Reference
  • Topic Guides
  • Tutorials

Documentation Areas

  • Improved README
  • Configuration
  • CLI Commands

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.