NXTSavePanel: center panel on display if there’s no saved frame yet.
SELinux modules were added.
back-art: removed WindowMaker appicon hack.
libfoundation: new library derived from Apple Core Foundation with added CFNotificationCenter and CFFileDescriptor implementations.
Applications
Terminal
“Paste Selection” menu item was implemented in Terminal.
Unblock signals when launching apps from the dock.
Added support for setting title via xterm escape sequence.
Quit alert panel now conforms to OpenStep UI guidelines.
Use shell configured in preferences if “Default Shell” option was set.
Terminal Services: wait for background task until exit before output data processing.
Workspace
Launching icon fixes.
“Open in Workspace” service was implemented (thanks to OnFlApp)
Do not show keyboard layout value if single keyboard layout is used
Another portion of focus handling related fixes and optimizations.
Implemented custom ‘Hide’ menu item action - all windows are hidden, Workspace menu stays on screen, application remains active
Sanity check was added to prevent appearance of “BadMatch (invalid parameter attributes)” errors
Huge refactoring of Worksapce/WM code (for short: most part of the WINGs was replaced with CoreFoundation):
use CoreFoundation for data handling instead of WINGs;
event handling loop now is non-blocking (used CFRunLoop and CFFileDescriptor for X11 events monitoring);
all notifications inside WM now implemented using CoreFoundation’s notifications and notification center;
use CFRunLoop timers for mouse tracking, balloon and workspace name appearance handling;
use CFPropertyList to handle WM configuration files (defaults);
track for changes each configuration file individually;
all static function were prefixed with underscore;
all functions across WM were renamed to w<Object><Action> style;
added experimental bridge between AppKit and CoreFoundation notification centers (potentially it may be used for communication between applications and window manager)
Release 0.90
General
Based on latest release of GNUstep libraries with some custom patches and improvements which are left unmerged to master branch. GNUstep GUI and Back now have gnustep-gui-nextspace and gnustep-back-nextspace branches to hold these specific changes.
Switched to use LLVM/clang from distribution repositories (SCL for CentOS 7, CentOS 8 and Fedora already have correct compiler).
Reduced debug output to console.
WRaster library moved out of Workspace and can be used by GNUstep Back as shared library.
Configured CircleCI automated build check.
/etc/skel/.zshrc renamed to .zshrc.nextspace to prevent conflict with zsh RPM resource file.
Numerous SoundKit fixes and improvements.
Created scripts for automated creation of RPM packages.
Applications
Login
Startup and shutdown sequences were re-engineered. Login completely handles Xorg start and stop. loginwindow.service now handles only Login (doesn’t kill Xorg on service stop).
Defauls splitted into system (/usr/NextSpace/Preferences/Login) and user ($HOME/Library/Preferences/.NextSpace/Login). User defaults is a place were login/logout hooks are placed by “Login Preferences”.
“LoginHook” and “LogoutHook” preferences were added to defaults file.
On unclean exit of user session dialog is shown to select restart (keep running application) or cleanup (kill user applications).
Fixed panel positioning on monitor dimension and monitor layout changes.
Fixed bug specific to Linux child processes handling: by default SIGCHLD signal handler is set to SIG_IGN. In this case waitpid() returns -1 with error explained as “No child process” - waitpid looses tracked child process by some away. To prevent it from happening signal handler should be set to SIG_DFL.
Workspace
Copy operation now 4 times faster for large files.
“Shutdown” and “Power Off” return exit code for correct Login application handling. Workspace returns exit code 11 on quit if “Power Off” button was pressed. As a result Login application performs OS shutdown without ordering front panel - should switch to Plymouth shutdown screen.
Current keyboard layout now displayed in first Dock icon - quite ugly but it remains until I’ll find better design solution (window titlebar is not an option for me - it’s ugly too).
Bell sound is played via SoundKit with “event” type, so it can be controlled via “System Sounds” application/stream in Mixer.
While window moved/resized current window position/size displayed in window titlebar temporary replacing application titlebar text.
Help Panel was added as result of NXTHelpPanel (table of contents, index, clickable links in articles, backtrack).
Console on-the-fly applies font changed in “Font Preferences”.
Reuse appicon created by launch from FileViewer for appeared application instead of creating new and remove icon with ‘launching’ state.
Improved application execution handling. When application double-clicked in FileViewer several things happen:
icon slides down to IconYard and appicon with ‘launching’ state created holding WM name and command;
if application quits with error (no app was started) appicon removed from screen and alert panel appears;
after successful startup of application ‘launching’ appicon get used as normal application icon.
Ubuntu and Fedora logos were added.
Running apps’ appicons which are dragged out of the Dock are automatically slides into the Icon Yard now.
Launcher: Workspace Launcher: changed completion logic: on first Escape press directory name completed, on second press - shows directory contents in completion list.
Fixed alpha channel handling while drawing application icons.
Set _NET_WM_WINDOW_TYPE_DOCK property to icon core window. This helps compositing managers like compton correctly handle dock icons and miniwindows.
Some fixes to Recycler icon positioning.
Xinerama support replaced with XRandR.
WINGs and WUtil libraries now compiled statically so vanilla WindowMaker may be installed aside.
Fixed WM’s internal string drawing: prevents appearance of RenderBadPicture X internal error in Console.
Preferences
Login: add initial implementation of - you can setup login and logout hooks now.
Password: added implementation (needs more testing).
Font: sends notification on font changes to NSDistributedNotificationCenter.
Sound: was implemented (uses SoundKit).
honor system keyboard settings if no keyboard preferences found in defaults file.
Keyboard: added data and UI elements for keyboard model selection section.
Frameworks
DesktopKit
Implemented NXTOpenPanel : NXTSavePanel and NXTSavePanel : NSSavePanel. Differences to NSOpenPanel and NSSavePanel:
No icons in browser.
Keyboard focus always stays in textfield but Up/Down/Left/Right arrow keys browsing still available (Left/Right only if texfield is empty).
Improved performance of scrolling through the list on long Down/Up key press.
Selecting directory with keyboard requires Enter key press to load directory contents.
Unified with File Viewer sorting and displaying hidden files (configurable through “Expert Preferences” “Sort By” and “Show Hidden Files” options).
Panels save/restore its position and size;
Escape key press pastes current path into textfield - default completion shortcut (also used in Workspace’s Finder).
NXTSound: new class to play sounds leveraging SoundKit.
NXTAlert: set window level to modal; fixed placement of programatically created panel.
NXTIcon: fixed problem of NXTIcon usage inside one application but from different classes.
Fixed and optimized label resizing in edit mode. Problem: if NSTextView is not sized to draw new character or text GSLayoutManager fails to find glyph for character and label doesn’t receive textDidChange: message. Now NXTIconLabel receive adjust it’s frame in insertText: method (called before GSLayouManager’s methods) and paste:.
NXTListView: new class for creating comprehensive (attributed text, icons, sections) lists.
NXTHelpPanel: NeXT-style application help panel usually available at “Info->Help…” menu item.
Helvetica.nfont: recreate bitmaps for sizes 8,10,12,14 for Medium, Bold and Oblique.
Keith.nfont: created new fixed width font similar to Ohlfs NeXTSTEP font.