@ 260802.2

220313.1 · 9cde8d64dcf40229401b6e7736940f0d2c3fa134

machine: add new 'kodos' laptop for kait

reading declarations

.config/ag/alacritty/kodos/alacritty.yml

new file mode 100644@@ -0,0 +1,391 @@+# Configuration for Alacritty, the GPU enhanced terminal emulator+++# Any items in the `env` entry below will be added as+# environment variables. Some entries may override variables+# set by alacritty it self.+env:+  # TERM env customization.+  #+  # If this property is not set, alacritty will set it to xterm-256color.+  #+  # Note that some xterm terminfo databases don't declare support for italics.+  # You can verify this by checking for the presence of `smso` and `sitm` in+  # `infocmp xterm-256color`.+  TERM: xterm-256color++window:+  # Background opacity+  opacity: 1.0++  dynamic_title: true++  # Window dimensions in character columns and lines+  # Falls back to size specified by window manager if set to 0x0.+  # (changes require restart)+  dimensions:+    columns: 0+    lines: 0++  # Adds this many blank pixels of padding around the window+  # Units are physical pixels; this is not DPI aware.+  # (change requires restart)+  padding:+    x: 2+    y: 2++  # Window decorations+  # Setting this to false will result in window without borders and title bar.+  decorations: full++# Display tabs using this many cells (changes require restart)+# tabspaces: 4++# When true, bold text is drawn using the bright variant of colors.+draw_bold_text_with_bright_colors: true++# Font configuration (changes require restart)+#+# Important font attributes like antialiasing, subpixel aa, and hinting can be+# controlled through fontconfig. Specifically, the following attributes should+# have an effect:+#+# * hintstyle+# * antialias+# * lcdfilter+# * rgba+#+# For instance, if you wish to disable subpixel antialiasing, you might set the+# rgba property to "none". If you wish to completely disable antialiasing, you+# can set antialias to false.+#+# Please see these resources for more information on how to use fontconfig+#+# * https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration+# * file:///usr/share/doc/fontconfig/fontconfig-user.html+font:+  # The normal (roman) font face to use.+  normal:+    family: 'Hack Nerd Font' # should be "Menlo" or something on macOS.+    # Style can be specified to pick a specific face.+    # style: Regular++  # The bold font face+  bold:+    family: 'Hack Nerd Font' # should be "Menlo" or something on macOS.+    # Style can be specified to pick a specific face.+    # style: Bold++  # The italic font face+  italic:+    family: 'Hack Nerd Font' # should be "Menlo" or something on macOS.+    # Style can be specified to pick a specific face.+    # style: Italic++  # Point size of the font+  size: 8.0++  # Offset is the extra space around each character. offset.y can be thought of+  # as modifying the linespacing, and offset.x as modifying the letter spacing.+  offset:+    x: 0+    y: 0++  # Glyph offset determines the locations of the glyphs within their cells with+  # the default being at the bottom. Increase the x offset to move the glyph to+  # the right, increase the y offset to move the glyph upward.+  glyph_offset:+    x: 0+    y: 0++  # OS X only: use thin stroke font rendering. Thin strokes are suitable+  # for retina displays, but for non-retina you probably want this set to+  # false.+  use_thin_strokes: true++# Use custom cursor colors. If true, display the cursor in the cursor.foreground+# and cursor.background colors, otherwise invert the colors of the cursor.+# custom_cursor_colors: false++# Colors+colors:+  # Default colors+  primary:+    background: '0xffffff'+    foreground: '0x000000'++  # Colors the cursor will use if `custom_cursor_colors` is true+  cursor:+    text: '0xffffff'+    cursor: '0x000000'++  # Normal colors+  normal:+    black:   '0x000000'+    red:     '0xb21818'+    green:   '0x18b218'+    yellow:  '0xb26818'+    blue:    '0x1818b2'+    magenta: '0xb218b2'+    cyan:    '0x18b2b2'+    white:   '0xb2b2b2'++  # Bright colors+  bright:+    black:   '0x686868'+    red:     '0xff5454'+    green:   '0x00aa00'+    yellow:  '0xffa061'+    blue:    '0x5454ff'+    magenta: '0xff64ff'+    cyan:    '0x54ffff'+    white:   '0xffffff'++  # Dim colors (Optional)+  dim:+    black:   '0x000000'+    red:     '0xb21818'+    green:   '0x18b218'+    yellow:  '0xb26818'+    blue:    '0x1818b2'+    magenta: '0xb218b2'+    cyan:    '0x18b2b2'+    white:   '0xb2b2b2'++# Visual Bell+#+# Any time the BEL code is received, Alacritty "rings" the visual bell. Once+# rung, the terminal background will be set to white and transition back to the+# default background color. You can control the rate of this transition by+# setting the `duration` property (represented in milliseconds). You can also+# configure the transition function by setting the `animation` property.+#+# Possible values for `animation`+# `Ease`+# `EaseOut`+# `EaseOutSine`+# `EaseOutQuad`+# `EaseOutCubic`+# `EaseOutQuart`+# `EaseOutQuint`+# `EaseOutExpo`+# `EaseOutCirc`+# `Linear`+#+# To completely disable the visual bell, set its duration to 0.+#+bell:+  animation: EaseOutExpo+  duration: 0++# Mouse bindings+#+# Currently doesn't support modifiers. Both the `mouse` and `action` fields must+# be specified.+#+# Values for `mouse`:+# - Middle+# - Left+# - Right+# - Numeric identifier such as `5`+#+# Values for `action`:+# - Paste+# - PasteSelection+# - Copy (TODO)+mouse_bindings:+  - { mouse: Middle, action: PasteSelection }++mouse:+  hide_when_typing: true++  # Click settings+  #+  # The `double_click` and `triple_click` settings control the time+  # alacritty should wait for accepting multiple clicks as one double+  # or triple click.+  double_click: { threshold: 300 }+  triple_click: { threshold: 300 }++  # Faux Scrollback+  #+  # The `faux_scrollback_lines` setting controls the number+  # of lines the terminal should scroll when the alternate+  # screen buffer is active. This is used to allow mouse+  # scrolling for applications like `man`.+  #+  # To disable this completely, set `faux_scrollback_lines` to 0.+  faux_scrolling_lines: 5++selection:+  semantic_escape_chars: ",│`|:\"' ()[]{}<>"++# hide_cursor_when_typing: true+++# Style of the cursor+#+# Values for 'cursor_style':+# - Block+# - Underline+# - Beam+cursor:+  style: Block++# Live config reload (changes require restart)+live_config_reload: true++# Shell+#+# You can set shell.program to the path of your favorite shell, e.g. /bin/fish.+# Entries in shell.args are passed unmodified as arguments to the shell.+#+# shell:+#   program: /bin/bash+#   args:+#     - --login++# Key bindings+#+# Each binding is defined as an object with some properties. Most of the+# properties are optional. All of the alphabetical keys should have a letter for+# the `key` value such as `V`. Function keys are probably what you would expect+# as well (F1, F2, ..). The number keys above the main keyboard are encoded as+# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`,+# etc.  These all match the glutin::VirtualKeyCode variants.+#+# A list with all available `key` names can be found here:+# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants+#+# Possible values for `mods`+# `Command`, `Super` refer to the super/command/windows key+# `Control` for the control key+# `Shift` for the Shift key+# `Alt` and `Option` refer to alt/option+#+# mods may be combined with a `|`. For example, requiring control and shift+# looks like:+#+# mods: Control|Shift+#+# The parser is currently quite sensitive to whitespace and capitalization -+# capitalization must match exactly, and piped items must not have whitespace+# around them.+#+# Either an `action`, `chars`, or `command` field must be present.+#   `action` must be one of `Paste`, `PasteSelection`, `Copy`, or `Quit`.+#   `chars` writes the specified string every time that binding is activated.+#     These should generally be escape sequences, but they can be configured to+#     send arbitrary strings of bytes.+#   `command` must be a map containing a `program` string, and `args` array of+#     strings. For example:+#     - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } }+#+# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence+# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux,+# then run `showkey -a` to get the sequence associated to a key combination.+key_bindings:+  # - { key: N,        mods: Control|Shift,    command: { program: "alacritty" } }+  - { key: V,        mods: Control|Shift,    action: Paste               }+  - { key: C,        mods: Control|Shift,    action: Copy                }+  - { key: Q,        mods: Command, action: Quit                         }+  - { key: W,        mods: Command, action: Quit                         }+  - { key: Insert,   mods: Shift,   action: PasteSelection               }+  - { key: Key0,     mods: Control, action: ResetFontSize                }+  - { key: Equals,   mods: Control, action: IncreaseFontSize             }+  - { key: Minus, mods: Control, action: DecreaseFontSize             }+  - { key: Home,                    chars: "\x1bOH",   mode: AppCursor   }+  - { key: Home,                    chars: "\x1b[H",   mode: ~AppCursor  }+  - { key: End,                     chars: "\x1bOF",   mode: AppCursor   }+  - { key: End,                     chars: "\x1b[F",   mode: ~AppCursor  }+  - { key: PageUp,   mods: Shift,   chars: "\x1b[5;2~"                   }+  - { key: PageUp,   mods: Control, chars: "\x1b[5;5~"                   }+  - { key: PageUp,                  chars: "\x1b[5~"                     }+  - { key: PageDown, mods: Shift,   chars: "\x1b[6;2~"                   }+  - { key: PageDown, mods: Control, chars: "\x1b[6;5~"                   }+  - { key: PageDown,                chars: "\x1b[6~"                     }+  - { key: Tab,      mods: Shift,   chars: "\x1b[Z"                      }+  - { key: Back,                    chars: "\x7f"                        }+  - { key: Back,     mods: Alt,     chars: "\x1b\x7f"                    }+  - { key: Insert,                  chars: "\x1b[2~"                     }+  - { key: Delete,                  chars: "\x1b[3~"                     }+  - { key: Left,     mods: Shift,   chars: "\x1b[1;2D"                   }+  - { key: Left,     mods: Control, chars: "\x1b[1;5D"                   }+  - { key: Left,     mods: Alt,     chars: "\x1b[1;3D"                   }+  - { key: Left,                    chars: "\x1b[D",   mode: ~AppCursor  }+  - { key: Left,                    chars: "\x1bOD",   mode: AppCursor   }+  - { key: Right,    mods: Shift,   chars: "\x1b[1;2C"                   }+  - { key: Right,    mods: Control, chars: "\x1b[1;5C"                   }+  - { key: Right,    mods: Alt,     chars: "\x1b[1;3C"                   }+  - { key: Right,                   chars: "\x1b[C",   mode: ~AppCursor  }+  - { key: Right,                   chars: "\x1bOC",   mode: AppCursor   }+  - { key: Up,       mods: Shift,   chars: "\x1b[1;2A"                   }+  - { key: Up,       mods: Control, chars: "\x1b[1;5A"                   }+  - { key: Up,       mods: Alt,     chars: "\x1b[1;3A"                   }+  - { key: Up,                      chars: "\x1b[A",   mode: ~AppCursor  }+  - { key: Up,                      chars: "\x1bOA",   mode: AppCursor   }+  - { key: Down,     mods: Shift,   chars: "\x1b[1;2B"                   }+  - { key: Down,     mods: Control, chars: "\x1b[1;5B"                   }+  - { key: Down,     mods: Alt,     chars: "\x1b[1;3B"                   }+  - { key: Down,                    chars: "\x1b[B",   mode: ~AppCursor  }+  - { key: Down,                    chars: "\x1bOB",   mode: AppCursor   }+  - { key: F1,                      chars: "\x1bOP"                      }+  - { key: F2,                      chars: "\x1bOQ"                      }+  - { key: F3,                      chars: "\x1bOR"                      }+  - { key: F4,                      chars: "\x1bOS"                      }+  - { key: F5,                      chars: "\x1b[15~"                    }+  - { key: F6,                      chars: "\x1b[17~"                    }+  - { key: F7,                      chars: "\x1b[18~"                    }+  - { key: F8,                      chars: "\x1b[19~"                    }+  - { key: F9,                      chars: "\x1b[20~"                    }+  - { key: F10,                     chars: "\x1b[21~"                    }+  - { key: F11,                     chars: "\x1b[23~"                    }+  - { key: F12,                     chars: "\x1b[24~"                    }+  - { key: F1,       mods: Shift,   chars: "\x1b[1;2P"                   }+  - { key: F2,       mods: Shift,   chars: "\x1b[1;2Q"                   }+  - { key: F3,       mods: Shift,   chars: "\x1b[1;2R"                   }+  - { key: F4,       mods: Shift,   chars: "\x1b[1;2S"                   }+  - { key: F5,       mods: Shift,   chars: "\x1b[15;2~"                  }+  - { key: F6,       mods: Shift,   chars: "\x1b[17;2~"                  }+  - { key: F7,       mods: Shift,   chars: "\x1b[18;2~"                  }+  - { key: F8,       mods: Shift,   chars: "\x1b[19;2~"                  }+  - { key: F9,       mods: Shift,   chars: "\x1b[20;2~"                  }+  - { key: F10,      mods: Shift,   chars: "\x1b[21;2~"                  }+  - { key: F11,      mods: Shift,   chars: "\x1b[23;2~"                  }+  - { key: F12,      mods: Shift,   chars: "\x1b[24;2~"                  }+  - { key: F1,       mods: Control, chars: "\x1b[1;5P"                   }+  - { key: F2,       mods: Control, chars: "\x1b[1;5Q"                   }+  - { key: F3,       mods: Control, chars: "\x1b[1;5R"                   }+  - { key: F4,       mods: Control, chars: "\x1b[1;5S"                   }+  - { key: F5,       mods: Control, chars: "\x1b[15;5~"                  }+  - { key: F6,       mods: Control, chars: "\x1b[17;5~"                  }+  - { key: F7,       mods: Control, chars: "\x1b[18;5~"                  }+  - { key: F8,       mods: Control, chars: "\x1b[19;5~"                  }+  - { key: F9,       mods: Control, chars: "\x1b[20;5~"                  }+  - { key: F10,      mods: Control, chars: "\x1b[21;5~"                  }+  - { key: F11,      mods: Control, chars: "\x1b[23;5~"                  }+  - { key: F12,      mods: Control, chars: "\x1b[24;5~"                  }+  - { key: F1,       mods: Alt,     chars: "\x1b[1;6P"                   }+  - { key: F2,       mods: Alt,     chars: "\x1b[1;6Q"                   }+  - { key: F3,       mods: Alt,     chars: "\x1b[1;6R"                   }+  - { key: F4,       mods: Alt,     chars: "\x1b[1;6S"                   }+  - { key: F5,       mods: Alt,     chars: "\x1b[15;6~"                  }+  - { key: F6,       mods: Alt,     chars: "\x1b[17;6~"                  }+  - { key: F7,       mods: Alt,     chars: "\x1b[18;6~"                  }+  - { key: F8,       mods: Alt,     chars: "\x1b[19;6~"                  }+  - { key: F9,       mods: Alt,     chars: "\x1b[20;6~"                  }+  - { key: F10,      mods: Alt,     chars: "\x1b[21;6~"                  }+  - { key: F11,      mods: Alt,     chars: "\x1b[23;6~"                  }+  - { key: F12,      mods: Alt,     chars: "\x1b[24;6~"                  }+  - { key: F1,       mods: Super,   chars: "\x1b[1;3P"                   }+  - { key: F2,       mods: Super,   chars: "\x1b[1;3Q"                   }+  - { key: F3,       mods: Super,   chars: "\x1b[1;3R"                   }+  - { key: F4,       mods: Super,   chars: "\x1b[1;3S"                   }+  - { key: F5,       mods: Super,   chars: "\x1b[15;3~"                  }+  - { key: F6,       mods: Super,   chars: "\x1b[17;3~"                  }+  - { key: F7,       mods: Super,   chars: "\x1b[18;3~"                  }+  - { key: F8,       mods: Super,   chars: "\x1b[19;3~"                  }+  - { key: F9,       mods: Super,   chars: "\x1b[20;3~"                  }+  - { key: F10,      mods: Super,   chars: "\x1b[21;3~"                  }+  - { key: F11,      mods: Super,   chars: "\x1b[23;3~"                  }+  - { key: F12,      mods: Super,   chars: "\x1b[24;3~"                  }

