Helps you enforce a layout per workspace

i3-layout-per-workspace

This tool will allow you to force a layout on a workspace.

Requirements

You must have go 1.17+ installed.

also, this tool uses the official golang i3 IPC interface, which comes with two requirements:

  • The i3(1) binary must be in $PATH so that the IPC socket path can be retrieved.
  • For transparent version checks to work, the running i3 version must be ≥ 4.3 (released 2012-09-19).

https://github.com/i3/go-i3#assumptions

Setup

Feel free to change the path of the clone to wherever your want :)

  • clone the repostiory => git clone https://github.com/JulienTant/i3-layout-per-workspace.git ~/.config/i3/i3-layout-per-workspace
  • compile the code (make or using go build) => cd ~/.config/i3/i3-layout-per-workspace; make
    • it will create the file binary ~/.config/i3/layout-per-ws/layout-per-ws
  • add a exec or exec_always command in your i3 config file (~/.config/i3/config) like so:
exec_always --no-startup-id ~/.config/i3/layout-per-ws/layout-per-ws "your workspace name" tabbed "second workspace" stacked

it also works with variables

set $ws_browser "Browser"
set $ws_code "IDE"
exec_always --no-startup-id ~/.config/i3/layout-per-ws/layout-per-ws $ws_code stacked $ws_messaging tabbed

Usage

You will have to choose between the 4 different layouts offer by i3: splith, splitv, stacked or tabbed

For each workspace that you want to force on a certain layout, you will have to add the pair "workspace name" "layout" as an argument to the program.

So if I have a workspace Messaging that I always want stacked, and a workspace Code Zone that I always want tabbed. I will run: layout-per-ws "Messaging" "stacked" "Code Zone" "tabbed"

While it's not mandatory to have each argument quoted if they don't contain a space or a unicode character, it will make your life easier if something does not work.

The software also log to STDOUT a few stuff, so feel free to try it out of i3 before adding it in the config!

# I'm using Unicode characters here, it does not work on github :P
$ ./layout-per-ws " Messaging" "tabbed" " IDE" "stacked"

2021/12/19 20:54:48 building pairs
2021/12/19 20:54:48  Messaging => tabbed
2021/12/19 20:54:48  IDE => stacked
Owner
Similar Resources

Go http.RoundTripper that emits open telemetry metrics. This helps you easily get metrics for all external APIs you interact with.

