Move i3 modi scripts into this repo

This commit is contained in:
Adam Goldsmith 2023-01-02 13:13:07 -05:00
parent fe9048e14c
commit 3bde1292fc
4 changed files with 126 additions and 1 deletions

View File

@ -1,5 +1,5 @@
configuration { configuration {
modi: "drun,run,sworkspace:~/.config/i3/switch_workspace.py,mworkspace:~/.config/i3/move_to_workspace.py,window,monitor:~/.config/i3/monitor_layout.sh"; modi: "drun,run,sworkspace:~/.config/rofi/i3_switch_workspace.py,mworkspace:~/.config/rofi/i3_move_to_workspace.py,window,monitor:~/.config/rofi/i3_monitor_layout.sh";
show-icons: true; show-icons: true;
sidebar-mode: true; sidebar-mode: true;
} }

101
.config/rofi/i3_monitor_layout.sh Executable file
View File

@ -0,0 +1,101 @@
#!/bin/bash
XRANDR=$(which xrandr)
MONITORS=( $( ${XRANDR} | awk '( $2 == "connected" ){ print $1 }' ) )
NUM_MONITORS=${#MONITORS[@]}
TITLES=()
COMMANDS=()
function gen_xrandr_only()
{
selected=$1
cmd="xrandr --output ${MONITORS[$selected]} --auto "
for entry in $(seq 0 $((${NUM_MONITORS}-1)))
do
if [ $selected != $entry ]
then
cmd="$cmd --output ${MONITORS[$entry]} --off"
fi
done
echo $cmd
}
declare -i index=0
TILES[$index]="Cancel"
COMMANDS[$index]="true"
index+=1
for entry in $(seq 0 $((${NUM_MONITORS}-1)))
do
TILES[$index]="Only ${MONITORS[$entry]}"
COMMANDS[$index]=$(gen_xrandr_only $entry)
index+=1
done
##
# Dual screen options
##
for entry_a in $(seq 0 $((${NUM_MONITORS}-1)))
do
for entry_b in $(seq 0 $((${NUM_MONITORS}-1)))
do
if [ $entry_a != $entry_b ]
then
TILES[$index]="Dual Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}"
COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \
--output ${MONITORS[$entry_b]} --auto --left-of ${MONITORS[$entry_a]}"
index+=1
fi
done
done
##
# Clone monitors
##
for entry_a in $(seq 0 $((${NUM_MONITORS}-1)))
do
for entry_b in $(seq 0 $((${NUM_MONITORS}-1)))
do
if [ $entry_a != $entry_b ]
then
TILES[$index]="Clone Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}"
COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \
--output ${MONITORS[$entry_b]} --auto --same-as ${MONITORS[$entry_a]}"
index+=1
fi
done
done
##
# Generate entries, where first is key.
##
function gen_entries()
{
for a in $(seq 0 $(( ${#TILES[@]} -1 )))
do
echo $a ${TILES[a]}
done
}
if [ -z "$@" ]
then
# Call menu
gen_entries
else
$( ${COMMANDS[$(awk '{print $1}' <<< "$@")]} )
fi

View File

@ -0,0 +1,12 @@
#!/usr/bin/env python3
import sys
import i3ipc
i3 = i3ipc.Connection()
if len(sys.argv) == 1:
print("\n".join([ws.name for ws in i3.get_workspaces()]))
else:
i3.command("move to workspace {sys.argv[1]}")

View File

@ -0,0 +1,12 @@
#!/usr/bin/env python3
import sys
import i3ipc
i3 = i3ipc.Connection()
if len(sys.argv) == 1:
print("\n".join([ws.name for ws in i3.get_workspaces()]))
else:
i3.command("workspace {sys.argv[1]}")