.config/ag/gitconfig/kodos

new file mode 120000@@ -0,0 +1 @@+default\ No newline at end of file

.config/ag/gohead/kodos/config.ini

new file mode 100644@@ -0,0 +1,2 @@+[Monitors]+laptop = eDP1

.config/ag/startup/wingo-kodos.xinitrc

new file mode 100755@@ -0,0 +1,11 @@+#!/bin/sh++startup &+nitrogen --restore+(+  sleep 0.3+  video laptop+  dunst &+  nm-applet &+) &+exec bash -c '(dbus-launch run-wingo ; (while true; do sleep 1000; done))'

.config/ag/startup/wingo.xinitrc

@@ -16,6 +16,9 @@ case "$(myhostname)" in   kang)     exec "$base/wingo-kang.xinitrc"     ;;+  kodos)+    exec "$base/wingo-kodos.xinitrc"+    ;;   frink)     exec "$base/wingo-frink.xinitrc"     ;;

.config/ag/wingo/kodos/hooks.wini

new file mode 100644@@ -0,0 +1,39 @@+# [NoDecor] +# match := MatchClientClass ":client:" "google-chrome" +#  +# managed := FrameNada ":client:" ++[ForceFloating]+match := MatchClientClass ":client:" "gimp"++managed := ToggleFloating ":client:"++[Resize]+match := MatchClientClass ":client:" "konsole"++managed := Resize ":client:" 0.6 0.6+managed := Move (GetActive) 0.2 0.2++[FocusTransparency]+# If you have a compositing manager running, this will use transparency+# to indicate focus.+match := True++focused := SetOpacity ":client:" 1.0+unfocused := SetOpacity ":client:" 0.85++[Autostart]+match := True++# You can add startup programs here if you like.+#startup := Shell "xterm"++# You can add more by just adding another definition of "startup".+#startup := Shell "gkrellm"++[Dale]+# Dale is an easter egg.+# Use "match := False" to disable. Or delete it. Whatever.+match := False++startup := Dale

