summaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/config129
-rw-r--r--sway/config~295
-rwxr-xr-xsway/otherwindow~60
-rwxr-xr-xsway/switch.py101
-rwxr-xr-xsway/switch.sh~10
-rwxr-xr-xsway/toEmacs.sh~11
6 files changed, 167 insertions, 439 deletions
diff --git a/sway/config b/sway/config
index d3f2c0a..beec2af 100644
--- a/sway/config
+++ b/sway/config
@@ -15,8 +15,6 @@ set $term foot
# on the original workspace that the command was run on.
set $menu exec wofi -G --show run,drun
-exec swayrd 1>/dev/null 2>/dev/null
-#this think doesnt stop when sway dies
#general preferences
focus_follows_mouse no
@@ -27,9 +25,13 @@ input type:keyboard {
repeat_rate 35
# xkb_file ~/.xkb/symbols/tmucustom.xkb
xkb_options compose:ralt
+ #,grp:rctrl_toggle
+ xkb_numlock enabled
+# xkb_layout us,us
+# xkb_variant ,dvorak
}
input type:touchpad {
- dwt enabled
+ dwt disabled
tap enabled
drag disabled
drag_lock disabled
@@ -38,16 +40,21 @@ input type:touchpad {
}
#specfically the little red one
-#input "1739:52619:SYNA8006:00_06CB:CD8B_Mouse" {
+input "1739:52619:SYNA8006:00_06CB:CD8B_Mouse" {
# pointer_accel -1
# accel_profile flat
# scroll_factor 0.25
-#}
+ dwt disabled
+}
+for_window [app_id=mpv] floating enable
#start language switcher
exec fcitx5 -d
+#notifs
+exec mako
+
#handle monitors properly
exec_always bash -c 'if $(swaymsg -t get_outputs | grep -q -F "HDMI"); then swaymsg output eDP-1 disable; swaymsg output HDMI-A-1 enable; swaymsg output DP-2 enable; else swaymsg output eDP-1 enable; swaymsg output HDMI-A-1 disable; swaymsg output DP-2 disable; fi'
@@ -73,45 +80,48 @@ output DP-2 {
mode 1920x1080@60Hz
}
+
+#
+# Status Bar:
+#
+# Read `man 5 sway-bar` for more information about this section.
+bar {
+ swaybar_command waybar
+# position bottom
+# height 20
+
+# # When the status_command prints a new line to stdout, swaybar updates.
+# # The default just shows the current date and time.
+# # status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
+
+# # colors {
+# # statusline #ffffff
+# # background #323232
+# # inactive_workspace #32323200 #32323200 #d0d0d0
+# # }
+}
+
#theming stuff
#titlebar_border_thickness 2
#no extra padding
-titlebar_padding 2
+# titlebar_padding 2
#hide_edge_borders both
#smart_borders on
-default_border none
-font monospace 10
workspace_layout stacking
-focus_wrapping no
+focus_wrapping yes
show_marks on
-
-
-### I want to be able to open a bunch of stuff quickly on startup and have it go the right place
-for_window [app_id="foot" title="terminal"] {
- move container to workspace T
- mark "t"
- fullscreen
-}
-
-
-
-exec foot -T "terminal"
-#bindsym $mod+Shift+s exec vivaldi-stable; exec brave; exec foot -T "terminal"
-
-
-# things I want to toggle
-#bindsym $mod+m [title="Messages for web"] scratchpad show
-#bindsym $mod+n [class="Spotify"] scratchpad show
-
-
-### dedicated terminal
-# I want a permanent terminal that is fullscreened
-bindsym $mod+Shift+Return exec ~/.config/sway/switch.sh
-
-### marking
-# using sway-marker
-bindsym $mod+bracketright exec sway-marker mark
-bindsym $mod+bracketleft exec sway-marker goto
+# start in normal state
+default_border none
+titlebar_border_thickness 0
+titlebar_padding 2
+font monospace 10
+# bar mode dock
+# two modes, with and without metadata
+bindsym $mod+g default_border none, titlebar_border_thickness 0, titlebar_padding 2, font monospace 10, bar mode dock
+bindsym $mod+Shift+g default_border pixel 0, titlebar_border_thickness 0, titlebar_padding 0, font monospace 0, bar mode hide
+# more jumping stuff
+bindsym --to-code $mod+m exec sway-marker mark
+bindsym --to-code $mod+Shift+m exec sway-marker goto
### Key bindings
#
@@ -127,13 +137,13 @@ bindsym $mod+Shift+q kill
bindsym $mod+d exec $menu
# get me to emacs
-bindsym $mod+p exec ~/.config/sway/toEmacs.sh
+bindsym $mod+Shift+p exec ~/.config/sway/toEmacs.sh
# make a new emacs frame here
-bindsym $mod+Shift+p exec emacsclient -c
+bindsym $mod+p exec emacsclient -c --alternate-editor=emacs
-# start throwaway browser
-bindsym $mod+e exec MOZ_ENABLE_WAYLAND=1 BDK_BACKEND=wayland firefox
+# start browser
+bindsym $mod+e exec firefox
# start quick-open menu
#bindsym $mod+o exec $term --title quicklauncher -e bash -c 'read line; eval $line | less -r'
@@ -168,6 +178,9 @@ bindsym XF86MonBrightnessUp exec brightnessctl -e s +10%
bindsym $mod+grave exec systemctl suspend
bindsym $mod+Escape exec sh -c 'swaylock -i /home/tmu/Pictures/capture/installsource.png -l -e -t --indicator-radius 100 & systemctl suspend'
+bindsym $mod+w exec sh -c '/home/tmu/.config/sway/switch.py'
+
+
#
# Moving around:
#
@@ -177,11 +190,21 @@ bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l 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
+
+bindsym $mod+Shift+h move left
+bindsym $mod+Shift+j move down
+bindsym $mod+Shift+k move up
+bindsym $mod+Shift+l move right
#
# Workspaces:
#
@@ -227,8 +250,8 @@ bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking #not sure I need, I'll leave it
-bindsym $mod+w exec swayr switch-window
-#bindsym $mod+e layout toggle split
+bindsym $mod+y layout tabbed
+bindsym $mod+t layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
@@ -272,24 +295,4 @@ mode "resize" {
}
bindsym $mod+r mode "resize"
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
-bar {
- swaybar_command waybar
-# position bottom
-# height 20
-
-# # When the status_command prints a new line to stdout, swaybar updates.
-# # The default just shows the current date and time.
-# # status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
-
-# # colors {
-# # statusline #ffffff
-# # background #323232
-# # inactive_workspace #32323200 #32323200 #d0d0d0
-# # }
-}
-
include /etc/sway/config.d/*
diff --git a/sway/config~ b/sway/config~
deleted file mode 100644
index 80eeb46..0000000
--- a/sway/config~
+++ /dev/null
@@ -1,295 +0,0 @@
-# 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
-# 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 exec wofi -G --show run,drun
-
-exec swayrd 1>/dev/null 2>/dev/null
-#this think doesnt stop when sway dies
-
-#general preferences
-focus_follows_mouse no
-seat * hide_cursor when-typing enable
-
-input type:keyboard {
- repeat_delay 210
- repeat_rate 35
-# xkb_file ~/.xkb/symbols/tmucustom.xkb
- xkb_options compose:ralt
-}
-input type:touchpad {
- dwt enabled
- tap enabled
- drag disabled
- drag_lock disabled
- middle_emulation disabled
- tap_button_map lrm
-}
-
-#specfically the little red one
-#input "1739:52619:SYNA8006:00_06CB:CD8B_Mouse" {
-# pointer_accel -1
-# accel_profile flat
-# scroll_factor 0.25
-#}
-
-
-#start language switcher
-exec fcitx5 -d
-
-#handle monitors properly
-exec_always bash -c 'if $(swaymsg -t get_outputs | grep -q -F "HDMI"); then swaymsg output eDP-1 disable; swaymsg output HDMI-A-1 enable; swaymsg output DP-2 enable; else swaymsg output eDP-1 enable; swaymsg output HDMI-A-1 disable; swaymsg output DP-2 disable; fi'
-
-#get me a background
-#exec_always bash -c 'sleep 0.5s ;systemctl --user start background.service'
-exec_always bash -c 'setwallpaper ~/Pictures/capture/aesthetic/turquoiseCity.jpg'
-
-output HDMI-A-1 {
-# background ~/Pictures/tree.jpg fill
- pos 0 0
- mode 1920x1080@60Hz
-}
-
-output eDP-1 {
-# background ~/Pictures/tree.jpg fill
- pos 0 0
- mode 1920x1080@60Hz
-}
-
-output DP-2 {
-# background ~/Pictures/tree.jpg fill
- pos 1920 0
- mode 1920x1080@60Hz
-}
-
-#theming stuff
-#titlebar_border_thickness 2
-#no extra padding
-titlebar_padding 2
-#hide_edge_borders both
-#smart_borders on
-default_border none
-font monospace 10
-workspace_layout stacking
-focus_wrapping no
-show_marks on
-
-
-### I want to be able to open a bunch of stuff quickly on startup and have it go the right place
-for_window [app_id="foot" title="terminal"] {
- move container to workspace T
- mark "t"
- fullscreen
-}
-
-
-
-exec foot -T "terminal"
-#bindsym $mod+Shift+s exec vivaldi-stable; exec brave; exec foot -T "terminal"
-
-
-# things I want to toggle
-#bindsym $mod+m [title="Messages for web"] scratchpad show
-#bindsym $mod+n [class="Spotify"] scratchpad show
-
-
-### dedicated terminal
-# I want a permanent terminal that is fullscreened
-bindsym $mod+Return exec ~/.config/sway/switch.sh
-
-### marking
-# using sway-marker
-bindsym $mod+bracketright exec sway-marker mark
-bindsym $mod+bracketleft exec sway-marker goto
-
-### Key bindings
-#
-# Basics:
-#
-# Start a terminal
-bindsym $mod+Shift+Return exec $term
-
-# Kill focused window
-bindsym $mod+Shift+q kill
-
-# Start your launcher
-bindsym $mod+d exec $menu
-
-# get me to emacs
-bindsym $mod+p exec ~/.config/sway/toEmacs.sh
-
-# make a new emacs frame here
-bindsym $mod+Shift+p exec emacsclient -c
-
-# start throwaway browser
-bindsym $mod+e exec MOZ_ENABLE_WAYLAND=1 BDK_BACKEND=wayland firefox
-
-# start quick-open menu
-#bindsym $mod+o exec $term --title quicklauncher -e bash -c 'read line; eval $line | less -r'
-#for_window [title="quicklauncher"] floating enable, resize set 30 ppt 35 ppt, border pixel 2
-
-#other window swap
-bindsym $mod+o exec swaymsg [con_id=$(~/.config/sway/otherwindow f)] focus
-
-# 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 exit
-
-# media keys
-bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
-bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
-bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
-bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
-
-bindsym XF86MonBrightnessDown exec brightnessctl -e s 10%-
-bindsym XF86MonBrightnessUp exec brightnessctl -e s +10%
-
-# other bindings
-bindsym $mod+grave exec systemctl suspend
-bindsym $mod+Escape exec sh -c 'swaylock -i /home/tmu/Pictures/capture/installsource.png -l -e -t --indicator-radius 100 & systemctl suspend'
-
-#
-# Moving around:
-#
-# 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
-#
-# 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
-
-# move workspaces between monitors
-bindsym $mod+Prior focus output left
-bindsym $mod+Next focus output right
-bindsym $mod+Shift+Prior move workspace output left
-bindsym $mod+Shift+Next move workspace output right
-
-# 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 #not sure I need, I'll leave it
-bindsym $mod+w exec swayr switch-window
-#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
-
- # 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 {
- swaybar_command waybar
-# position bottom
-# height 20
-
-# # When the status_command prints a new line to stdout, swaybar updates.
-# # The default just shows the current date and time.
-# # status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
-
-# # colors {
-# # statusline #ffffff
-# # background #323232
-# # inactive_workspace #32323200 #32323200 #d0d0d0
-# # }
-}
-
-include /etc/sway/config.d/*
diff --git a/sway/otherwindow~ b/sway/otherwindow~
deleted file mode 100755
index 0a82e72..0000000
--- a/sway/otherwindow~
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python3
-
-import sys
-import json
-import subprocess
-
-direction=bool(sys.argv[1] == 't' or sys.argv[1] == 'T')
-swaymsg = subprocess.run(['swaymsg', '-t', 'get_tree'], stdout=subprocess.PIPE)
-data = json.loads(swaymsg.stdout)
-current = data["nodes"][1]["current_workspace"]
-
-for output in data["nodes"]:
- if "current_workspace" in output:
- for workspace in output["nodes"]:
- if workspace["name"] == output["current_workspace"]:
- #maybe gives all the visible ones in multi monitor mode?
- roi = workspace
- break
-
-#workspace = int(data["nodes"][1]["current_workspace"])-1
-#roi = data["nodes"][1]["nodes"][workspace]
-#print(roi)
-temp = roi
-windows = list()
-
-def getNextWindow():
- if focus < len(windows) - 1:
- return focus+1
- else:
- return 0
-
-def getPrevWindow():
- if focus > 0:
- return focus-1
- else:
- return len(windows)-1
-
-def makelist(temp):
- for nodes in "floating_nodes", "nodes":
- for i in range(len(temp[nodes])):
- # print(temp[nodes][i]["name"])
- # print()
- if temp[nodes][i]["name"] is None:
- makelist(temp[nodes][i])
- elif temp[nodes][i]["visible"]:
- windows.append(temp[nodes][i])
-
-def focused(temp_win):
- for i in range(len(temp_win)):
- if temp_win[i]["focused"] == True:
- return i
-
-makelist(temp)
-#print(windows)
-# print(len(windows))
-focus = focused(windows)
-if str(sys.argv[1]) == 't' or str(sys.argv[1]) == 'T':
- print(windows[getNextWindow()]["id"])
-else:
- print(windows[getPrevWindow()]["id"])
diff --git a/sway/switch.py b/sway/switch.py
new file mode 100755
index 0000000..479cf74
--- /dev/null
+++ b/sway/switch.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import subprocess
+import json
+import re
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+def parse_icon_name(app_name):
+ app_name = app_name.lower()
+ if app_name in icon_names:
+ return icon_names[app_name]
+ if app_name.endswith('telegram_desktop'):
+ return 'telegram'
+ if app_name.startswith('gimp'):
+ return 'gimp'
+ return app_name
+
+def get_icon(app_name):
+ icon_info = icon_theme.lookup_icon(parse_icon_name(app_name), 48, 0)
+ if icon_info == None:
+ print("Failed to get icon for: " + app_name)
+ # return icon_info.get_filename() if icon_info != None else default_icon_file
+ return default_icon_file
+
+def get_cons(tree):
+ if len(tree.get('nodes')) == 0 and len(tree.get('floating_nodes')) == 0 and (tree.get('type') == 'con' or tree.get('type') == 'floating_con'):
+ return [tree]
+ nodes = []
+ for node in tree.get('floating_nodes'):
+ cons = get_cons(node)
+ nodes += cons
+ for node in tree.get('nodes'):
+ cons = get_cons(node)
+ nodes += cons
+ return nodes
+
+def show_wofi(windows):
+ # command = 'wofi -W 600 -L ' + str(len(windows)) + ' -I -d -i -b -k /dev/null -p "Window" 2>/dev/null'
+ command = 'wofi -G -L ' + str(len(windows)) + ' -I -d -i -b -p "Window" 2>/dev/null'
+ process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+ (result, _) = process.communicate(input='\n'.join(windows).encode())
+ return result
+
+
+def get_tree():
+ sway_tree = subprocess.check_output(['swaymsg', '-rt', 'get_tree'])
+ return json.loads(sway_tree)
+
+def get_windows():
+ cons = get_cons(get_tree())
+ windows = []
+ for con in cons:
+ name = con['name']
+ if len(name) > 70:
+ name = name[:67]+"..."
+ app_id = con.get('app_id')
+ if app_id == None:
+ window_prop = con.get('window_properties')
+ if window_prop != None:
+ app_id = window_prop.get('instance')
+
+ if app_id != None:
+ app_icon = get_icon(app_id)
+ else:
+ app_icon = default_icon_file
+
+ # windows.append("img:id=" + str(con.get('id')) +":img:" + app_icon + ":text:" + name)
+ windows.append("img:id=" + str(con.get('id')) +":img:" + app_icon + ":text:" + app_id + ": " + name)
+ return windows
+
+def parse_selection(selection):
+ id_search = re.search('id=([0-9]*):', selection, re.IGNORECASE)
+ if id_search:
+ return id_search.group(1)
+ return None
+
+def switch_window(id):
+ command="swaymsg [con_id={}] focus".format(id)
+ process = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE)
+ process.communicate()
+
+if __name__ == "__main__":
+ icon_theme = Gtk.IconTheme.get_default()
+ default_icon = icon_theme.lookup_icon("preferences-system-windows", 48, 0)
+ default_icon_file = ""
+ if default_icon:
+ default_icon_file = default_icon.get_filename()
+
+ icon_names = {
+ "code": "visual-studio-code",
+ "qt5ct": "preferences-desktop-theme"
+ }
+
+ windows = get_windows()
+ selection = show_wofi(windows)
+ con_id = parse_selection(str(selection))
+ if con_id:
+ switch_window(con_id)
diff --git a/sway/switch.sh~ b/sway/switch.sh~
deleted file mode 100755
index ccd1bf7..0000000
--- a/sway/switch.sh~
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-a="$(swaymsg -t get_tree | jq '.. | objects | select(.type == "con") | select(.focused == true) | .marks | index("t") != null')"
-
-#echo $a
-if [ $a = "true" ]; then
- swaymsg '[con_mark="l"] focus'
-else
- swaymsg 'mark --add "l"; [con_mark="t"] focus'
-fi
diff --git a/sway/toEmacs.sh~ b/sway/toEmacs.sh~
deleted file mode 100755
index 30d1dc3..0000000
--- a/sway/toEmacs.sh~
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-#get be to emacs and back
-
-f=$(swaymsg -t get_tree | jq '.. | objects | select(.focused) | .app_id')
-
-if [ $f = "emacs" ]; then
- swaymsg '[con_mark="E"] focus'
-else
- swaymsg 'mark --add "E", [app_id="emacs"] focus'
-fi