SWMO - SXMO over Wayland

This is a huge patch for Swmo, Sxmo over Sway.

It is Dwm backward compatible so dwm users should not expect regressions.

If you install all dependencies, you then can toggle between Sway and Dwm using a new config entry. It will reboot the phone.

This commit also contains:
    * Make the modemmonitor bullet proof
    * various other smaller fixes

Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
This commit is contained in:
Stacy Harper 2021-08-22 12:49:51 +02:00 committed by Maarten van Gompel
parent b1403f983e
commit 8a27933c47
54 changed files with 1500 additions and 545 deletions

23
configs/appcfg/foot.ini Normal file
View file

@ -0,0 +1,23 @@
font=monospace:size=11
[colors]
# alpha=1.0
foreground=eaeaea
background=303030
regular0=1e1e1e # black
regular1=d54e53 # red
regular2=b9ca4a # green
regular3=e6c547 # yellow
regular4=7aa6da # blue
regular5=c397d8 # magenta
regular6=70c0ba # cyan
regular7=eaeaea # white
bright0=666666 # bright black
bright1=ff3334 # bright red
bright2=9ec400 # bright green
bright3=e7c547 # bright yellow
bright4=7aa6da # bright blue
bright5=b77ee0 # bright magenta
bright6=54ced6 # bright cyan
bright7=ffffff # bright white

16
configs/appcfg/mako.conf Normal file
View file

@ -0,0 +1,16 @@
default-timeout=5000
background-color=#ffffff
text-color=#000000
border-color=#000000
layer=overlay
[urgency=low]
default-timeout=3000
background-color=#222222
text-color=#888888
[urgency=high]
default-timeout=0
background-color=#900000
text-color=#ffffff
background-color=#ff0000

View file