.config/ag/wingo/kodos/key.wini

new file mode 100644@@ -0,0 +1,143 @@+[Global]+Mod4-Shift-r := WingoExec (Input "Wingo command:")+Mod4-Shift-h := WingoHelp (Input "Wingo command name:")+Mod4-Shift-s := Script (Input "Script command:")++Mod4-c := Close (GetActive)+Mod4-x := ToggleMaximize (GetActive)+Mod4-i := ToggleIconify (GetActive)+# Mod1-up := ToggleStackAbove (GetActive)+# Mod1-down := ToggleStackBelow (GetActive)+Mod1-f := ToggleFloating (GetActive)++Mod1-Shift-t := Move (GetActive) 0.2 0.2+Mod1-Shift-t := Resize (GetActive) 0.6 0.6++Mod4-left := Move (GetActive) 0 0+Mod4-left := Resize (GetActive) 0.5 1.0+Mod4-Shift-left := Move (GetActive) 0 0+Mod4-Shift-left := Resize (GetActive) 0.25 1.0+Mod4-right := Move (GetActive) 0.5 0+Mod4-right := Resize (GetActive) 0.5 1.0+Mod4-Shift-right := Move (GetActive) 0.75 0+Mod4-Shift-right := Resize (GetActive) 0.25 1.0+Mod4-up := Move (GetActive) 0 0+Mod4-up := Resize (GetActive) 1.0 0.5+Mod4-Shift-up := Move (GetActive) 0 0+Mod4-Shift-up := Resize (GetActive) 1.0 0.25+Mod4-down := Move (GetActive) 0 0.5+Mod4-down := Resize (GetActive) 1.0 0.5+Mod4-Shift-down := Move (GetActive) 0 0.75+Mod4-Shift-down := Resize (GetActive) 1.0 0.25++Mod1-a := AutoTile (GetWorkspace)+Mod1-u := AutoUntile (GetWorkspace)+Mod1-z := SetLayout (GetWorkspace) "Horizontal"+Mod1-Shift-z := SetLayout (GetWorkspace) "Vertical"+Mod1-h := AutoResizeMaster (GetWorkspace) -0.02+Mod1-l := AutoResizeMaster (GetWorkspace) 0.02+Mod1-b := AutoResizeWindow (GetWorkspace) -0.02+Mod1-n := AutoResizeWindow (GetWorkspace) 0.02+Mod1-k := AutoNext (GetWorkspace)+Mod1-j := AutoPrev (GetWorkspace)+Mod1-Shift-k := AutoSwitchNext (GetWorkspace)+Mod1-Shift-j := AutoSwitchPrev (GetWorkspace)+Mod1-m := AutoMaster (GetWorkspace)+Mod1-Shift-return := AutoMakeMaster (GetWorkspace)+Mod1-comma := AutoMastersFewer (GetWorkspace)+Mod1-period := AutoMastersMore (GetWorkspace)++Mod4-Shift-l := SetLayout (GetWorkspace) (Input "Layout name:")++Mod1-w := MovePointerRelative 0 0+Mod1-w := HeadFocus 0++Mod1-e := MovePointerRelative 0 0+Mod1-e := HeadFocus 1++Mod1-r := MovePointerRelative 0 0+Mod1-r := HeadFocus 2++Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := MovePointerRelative 0 0+Mod1-Shift-w := HeadFocusWithClient 0 (GetActive)++Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := MovePointerRelative 0 0+Mod1-Shift-e := HeadFocusWithClient 1 (GetActive)++Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := MovePointerRelative 0 0+Mod1-Shift-r := HeadFocusWithClient 2 (GetActive)++Mod1-1 := WorkspaceGreedy "1"+Mod1-2 := WorkspaceGreedy "2"+Mod1-3 := WorkspaceGreedy "3"+Mod1-4 := WorkspaceGreedy "4"+Mod1-5 := WorkspaceGreedy "5"+Mod1-6 := WorkspaceGreedy "6"++Mod4-Shift-a := Workspace (AddWorkspace (Input "New workspace name:"))+Mod4-shift-d := RemoveWorkspace (SelectWorkspace "Prefix")+Mod4-BackSpace := RemoveWorkspace (GetWorkspace)++Mod1-Tab := CycleClientNext "yes" "no" "yes"+Mod1-Shift-Tab := CycleClientPrev "yes" "no" "yes"++Mod4-space := FocusRaise (SelectClient "Any" "no" "no" "yes")+Mod4-return := WorkspaceGreedy (SelectWorkspace "Prefix")+Mod4-Shift-return := WorkspaceGreedyWithClient \+                       (SelectWorkspace "Prefix") \+                       (GetActive)++Control-Mod1-a := Workspace (GetWorkspacePrefix "a")+Control-Mod1-b := Workspace (GetWorkspacePrefix "b")+Control-Mod1-c := Workspace (GetWorkspacePrefix "c")+Control-Mod1-d := Workspace (GetWorkspacePrefix "d")+Control-Mod1-e := Workspace (GetWorkspacePrefix "e")+Control-Mod1-f := Workspace (GetWorkspacePrefix "f")+Control-Mod1-g := Workspace (GetWorkspacePrefix "g")+Control-Mod1-h := Workspace (GetWorkspacePrefix "h")+Control-Mod1-i := Workspace (GetWorkspacePrefix "i")+Control-Mod1-j := Workspace (GetWorkspacePrefix "j")+Control-Mod1-k := Workspace (GetWorkspacePrefix "k")+Control-Mod1-l := Workspace (GetWorkspacePrefix "l")+Control-Mod1-m := Workspace (GetWorkspacePrefix "m")+Control-Mod1-n := Workspace (GetWorkspacePrefix "n")+Control-Mod1-o := Workspace (GetWorkspacePrefix "o")+Control-Mod1-p := Workspace (GetWorkspacePrefix "p")+Control-Mod1-q := Workspace (GetWorkspacePrefix "q")+Control-Mod1-r := Workspace (GetWorkspacePrefix "r")+Control-Mod1-s := Workspace (GetWorkspacePrefix "s")+Control-Mod1-t := Workspace (GetWorkspacePrefix "t")+Control-Mod1-u := Workspace (GetWorkspacePrefix "u")+Control-Mod1-v := Workspace (GetWorkspacePrefix "v")+Control-Mod1-w := Workspace (GetWorkspacePrefix "w")+Control-Mod1-x := Workspace (GetWorkspacePrefix "x")+Control-Mod1-y := Workspace (GetWorkspacePrefix "y")+Control-Mod1-z := Workspace (GetWorkspacePrefix "z")+