go-otelroundtripper This package provides an easy way to collect http related metrics (e.g Response times, Status Codes, number of in flight requests

Jan 8, 2023

Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own endpoint.

Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own endpoint.

🤖 security-slacker Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own e

Nov 29, 2022

Golang daemon to update i3 workspace icons

i3-icons-daemon Is a lightweight golang daemon service that updates your i3 workspace based on the programs that are running in your workspace's windo

Jul 29, 2022

Production Ready GO - Development Workspace

dev_ProdGO Production Ready GO - Development Workspace Install and Check Version MacOS $brew install go/golang $go version $mkdir -p $HOME/go/{bin,sr

Jan 6, 2022

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Jan 27, 2022

Simple tool that updates Visual Studio Code workspace(s) to include Go modules in gopath/src, then launches VSCode if only one modified.

Simple tool that updates Visual Studio Code workspace(s) to include Go modules in gopath/src, then launches VSCode if only one modified.

Jan 27, 2022

ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

May 8, 2022

Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats.

Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats.

Fortio Fortio (Φορτίο) started as, and is, Istio's load testing tool and now graduated to be its own project. Fortio is also used by, among others, Me

Jan 2, 2023

Go middleware for monetizing your API on a per-request basis with Bitcoin and Lightning ⚡️

ln-paywall Go middleware for monetizing your API on a per-request basis with Bitcoin and Lightning ⚡️ Middlewares for: net/http HandlerFunc net/http H

Jan 6, 2023

DNS server with per-client targeted responses

GeoDNS servers This is the DNS server powering the NTP Pool system and other similar services. Questions or suggestions? For bug reports or feature re

Dec 15, 2022

libraries for various programming languages that make it easy to generate per-process trace files that can be loaded into chrome://tracing

libraries for various programming languages that make it easy to generate per-process trace files that can be loaded into chrome://tracing

chrometracing: chrome://tracing trace_event files The chrometracing directory contains libraries for various programming languages that make it easy t

Oct 6, 2022

Golang port of simdjson: parsing gigabytes of JSON per second

Golang port of simdjson: parsing gigabytes of JSON per second

This is a Golang port of simdjson, a high performance JSON parser developed by Daniel Lemire and Geoff Langdale. It makes extensive use of SIMD instructions to achieve parsing performance of gigabytes of JSON per second.

Dec 30, 2022

Simple tool to handle hosts file black lists that can remove comments, remove duplicates, compress to 9 domains per line, add IPv6 entries, as well as can convert black lists to multiple other black list formats compatible with other software.

Hosts-BL Simple tool to handle hosts file black lists that can remove comments, remove duplicates, compress to 9 domains per line, add IPv6 entries, a

Sep 23, 2022

rtsp to webrtc proxy with websocket signaling, currently limited to single h264 stream per endpoint

rtp-to-webrtc rtp-to-webrtc demonstrates how to consume a RTP stream video UDP, and then send to a WebRTC client. With this example we have pre-made G

Aug 6, 2022

A simple server for sending and receiving messages in real-time per WebSocket. (Includes a sleek web-ui)

A simple server for sending and receiving messages in real-time per WebSocket. (Includes a sleek web-ui)

A simple server for sending and receiving messages in real-time per WebSocket. (Includes a sleek web-ui)

Jan 9, 2023

Cpu-profiling - Basic example of CPU Profiling in Golang which shows the bottlenecks and how much time is spent per function

cpu-profiling Basic example of CPU Profiling in Golang which shows the bottlenec

Aug 2, 2022

S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

May 13, 2022

A Multi Consumer per Message Queue with persistence and Queue Stages.

 A Multi Consumer per Message Queue with persistence and Queue Stages.

CrimsonQ A Multi Consumer per Message Queue with persistence and Queue Stages. Under Active Development Crimson Queue allows you to have multiple cons

Jul 30, 2022

A merkle tree (with proofs) in Go as per RFC6962

merkletree An implementation of a merkle tree based on the specification provided for Certificate Transparency Usage package main import ( "fmt" "

Dec 7, 2022
Configure is a Go package that gives you easy configuration of your project through redundancy

Configure Configure is a Go package that gives you easy configuration of your project through redundancy. It has an API inspired by negroni and the fl

Sep 26, 2022
Go.work-workspace-example - Go1.18 workspace example

Go.work-workspace-example - Go1.18 workspace example

Jan 20, 2022
Enforcing per team quota (sum of used resources across all their namespaces) and delegating the per namespace quota to users.

Quota Operator Enforcing per team quota (sum of used resources across all their namespaces) and delegating the per namespace quota to users. Instructi

Nov 9, 2022
Enforce git message commit consistency
Enforce git message commit consistency

Gommit Gommit analyze commits messages to ensure they follow defined pattern. Summary Setup Usage Practical Usage Third Part Libraries Setup Download

Jan 4, 2023
Enforce default values on structs in Go

Defaults Enforce default values on struct fields. type User struct { Name string `default:"Goku"` Power float64 `default:"9000.01"` } var u

Aug 23, 2022
mesh-kridik is an open-source security scanner that performs various security checks on a Kubernetes cluster with istio service mesh and is leveraged by OPA (Open Policy Agent) to enforce security rules.
mesh-kridik is an open-source security scanner that performs various security checks on a Kubernetes cluster with istio service mesh and is leveraged by OPA (Open Policy Agent) to enforce security rules.

mesh-kridik Enhance your Kubernetes service mesh security !! mesh-kridik is an open-source security scanner that performs various security checks on a

Dec 14, 2022
GitHub App to set and enforce security policies

Allstar Allstar is a GitHub App installed on organizations or repositories to set and enforce security policies. Its goal is to be able to continuousl

Jan 5, 2023
A standalone reverse-proxy to enforce Webauthn authentication
A standalone reverse-proxy to enforce Webauthn authentication

A standalone reverse-proxy to enforce Webauthn authentication. It can be inserted in front of sensitive services or even chained with other proxies (e

Dec 24, 2022
This is an example of a keep-it-simple directory layout for Go projects that was created using DDD principles, please copy and share if you like it.

DDD Go Template This project was created to illustrate a great architectural structure I developed together with @fabiorodrigues in the period I was w

Dec 5, 2022
shops is a simple command-line tool written in Go that helps you simplify the way you manage configuration across a set of machines.

shops is a simple command-line tool written in Go that helps you simplify the way you manage configuration across a set of machines. shops is your configuration management tool of choice when Chef, Puppet, Ansible are all too complicated and all you really want to do is run a bunch of regular shell against a set of hosts.

Jul 5, 2021