@ -0,0 +1,237 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term foot
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu bemenu-run
### Output configuration
output "DSI-1" {
scale 2
#transform 90
bg /usr/share/sxmo/background.jpg fill
}
### Idle
exec sxmo_idle.sh start
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
# repeat_delay how much time in milisec to consider it is hold pressed
# should be long enough to trigger simple click easily but
# should be short enough to trigger a repeat before the next threshold
# repeat_rate then how much key per second should be triggered
# adapt it accordingly with the delay.
# prefer a lower but enough value
# This is enough for 4 multikeys long presses
# Power button
input 0:0:axp20x-pek {
repeat_delay 200
repeat_rate 15
}
# Volume buttons
input 1:1:1c21800.lradc {
repeat_delay 200
repeat_rate 15
}
exec sxmo_multikey.sh clear
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
bindsym --input-device=0:0:axp20x-pek XF86PowerOff exec sxmo_multikey.sh powerbutton "sxmo_inputhandler.sh powerbutton_one" "sxmo_inputhandler.sh powerbutton_two" "sxmo_inputhandler.sh powerbutton_three"
bindsym $mod+p exec sxmo_appmenu.sh
# Lock sxmo
bindsym --input-device=1:1:1c21800.lradc XF86AudioRaiseVolume exec sxmo_multikey.sh volup "sxmo_inputhandler.sh volup_one" "sxmo_inputhandler.sh volup_two" "sxmo_inputhandler.sh volup_three"
# Next workspace
bindsym --input-device=1:1:1c21800.lradc XF86AudioLowerVolume exec sxmo_multikey.sh voldown "sxmo_inputhandler.sh voldown_one" "sxmo_inputhandler.sh voldown_two" "sxmo_inputhandler.sh voldown_three"
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
# bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
position top
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
status_command sxmo_statusbar.sh
colors {
statusline #ffffff
background #323232
inactive_workspace #32323200 #32323200 #5c5c5c
font "Mono"
}
}
default_border pixel 3
titlebar_border_thickness 3
include /etc/sway/config.d/*
exec 'printf %s "$SWAYSOCK" > "$CACHEDIR"/sxmo.swaysock'
exec sxmo_networkmonitor.sh
exec sxmo_modemmonitortoggle.sh restart
exec sxmo_notificationmonitor.sh
exec mako
exec sxmo_hooks.sh lisgdstart

View file

@ -34,7 +34,7 @@ amixer set "Line Out" 50%
# not receive texts/calls!
# (there is a bit of a delay to
# give the modem some time to set up)
sleep 15 && sxmo_modemmonitortoggle.sh on &
sxmo_modemmonitortoggle.sh restart &
### Configuration Parameters ###

View file

@ -0,0 +1,5 @@
[Desktop Entry]
Name=Sxmo
Exec=sxmo_winit.sh
Terminal=false
Type=Application

View file

@ -4,21 +4,6 @@ WMCLASS="$1"
WMNAME="$2"
ACTION="$3"
key() {
xdotool windowactivate "$WIN"
xdotool key --delay 50 --clearmodifiers "$@"
}
type() {
xdotool windowactivate "$WIN"
xdotool type --delay 50 --clearmodifiers "$@"
}
typeenter() {
type "$@"
xdotool key Return
}
# You must exit 0 if you handled the input to not trigger default behaviors
if [ "$(sxmo_screenlock.sh getCurState)" != "unlock" ]; then
@ -35,24 +20,24 @@ exit 1 # Remove this in your user hook
# Please share your recipes to the community :D
case "$WMCLASS" in
*"st-256color"*)
*"foot"*)
case "$WMNAME" in
*"weechat"*)
case "$ACTION" in
*"oneleft")
key Alt+a
sxmo_type.sh -M Alt -k a
exit 0
;;
*"oneright")
key Alt+Shift+comma
sxmo_type.sh -M Alt -k less
exit 0
;;
*"oneup")
key Page_Down
sxmo_type.sh -k Page_Down
exit 0
;;
*"onedown")
key Page_Up
sxmo_type.sh -k Page_Up
exit 0
;;
esac
@ -62,19 +47,19 @@ case "$WMCLASS" in
*"mpv"*)
case "$ACTION" in
"oneright")
key Left
sxmo_type.sh -k Left
exit 0
;;
"oneleft")
key Right
sxmo_type.sh -k Right
exit 0
;;
"upone")
key m
"oneup")
sxmo_type.sh m
exit 0
;;
"onedown")
key p
sxmo_type.sh p
exit 0
;;
esac

View file

@ -13,10 +13,40 @@ if [ -z "$LISGD_THRESHOLD_PRESSED" ]; then
LISGD_THRESHOLD_PRESSED=60
fi
case "$(sxmo_wm.sh)" in
sway)
output="$(
swaymsg -t get_outputs \
| jq -r '.[] | select(.name == "DSI-1") | {transform: .transform, width: .current_mode.width, height: .current_mode.height}' \
| sed "s|normal|0|"
)"
transform="$(printf %s "$output" | jq -r .transform)"
width="$(printf %s "$output" | jq -r .width)"
height="$(printf %s "$output" | jq -r .height)"
orientation="$((transform / 90))"
;;
dwm)
output="$(xrandr | grep DSI-1 | sed "s|.* \(\d\+\)x\(\d\+\)+.*|\1 \2|")"
height="$(printf %s "$output" | cut -d" " -f2)"
width="$(printf %s "$output" | cut -d" " -f1)"
case "$(xrandr | grep DSI-1 | cut -d' ' -f 5)" in
right) orientation=1;;
left) orientation=3;;
inverted) orientation=2;;
*) orientation=0;;
esac
if [ "$((orientation%2))" -ne 0 ]; then
tmp="$height"
height="$width"
width="$tmp"
fi
esac
#-g format:
# fingers,swipe,edge,distance,command
#order matters, only the first match gets executed
lisgd "$@" -t "$LISGD_THRESHOLD" -T "$LISGD_THRESHOLD_PRESSED" \
lisgd "$@" -o "$orientation" -h "$height" -w "$width" \
-t "$LISGD_THRESHOLD" -T "$LISGD_THRESHOLD_PRESSED" \
-g '1,DRUL,BR,*,sxmo_inputhandler.sh bottomrightcorner' \
-g '1,DLUR,BL,*,sxmo_inputhandler.sh bottomleftcorner' \
-g '1,ULDR,TL,*,sxmo_inputhandler.sh topleftcorner' \

View file

@ -17,7 +17,7 @@ sim_n() {
}
retry=1
pkill dmenu #kill existing dmenu
sxmo_dmenu.sh close
while [ $retry -eq 1 ]; do
PICKED="$(
# shellcheck disable=SC2039,SC3037