# swov — example configuration # # Copy to ${XDG_CONFIG_HOME:-~/.config}/swov/config and edit. # Every value below is the built-in default, so an empty file behaves the same. # Single settings can also be overridden on the command line: # swov ui_scale=1.2 ssaa=1 (or --ui_scale=1.2, or -s ui_scale=1.2) # --- rendering --- ssaa=2 # full-scene supersampling 1..4 (smooths edges *and* text) # alias: aa. automatically reduced on very large screens icons=1 # show .desktop icons (PNG/SVG/XPM); 0 = text only icon_px=40 # icon edge length; shrinks by itself on small cards shadow=1 # drop shadows under tiles and floating windows shadow_layers=3 # fewer layers = cheaper, harder edged track=1 # remember how long each workspace is used, and which one # you were on per monitor (that is what -b goes back to). # swov performs every switch itself, so it stamps the time # as it goes — no background process. 0 = do not record. back=global # what -b goes back to: # global = the workspace used last, anywhere. Step to the # other monitor and -b brings you back to it # output = the last one on the monitor you are on # sway = sway's own back_and_forth usage_dots=1 # dot scale down the left edge of a tile: how much that # workspace is used, relative to the busiest one. Fills from # the bottom. alias: usage_bar dot_count=14 # how many dots the scale has; fewer are drawn if the tile # is too short for them dot_px=5 # dot diameter cpu=1 # a dot scale down the right edge of a tile, mirroring the cpu_idle=0.01 # usage dots on the left. In cores: 1.0 is one core kept cpu_min=0.25 # busy, and four fills the scale. Anything alive but under cpu_full=4 # cpu_min gets one faint dot. swbr measures it and # leaves it in $XDG_RUNTIME_DIR/swbr-cpu; without swbr # running there is nothing to show and nothing is drawn drop_ghosts=1 # --backdrop only: while an app is dragged over the # overview, offer the free workspace numbers as extra # tiles, the same as dragging a window inside swov. 0 = # keep the grid at full size, and no new workspaces from # a swas drag outputs_map=1 # with a second screen: a map of the monitors, bottom left, # in their real arrangement. Click one to look at its # workspaces. It keeps that place to itself, so it is # always in the same spot outputs_map_w=0.18 # how wide, as a share of the tile area tab=recent # what tab walks: recent = the apps you used last, in that # order (needs swbr running, which is what keeps the # order). workspace = previous/next workspace launcher=swas --replace overview=1 # what `d` opens. swas draws its own backdrop, so swov # steps aside rather than stacking two overlays ws_slots=1-10 # the default. These numbers always have a tile, whether sway has the # workspace yet or not — so the grid is the same shape # every time you open it. While dragging it reaches one # further either side, which is how you get to 0 and 11. # 0 = only the workspaces that exist all_outputs=1 # every screen's workspaces, not just this one's, with the # output name in the title. ws_slots already brings them # in, so this is only about the labels show_pid=1 # the process id, top right corner of every card ghost_click=1 # clicking an empty number goes there, and sway makes the # workspace on the way. 0 = drop target only rename_icon=1 # a small pencil at the right of each header renames the # workspace. 0 = no pencil; the middle of the name renames, # which is easy to hit by accident when grabbing a header focus_self=1 # ask sway for the keyboard once the window is up. An # overlay that is not focused does nothing: every key goes # to whatever is underneath it snap_ms=1000 # dragging a floating window: hold it still over another # this long and it snaps into the layout beside it. Moving # starts the wait again. Without the hold it just moves to # that workspace, still floating. # 0 = tile as soon as it is over a window over_fullscreen=1 # a fullscreen window is above anything a normal window # can reach, so swov takes it off fullscreen while it is # open and puts it back on the way out. 0 = open behind it drop_outputs=1 # while dragging, the other screens' workspaces show up # alongside this one's, marked with their output name, so # they can be dropped on directly map_dwell_ms=0 # dragging anything: hold it over another monitor # this long and the overview steps onto that screen. The # plate fills as you hold; moving at all starts the wait # again. 0 = off # output=DP-1 # start on that screen instead of the one sway is on blur=2 # --backdrop only: how soft the overview is drawn while # something else has the foreground. 0 = off, 3 = softest. # It sharpens by itself while an app is being dragged over # it, so you can read the workspace you are aiming at anim_ms=160 # how long tiles take to glide when the ghost slots come # and go, in and out. 0 turns the animation off vsync=1 # --- text --- ui_scale=1.0 # master text size. 1.3 = bigger, 0.85 = smaller # aliases: font_scale, text_scale ws_px=26 # workspace number in the tile header (all four are label_px=16 # application name on a window card multiplied by title_px=13 # window title, the long text ui_scale, so hint_px=14 # header line and the key hints tweak one or all) # By default swayov uses the desktop font (via fontconfig). # Set a family name or a .ttf path to override: # font=Inter # font=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf # font_bold=Inter Semibold # defaults to the bold cut of `font` # --- layout --- cols=0 # 0 = pick the grid that gives the largest tiles rows=0 # set e.g. rows=2 if your workspaces are really 2 rows margin=26 # space around the whole grid gap=14 # space between tiles pad=10 # padding inside a tile win_gap=5 # space between two windows inside a workspace screen_pad=6 # border kept free between the mini screen and the windows badge_top=7 # space above the workspace number in a tile corner float_alpha=0.62 # how solid a floating or fullscreen window is drawn. It is # further reduced the more of the workspace it covers, so a # fullscreen window stays a frame you can see through. # 1.0 = as solid as a tiled window radius=14 # corner radius border=3 # tile border thickness show_empty=1 # keep empty workspaces in the grid (keeps numbering stable) start_selection=workspace # what is selected when swov opens: # workspace = the visible workspace, no window (default) # none = nothing at all # window = the first window of the visible workspace all_outputs=0 # 1 = show every monitor, not just the focused one show_header=1 # the "DP-1 16 windows on 9 workspaces" line show_hints=1 # the key hints header_pos=top-right hints_pos=bottom-center # none | top-left | top-center | top-right | # bottom-left | bottom-center | bottom-right # when both share a band the hints step aside and, if it # is still tight, get shortened with an ellipsis quit_on_focus_loss=1 quit_after_action=0 # 1 = close the overlay after moving windows with 0-9 # --- colors: #rrggbb or #rrggbbaa --- # bg alpha < ff => transparent overlay (needs a compositor, sway qualifies) bg=0d1117cc # dims everything behind the overlay, so the workspace you # are actually on stops competing for attention. # 0d111700 = fully transparent, 0d1117ff = opaque tile=1e2733f2 # workspace tile alias: ring tile_sel=26313ff2 # selected workspace tile alias: ring2 tile_hover=2b3644f2 mini_bg=11171f9e # the inset "screen" inside a tile alias: center card=33404ff7 # window card card_hover=46566af7 # the card the cursor is on (mouse or keyboard) # alias: hover card_focus=3b4a5bf7 # card of the window sway has focused hl=cb9b00ff # the orange. Only ever the selection cursor and marks text=e8e8e8ff # bright text subtext=b3c0cdff # application names dim=5a6b7aff # counters and window titles hint=a7b5c4ff # the header line and the key hints current=4fb3a5ff # the workspace sway is showing, and the focused window match=b58ae0ff # windows found by the search ("s") accent=89afc4ff # hover borders, filter box, tab groups hltext=141414ff # text on an orange badge urgent=e0533cff # urgent windows and workspaces outline=0a0e1499 # thin outlines shadow_color=00000073