.config/ag/wingo/kodos/mouse.wini

new file mode 100644@@ -0,0 +1,118 @@+$OPACITY_UP := Shell "transset-df -p --max 1.0 --inc 0.05"+$OPACITY_DOWN := Shell "transset-df -p --min 0.1 --dec 0.05"++[Root]+1 := Focus ":mouse:"++[Client]+1 := FocusRaise ":mouse:"++[Frame]+Mod4-1 := MouseMove+Mod4-3 := MouseResize "Infer"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullIcon]+1 := MouseMove+1 := FocusRaise ":mouse:"+3 := MouseResize "Infer"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullTitleText]+1 := MouseMove+1 := FocusRaise ":mouse:"+3 := MouseResize "Infer"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullTitleBar]+1 := MouseMove+1 := FocusRaise ":mouse:"+3 := MouseResize "Infer"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullClose]+1 up := Close ":mouse:"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullMaximize]+1 up := ToggleMaximize ":mouse:"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullMinimize]+1 up := ToggleIconify ":mouse:"+Mod4-4 up := $OPACITY_UP+Mod4-5 up := $OPACITY_DOWN++[FullTop]+1 := MouseResize "Top"+1 down := FocusRaise ":mouse:"++[FullTitleBottom]+1 down := FocusRaise ":mouse:"++[FullBottom]+1 := MouseResize "Bottom"+1 down := FocusRaise ":mouse:"++[FullLeft]+1 := MouseResize "Left"+1 down := FocusRaise ":mouse:"++[FullRight]+1 := MouseResize "Right"+1 down := FocusRaise ":mouse:"++[FullTopLeft]+1 := MouseResize "TopLeft"+1 down := FocusRaise ":mouse:"++[FullTopRight]+1 := MouseResize "TopRight"+1 down := FocusRaise ":mouse:"++[FullBottomLeft]+1 := MouseResize "BottomLeft"+1 down := FocusRaise ":mouse:"++[FullBottomRight]+1 := MouseResize "BottomRight"+1 down := FocusRaise ":mouse:"++[BordersTop]+1 := MouseResize "Top"+1 down := FocusRaise ":mouse:"++[BordersBottom]+1 := MouseResize "Bottom"+1 down := FocusRaise ":mouse:"++[BordersLeft]+1 := MouseResize "Left"+1 down := FocusRaise ":mouse:"++[BordersRight]+1 := MouseResize "Right"+1 down := FocusRaise ":mouse:"++[BordersTopLeft]+1 := MouseResize "TopLeft"+1 down := FocusRaise ":mouse:"++[BordersTopRight]+1 := MouseResize "TopRight"+1 down := FocusRaise ":mouse:"++[BordersBottomLeft]+1 := MouseResize "BottomLeft"+1 down := FocusRaise ":mouse:"++[BordersBottomRight]+1 := MouseResize "BottomRight"+1 down := FocusRaise ":mouse:"+

