--- /dev/null
+####### DO NOT EDIT LIVE CONFIG. generated from /a/bin/distro-setup/i3-sway/gen #######
+
+# random thoughts: what to do with a window I don't have room for?
+# * I could tabify it
+# * I could split an existing window with it
+# * I could send it away to another workspace,
+# * I could resize it to be very small.
+
+
+# todo: think whether this is useful: https://github.com/tmfink/i3-wk-switch
+# todo: see comment by Jakstern551 here for tip about jumping to windows
+# https://old.reddit.com/r/i3wm/comments/k8m4k4/share_your_i3_tips_and_tricks_that_you_have/
+
+# https://i3wm.org/docs/userguide.html#keybindings
+#To get the current mapping of your keys, use xmodmap -pke. To
+#interactively enter a key and see what keysym it is configured to, use
+#xev.
+set $mod Mod4
+
+# for non-gui apps, use this.
+set $ex exec --no-startup-id
+
+bindsym $mod+2 $ex "i3-split-maybe"; exec "pavucontrol"
+# calling without --new-instance makes this to be the instance that links
+# will open in from other applications.
+# unused. todo: consider binding this to some key on the right side of keyboard.
+#bindsym $mod+3 $ex "i3-split-maybe"; exec "abrowser"
+# calling just abrowser mysteriously stopped working,
+# so I figured out this is how to get output, but then
+# it suddenly started working again.
+#bindsym $mod+3 exec "abrowser 2>&1 >/tmp/l"
+#bindsym $mod+3 exec "abrowser --new-instance -P sfw"
+bindsym $mod+4 $ex "i3-abrowser --new-instance -P firefox-main-profile"
+bindsym $mod+5 $ex "/a/bin/ds/stream-interlude"
+bindsym $mod+6 $ex "i3-split-maybe"; exec "/usr/local/bin/start-tor-browser"
+bindsym $mod+7 $ex "/a/bin/ds/myx"
+#bindsym $mod+6 $ex "/a/bin/redshift.sh"
+# bindsym $mod+equal $ex "t s w; t in"
+# bindsym $mod+Home $ex "t out"
+# #bindsym $mod+End $ex "t s x; t in"
+# bindsym $mod+grave $ex "t s lunch; t in; t out -a '45 minutes from now'"
+
+
+bindsym $mod+1 focus parent
+bindsym $mod+shift+1 focus child
+
+# note, i used to have a key: "floating toggle; floating toggle" to
+# as undo split, as suggested here https://github.com/i3/i3/issues/3808
+# but something
+#
+bindsym $mod+grave floating toggle
+bindsym $mod+equal $ex "i3-set-layout splith"
+# move firefox to current workspace.
+# https://i3wm.org/docs/userguide.html#keybindings
+# get class with xprop, example output
+# WM_CLASS(STRING) = "irssi", "URxvt"
+# xprop |& grep WM_CLASS
+bindsym $mod+w $ex "i3-abrowser"
+bindsym $mod+shift+w fullscreen toggle
+
+bindsym $mod+e $ex "i3-emacs"
+# unused
+#bindsym $mod+shift+e
+bindsym $mod+r $ex "/a/bin/ds/xl"
+
+bindsym $mod+backslash $ex "scrot"
+
+bindsym $mod+t $ex "i3-set-layout splitv"
+
+bindsym $mod+g $ex "i3-set-layout tabbed"
+
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+bindsym $mod+u focus left; $ex "i3-mouse-warp"
+# i dont expect to use this much
+bindsym $mod+shift+u $ex "i3-auto-layout-toggle"
+bindsym $mod+i focus right; $ex "i3-mouse-warp"
+bindsym $mod+o focus up; $ex "i3-mouse-warp"
+bindsym $mod+p focus down; $ex "i3-mouse-warp"
+
+bindsym $mod+Left $ex "i3-split-push left"
+bindsym $mod+Right $ex "i3-split-push right"
+bindsym $mod+Up $ex "i3-split-push up"
+bindsym $mod+Down $ex "i3-split-push down"
+
+# for testing in case there is a problem with above.
+# these could be rebound to other things.
+bindsym $mod+shift+Left move left
+bindsym $mod+shift+Right move right
+bindsym $mod+shift+Up move up
+bindsym $mod+shift+Down move down
+
+bindsym $mod+Shift+a move container to workspace 1
+bindsym $mod+a workspace 1
+
+
+bindsym $mod+Shift+s move container to workspace 4
+bindsym $mod+s workspace 4
+
+bindsym $mod+Shift+d move container to workspace 3
+bindsym $mod+d workspace 3
+
+bindsym $mod+Shift+f move container to workspace 2
+bindsym $mod+f workspace 2
+
+bindsym $mod+Shift+z move container to workspace 5
+bindsym $mod+z workspace 5
+
+bindsym $mod+Shift+x move container to workspace 6
+bindsym $mod+x workspace 6
+
+bindsym $mod+v split vertical
+bindsym $mod+Shift+v move workspace to output MON-LEFT
+
+# 122 = XF86AudioLowerVolume, keyboardio function + t
+bindcode 122 $ex "toggle-mute unmute"; mode "ptt"
+mode "ptt" {
+# normally, if we hold down a button, it will start automatically
+# repeating itself, up and down events. But this stops that from
+# happening. Based on testing, making mode be 1st or 2nd doesn't matter.
+bindcode --release 122 $ex "toggle-mute mute"; mode "default"
+}
+# 171 = XF86AudioNext, keyboardio function + g
+bindcode 171 $ex "toggle-mute unmute"
+
+## temp for testing, add antying here
+#bindsym $mod+shift+5 $ex "/a/a.sh"
+
+
+bindsym $mod+b $ex "i3-konsole"
+bindsym $mod+shift+b unmark term; mark term
+
+
+# for use to cleanup extra emacs windows
+# https://faq.i3wm.org/question/7662/reverse-perl-matches-in-criteria-in-i3-config.1.html
+# I found their regex slightly wrong. This is a hacky way to
+# ignore my irc emacs instances, their window titles
+# are irc room names. Another way would be to hack on the
+# window title, or xprop stuff, but I figure I'm switching
+# to wayland soon, lets wait and see how things work there.
+bindsym $mod+shift+6 [class="Emacs" title="^(?!#[a-zA-Z][a-zA-Z-]*$)"] move workspace current
+
+bindsym $mod+c kill
+
+bindsym $mod+Home split horizontal
+bindsym $mod+Shift+End move container to workspace 7
+bindsym $mod+End workspace 7
+bindsym $mod+Shift+q move container to workspace 8
+bindsym $mod+q workspace 8
+
+bindsym $mod+Shift+8 move container to workspace 9
+bindsym $mod+8 workspace 9
+bindsym $mod+Shift+9 move container to workspace 10
+bindsym $mod+9 workspace 10
+
+bindsym $mod+m $ex "dunstctl close-all"
+bindsym $mod+Shift+m border toggle
+
+# 65 = space.
+# toggle tiling / floating.
+#
+# The idea here is: when floating a window, make it sticky and 1080p,
+# because the only reason we want to do this is to keep it on screen
+# when doing an obs broacast. When unfloating a window, just act as a
+# normal unfloat. There is a quirk with this: in a layout with 3 windows,
+# 2 stacked, 1 tall, floating and ufloating the tall one will make it
+# another stacked one, but still 1920x1080, you need to move it to the
+# right to get it back into its tall spot. I could automate this,
+# but I'm not bothering right now
+bindcode $mod+65 $ex obs-auto-scene-switch-toggle; floating toggle; sticky enable; resize set 1920 1080; move position 100 ppt 0 ppt
+
+# change focus between tiling / floating windows
+bindcode $mod+shift+65 focus mode_toggle
+
+bindsym $mod+shift+h $ex /b/ds/stream-clip hc
+bindsym $mod+j $ex "i3-split-maybe"; exec emacsclient -c
+bindsym $mod+shift+j $ex /b/ds/stream-clip up
+bindsym $mod+k $ex "i3-split-maybe"; exec konsole
+bindsym $mod+shift+k $ex /b/ds/stream-clip intro
+bindsym $mod+l $ex dmenu_run
+bindsym $mod+shift+l $ex /b/ds/stream-clip steady
+bindsym $mod+shift+semicolon $ex /b/ds/stream-clip sad
+# note default is 27% on my system76. not sure if these
+# keybinds will screw up other laptop brightness keys.
+bindsym XF86MonBrightnessUp $ex brightnessctl s +5%
+bindsym XF86MonBrightnessDown $ex brightnessctl s 5%-
+for_window [class="copyq" instance="copyq" window_type="normal"] floating enable
+# eh, dont really like web page titles + a long browser name string.
+for_window [class="firefox" instance="Navigator" window_role="browser"] title_format "b"
+bindsym $mod+y $ex copyq-restart
+bindsym $mod+shift+y $ex "i3-chat"
+
+# unused
+#bindsym $mod+shift+F1
+
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below.
+font pango:monospace 7
+
+# not helpful when i have split screen from myx
+#hide_edge_borders vertical
+
+#exec --no-startup-id /usr/lib/x86_64-linux-gnu/libexec/kdeconnectd
+
+# Start clipster daemon
+#exec --no-startup-id /a/opt/clipster/clipster -d
+
+# title bars but no borders. i tried this out a bit
+#default_border normal 0
+
+# default border is like 2 pixels
+default_border pixel 2
+# for debugging
+#default_border normal 10
+
+# I dont see a way to make processing windows act like normal windows,
+# this does it.
+# https://unix.stackexchange.com/questions/450700/opening-a-programme-in-a-floating-window-in-i3
+#
+# This is the info for a processing window launched from the ide.
+# I'm not sure I want it like this, so commenting it out for now.
+#for_window [class="processing-core-PApplet" instance="processing-core-PApplet"] floating disable
+
+# this is the processing window for my app named focus.
+for_window [class="focus" instance="focus"] floating disable
+
+client.focused #4c7899 #285577 #ffffff #2e9ef4 #ff4400
+client.focused_inactive #333333 #5f676a #ffffff #484e50 #B8C8CD
+client.unfocused #333333 #222222 #888888 #292d2e #B8C8CD
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+o exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
+
+bindsym $mod+Shift+i $ex /b/ds/i3-sway/gen
+bindsym $mod+Shift+p restart
+
+
+$ex copyq
+$ex dunst
+# haven't been using it enough to justify automatically running it.]
+#$ex /usr/lib/x86_64-linux-gnu/libexec/kdeconnectd
+$ex /usr/local/bin/awatch
+# this dies when we restart i3.
+exec_always --no-startup-id i3-event-hook
+workspace 1 output
+workspace 2 output
+workspace 3 output
+workspace 4 output
+workspace 5 output
+workspace 6 output
+workspace 7 output
+workspace 8 output
+workspace 9 output
+workspace 10 output
+workspace 11 output
+# by default, new workspaces are created on whatever screen doesn't have
+# one active or else the current one. That is annoying, I have one
+# primary monitor, I don't want a new workspace created on secondary
+# monitor just because I happen be focused on it. This fixes that.
+workspace 1 output primary
+workspace 2 output MON-LEFT
+workspace 3 output MON-RIGHT
+workspace 4 output MON-RIGHT
+workspace 5 output MON-RIGHT
+workspace 6 output MON-RIGHT
+workspace 7 output MON-RIGHT
+workspace 8 output MON-RIGHT
+workspace 9 output MON-RIGHT
+workspace 10 output MON-RIGHT
+
+default_orientation vertical
+
+# bar is needed for kde connect
+bar {
+
+# keep it only on secondary monitor to save space and make for less
+# missing pixes in obs live stream. For docs on this, search "output
+# primary" in the i3 guide.
+output primary
+
+# the builtin prog
+#status_command i3status
+
+#for faster testing
+#status_command /a/bin/ds/filesystem/usr/local/bin/myi3status
+status_command /usr/local/bin/myi3status
+# note: old wip command: /p/c/myi3life
+
+
+font pango:monospace 18
+
+tray_output primary
+
+# I found I didn't need these.
+# workspace_buttons no
+
+# note /a/c/myx adds the last bit to this file conditionally.
+mode hide
+hidden_state hide
+}
+bindsym $mod+Shift+t move workspace to output