feat(x11): migrate to pure Xlibre + dwm/dmenu/st stack, fix fcitx5-t9 bottom bar, PM8909 PON shutdown, and remove Wayland

This commit is contained in:
Luxferre
2026-10-20 21:15:16 +03:00
parent ad012360c3
commit 7bab7b7a11
422 changed files with 63226 additions and 2342 deletions
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
exec /usr/bin/X -nocursor -nolisten tcp "$@"
@@ -0,0 +1,47 @@
Section "ServerFlags"
Option "AutoAddDevices" "true"
Option "AutoEnableDevices" "true"
Option "AutoAddGPU" "false"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection
Section "Device"
Identifier "MSM8909 SPI Panel"
Driver "modesetting"
Option "kmsdev" "/dev/dri/card0"
Option "AccelMethod" "none"
Option "ShadowFB" "true"
Option "SWCursor" "true"
Option "PageFlip" "false"
EndSection
Section "Screen"
Identifier "DefaultScreen"
Device "MSM8909 SPI Panel"
DefaultDepth 24
EndSection
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
+4
View File
@@ -1,8 +1,12 @@
permit persist :wheel
permit nopass :wheel as root cmd busybox args poweroff
permit nopass :wheel as root cmd busybox args reboot
permit nopass :wheel as root cmd /bin/busybox args poweroff
permit nopass :wheel as root cmd /bin/busybox args reboot
permit nopass :wheel as root cmd poweroff
permit nopass :wheel as root cmd reboot
permit nopass :wheel as root cmd /sbin/poweroff
permit nopass :wheel as root cmd /sbin/reboot
permit nopass :wheel as root cmd sxmo_wifitoggle.sh
permit nopass setenv { SXMO_OS } :wheel as root cmd sxmo_bluetoothtoggle.sh
permit nopass :wheel as root cmd rc-service args bluetooth restart
+10
View File
@@ -0,0 +1,10 @@
[Login]
HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
[Sleep]
AllowSuspendInterrupts=yes
+38
View File
@@ -0,0 +1,38 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<alias binding="strong">
<family>DejaVu SansM Nerd Font</family>
<prefer>
<family>DejaVuSansM Nerd Font</family>
</prefer>
</alias>
<alias binding="strong">
<family>Sxmo</family>
<prefer>
<family>Fira Code</family>
<family>DejaVuSansM Nerd Font</family>
</prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>Fira Code</family>
<family>DejaVuSansM Nerd Font</family>
</prefer>
</alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Fira Code</family>
<family>DejaVuSansM Nerd Font</family>
</prefer>
</alias>
<alias binding="strong">
<family>serif</family>
<prefer>
<family>Fira Code</family>
<family>DejaVuSansM Nerd Font</family>
</prefer>
</alias>
</fontconfig>
@@ -0,0 +1,8 @@
polkit.addRule(function(action, subject) {
if ((action.id.indexOf("org.freedesktop.ModemManager1.") == 0 ||
action.id.indexOf("org.freedesktop.login1.") == 0 ||
action.id.indexOf("org.freedesktop.NetworkManager.") == 0) &&
(subject.isInGroup("plugdev") || subject.isInGroup("wheel"))) {
return polkit.Result.YES;
}
});
@@ -0,0 +1,9 @@
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SXMO_WM=dwm
export SXMO_MENU=dmenu
export SXMO_TERMINAL=st
export DMENU_WRAP_AROUND=1
export SXMO_DMENU_PORTRAIT_LINES=12
export SXMO_DMENU_LANDSCAPE_LINES=8
+206
View File
@@ -0,0 +1,206 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# This script is meant to be sourced on login shells
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
_sxmo_is_running() {
unset SXMO_WM
_XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
if pidof -s dwm >/dev/null 2>&1 || DISPLAY=:0 xset q >/dev/null 2>&1; then
export SXMO_WM=dwm
export SXMO_MENU=dmenu
export SXMO_TERMINAL=st
[ -z "$DISPLAY" ] && export DISPLAY=:0
unset _XDG_RUNTIME_DIR
return 0
fi
if [ -f "${_XDG_RUNTIME_DIR}"/sxmo.swaysock ]; then
if SWAYSOCK="$(cat "${_XDG_RUNTIME_DIR}"/sxmo.swaysock)" swaymsg 2>/dev/null
then
printf "Detected the Sway environment\n" >&2
export SXMO_WM=sway
unset _XDG_RUNTIME_DIR
return 0
fi
elif [ -e "$XDG_RUNTIME_DIR"/dbus.bus ] && pidof river > /dev/null; then
printf "Detected the River environment\n" >&2
export SXMO_WM=river
unset _XDG_RUNTIME_DIR
return 0
fi
if [ -f "${_XDG_RUNTIME_DIR}"/sxmo.i3sock ]; then
if I3SOCK="$(cat "${_XDG_RUNTIME_DIR}"/sxmo.i3sock)" i3-msg 2>/dev/null
then
printf "Detected the i3 environment\n" >&2
export SXMO_WM=i3
unset _XDG_RUNTIME_DIR
return 0
fi
fi
unset _XDG_RUNTIME_DIR
printf "Sxmo is not running\n" >&2
return 1
}
_sxmo_find_runtime_dir() {
# Take what we gave to you
if [ -n "$XDG_RUNTIME_DIR" ]; then
printf %s "$XDG_RUNTIME_DIR"
return
fi
# Try something existing
for root in /run /var/run; do
for path in "$root/user-$(id -u)" "$root/user/$(id -u)"; do
if [ -d "$path" ] && [ -w "$path" ]; then
printf %s "$path"
return
fi
done
done
if command -v mkrundir > /dev/null 2>&1; then
mkrundir
return
fi
# Fallback to a shared memory location
printf "/dev/shm/user/%s" "$(id -u)"
}
_sxmo_load_environments() {
if [ -e /etc/os-release ]; then
# shellcheck source=/dev/null
. /etc/os-release
elif [ -e /usr/lib/os-release ]; then
# shellcheck source=/dev/null
. /usr/lib/os-release
fi
export SXMO_OS="${ID:-unknown}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
export XDG_RUNTIME_DIR
export XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
export SXMO_CACHEDIR="${SXMO_CACHEDIR:-$XDG_CACHE_HOME/sxmo}"
export SXMO_BLOCKDIR="${SXMO_BLOCKDIR:-$XDG_DATA_HOME/sxmo/block}"
export SXMO_BLOCKFILE="${SXMO_BLOCKFILE:-$XDG_CONFIG_HOME/sxmo/block.tsv}"
export SXMO_CONTACTFILE="${SXMO_CONTACTFILE:-$XDG_CONFIG_HOME/sxmo/contacts.tsv}"
export SXMO_STATE="${SXMO_STATE:-$XDG_RUNTIME_DIR/sxmo.state}"
export SXMO_LOGDIR="${SXMO_LOGDIR:-$XDG_DATA_HOME/sxmo/modem}"
export SXMO_NOTIFDIR="${SXMO_NOTIFDIR:-$XDG_DATA_HOME/sxmo/notifications}"
export BEMENU_OPTS="${BEMENU_OPTS:---fn "Fira Code 9" -H 22 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i}"
export EDITOR="${EDITOR:-vim}"
export BROWSER="${BROWSER:-firefox}"
export SHELL="${SHELL:-/bin/sh}"
PATH="$HOME/.local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
export PATH
if [ -z "$SXMO_DEVICE_NAME" ]; then
if [ -e /proc/device-tree/compatible ]; then
SXMO_DEVICE_NAME="$(tr -c '\0[:alnum:].,-' '_' < /proc/device-tree/compatible |
tr '\0' '\n' | head -n1)"
else
SXMO_DEVICE_NAME=desktop
fi
fi
export SXMO_DEVICE_NAME
deviceprofile="$(command -v "sxmo_deviceprofile_$SXMO_DEVICE_NAME.sh")"
# shellcheck disable=SC1090
if [ -f "$deviceprofile" ]; then
. "$deviceprofile"
printf "deviceprofile file %s loaded.\n" "$deviceprofile"
else
printf "WARNING: deviceprofile file not found for %s. Most device functions will not work. Please read: https://sxmo.org/deviceprofile \n" "$SXMO_DEVICE_NAME"
touch "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend
touch "$XDG_CACHE_HOME"/sxmo/sxmo.noidle
fi
unset deviceprofile
PATH="\
$HOME/.local/bin:\
$XDG_CONFIG_HOME/sxmo/hooks/$SXMO_DEVICE_NAME:\
$XDG_CONFIG_HOME/sxmo/hooks:\
$(xdg_data_path "sxmo/default_hooks" 0 ':'):\
$PATH"
export PATH
}
_sxmo_grab_session() {
if ! _sxmo_is_running; then
return
fi
XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
export XDG_RUNTIME_DIR
_sxmo_load_environments
if [ -f "$XDG_RUNTIME_DIR"/dbus.bus ]; then
DBUS_SESSION_BUS_ADDRESS="$(cat "$XDG_RUNTIME_DIR"/dbus.bus)"
export DBUS_SESSION_BUS_ADDRESS
if ! dbus-send --dest=org.freedesktop.DBus \
/org/freedesktop/DBus org.freedesktop.DBus.ListNames \
2> /dev/null; then
printf "WARNING: The dbus-send test failed with DBUS_SESSION_BUS_ADDRESS=%s. Unsetting...\n" "$DBUS_SESSION_BUS_ADDRESS" >&2
unset DBUS_SESSION_BUS_ADDRESS
fi
else
printf "WARNING: No dbus cache file found at %s/dbus.bus.\n" "$XDG_RUNTIME_DIR" >&2
fi
case "$SXMO_WM" in
dwm)
[ -z "$DISPLAY" ] && export DISPLAY=:0
export SXMO_MENU=dmenu
export SXMO_TERMINAL=st
;;
sway)
if [ -f "$XDG_RUNTIME_DIR"/sxmo.swaysock ]; then
SWAYSOCK="$(cat "$XDG_RUNTIME_DIR"/sxmo.swaysock)"
export SWAYSOCK
fi
;;
i3)
if [ -f "$XDG_RUNTIME_DIR"/sxmo.i3sock ]; then
I3SOCK="$(cat "$XDG_RUNTIME_DIR"/sxmo.i3sock)"
export I3SOCK
fi
;;
esac
}
_sxmo_prepare_dirs() {
uid=$(id -u)
gid=$(id -g)
mkdir -p "$XDG_RUNTIME_DIR"
chmod 700 "$XDG_RUNTIME_DIR"
chown "$uid:$gid" "$XDG_RUNTIME_DIR"
mkdir -p "$XDG_CACHE_HOME/sxmo/"
chmod 700 "$XDG_CACHE_HOME"
chown "$uid:$gid" "$XDG_CACHE_HOME"
mkdir -p "$XDG_STATE_HOME"
chmod 700 "$XDG_STATE_HOME"
chown "$uid:$gid" "$XDG_STATE_HOME"
}
_sxmo_grab_session
+23
View File
@@ -0,0 +1,23 @@
! Space to setup configversion
! configversion: 7bff124b2de16292fe6e7a7e5d3322ae
dmenu.font: Fira Code:pixelsize=18:style=Regular:antialias=true:autohint=true
dmenu.background: #1c1c1c
dmenu.foreground: #e0e0e0
dmenu.selbackground: #005577
dmenu.selforeground: #ffffff
dwm.font: Fira Code, DejaVuSansM Nerd Font 15px
dwm.normbgcolor: #323232
dwm.normbordercolor: #444444
dwm.normfgcolor: #dddddd
dwm.selbgcolor: #005577
dwm.selbordercolor: #005577
dwm.selfgcolor: #ffffff
st.font: Fira Code:pixelsize=13:antialias=true:autohint=true
st.background: #1c1c1c
st.foreground: #e5e5e5
st.cursorColor: #cccccc
svkbd.font: Fira Code:pixelsize=12
@@ -1,40 +0,0 @@
# Space to setup configversion
# configversion: 13fb3d2d9f97f4420f7506e72b90e77d
font=monospace:size=13
dpi-aware=no
pad=2x2
[colors-dark]
# alpha=1.0
foreground=eaeaea
background=000000
regular0=000000 # 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
[scrollback]
lines=5000
[key-bindings]
scrollback-up-page=Shift+Page_Up
scrollback-down-page=Shift+Page_Down
scrollback-up-half-page=Page_Up
scrollback-down-half-page=Page_Down
scrollback-up-line=Shift+Up
scrollback-down-line=Shift+Down
scrollback-home=Shift+Home
scrollback-end=Shift+End
@@ -1,18 +1,24 @@
-- Space to setup configversion
-- configversion: 19ec5c7f9e83bc6534d657f6180feba2
conky.config = {
out_to_x = false,
out_to_wayland = true,
output_backend = 'x11',
out_to_x = true,
out_to_wayland = false,
own_window = true,
own_window_type = 'override',
own_window_transparent = true,
own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
double_buffer = true,
alignment = 'top_middle',
gap_y = 12,
own_window_argb_value = 0,
own_window_type = 'desktop',
gap_x = 0,
gap_y = 34,
default_color = 'white',
default_shade_color = 'black',
draw_shades = true,
font = 'Sxmo:size=13',
font = 'Fira Code:size=14:style=Regular',
use_xft = true,
update_interval = 15,
}
conky.text = [[${alignc}${font Sxmo:size=34:style=Bold}${time %H:%M}${font}
${alignc}${font Sxmo:size=14:style=Bold}${time %a %d %b %Y}${font}]]
conky.text = [[${alignc}${font Fira Code:size=32:style=Regular}${time %H:%M}${font}
${voffset 4}${alignc}${font Fira Code:size=14:style=Regular}${time %a %d %b %Y}${font}]]
@@ -17,38 +17,51 @@ stop_proximity_lock() {
sxmo_jobs.sh stop proximity_lock
}
exec 0<<EOF
STATE_FILE="${SXMO_STATE:-$XDG_RUNTIME_DIR/sxmo.state}"
if [ -r "$STATE_FILE" ]; then
read -r CURRENT_STATE < "$STATE_FILE" || CURRENT_STATE=""
else
CURRENT_STATE="$(sxmo_state.sh get)"
fi
if [ "$CURRENT_STATE" != "unlock" ] && sxmo_state.sh is_locked; then
case "$ACTION" in
"powerbutton_one"|"powerbutton_two"|"powerbutton_three"|"menuleft_one"|"menuright_one"|"enter_one"|"enter_two"|"enter_three")
if [ -n "$WAYLAND_DISPLAY" ]; then
wlopm --on "*" >/dev/null 2>&1 || sxmo_wm.sh display on
else
sxmo_wm.sh display on
fi
if [ -w /sys/class/leds/white:kbd_backlight/brightness ]; then
printf '255' > /sys/class/leds/white:kbd_backlight/brightness 2>/dev/null || true
else
brightnessctl -d white:kbd_backlight set 255 >/dev/null 2>&1 || true
fi
sxmo_state.sh set unlock &
exit 0
;;
"voldown_one"|"volup_one")
exec 0<<EOF
$(sxmo_wm.sh focusedwindow -r)
EOF
read -r WMCLASS
read -r WMNAME
sxmo_debug "STATE: $(sxmo_state.sh get) ACTION: $ACTION WMCLASS: $WMCLASS WMNAME: $WMNAME"
if sxmo_state.sh is_locked; then
case "$WMNAME" in # Handle programs
*"epy"*|*"epr"*)
case "$ACTION" in
"voldown_one")
sxmo_type.sh l
exit 0
;;
"volup_one")
sxmo_type.sh h
read -r WMCLASS
read -r WMNAME
case "$WMNAME" in
*"epy"*|*"epr"*)
if [ "$ACTION" = "voldown_one" ]; then
sxmo_type.sh l
else
sxmo_type.sh h
fi
exit 0
;;
esac
;;
esac
case "$ACTION" in
"powerbutton_one"|"powerbutton_two"|"powerbutton_three"|"menuleft_one"|"menuright_one"|"enter_one"|"enter_two"|"enter_three")
brightnessctl -d white:kbd_backlight set 255 >/dev/null 2>&1 || true
sxmo_state.sh set unlock
sxmo_wm.sh display on
;;
"voldown_one")
sxmo_audio.sh vol down 5
exit
if [ "$ACTION" = "voldown_one" ]; then
sxmo_audio.sh vol down 5
else
sxmo_audio.sh vol up 5
fi
exit 0
;;
"voldown_two")
sxmo_audio.sh vol down 10
@@ -58,10 +71,6 @@ if sxmo_state.sh is_locked; then
sxmo_audio.sh vol down 15
exit
;;
"volup_one")
sxmo_audio.sh vol up 5
exit
;;
"volup_two")
sxmo_audio.sh vol up 10
exit
@@ -75,6 +84,31 @@ if sxmo_state.sh is_locked; then
exit 0
fi
case "$ACTION" in
"menuleft"*|"enter_two"|"enter_three"|"powerbutton_two"|"powerbutton_three"|"voldown_two"|"volup_two"|"volup_three"|"topleftcorner"|"toprightcorner"|"bottomrightcorner")
WMCLASS=""
WMNAME=""
;;
*)
if [ -r "$XDG_RUNTIME_DIR/sxmo.focusedwin" ]; then
{
read -r WMCLASS || WMCLASS=""
read -r WMNAME || WMNAME=""
} < "$XDG_RUNTIME_DIR/sxmo.focusedwin"
else
exec 0<<EOF
$(sxmo_wm.sh focusedwindow -r)
EOF
read -r WMCLASS
read -r WMNAME
fi
;;
esac
if [ -n "$SXMO_DEBUG" ]; then
sxmo_debug "STATE: $CURRENT_STATE ACTION: $ACTION WMCLASS: $WMCLASS WMNAME: $WMNAME"
fi
#special context-sensitive handling
case "$WMCLASS" in
*"mpv"*)
@@ -367,7 +401,7 @@ case "$ACTION" in
exit 0
;;
"enter_one")
if pidof -q sxmo_RepeatRing.sh; then
if pidof -s sxmo_RepeatRing.sh >/dev/null; then
sxmo_hook_pickup.sh
else
sxmo_appmenu.sh "$WMCLASS" "$WMNAME"
+89
View File
@@ -0,0 +1,89 @@
#!/bin/sh
# configversion: e7cdaa3a889d251bed8a89ce8c622995
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
# Please modify this file to your liking
# Important Instructions:
# All processes you launch from this script must
# be non-blocking: launch them in the background (using &)
# or ensure they return quickly. Only after this script
# finishes will the window manager be loaded
# You will sometime get SMS or calls from not
# country code prefixed phone numbers. To make
# it easy to fixup configure the default countryu.
#export DEFAULT_COUNTRY=FR
### Configuration Parameters ###
# Note that this is just a subset of all available
# parameters, see the sxmo documentation for more.
# Use firefox as default browser if installed
command -v firefox >/dev/null && export BROWSER=firefox
# Prepopulate Subreddits menu with custom subreddits
#export SXMO_SUBREDDITS="postmarketos pinephoneOfficial pinephone unixporn"
# Change the default terminal command
export TERMCMD="sxmo_terminal.sh"
# Change the used terminal command
# export SXMO_TERMINAL="st"
# When scrolling past the beginning or end of a menu, wrap it around:
#export DMENU_WRAP_AROUND=1
# Enable audio feedback on keypress
#export KEYBOARD_ARGS="-o | clickclack -f $(xdg_data_path sxmo/keytap.wav)"
# Or, enable vibration feedback on keypress
#export KEYBOARD_ARGS="-o | clickclack -V"
# Set the scale factor in sway
# export SXMO_SWAY_SCALE=2
# To load specific part of configuration depending on the running environment
case "$SXMO_WM" in
sway)
;;
dwm)
;;
esac
#Set RINGTONE to audio file to play for incoming call
export SXMO_RINGTONE="$(xdg_data_path sxmo/ring.ogg)"
#Set TEXTSOUND to audio file to play when received text message
export SXMO_TEXTSOUND="$(xdg_data_path sxmo/notify.ogg)"
#Set RINGTIME to number of seconds the phone will ring
export SXMO_RINGTIME=20
#Set RINGNUMBER to number of times phone will ring or repeat ringtone
#(whichever of SXMO_RINGTIME or SXMO_RINGNUMBER runs less will limit how long phone rings)
export SXMO_RINGNUMBER=10
#Set to the default text for a new text message.
export SXMO_DEFAULT_DRAFT="Enter new message here."
export PATH="$HOME/.local/bin:$PATH"
export SXMO_WM="dwm"
export SXMO_MENU="dmenu"
export SXMO_TERMINAL="st"
export DMENU_WRAP_AROUND=1
export SXMO_DMENU_PORTRAIT_LINES=12
export SXMO_DMENU_LANDSCAPE_LINES=8
export SXMO_DISABLE_LEDS=1
export SXMO_NO_VIRTUAL_KEYBOARD=1
export NO_AT_BRIDGE=1
export GTK_A11Y=none
export GTK_USE_PORTAL=0
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SXMO_BG_IMG="/usr/share/wallpapers/bananarchy.png"
-296
View File
@@ -1,296 +0,0 @@
# Default config for sway
# configversion: 076611fe8cc699bcaa01092a8e4481c0
#
# 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 sxmo_terminal.sh
# 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
font "Sxmo 13"
xwayland disable
output * scale 1 bg /usr/share/wallpapers/bananarchy.png fill
default_orientation vertical
exec_always sxmo_swayinitconf.sh
exec_always dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP
mode "menu" {
bindsym --locked XF86PowerOff exec sh -c "sxmo_dmenu.sh close; if sxmo_state.sh is_locked; then sxmo_state.sh set unlock; sxmo_wm.sh display on; fi"
bindsym --locked XF86PickupPhone exec sh -c "if sxmo_state.sh is_locked; then sxmo_state.sh set unlock; sxmo_wm.sh display on; else wtype -k Return; fi"
bindsym --locked XF86KbdLcdMenu1 exec sh -c "sxmo_dmenu.sh close; if sxmo_state.sh is_locked; then sxmo_state.sh set unlock; sxmo_wm.sh display on; fi"
bindsym --locked XF86KbdLcdMenu2 exec sh -c "sxmo_dmenu.sh close; if sxmo_state.sh is_locked; then sxmo_state.sh set unlock; sxmo_wm.sh display on; fi"
bindsym XF86AudioRaiseVolume exec wtype -k Up
bindsym XF86AudioLowerVolume exec wtype -k Down
bindswitch --locked lid:on exec sh -c "sxmo_dmenu.sh close; brightnessctl -d white:kbd_backlight set 0; sxmo_state.sh set screenoff"
bindswitch --locked lid:off exec sh -c "brightnessctl -d white:kbd_backlight set 255; sxmo_state.sh set unlock; sxmo_wm.sh display on"
}
# Mode specifically for use with Nokia N900 hardware keyboard
mode "N900" {
# follow the standard sxmo keybinds as far as possible
bindsym t exec $term; mode "default"
bindsym q mode "default"
bindsym Shift+p exec sxmo_appmenu.sh sys; mode "default"
bindsym p exec sxmo_appmenu.sh; mode "default"
bindsym d exec $menu; mode "default"
bindsym Shift+q kill; mode "default"
bindsym i exec sxmo_wmmenu.sh windowswitcher; mode "default"
bindsym Shift+c reload; mode "default"
bindsym f fullscreen; mode "default"
bindsym Shift+space floating toggle; mode "default"
bindsym a focus parent; mode "default"
}
### Key bindings
#
# Basics:
#
input * xkb_options compose:ralt
# Nokia N900 hardware keyboard
input "1:1:TWL4030_Keypad" {
xkb_model "nokiarx51"
xkb_layout "us"
# ralt has special meaning on N900 keyboard so do not use as
# compose key
xkb_options compose:rwin
}
# Start a terminal
bindsym $mod+Return exec $term
# Launch appmenu
bindsym $mod+p exec sxmo_appmenu.sh
bindsym $mod+Shift+p exec sxmo_appmenu.sh sys
# Wm menu switcher
bindsym $mod+i exec sxmo_wmmenu.sh windowswitcher
# 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' 'sxmo_power.sh logout'
#
# 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
# Move the focused workspace to output
bindsym $mod+Shift+Ctrl+$left move workspace output left
bindsym $mod+Shift+Ctrl+$down move workspace output down
bindsym $mod+Shift+Ctrl+$up move workspace output up
bindsym $mod+Shift+Ctrl+$right move workspace output 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
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# 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
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# 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
# Manual locker
bindsym $mod+g exec sxmo_state.sh set locker
# Shutdown
bindsym $mod+t exec sxmo_appmenu.sh power
#
# 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 30px
bindsym $down resize grow height 30px
bindsym $up resize shrink height 30px
bindsym $right resize grow width 30px
# Ditto, with arrow keys
bindsym Left resize shrink width 30px
bindsym Down resize grow height 30px
bindsym Up resize shrink height 30px
bindsym Right resize grow width 30px
# 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
height 24
font "Sxmo 13"
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
status_command sxmo_status_watch.sh -o pango
pango_markup enabled
colors {
statusline #ffffff
background #323232
inactive_workspace #323232 #323232 #ffffff
font "Sxmo 13"
}
}
for_window [app_id="pinentry-.*"] floating true
for_window [app_id="foot" title=".*sxmo/modem/.*/draft.txt.*"] resize set height 25
for_window [title="megapixels"] inhibit_idle open
for_window [title="ep[yr].*"] inhibit_idle visible
default_border pixel 2
titlebar_border_thickness 2
hide_edge_borders smart
# Need playerctl installed and running
bindsym --locked XF86AudioPlay exec playerctl play-pause
bindsym --locked XF86AudioPause exec playerctl play-pause
bindsym --locked XF86AudioStop exec playerctl stop
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous
bindsym --locked XF86MonBrightnessUp exec sxmo_brightness.sh up
bindsym --locked XF86MonBrightnessDown exec sxmo_brightness.sh down
# Nokia N900-specific key bindings:
# 1. Bind lock key (XF86ScreenSaver)
# Use keycode due to https://github.com/swaywm/sway/issues/8438
bindcode --release --locked --input-device="1:1:gpio_keys" 160 exec sxmo_state.sh set unlock
# 2. Workaround the lack of a free ModX key on hardware keyboard
bindsym --input-device="1:1:TWL4030_Keypad" Shift+space mode "N900"
bindsym Print exec sxmo_screenshot.sh
bindsym button2 kill
bindswitch --locked lid:on exec sh -c "brightnessctl -d white:kbd_backlight set 0; sxmo_state.sh set screenoff"
bindswitch --locked lid:off exec sh -c "brightnessctl -d white:kbd_backlight set 255; sxmo_state.sh set unlock; sxmo_wm.sh display on"
# Nokia 8110 4G hardware keypad bindings (User:Ybon)
bindsym --locked --no-repeat XF86KbdLcdMenu1 exec sxmo_hook_inputhandler.sh menuleft_one
bindsym --locked --no-repeat XF86KbdLcdMenu2 exec sxmo_hook_inputhandler.sh menuright_one
bindsym --locked --no-repeat XF86PickupPhone exec sxmo_multikey.sh pickup enter_one enter_two enter_three
include /etc/sway/config.d/*
exec 'printf %s "$SWAYSOCK" > "$XDG_RUNTIME_DIR"/sxmo.swaysock'
exec sxmo_hook_start.sh
# vim: ft=swayconfig
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
# configversion: 36730424afa6d6bf9e9fb6d111c35504
dbus-update-activation-environment DISPLAY XDG_CURRENT_DESKTOP
# Run actions on start
sxmo_hook_start.sh &
+16
View File
@@ -0,0 +1,16 @@
export PATH="$HOME/.local/bin:$PATH"
export SXMO_WM=dwm
export SXMO_MENU=dmenu
export SXMO_TERMINAL=st
export DMENU_WRAP_AROUND=1
export SXMO_DMENU_PORTRAIT_LINES=12
export SXMO_DMENU_LANDSCAPE_LINES=8
export SXMO_DISABLE_LEDS=1
export SXMO_NO_VIRTUAL_KEYBOARD=1
export NO_AT_BRIDGE=1
export GTK_A11Y=none
export GTK_USE_PORTAL=0
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
@@ -1 +1,2 @@
SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp video /sys/class/leds/%k/brightness", RUN+="/bin/chmod 0664 /sys/class/leds/%k/brightness"
SUBSYSTEM=="backlight", ACTION=="add", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power", RUN+="/bin/chmod 0664 /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power"