.config/ag/wingo/kodos/options.wini

new file mode 100644@@ -0,0 +1,57 @@+[Options]+# The list of workspaces to set upon startup. Workspaces can be added or+# removed while Wingo is running.+workspaces := 1 2 3 4 mail browser text s1 s2 s3 doc++# The default layout that is used in a particular workspace. Currently, the+# only available layouts are: Floating, Vertical or Horizontal.+# Setting this to something other than a Floating layout effectively turns+# Wingo into a tiling window manager.+default_layout := Floating++# When enabled, windows will be focused when the mouse enters the window.+# N.B. I don't use focus follows mouse, so I'm not sure precisely how it+# should work. If I've messed up, file a bug report.+focus_follows_mouse := no++# If enabled, head focus will follow the mouse. That is, moving the mouse to+# another monitor will move the focus to the workspace on that monitor.+# Note that this does not require that "focus_follows_mouse" be enabled;+# however this only works when the mouse is directly over the root window.+# (So enabling this option might be weight if "focus_follows_mouse" is+# disabled.)+#+# N.B. It is possible that this could have an effect on performance, since+# all pointer motion events on the root window must be inspected.+focus_follows_mouse_head := no++# Whether error messages should be shown or not. Error messages typically+# show up when you've tried to do something illegal with one of Wingo's+# commands.+# Error messages acquire focus and do not disappear until they lose focus, or+# if the "confirm" or "cancel" keys have been pressed.+show_popup_errors := yes++# Whether FYI messages should be shown or not. These are typically used to+# indicate state changes, like when a the current workspace is changed.+# Note that FYI messages only appear for a set amount of time (see "popup_time"+# below) and then disappear. They never acquire focus.+show_popup_fyi := yes++# The time that an "FYI" message window stays visible in milliseconds.+# After time expires, the message disappears.+popup_time := 500++# The key that acts as the "confirm" key. This is mostly used in prompts. When+# the confirm key is pressed, the prompt will execute an action corresponding+# to the inputted text or the selected item.+confirm := Return++# The key that acts as the "cancel" key. This is mostly used in prompts. When+# the cancel key is pressed, the prompt disappears and no action occurs.+cancel := Escape++# The program to use to play a wav file. This is only used with the "Dale"+# command, which is an easter egg.+audio_play_cmd := aplay+

