milgra / sov Goto Github PK
View Code? Open in Web Editor NEWAn overlay that shows schemas for all workspaces to make navigation in sway easier.
License: GNU General Public License v3.0
An overlay that shows schemas for all workspaces to make navigation in sway easier.
License: GNU General Public License v3.0
To be implemented.
I created a nixpkg for this project its currently in nix unstable
Not sure how to put the title properly to describe this, so I attached a screenshot.
"Electron" on screen 1 is obsidian
"org.wezfurlong.wezterm" is wezterm
Is there something I can do on my end to make them show different names?
Using aur/sov 0.87b-1 (arch)
PS, thanks for sharing such a cool project!
Linux distribution: EndeavourOS
When attempting to start sov.service with systemd, the following message appears in journalctl:
[marioagustincarranza@sway ~]$ systemctl status --user sov.service
× sov.service - An overlay that shows schemas for all workspaces to make navigation in sway easier
Loaded: loaded (/home/marioagustincarranza/.local/share/systemd/user/sov.service; disabled; preset: enabled)
Active: failed (Result: start-limit-hit) since Sat 2022-10-22 11:19:22 CEST; 1s ago
Duration: 8ms
TriggeredBy: × sov.socket
Process: 5867 ExecStart=/usr/bin/sov (code=exited, status=0/SUCCESS)
Main PID: 5867 (code=exited, status=0/SUCCESS)
CPU: 8ms
Okt 22 11:19:22 sway systemd[907]: Started An overlay that shows schemas for all workspaces to make navigation in sway easier.
Okt 22 11:19:22 sway systemd[907]: sov.service: Start request repeated too quickly.
Okt 22 11:19:22 sway systemd[907]: sov.service: Failed with result 'start-limit-hit'.
Okt 22 11:19:22 sway systemd[907]: Failed to start An overlay that shows schemas for all workspaces to make navigation in sway easier.
I am currently attempting to know if its an issue made by me, or if something needs to be modified
Running sov
prints:
Ttrying to allocate 0 bytes for ../sov-0.62/src/modules/zen_core/zc_cstring.c 208
Trying has a typo.
Using SOV on a tablet would benefit greatly from allowing the user to move to a given workspace by tapping (clicking) on it.
In addition, auto-updating a static SOV in sitting "show" mode could, along with the above feature, allow SOV to be used not just as a map of workspaces, but as a also as a great touchscreen/tablet navigation tool. This could presumably be accomplished by listening to workspace / window events via the sway IPC socket.
I've been trying to get this working on Void Linux both using xbps-src as well as directly running meson build
and ninja -C build
from a terminal and it fails during the second command (i.e. ninja -C build
) with the error ninja: build stopped: subcommand failed
and with the following output:
ninja: Entering directory `build'
[19/60] Compiling C object sov.p/src_sov_config_fontconfig.c.o
../src/sov/config/fontconfig.c: In function 'fontconfig_new_path':
../src/sov/config/fontconfig.c:22:19: warning: implicit declaration of function 'popen'; did you mean 'fopen'? -Wimplicit-function-declaration]
22 | FILE* pipe = popen(command, "r"); // CLOSE 0
| ^~~~~
| fopen
../src/sov/config/fontconfig.c:22:19: warning: initialization of 'FILE *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
../src/sov/config/fontconfig.c:26:3: warning: implicit declaration of function 'pclose'; did you mean 'fclose'? [-Wimplicit-function-declaration]
26 | pclose(pipe); // CLOSE 0
| ^~~~~~
| fclose
../src/sov/config/fontconfig.c:32:18: warning: initialization of 'FILE *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
32 | FILE* pipe = popen(command, "r"); // CLOSE 1
| ^~~~~
../src/sov/config/fontconfig.c:42:20: warning: initialization of 'FILE *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
42 | FILE* pipe = popen(command, "r"); // CLOSE 2
| ^~~~~
[20/60] Compiling C object sov.p/src_modules_storage_kvlines.c.o
FAILED: sov.p/src_modules_storage_kvlines.c.o
cc -Isov.p -I. -I.. -I../src/sov/config -I../src/sov/tree -I../src/modules/json -I../src/modules/storage -I../src/modules/zen_core -I../src/modules/zen_text -I/usr/include/freetype2 -I/usr/include/libpng16 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -O0 -g '-DSOV_VERSION="0.61"' -DDEBUG -MD -MQ sov.p/src_modules_storage_kvlines.c.o -MF sov.p/src_modules_storage_kvlines.c.o.d -o sov.p/src_modules_storage_kvlines.c.o -c ../src/modules/storage/kvlines.c
../src/modules/storage/kvlines.c: In function 'kvlines_write':
../src/modules/storage/kvlines.c:102:32: error: 'PATH_MAX' undeclared (first use in this function)
102 | char* path = cstr_new_format(PATH_MAX + NAME_MAX, "%snew", libpath); // REL 0
| ^~~~~~~~
../src/modules/storage/kvlines.c:102:32: note: each undeclared identifier is reported only once for each function it appears in
../src/modules/storage/kvlines.c:102:43: error: 'NAME_MAX' undeclared (first use in this function)
102 | char* path = cstr_new_format(PATH_MAX + NAME_MAX, "%snew", libpath); // REL 0
| ^~~~~~~~
[25/60] Compiling C object sov.p/src_modules_zen_core_zc_bitmap.c.o
ninja: build stopped: subcommand failed.
Any help? I'm quite new to meson-style builds.
Below is a screenshot of workspace 9. I would expect that:
❯ swaymsg -t get_tree
#1: root "root"
#2147483647: output "__i3"
#2147483646: workspace "__i3_scratch"
#1553: output "DP-2"
#1128: workspace "1"
#1569: con "(null)"
#1130: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1117: workspace "2"
#645: con "Untitled-1 - Visual Studio Code" (xwayland, pid: 1586762, instance: "code", class: "Code", X11 window: 0x4A00003)
#1211: workspace "3"
#1121: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1450: workspace "4"
#1161: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1586: workspace "5"
#1585: con "Home · swaywm/sway Wiki — Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1588: con "swaymsg -t get_tree" (xdg_shell, pid: 147226, app_id: "foot")
#5: workspace "8"
#1555: con "Element * | Welcome" (xwayland, pid: 109664, instance: "element", class: "Element", X11 window: 0x1000003)
#1267: con "#general | SwitchCraft - Discord" (xwayland, pid: 2747194, instance: "discord", class: "discord", X11 window: 0x1A0000A)
#10: workspace "9"
#15: con "(null)"
#13: con "(null)"
#967: con "Carla - main.carxp" (xdg_shell, pid: 3821481, app_id: "carla")
#1218: con "main [modified] — A PipeWire Graph Qt GUI Interface" (xdg_shell, pid: 2486051, app_id: "org.rncbc.qpwgraph")
#17: con "(null)"
#1153: con "Spotify" (xwayland, pid: 2084961, instance: "spotify", class: "Spotify", X11 window: 0x2C00003)
#1430: con "(null)"
#18: con "foot" (xdg_shell, pid: 2234, app_id: "foot")
#1432: con "watch -n 60 "sensors | tail -n 28"" (xdg_shell, pid: 2987201, app_id: "foot")
#22: con "(null)"
#20: con "(null)"
#19: con "foot" (xdg_shell, pid: 2285, app_id: "foot")
#21: con "foot" (xdg_shell, pid: 2341, app_id: "foot")
#24: con "(null)"
#23: con "foot" (xdg_shell, pid: 2380, app_id: "foot")
#25: con "foot" (xdg_shell, pid: 2690, app_id: "foot")
I don't know if it's my system or an issue in release 0.74, but I cannot compile it, though 0.72 compiles fine.
Edit: 0.73 compiles fine, too.
rasmus@x301:~/tmp/sov-0.74$ ninja -C build
ninja: Entering directory `build'
[29/64] Compiling C object sov.p/src_zen_core_zc_log.c.o
FAILED: sov.p/src_zen_core_zc_log.c.o
cc -Isov.p -I. -I.. -I../src/sov/config -I../src/sov/tree -I../src/sov/json -I../src/sov/utils -I../src/sov -I../src/zen_core -I../src/zen_gfx -I/usr/include/freetype2 -I/usr/include/libpng16 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -O3 '-DPKG_DATADIR="/usr/local/share/sov"' '-DSOV_VERSION="0.74"' -MD -MQ sov.p/src_zen_core_zc_log.c.o -MF sov.p/src_zen_core_zc_log.c.o.d -o sov.p/src_zen_core_zc_log.c.o -c ../src/zen_core/zc_log.c
../src/zen_core/zc_log.c: In function ‘zc_log’:
../src/zen_core/zc_log.c:90:21: error: storage size of ‘ts’ isn’t known
90 | struct timespec ts;
| ^~
../src/zen_core/zc_log.c:91:9: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
91 | if (clock_gettime(CLOCK_REALTIME, &ts) != 0)
| ^~~~~~~~~~~~~
../src/zen_core/zc_log.c:91:23: error: ‘CLOCK_REALTIME’ undeclared (first use in this function)
91 | if (clock_gettime(CLOCK_REALTIME, &ts) != 0)
| ^~~~~~~~~~~~~~
../src/zen_core/zc_log.c:91:23: note: each undeclared identifier is reported only once for each function it appears in
../src/zen_core/zc_log.c:90:21: warning: unused variable ‘ts’ [-Wunused-variable]
90 | struct timespec ts;
| ^~
[31/64] Compiling C object sov.p/src_zen_core_zc_map.c.o
ninja: build stopped: subcommand failed.
Is it possible to support font fallbacks? Non-Latin codepoints show up as a box when using a monospace font because it doesn't have a glyph for it. Skimming through the code briefly, I think it might involve using the fontconfig library (and add an option to use fontconfig instead of parsing font-family
), or making a fallback mechanism manually by calling FT_Get_Char_Index in a loop to swap out different fonts if it returns 0, and making the css parser recognize comma separated font descriptions. (I did not try this with a patch yet)
Extension of the suggestion provided by #33. When a workspace gets clicked on/is selected, hide sov. Would also be nice if clicking anywhere outside of the sov window hid the overlay as well.
Hi there and thank you for creating SOV. How can I use it?
I have installed sov under EndeavourOS (Arch-based distro) and think to have configured correctly the relevant sway files. Waybar launches fine and now, how do I use SOV?
In the command line, I get :
❯ sov
Sway Overview v0.92b by Milan Toth ( www.milgra.com )
If you like this app try :
- Wayland Control Panel ( github.com/milgra/wcp )
- Visual Music Player (github.com/milgra/vmp)
- Multimedia File Manager (github.com/milgra/mmfm)
- SwayOS (swayos.github.io)
Games :
- Brawl (github.com/milgra/brawl)
- Cortex ( github.com/milgra/cortex )
- Termite (github.com/milgra/termite)
style path : /usr/share/sov
css path : /usr/share/sov/html/main.css
html path : /usr/share/sov/html/main.html
image path : /usr/share/sov/img
ratio : 8
anchor :
margin : 0
timeout : 0
columns : 5
use_name : false
I cannot see if there is a default key combination.
I noticed that in src/sov/config/fontconfig.c, 'popen' is called without checking for NULL
(e.g. if fc-match was not in $PATH). For better error messages (instead of a crash because of a NULL, or maybe even silently continuing or corrupting memory on systems without memory protection), I recommend checking the return value.
I use a tool named kanshi that dynamically manages my outputs and workspaces. However, whenever kanshi activates after a new output is created and the former output is gone, sov thinks there are 0 workspaces. Debug messages below were generated after first running it, switching between two workspaces (that works fine), then migrating to a new output, then switching between two workspaces (thinks there are 0 workspaces, so it just shows a blank bar in the middle of the screen).
tail -f $XDG_RUNTIME_DIR/sov.sock| sov -v INT|INT ✘ 38s 19:32:24
Sway Overview v0.9b by Milan Toth ( www.milgra.com )
If you like this app try :
- Wayland Control Panel ( github.com/milgra/wcp )
- Visual Music Player (github.com/milgra/vmp)
- Multimedia File Manager (github.com/milgra/mmfm)
- SwayOS (swayos.github.io)
Games :
- Brawl (github.com/milgra/brawl)
- Cortex ( github.com/milgra/cortex )
- Termite (github.com/milgra/termite)
DEBUG Set log level to DEBUG 19:32:54:746652 ../sov-0.9b/src/mt_core/mt_log.c : 172
style path : /home/lj/.config/sov
css path : /home/lj/.config/sov/html/main.css
html path : /home/lj/.config/sov/html/main.html
image path : /home/lj/.config/sov/img
ratio : 8
anchor :
margin : 0
timeout : 0
columns : 5
use_name : false
DEBUG xdg output handle logical size, 1920 1080 for monitor 0 19:32:54:764918 ..
/sov-0.9b/src/kinetic_ui/ku_connector_wayland.c : 1488
DEBUG Found workspace, name: 1: num : 1 output : eDP-1 19:32:56:736169 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found workspace, name: 2: num : 2 output : eDP-1 19:32:56:736194 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found workspace, name: 3 num : 3 output : eDP-1 19:32:56:736206 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found window, appid betterbird title Inbox - School - Betterbird 0 57 1920 1023 19:32:56:736832 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title journalctl -b 0 57 960 500 19:32:56:736872 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title tail -f $XDG_RUNTIME_DIR/sov.sock| sov -v 0 580 960 500 19:32:56:736895 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title config (~/.config/sway) - NVIM 960 57 960 1023 19:32:56:736913 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Creating layer for eDP-1 : workspaces 3 cols 5 rows 1 ratio 8 width 1320 height 175 19:32:56:736938 ../sov-0.9b/src/sov/sov.c : 119
DEBUG Drawing layer eDP-1 : workspaces 3 cols 5 rows 1 ratio 8 19:32:56:737069 ../sov-0.9b/src/sov/sov.c : 150
DEBUG adding row row0 19:32:56:737100 ../sov-0.9b/src/sov/gen.c : 140
DEBUG xdg output handle logical size, 2127 1196 for monitor 1 19:33:09:963239 ../sov-0.9b/src/kinetic_ui/ku_connector_wayland.c : 1488
DEBUG handle global remove 19:33:10:507083 ../sov-0.9b/src/kinetic_ui/ku_connector_wayland.c : 1743
DEBUG Found workspace, name: 1: num : 1 output : DP-5 19:33:18:065635 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found workspace, name: 2: num : 2 output : DP-5 19:33:18:065654 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found workspace, name: 3 num : 3 output : DP-5 19:33:18:065660 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found window, appid betterbird title Inbox - School - Betterbird 1920 57 2127 1139 19:33:18:066027 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title journalctl -b 1920 57 1064 558 19:33:18:066049 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title tail -f $XDG_RUNTIME_DIR/sov.sock| sov -v 1920 638 1064 558 19:33:18:066063 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title config (~/.config/sway) - NVIM 2984 57 1063 1139 19:33:18:066078 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Creating layer for eDP-1 : workspaces 0 cols 5 rows 0 ratio 8 width 1320 height 20 19:33:18:066105 ../sov-0.9b/src/sov/sov.c : 119
DEBUG Drawing layer eDP-1 : workspaces 0 cols 5 rows 0 ratio 8 19:33:18:066194 ../sov-0.9b/src/sov/sov.c : 150
DEBUG Found workspace, name: 1: num : 1 output : DP-5 19:33:20:661534 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found workspace, name: 2: num : 2 output : DP-5 19:33:20:661565 ../sov-0.9b/src/sov/tree.c : 153
DEBUG Found window, appid betterbird title Inbox - School - Betterbird 1920 57 2127 1139 19:33:20:662191 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title journalctl -b 1920 57 1064 558 19:33:20:662231 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title tail -f $XDG_RUNTIME_DIR/sov.sock| sov -v 1920 638 1064 558 19:33:20:662254 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Found window, appid kitty title config (~/.config/sway) - NVIM 2984 57 1063 1139 19:33:20:662271 ../sov-0.9b/src/sov/tree.c : 220
DEBUG Creating layer for eDP-1 : workspaces 0 cols 5 rows 0 ratio 8 width 1320 height 20 19:33:20:662293 ../sov-0.9b/src/sov/sov.c : 119
DEBUG Drawing layer eDP-1 : workspaces 0 cols 5 rows 0 ratio 8 19:33:20:662404 ../sov-0.9b/src/sov/sov.c : 150
Edit: it seems that sov thinks the old output, which is gone, is still being focused, so it sees that the old output has 0 workspaces. At least it recognizes the new output's workspaces in the debug messages that happen right after kanshi activates.
you can download sov package and run
rm -rf -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sov | sov -v -t 200
but it does nothing
sov works from cli (pressing 0 1 2 3 and enter) but not with pipes/sockets
I just found sov
. I love the idea ❤️ , but when I gave it a try, found out that the text it shows is actually quite blurry:
Above is a screenshot with crisp text from foot
but blurry text from sov
. The above screen is scaled with a scaling factor of 2. I also have another screen with a scaling factor of 1.5, in case that's relevant.
I suggest adding 5 more config variables (if possible):
window_border_radius
- change window border radius
window_border_color
- change window border color
window_border_sizer
- change window border thickness?
border_radios
- for workspace border
border_size
- workspace border thickness
Adding those 5 would help people to style it more to their looks and feel with custom styles.
fresh install on sway using the config method, using the binding keys does not show sov, while it works by launching from a terminal. Manually echoing "1" to the pipe after sov is running also does not show sov.
I would love if Sway Overview could be set to
$mod+key
(as it is now),key
is released, but $mod
held,$mod
is released.I think this would both improve the experience of using Sway Overview when changing with $mod+1-$mod+9
etc., where $mod
could now be held while choosing what number to change to, and also when switching to next and previous workspaces.
I could imagine others would also be happy for this feature. @larskotthoff mentions mentions it, and it is an implemented feature of Workspace Matrix for Gnome where it makes maneuvering the space of workspaces a breeze.
It is my impression that the way keybindings are implemented in Sway makes it impossible to implement this through the Sway config alone. The patch from this rejected PR makes it possible, but changes --release
a lot, which was given as a reason for rejecting it. Additionally, Sway Overview does not refresh when workspaces are switched if it remains shown.
Another reason given for the PR rejection is that the behavior should be implementable through current Wayland protocols for apps that use layer-shell---which I from the description guess Sway Overview does?
I somehow like the idea of like press alt-tab and then sov
displays on screen array of workspaces and its window thumnails like a stack of cards (reveal some portion of next workspace and next and next -- the more the less spaces to reveal) and cycle through them.
Some animations would be better :)
I'm using a script that I wrote, called "swayworkroom.sh". It creates sets of each being able to have its 10 workspaces, for example 11 to 20, and 21 to 30, r1 to r0.
Selecting a workspace by clicking in the sov panel doesn't switch to the corresponding one properly.
What happened?
Also, is there any output to be listened from, for indicating which workspace after that I've just selected with sov by clicking? I need to keep track of it to notify the script which set that I'm currently in.
After trying to set colors for sov
to match my desktop theme, I noticed that colors didn't seem to be displayed correctly. Later, by experimenting with setting FF
for each octet, I discovered that the format currently seems to be:
#BBGGRRAA
Since this Kinetic UI seems to be using CSS files for styling, it should probably be corrected to use the standard CSS format instead:
#RRGGBBAA
It might be that the color channels are flipped in endian-ness, or some other mistake was made to flip them when handling the hexidecimal color codes somewhere in the code.
I have a script here, as an extension to sway to have more than 10 workspaces.
Now, when I have a lot of workspaces opened, sov will display some workspaces exceeding on the screen.
How can I see the rest of workspaces, without shrinking down sov to display on my screen?
Since I'm working on a small screen laptop, making it display smaller overally isn't really an option, as the text will be too small to see.
Is there anything I can do to counteract this?
Kooha-2023-11-28-14-29-57.webm
This is my config:
bindsym --no-repeat $mod+Tab workspace next; exec "echo 1 > /tmp/sovpipe"
bindsym --release $mod+Tab exec "echo 0 > /tmp/sovpipe"
bindsym --no-repeat $mod+Shift+Tab workspace prev; exec "echo 1 > /tmp/sovpipe"
bindsym --release $mod+Shift+Tab exec "echo 0 > /tmp/sovpipe"
# Switch to workspace with `sov` integration
# Attempted holdkey style functionality with win-key: `sov -k 65515`
# exec_always rm -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sovpipe | sov -k 65515
exec_always "pkill sov; rm -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sovpipe | sov -k 65515"
bindsym --no-repeat $mod+1 workspace $ws1; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat Control+$Alt+$mod+p workspace $ws1; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+2 workspace $ws2; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat Control+$mod+$Alt+o workspace $ws2; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+3 workspace $ws3; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat Control+$mod+$Alt+c workspace $ws3; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+4 workspace $ws4; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat Control+$mod+$Alt+i workspace $ws4; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+5 workspace $ws5; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+6 workspace $ws6; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+7 workspace $ws7; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+8 workspace $ws8; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+9 workspace $ws9; exec "echo 1 > /tmp/sovpipe"
bindsym --no-repeat $mod+0 workspace $ws10; exec "echo 1 > /tmp/sovpipe"
bindsym --release $mod+1 exec "echo 0 > /tmp/sovpipe"
bindsym --release Control+$Alt+$mod+p exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+2 exec "echo 0 > /tmp/sovpipe"
bindsym --release Control+$mod+$Alt+o exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+3 exec "echo 0 > /tmp/sovpipe"
bindsym --release Control+$mod+$Alt+c exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+4 exec "echo 0 > /tmp/sovpipe"
bindsym --release Control+$mod+$Alt+i exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+5 exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+6 exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+7 exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+8 exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+9 exec "echo 0 > /tmp/sovpipe"
bindsym --release $mod+0 exec "echo 0 > /tmp/sovpipe"
In the scenario where this screenshot was taken, workspaces 6, 7 and 10 had no windows on them:
When clicking on workspaces 8 and 9 I instead get taken to workspace 6 and 7 due to the missing workspaces not appearing. I saw in screenshots that it should work so I'm a bit confused.
❯ swaymsg -t get_tree
#1: root "root"
#2147483647: output "__i3"
#2147483646: workspace "__i3_scratch"
#1553: output "DP-2"
#1128: workspace "1"
#1569: con "(null)"
#1130: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1117: workspace "2"
#645: con "Untitled-1 - Visual Studio Code" (xwayland, pid: 1586762, instance: "code", class: "Code", X11 window: 0x4A00003)
#1211: workspace "3"
#1121: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1450: workspace "4"
#1161: con "Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1586: workspace "5"
#1585: con "Home · swaywm/sway Wiki — Mozilla Firefox" (xdg_shell, pid: 1505430, app_id: "firefox")
#1588: con "swaymsg -t get_tree" (xdg_shell, pid: 147226, app_id: "foot")
#5: workspace "8"
#1555: con "Element * | Welcome" (xwayland, pid: 109664, instance: "element", class: "Element", X11 window: 0x1000003)
#1267: con "#general | SwitchCraft - Discord" (xwayland, pid: 2747194, instance: "discord", class: "discord", X11 window: 0x1A0000A)
#10: workspace "9"
#15: con "(null)"
#13: con "(null)"
#967: con "Carla - main.carxp" (xdg_shell, pid: 3821481, app_id: "carla")
#1218: con "main [modified] — A PipeWire Graph Qt GUI Interface" (xdg_shell, pid: 2486051, app_id: "org.rncbc.qpwgraph")
#17: con "(null)"
#1153: con "Spotify" (xwayland, pid: 2084961, instance: "spotify", class: "Spotify", X11 window: 0x2C00003)
#1430: con "(null)"
#18: con "foot" (xdg_shell, pid: 2234, app_id: "foot")
#1432: con "watch -n 60 "sensors | tail -n 28"" (xdg_shell, pid: 2987201, app_id: "foot")
#22: con "(null)"
#20: con "(null)"
#19: con "foot" (xdg_shell, pid: 2285, app_id: "foot")
#21: con "foot" (xdg_shell, pid: 2341, app_id: "foot")
#24: con "(null)"
#23: con "foot" (xdg_shell, pid: 2380, app_id: "foot")
#25: con "foot" (xdg_shell, pid: 2690, app_id: "foot")
This section specifies:
mkdir -p ~/.config/sov/config
cp /usr/share/sov/config ~/.config/sov/config
But it should be:
mkdir -p ~/.config/sov
cp /usr/share/sov/config ~/.config/sov
Using a similar method to bind the show/hiding and the start of sov
as described in the README i get the following undesired behaviour:
sov
glitches and remains showed as if the pipe gets repeatedly filled with 1s an 0s, in the journal I can see a lot of:
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.313939 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.327357 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.335062 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.343886 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.351279 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.360054 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.367750 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.376243 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.383652 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.392089 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.399383 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.407826 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.416950 INFO ../src/sov/main.c:554: Showing on output eDP-1
Jun 24 14:48:41 DELL-XPS-9570 sway[21260]: 1656074921.426389 INFO ../src/sov/main.c:554: Showing on output eDP-1
Untill at some point the program crasshes with the following output:
Jun 24 14:43:35 DELL-XPS-9570 sway[1559]: 00:49:16.010 [INFO] [wlr] [wayland] error in client communication (pid 18737)
Jun 24 14:43:38 DELL-XPS-9570 sway[18737]: Error sending request: Broken pipe
Jun 24 14:43:38 DELL-XPS-9570 sway[18737]: 1656074618.976666 ERROR ../src/sov/main.c:550: wl_display_roundtrip failed
Jun 24 14:43:38 DELL-XPS-9570 kernel: show_signal_msg: 63 callbacks suppressed
Jun 24 14:43:38 DELL-XPS-9570 kernel: sov[18737]: segfault at 10 ip 00007fbda6e6727a sp 00007ffd4b87b500 error 4 in libwayland-client.so.0.20.0[7fbda6e66000+6000]
Jun 24 14:43:38 DELL-XPS-9570 kernel: Code: 8b 55 00 4c 8d 7c 24 20 48 8d 4c 24 08 48 8d 84 24 c0 01 00 00 c7 44 24 08 28 00 00 00 48 89 44 24 10 48 8d 84 24 d0 00 00 00 <48> 8b 72 10 ba 14 00 00 00 48 89 44 24 18 44 89 e0 48 8d 04 40 c7
Jun 24 14:43:38 DELL-XPS-9570 systemd[1]: Created slice Slice /system/systemd-coredump.
Jun 24 14:43:38 DELL-XPS-9570 systemd[1]: Started Process Core Dump (PID 19527/UID 0).
ELF object binary architecture: AMD x86-64
#7 0x0000000000403cd1 _start (sov + 0x3cd1)
#6 0x00007fbda6aea2f5 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x292f5)
#5 0x00007fbda6aea237 __libc_start_call_main (libc.so.6 + 0x29237)
#4 0x00000000004039fc main (sov + 0x39fc)
#3 0x000000000040db55 sov_destroy (sov + 0xdb55)
#2 0x000000000040cf63 sov_output_destroy (sov + 0xcf63)
#1 0x000000000040cf02 sov_surface_destroy (sov + 0xcf02)
#0 0x00007fbda6e6727a wl_proxy_marshal_flags (libwayland-client.so.0 + 0x727a)
Stack trace of thread 18737:
Module sov without build-id.
Module libwayland-client.so.0 with build-id 4fef743edf9c2b855a7dd35711bc9826f5a2375e
Module libfreetype.so.6 without build-id.
Module libm.so.6 with build-id 1a2e2d6f7d6ffb7928167842f22cd9530c5a977b
Module libc.so.6 with build-id c03db892abc48c05e03cffe78611747cc59d2842
Module libffi.so.8 without build-id.
Module libbz2.so.1 without build-id.
Module libpng16.so.16 without build-id.
Module libz.so.1 without build-id.
Module libpthread.so.0 with build-id ce291a619265ed432f53f6d68623ffa0f03e6bbf
Module ld-linux-x86-64.so.2 with build-id 6d56d9fcd67825480fa57abbc3ea66703f536339
Module linux-vdso.so.1 with build-id 95945c6f4f0a2d417f23f38a4d5cb85d7df2f0ad
Jun 24 14:43:39 DELL-XPS-9570 systemd-coredump[19528]: [🡕] Process 18737 (sov) of user 1000 dumped core.
Instead if I start sov
from the terminal this does not happen: the keybinding correctly shows/hides sov
.
This is what I put in my sway config (as you can see they are similar to the default in the README) :
bindsym --no-repeat $mod+equal exec "echo 1 > /tmp/sovpipe"
bindsym --release $mod+equal exec "echo 0 > /tmp/sovpipe"
exec_always rm -f /tmp/sovpipe && mkfifo /tmp/sovpipe && tail -f /tmp/sovpipe | sov
Versions:
sov v0.71
from nixpkgs unstable
sway 1.7
from nixpkgs 22.05
Currently on a 4k screen with 2x scale the overview window is pixelated
Each color code has eight-digits, it looks really confusing, as regular color codes are either RGB or Hex, why in this case, do color codes have eight-digits?
The css file named main.css is located under /usr/local/share/sov/ along with the main.html file.
I couldn't find a converter online to convert a hex color code to octal color code that would convert it correctly. Once converting to octal, the color looked not the same.
Nor can I use just hex color codes, they just don't look right. :(
Any helps?
For distros like NixOS that "sandbox" applications it is helpful to be able to overwrite the default path where SOV will read default cofigurations or other hardcoded files.
For now the problem is resolved via a patch applied before the buildling phase of the package (see patch of @TravisDavis-ops here ) but this is not the best way of handling this in my opinion.
Instead a solution like this one is more appropriate.
I the next days I'll take a look at the repo to see if I can issue a PR but I never had experience with meson/ninja so I will not promise anything.
It seems libglew is listed as a dependency but is not used anywhere in the code.
Also libwegl is listed but is actually libwayland-egl and should be part of any wayland deployment. I don't see the reason for listing it in addition to wayland. This is reflected by its absence in the list of packages to be installed on either Debian or Arch.
Did I miss something somewhere or does the readme need an update?
If the window title contains "/", it will be displayed escaped.
These are present at the time of swaymsg -t get_tree
, but is there any plan to solve this problem with sov?
Thank you.
╰─ sov
─╯
Sway Overview v0.85b by Milan Toth ( www.milgra.com )
If you like this app try :
- Wayland Control Panel ( github.com/milgra/wcp )
- Visual Music Player (github.com/milgra/vmp)
- Multimedia File Manager (github.com/milgra/mmfm)
- SwayOS (swayos.github.io)
Games :
- Brawl (github.com/milgra/brawl)
- Cortex ( github.com/milgra/cortex )
- Termite (github.com/milgra/termite)
style path : /home/keloran/.config/sov
css path : /home/keloran/.config/sov/html/main.css
html path : /home/keloran/.config/sov/html/main.html
image path : /home/keloran/.config/sov/img
ratio : 8
anchor :
margin : 0
timeout : 0
columns : 5
fish: Job 1, 'sov' terminated by signal SIGSEGV (Address boundary error)
I get the following error because it cant find the html files
once those are copied it works, I guess it found that there was a "sov" path in my config path and then assumed that the html was there, instead of checking for it and falling back to the "/usr/share" version
I do not have this font installed, so the text is a bunch of boxes.
You could change the default to 'sans' or 'monospace' which are aliases to other fonts that should be present on any system. 'sans' on my system is an alias to 'Liberation Sans'.
From a brief glance src/sov/config/config.c needs to be changed.
If you're intending on making the config part of the code (like dwm/st), then perhaps it could output an error if the font can't be found.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.