Feel(1x)

πŸ“¦
version 2.2.12 Β· 3 versions
, in ubuntu jammy

πŸ’– Feel(1x) πŸ’–

okay so bestie, welcome to the manual page for Feel β€” that's the AfterStep X11 window manager's feel configuration, filed under Feel(1x) in the classic manpage tradition πŸŽ€ this thing is long so it comes in parts, and this is part 1. hydrate, sit criss-cross, let's go.


✨ NAME ✨

Feel β€” AfterStep feel configuration πŸ¦‹


✨ CONFIGURATION OPTIONS ✨

okay so here's every single knob and dial you can turn in your feel config. no skips, no skimming, we're reading the whole thing like it's the group chat receipts πŸ’…

  • AnimateDeskChange β€” this one asks for a nice lil animation to be drawn over the desktop while you're switching desktops. comment it out if you want desktop switching to be speedier, no cap.
  • AppsBackingStore β€” says app windows should request backing store. X-terminals and low memory systems should avoid this because redrawing will be quicker than pulling the saved image back from swap space. that said, backing store will always be faster than redraw on machines that have enough memory. heads up: this causes non-ICCCM compliance πŸ‘€
  • AutoFocus β€” do not use. obsolete. that's it, that's the whole vibe πŸ’€
  • AutoRaise delay β€” sets the delay, in milliseconds, of focus that a window has to attain before it gets raised.
  • AutoReverse 0|1|2 β€” sets the window Warping (aka alt-tabbing) style ✨
    • 0 (the default) β€” switches among windows in one direction.
    • 1 β€” a closed loop switch: #1->#2->#3->#4 and then #4->#3->#2->#1.
    • 2 β€” an open loop switch: #1->#2->#3->#4 and then #4->#1->#2->#3 etc.
  • AutoTabThroughDesks β€” paired up with AutoReverse, this Warps (alt-tabs) through windows on all the desks, not just one. main character energy, honestly.
  • BackingStore β€” says decorations should request backing store. go read AppsBackingStore above for the whole explanation, it's the same deal.
  • CenterOnCirculate β€” when you're Warping (alt-tabbing), the desktop page containing the window the pointer is moving to gets automatically selected, and afterstep will attempt to center that target window in the desktop viewport β€” instead of just flipping to the desktop the window resides in. it's giving "actually bring it to me" 🫢
  • CirculateSkipIcons β€” says all icons get skipped when Warping (alt-tabbing) between windows.
  • ClickTime β€” tells afterstep to consider two mouse clicks made within delay milliseconds to be a double mouse click, and not two single mouse clicks. the default delay is 150 milliseconds.
  • ClickToFocus β€” says keyboard input (aka focus) stays with one window until a new window's TitleBar gets clicked on, or the window gains focus through Warping or de-iconification.