.config/ag/wingo/kodos/scripts/dzen-workspaces/README.md

new file mode 100644@@ -0,0 +1,23 @@+Description+===========+dzen-workspaces listens to events from Wingo and emits a dzen formatted string +whenever there is a change. The formatting is configurable and is based on the +kind of workspace: current, visible, hidden or empty.+++Example+=======+In your `Autostart` hook:++    startup := Shell "dzen2 -dock | ~/.config/wingo/scripts/dzen-workspaces/dzen-workspaces"++The formatting options can be changed in++    ~/.config/wingo/scripts/dzen-workspaces/dzen-workspaces.cfg+++Dependencies+============+* pywingo+* dzen2+

.config/ag/wingo/kodos/scripts/dzen-workspaces/dzen-workspaces

new file mode 100755@@ -0,0 +1,45 @@+#!/home/andrew/.pyx11/bin/python++import sys++import pywingo++W = pywingo.Wingo()++cfg = W.LoadConfig()+markup = {}+for k in ('current', 'visible', 'hidden', 'empty'):+    markup[k] = cfg.get('fmt', k, raw=True)+++@W.bind('AddedWorkspace')+@W.bind('RemovedWorkspace')+@W.bind('ChangedWorkspace')+@W.bind('ChangedVisibleWorkspace')+@W.bind('ChangedWorkspaceNames')+@W.bind('ManagedClient')+@W.bind('UnmanagedClient')+@W.bind('Subscribed')+def show(_):+    current = W.GetWorkspace()+    visible = W.GetVisibleWorkspaceList()+    hidden = W.GetHiddenWorkspaceList()++    vtagged = []+    for space in visible:+        if space == current:+            vtagged.append(markup['current'] % space)+        else:+            vtagged.append(markup['visible'] % space)+    htagged = []+    for space in hidden:+        if W.IsEmpty(space):+            htagged.append(markup['empty'] % space)+        else:+            htagged.append(markup['hidden'] % space)++    print('[%s] %s' % (' '.join(vtagged), ' '.join(htagged)))+    sys.stdout.flush()+++W.loop()

