Move i3 modi scripts into this repo
This commit is contained in:
parent
fe9048e14c
commit
3bde1292fc
@ -1,5 +1,5 @@
|
||||
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;
|
||||
sidebar-mode: true;
|
||||
}
|
||||
|
101
.config/rofi/i3_monitor_layout.sh
Executable file
101
.config/rofi/i3_monitor_layout.sh
Executable 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
|
12
.config/rofi/i3_move_to_workspace.py
Executable file
12
.config/rofi/i3_move_to_workspace.py
Executable 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]}")
|
12
.config/rofi/i3_switch_workspace.py
Executable file
12
.config/rofi/i3_switch_workspace.py
Executable 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]}")
|
Loading…
Reference in New Issue
Block a user