AfterStep will not switch focus following the mouse pointer, but instead switches it when a window is explicitly clicked. this is the same as before. the only difference is that AfterStep will not Raise the window automagically, unless some other settings are set. possible ways to Raise a window on focusing include:

  • set AutoRaise 0 in the feel file (that's a delay of 0)
  • bind mouse clicks to the Raise or RaiseLower function in the feel file.
  • set the ClickToRaise flag in the feel file.
  • ClickToRaise β€” says windows should be raised when a button is clicked in the titlebar, the handle (low bar), or the application area. buttons specifies the list of buttons which triggers this function. in AutoRaise mode this will simply raise the window if the click happens before the delay specified in AutoRaise. in ClickToFocus mode, this will raise the window and give it focus. two for one, slay πŸŽ€
  • CoverAnimationSteps steps count β€” the number of animation steps to take while removing the blue-tinted cover window.
  • CoverAnimationType type β€” decides what type of animation to use while removing the blue-tinted desktop cover β€” use values from 0 to 13.
  • Cursor cursor_number cursor_type β€” specifies the cursor_type for the given cursor_number. valid cursor_numbers are 0 through 10 and they're listed in all the shipped feel.name files. the cursor_types are listed in the /usr/include/X11/cursorfont.h file.
  • CustomCursor path β€” adds a custom cursor from the search paths. AfterStep searches the following paths in addition to the system Xorg/Xfree paths: ~/.afterstep/desktop/cursors/ and $SHAREDIR/afterstep/desktop/cursors/.
Note: under Xorg, this is probably depreciated. current Xorg uses the Xcursor library to load cursor data from a single file. πŸ™ˆ
  • DecorateTransients β€” says transient windows (pop-up dialog boxes), which are normally not decorated, should be given the usual title and low bars. note: some pop-up windows and menus are not managed by the window manager, so they do not get these decorations. rip to them πŸ’€
  • DefaultWindowBox "windowbox_name" β€” window boxes are processed in the order they were listed in config. if a suitable windowbox could not be found for the window in the database file β€” then the windowbox named in DefaultWindowBox will be forced. it's the fallback bestie, the safety net 🫢
  • DeskAnimationSteps steps β€” how many animation steps should be rendered while switching desktops / removing the blue cover. reduce that number to speedup the animation.
  • DeskAnimationType value β€” requests a particular type of animation to be rendered while switching desktops. available values are in the range of 0 to 12.
  • DontMoveOff β€” says windows should not be moved off, or initially placed off, of the desktop. a few programs will not work correctly if you use this option. this only keeps windows from being completely lost off the edge of the desktop β€” it insists on keeping 16 pixels on the desktop, but it does not attempt to keep the entire window on the desk.
  • DontRestoreFocus β€” will not restore focus to the recently focused application while switching desktops.
  • EdgeResistance delay pixels β€” sets how hard it should be to change views within a desktop by moving the mouse over the edge of the screen, and how hard it should be to move a window over the edge of a screen.

the delay, in milliseconds, defines how long the pointer must spend at the screen edge before that view becomes current. this is useful in conjunction with EdgeScroll 100 100, so the views don't get switched accidently.

the pixels defines how far over the edge a window must "appear" to move before it actually moves partially off the screen.

note that with EdgeScroll 0 0, it is still possible to move or resize windows across the edge of the current screen. by setting the pixels parameter of EdgeResistance to 10000, this type of motion is impossible. however, with EdgeResistances less than 10000 but greater than 0, moving over pages becomes difficult but not impossible. so close yet so far 😭

  • EdgeScroll horizontal vertical β€” sets the percentage of a page to scroll when the cursor hits the edge of a page. setting EdgeScroll to 0 0 will disable scrolling. setting this option to 100 100 will scroll whole pages. set to 1000 1000, and scrolling will wrap around at the edge of the desktop. both horizontal and vertical should be positive numbers ✨
  • FollowTitleChanges β€” that will force AfterStep to reread and merge all the hints and settings from the database files, whenever a window changes either its name or its icon name.
  • Function β€” specifies a complex function definition, and it's covered in the built-in command/function.

See Also: AS Function for further details.

  • IconTitle β€” says a title should be displayed under an iconified app. the colors used are the ForeColor and BackColor of the ButtonTitleFocus in the look.name file. note: less space is left for the app's icon, so it will be resized acordingly. only a portion of the icon title will be displayed until the icon gains focus, and then the title "box" will expand to reveal the window's entire name. it's the lil glow-up moment πŸ¦‹
  • KeepIconWindows β€” says applications should be allowed to specify their own icon windows.
  • Key keyname context modifier Command β€” specifies a key-stroke binding definition, similar to Mouse. keyname is the keyboard key name. valid keynames are found in the /usr/X11/include/X11/keysymdef.h file and are specified here without the leading "XK_". the context describes where the mouse is resting when the keyname is pressed and can be any combination of the following:
    • R = Root window (main background)
    • F = Window Frame (the BottomBar handle corners)
    • S = Window TitleBar or BottomBar
    • I = Iconified Button (minimized window icon)
    • T = Window TitleBar
    • W = Application Window
    • A = Any of the above except for TitleButtons
    • 1-10 = TitleButton number of the TitleBar [ not very useful here ]

modifier is the key-stroke combination associated with the context entry, to issue the Command. valid modifiers are:

  • N = No modifiers
  • C = Control
  • S = Shift
  • M = Meta
  • A = Any modifier

Command can be any afterstep Built-in command/function, Popup or user defined Function.

See Also: AS Function for further details.

  • MenusHigh β€” says any pop-up menu's submenu should appear at the top of the parent menu, instead of starting at the point in the parent window where the submenu item lies. elevated. iconic. periodt πŸ‘‘
  • Mouse button context modifier Command β€” specifies a mouse binding definition. button is the mouse button number [0, 1, 2, or 3]. if button is zero, then any mouse button invoked issues the Command. context describes where the mouse click occurred and can be any combination of the following:
    • R = Root window (main background)
    • F = Window Frame (the BottomBar handle corners)
    • S = Window TitleBar or BottomBar
    • I = Iconified Button (minimized window icon)
    • T = Window TitleBar
    • W = Application Window
    • A = Any of the above except for TitleButtons
    • 1-10 = TitleButton number of the TitleBar, corresponds to the entry in the look.name file

the action to be taken by the defined TitleButton is defined in the feel.name file. defining a TitleButton without having a corresponding entry in the feel.name file will cause the TitleButton icon to be displayed, but not react when pressed. it's giving "all dressed up with nowhere to go" πŸ’…

modifier is the key-stroke combination associated with the context entry, to issue the Command. valid modifiers are:

so about that keybinding thing up there β€” here's the whole modifier legend, no crumbs left behind πŸ’…:

  • N β€” No modifiers
  • C β€” Control
  • S β€” Shift
  • M β€” Meta
  • A β€” Any modifier

Command can be any afterstep Built-in command/function, Popup, or a user defined Function.

✨ See Also: AS Function for further details.

  • NoPPosition β€” tells afterstep to straight-up ignore the PPosition field when it's placing new windows. Translation: windows do not get to choose where they land, bestie. And yeah, some applications literally require that PPosition respect, so heads up on that one 🫢
  • NoSnapKey key β€” AfterStep has this whole thing where windows "snap" to desktop features β€” edges of other windows, edge of the screen, all of it. Normally you hold Shift to pause the snapping for a sec. This setting lets you pick a different modifier key instead of Shift. Slay, customize your little heart out ✨
  • OpaqueMove % β€” sets the biggest window size that still gets opaque window movement. The % is a percent of total screen area.
    • Set to 0 β†’ every window moves with the classic rubber-band outline.
    • Set to 100 β†’ every window moves as a solid window.
    • Default is 5, which means small windows glide around solid, and big windows do the rubber-band thing.
Using this with large values can slow down video response on slower systems. Just saying πŸ‘€
  • OpaqueResize % β€” same energy as above but for resizing. The % is a percent of total screen area.
    • Set to 0 β†’ all windows resize with the traditional rubber-band outline.
    • Set to 100 β†’ all windows resize as solid windows.
    • Default is 5 β€” little windows resize opaque, big ones rubber-band.
Large values here can also slow down video response on slower systems. Lowkey the same warning twice, I know.
  • PagingDefault 0|1 β€” is Paging on (1) or off (0)? That's it, that's the option. Paging is enabled by default πŸŽ€
  • PersistentMenus β€” okay so rn, if you try to open a menu that's already open, the menu just closes. Rude. Turn this setting on and instead of closing, the menu pops up again. Iconic behaviour, honestly πŸ‘‘
  • Popup β€” defines a menu popup. The whole thing is covered over in the built-in command/function territory.
✨ See Also: AS Function for further details.
  • RandomPlacement β€” windows that would normally need you to come in and place them by hand get automagically dropped into ever-so-slightly random locations instead. Chaos, but make it convenient πŸ¦‹
  • RecentSubmenuItems number_of_items β€” how many recently used submenu items get listed under a menu item. Set to 0 to kill the feature entirely. Default is 4.
  • SaveUnders β€” makes afterstep frames request saveunders. Basically afterstep saves the parts of windows you can't see into system memory. Great news: it can significantly improve performance during opaque moves. Less great news: it causes a significant increase in memory usage. And it can also cause garbled display with some applications 😭 Pick your battles.
  • ScreenEdgeAttraction distance β€” the distance from which a window gets attracted to the screen edge while you're interactively moving or resizing it. Magnetism, but for windows ✨
  • ShadeAnimationSteps steps β€” how many steps to use to render the animation when a window gets shaded or unshaded.
  • ShadeAnimationSteps steps β€” how many steps to use to render the animation when a window gets shaded or unshaded.
bestie she is on this list twice πŸ™ˆ that's genuinely what the page says, I'm not making it up, I'm just the messenger.
  • SloppyFocus β€” windows keep the focus until the mouse moves to another window, or until Warping causes another window to gain focus.
SloppyFocus has no effect if ClickToFocus is also specified. Pick a lane, bestie.
  • SmartPlacement β€” windows get placed in areas that no other windows are occupying. If that's not possible, then user intervention becomes required for placement. Have fun, try specifying both. :-) (the page is being silly with you, that's a direct quote vibe)
  • StickyIcons β€” icons stick to the screen's glass and follow it from desk/view to desk/view. Sticky lil guys, obsessed πŸ“
  • StubbornIconPlacement β€” icons refuse to be hidden behind windows placed over the IconBox, and instead move themselves around. Dancing icons πŸ’ƒ no cap.
  • StubbornIcons β€” icons uniconify back to their original desk. By default, icons uniconify to the current desk. Stubborn by name, stubborn by nature.
  • StubbornPlacement β€” new windows avoid being placed over icons. Respectful behaviour honestly 🌸
  • SuppressIcons β€” no icon gets shown for any window being iconified. Similar to NoIcon. Gone. Poof πŸ’€
  • WinListHideIcons β€” when set, the Icons in the internal WindowList (that's the window that pops up if you right click on the root window) will not be shown.
  • WinListSortOrder 0/1/2/3 β€” arranges WinList entries based on these qualifiers:
    • 0 β€” circulations order (default)
    • 1 β€” Alpha order
    • 2 β€” Stacking order (unimplemented)
    • 3 β€” creation order (unimplemented)
yeah two of these are unimplemented, don't come for me, that's what the page says 🫠
  • WindowBox "windowbox_name" β€” WindowBox defines an area on the screen/virtual desktop that a window will be placed into on startup.
✨ See Also: Feel WindowBox definition for further details.
  • WindowEdgeAttraction distance β€” the distance from which a window gets attracted to another window's edge while you're interactively moving or resizing it. Window-to-window magnetism 🧲
  • XorValue value β€” the value that bits get XOR'ed with when doing rubber-band window moving or resizing. Setting this one is a straight-up trial-and-error process, fr fr. Godspeed 🫑
  • Xzap number β€” the horizontal offset of the cursor when warping. It's relative to the upper-left corner of the window being warped to.
  • Yzap number β€” the vertical offset of the cursor when warping. Also relative to the upper-left corner of the window being warped to.

and that's the whole vibe check on Feel(1x), bestie πŸ’– this lil masterpiece comes to you from the 3rd Berkeley Distribution, all about AfterStep v.2.2.12 β€” go be the main character of your own desktop, periodt πŸŒˆπŸ’…

πŸ“¦ where this page comes from