.config/ag/wingo/kodos/scripts/dzen-workspaces/dzen-workspaces.cfg

new file mode 100644@@ -0,0 +1,5 @@+[fmt]+current = ^fg(#18B218)%s^fg()+visible = ^fg(#FF0000)%s^fg()+hidden = ^fg(#FFA500)%s^fg()+empty = ^fg(#000)%s^fg()

.config/ag/wingo/kodos/scripts/growto

new file mode 100755@@ -0,0 +1,105 @@+#!/usr/bin/env python2++import sys++import pywingo++if len(sys.argv) != 2 or sys.argv[1] not in ('top', 'bot', 'left', 'right'):+    print >> sys.stderr, 'Usage: growto (top | bot | left | right)'+    sys.exit(1)++def edges(client):+    '''+    Returns a dictionary of edges for the given client.+    '''+    eleft, etop = W.GetClientX(client), W.GetClientY(client)+    w, h = W.GetClientWidth(client), W.GetClientHeight(client)+    eright, ebot = eleft + w, etop + h+    return {+        'left': eleft, 'top': etop,+        'right': eright, 'bot': ebot,+    }++def flatten(lst):+    '''+    Flattens a list: [[a]] -> [a].+    '''+    flattened = []+    for sublst in lst:+        for x in sublst:+            flattened.append(x)+    return flattened++def newpos(vertical, order, default, include):+    '''+    Finds a new edge for the client from a list of edges corresponding+    to all relevant surfaces.++    `vertical` should be True if the client is moving/growing/shrinking in+    a vertical direction (top/bot). Should be False otherwise.++    `order` should either be `min` or `max`, and is used to retrieve the+    next edge to move/grow/shrink to from a list of candidate edges.++    `default` is the edge of last resort if no other edges were found.+    It is also used as a min/max depending on `order`.+    (e.g., the head boundary.)++    `include` is the comparison criterion for edges. It should return+    True if the given edge is a possible choice.+    (e.g., all edges less than the active client's left edge when+           growing in the left direction.)+    '''+    def extract(edges):+        if vertical:+            return [edges['top'], edges['bot']]+        else:+            return [edges['left'], edges['right']]+    candidates = filter(include, flatten(map(extract, alledges)))+    return order(default, order(candidates) if candidates else default)++# Initialization. Connect and grab the edges/geometry of the active client.+direction = sys.argv[1]+W = pywingo.Wingo()++win = W.GetActive()+if not W.MatchClientMapped(win):+    print >> sys.stderr, 'Window %d is not visible' % win+    sys.exit(1)+wine = edges(win)+wine_width = wine['right'] - wine['left']+wine_height = wine['bot'] - wine['top']++# Find the geometry of the active head and compute the edges for all+# clients on the head.+wrk = W.GetClientWorkspace(win)+head = W.WorkspaceHead(wrk)+headw, headh = W.GetHeadWidth(head), W.GetHeadHeight(head)+clients = filter(lambda c: W.MatchClientMapped(c), W.GetClientList(wrk))+alledges = []+for c in clients:+    if c == win:+        continue+    alledges.append(edges(c))++if direction == 'top':+    newtop = newpos(True, max, 0, lambda e: e < wine['top'])++    W.MoveRelative(win, wine['left'], newtop)+    W.Resize(win, wine_width, wine_height + wine['top'] - newtop)+elif direction == 'left':+    newleft = newpos(False, max, 0, lambda e: e < wine['left'])++    W.MoveRelative(win, newleft, wine['top'])+    W.Resize(win, wine_width + wine['left'] - newleft, wine_height)+elif direction == 'bot':+    newbot = newpos(True, min, headh, lambda e: e > wine['bot'])++    W.Resize(win, wine_width, newbot - wine['top'])+elif direction == 'right':+    newright = newpos(False, min, headw, lambda e: e > wine['right'])++    W.Resize(win, newright - wine['left'], wine_height)+else:+    assert False, 'bug'+

.config/ag/wingo/kodos/scripts/newproject/README.md

new file mode 100644@@ -0,0 +1,20 @@+Description+===========+newproject prompts the user for a project name, and creates N workspaces with +the names {name}1, {name}2, ..., {name}N where N is the number of monitors +active on your system.+++Example+=======+In your `key.wini`:++  Mod4-p := Script "newproject"++Then type in the desired project name.+++Dependencies+============+* pywingo+

.config/ag/wingo/kodos/scripts/newproject/newproject

new file mode 100755@@ -0,0 +1,16 @@+#!/home/andrew/.pyx11/bin/python++import pywingo++W = pywingo.Wingo()++prefix = W.Input('Project name: ')+if len(prefix) == 0:+    exit(0)++for i in xrange(W.GetNumHeads()):+    name = '%s%d' % (prefix, i + 1)+    W.HeadFocus(i)+    W.AddWorkspace(name)+    W.Workspace(name)+

.config/ag/wingo/kodos/scripts/nexthead

new file mode 100755@@ -0,0 +1,13 @@+#!/home/andrew/.pyx11/bin/python++import pywingo++W = pywingo.Wingo()++cur_head = W.GetHead()+cur_client = W.GetActive()++next_head = (cur_head + 1) % W.GetNumHeads()++W.HeadFocusWithClient(next_head, cur_client)+

.config/ag/wingo/kodos/scripts/transparency

new file mode 100755@@ -0,0 +1,47 @@+#!/home/andrew/.pyx11/bin/python++import atexit++import pywingo++# The transparency to use for unfocused and focused clients.+# 1 is completely opaque and 0 is completely transparent.+alpha = {+    'unfocused': 0.85,+    'focused': 1.0,+}++# Does the initial connection with Wingo. `W` can now be used to run commands.+W = pywingo.Wingo()++# Use Python decorators to bind functions to specific events.+@W.bind('FocusedClient')+def focused(ev):+    W.SetOpacity(ev.Id, alpha['focused'])++@W.bind('UnfocusedClient')+def focused(ev):+    W.SetOpacity(ev.Id, alpha['unfocused'])++# Set the transparency of all clients upon subscription.+@W.bind('Subscribed')+def startup(ev):+    active = W.GetActive()+    for cid in W.GetAllNormalClients():+        if cid == active:+            W.SetOpacity(cid, alpha['focused'])+        else:+            W.SetOpacity(cid, alpha['unfocused'])++# Use the special `atexit.register` decoration in the Python standard+# library to do any clean up if your program quits.+@atexit.register+def shutdown():+    # If the program quits unexpectedly, return opacity+    # to normal levels.+    for cid in W.GetAllNormalClients():+        W.SetOpacity(cid, 1.0)++# Start the main event loop. This should be the last thing in your program.+W.loop()+

.config/ag/wingo/kodos/theme.wini

new file mode 100644@@ -0,0 +1,65 @@+$THIN_COLOR := 0x585a5d+$BLUE := 0x3366ff+$ORANGE := 0xff7f00+$GREY := 0xdfdcdf+$PURPLE := 0xff00ff++[Prompt]+bg_color := 0x8e8e8e+border_color := 0x585a5d+border_size := 10+padding := 15+font := /usr/share/fonts/TTF/DejaVuSansMono.ttf+font_size := 17+font_color := 0xffffff+select_active_color := 0x4c4c4c+select_active_bg_color := 0xffffff+select_group_bg_color := 0x8e8e8e+select_group_font := /usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf+select_group_font_size := 25+select_group_font_color := 0xffffff+cycle_icon_size := 100+cycle_icon_border_size := 10+cycle_icon_transparency := 30++[Misc]+default_icon := ./data/wingo.png++[Full]+font := /usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf+font_size := 17+a_font_color := 0xffffff+i_font_color := 0x000000++title_size := 30+a_title_color := 0xd66b00 0xff9123+i_title_color := 0xffffff++close := ./data/close.png+a_close_color := 0xffffff+i_close_color := 0x000000++maximize := ./data/maximize.png+a_maximize_color := 0xffffff+i_maximize_color := 0x000000++minimize := ./data/minimize.png+a_minimize_color := 0xffffff+i_minimize_color := 0x000000++border_size := 4+a_border_color := $THIN_COLOR+i_border_color := $THIN_COLOR++[Borders]+border_size := 4+a_thin_color := $THIN_COLOR+i_thin_color := $THIN_COLOR+a_border_color := $ORANGE+i_border_color := $GREY++[Slim]+border_size := 1+a_border_color := 0x000000+i_border_color := 0x000000+

.config/ag/xbindkeysrc/kodos

new file mode 120000@@ -0,0 +1 @@+default\ No newline at end of file

bin/batrem

@@ -110,7 +110,7 @@ if __name__ == '__main__':     fpow_now = 'power_now'      batdir = subprocess.check_output(['batpath']).decode('utf-8').strip()-    if host in ('krusty', 'kang'):+    if host in ('krusty', 'kang', 'kodos'):         ffull = 'charge_full'         fnow = 'charge_now'         fpow_now = 'current_now'

bin/ssh-add-keys

Binary file changed

bin/startup

@@ -24,7 +24,7 @@ case "$(myhostname)" in   monty)     xset m 2 1     ;;-  krusty)+  krusty|kodos)     system76-darter-set-kbd-backlight     system76-darter-configure-touchpad     ;;

bin/toggle-tap-to-click

@@ -4,7 +4,7 @@ if ! is-laptop; then   exit 1 fi case "$(myhostname)" in-  krusty)+  kodos|krusty)     device="SynPS/2 Synaptics TouchPad"     prop="libinput Tapping Enabled"     ;;

bin/video

@@ -78,7 +78,7 @@ monty)   fi   autobright &   ;;-krusty|kang)+krusty|kang|kodos)   if array_exists laptop "$*"; then     placeHead laptop   else

bin/volume

@@ -8,7 +8,7 @@ case "$(myhostname)" in       mute) i3-volume -p -n -m ;;     esac     ;;-  krusty|kang)+  krusty|kang|kodos)     case $1 in       up)   i3-volume -p -n -i 10 ;;       down) i3-volume -p -n -d 10 ;;