Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Several (related) taskbar issues #178

Open
fladd opened this issue Nov 3, 2024 · 2 comments
Open

Several (related) taskbar issues #178

fladd opened this issue Nov 3, 2024 · 2 comments

Comments

@fladd
Copy link

fladd commented Nov 3, 2024

There appear to be several issues with the taskbar which are somehow related. I am also happy to report each issue individually, though, if this is more helpful. Please let me know if this is the case.

(1) The size of the taskbar does not equal the size of the start button (i.e. start.xpm nowadays), as stated in the FAQ (https://ice-wm.org/FAQ/): "Taskbar height is sized according size of start button. E.g. for linux if your linux.xpm in taskbar folder is 50x32 then your taskbar will be 32 pixels high."

It actually seem much more complicated. When using a start.xpm with a height of 24 pixels, and a SmallIconSize of 24 pixels, the taskbar will in fact be 33 pixels high. It appears that the minimal height of the taskbar is always the size of SmallIconSize + 9 pixels. Only if start.xpm is larger than this, it will increase the taskbar height to the height of start.xpm + 5 pixels. There does not seem to be a way to have the taskbar the same height as either SmallIconSize or start.xpm.

(2) TaskBarDoubleHeight fails to "double" the height of the taskbar when SmallIconSize is larger than 16. In these cases it increases the taskbar to a height that is significantly less than double height, cutting off the application launch icons. This can be seen in all Antix themes for instance, which come in different sizes (that have different SmallIconSize values). Here is another example from a theme I am currently working on:
image

There seem to be three ways to prevent this, which are all not desirable and are hence not universal solutions to the problem:

  • Change SmallIconSize to 16 (obviously not desirable for larger themes)
  • Change TrayIconMaxHeight to something that is 1/3 larger than the size of SmallIconSize, such as 32 for a SmallIconSize of 24 (also not desirable since it will make the tray icons significantly larger than all other items in the taskbar, while most themes have them even smaller than the other items)
  • Change TaskBarGraphHeight to a large value (e.g. 32), such that it fill the entire taskbar (also not desirable, due to the bug I will describe next, and even then it of course doesn't work anymore a soon as a user decides to not show any graphs)

(3) The width of the taskbar graphs cannot be set by a theme. While the height of the taskbar graphs (CPU, Mem, Network, Battery) can be set in the default.theme file with TaskBarGraphHeight, the corresponding width settings (TaskBarCPUSamples, TaskBarMEMSamples, TaskBarNetSamples, TaskBarApmGraphWidth) do not seem to have any effect when they are set in default.theme.

All of these issues were observed with IceWM version 3.6.0.

@gijsbers
Copy link
Contributor

gijsbers commented Nov 3, 2024

Thanks for pointing this out.

  1. This is true and known for some time and explained elsewhere. The FAQ wasn't updated to reflect this. It should.
  2. This looks like a bug that needs to be fixed.
  3. Apparently this was intentional. We can consider if this needs to be changed.

@fladd
Copy link
Author

fladd commented Nov 7, 2024

Thanks for pointing this out.

1. This is true and known for some time and explained elsewhere. The FAQ wasn't updated to reflect this. It should.

I see that this has already been fixed. Nice!

2. This looks like a bug that needs to be fixed.

It seems that the relevant code is here:

// When TaskBarDoubleHeight=1 this draws the upper half.
. I don't fully understand how the drawing works though, so I unfortunately cannot fix it myself.

3. Apparently this was intentional. We can consider if this needs to be changed.

My reasoning here would be that if you want to create different sizes of the same theme (see e.g. Antix themes) in order to accommodate different screen resolutions, then it makes sense to scale the graphs as well (and in order to keep their proportions right, you need to also scale their width.

gijsbers added a commit to bbidulock/icewm that referenced this issue Feb 15, 2025
gijsbers added a commit to bbidulock/icewm that referenced this issue Feb 15, 2025
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Feb 24, 2025
Release icewm-3.7.0 released 2025-02-22
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.6.0...3.7.0

Eduard Bloch <[email protected]> (107):
      LC_CTYPE specific hints to Xft selection
      Minor fixes and improvements on XDG menu
      WIP: switched more glib containers to stl
      Workaround for gettext not applied on submenu
      WIP: redesigning menu handling
      First working printing code after rewrite
      Fixup some of the expansion patterns in the exec string
      Cleanup, fix Other menu population
      Localized sorting
      Map unknown subcats to Other main cat
      Simple attempt to get duplicated items in parent nodes
      Attaching menu description, incomplete
      Fix main cat fallback
      Work around missing reverse iterator, can be plain C++11 again
      Fallback to directory file base name matching the category name
      Mark submenu labels translateable
      Drop menu info getter
      Don't recurse for .directory fetching
      clang-reformat fdomenu.cc
      Stop requiring glib in CMake build
      Common DBG macro to turn on/off debug notes
      Filter out duplicates where apps declare some intermediate categories as
        well
      Add extra separator handling
      Implemented execution in Terminal
      Rename local DBG macro
      Cleaning
      Support --no-sub-cats
      Stop storing lookup helper in global member
      Fewer stat operations using readdir hints
      Match country-specific languages correctly
      Printing of GenericName
      Drop old Perl based converter (obsolete)
      Restore option to remove Other menu
      Option to move lone entries to their parent menues.
      Update CMake requirement to prevent warnings
      Minor updates
      Helper to create locale folder mock
      Fix loading from gettext if menu did not have a description
      Fix and streamline conversion flow
      Hint on requirement of SVG support
      Drop dependency on YLocale class and X11 libs
      Disable sync with stdio
      Include implicitly pulled headers directly
      Deadline option to abort XDG data reading and print what we got so far
      Refactor, reformat, fix typo
      Better fix for duplicated appendixes
      Bugfixes, cleanup
      More sophisticated -S operation, also fixes, cleanup
      Restore .desktop launching function
      Simple string matching filter implemented
      Icon donation from AudioVideo section to Audio / Video
      Reimplemented --flat mode
      Fix segfault when AudioVideo did not have decoration
      Relocate --match-osec check to hit translated section names too
      Added a user hint and basic precaching hack on menu timeout
      Minor refactoring (DRYing)
      Minor heap usage optimization
      Tiny runtime saving by not cleaning up the tree in the end
      Document missing options and align help text format
      Document new options
      In timeout, don't waste time with nice-to-have optimizations
      Disable --no-sep-others again
      Configured timeout defaults to "sane" values
      Dodge the GenericName which just repeats Name content
      Support more OS with the d_ent shortcut
      Optional source comment, more hidding, various fixes
      Minor performance tuning with different containers
      Save a few CPU cycles
      Update XDG format reference version
      Fixed merging of some submenu entries into correct parent
      Stop using std::regex
      Don't evaluate TryExec
      Local formating of prog title
      Option to clamp rogue menu title's length
      Make true/false checks case-insensitive
      Overhaul content processing
      Resolve shadowing of apps which are having the same translated name
      Convert translated sorting to internal bubble sort
      Wide char aware string cropping
      Drop unused fields, ignore comments earlier
      More similar standard level selection (to autoconf with recent compilers)
      Fix C++14 issue with constness of functors
      Use system installation of nanosvg package, where possible
      Stop using smart pointers
      Work around GCC11 issue
      Solve some warnings from receng clang and gcc
      Stop using VLAs, they are not fully legal in C++
      Make PACKAGE/VERSION overridable in from-git build mode
      Document optional requirements
      Ignore local junk from IDEs and personal notes
      Build dependency on gennews.sh for NEWS creation
      Control language selection by LINGUAS file, not filesystem wildcards
      POT/PO update
      Explicit blacklisting of menu-xdg subfolders
      Ignore certain prefix commands
      Unmark text while not moving ahead at the end
      Never mark text in the complete operation
      Fix potential resize-to-smaller problem
      Drop ycollections classes
      Render the list of proposals in a tooltip
      Make the tooltip act like an assistant with further proposals
      Stop tooltip when space was typed in
      Redo completion when deleting
      Try using smaller icon versions in WS overview
      Make clicks in the corner effective to ShowDesktop button in right-placed
        mode
      Fix a crash when selecting Default from the clock menu
      No text insertion while doing tooltip update only

Bert Gijsbers <[email protected]> (69):
      Add support for _NET_WM_MOVERESIZE_CANCEL.
      Better guard move/sizes and make sure they are properly terminated.
      Stop move/sizes when changing tabs.
      End manual placement when the client exits.
      Properly compute the first parameter to the select(2) system call.
      Add -Await option to icesh to wait for and select new client windows.
      Improve support for properties with COMPOUND_TEXT in icesh.
      When a key event is handled, don't propagate it further.
      When DockApps has "dock" and LimitByDockLayer=1 then update the desktop
        work area so that maximized windows leave the DockApps container visible
        for issue #779.
      Also update DockApps container when downsizing.
      Update DockApps preferences comment.
      Document the layers and the support for dockapps.
      Document the use of the LimitByDockLayer pref for DockApps.
      Simplify captureEvents/releaseEvents.
      Support changing the Dock container layer while running.
      When focusing a frame under the mouse, prefer to focus its topmost
        transient.
      When raising a frame, check if the focused frame needs to bind the mouse
        buttons, if it is overlapped. When minimizing or hiding transients,
        check against transients being tabs in the same frame.
      When LimitPosition is false, you can drag maximized windows off-screen and
        closes issue #780.
      Revert "When LimitPosition is false, you can drag maximized windows
        off-screen."
      To drag a maximized window, keep the Shift key down for issue #780.
      Elaborate on symbols and expressions and document the minus operator.
      Support keybindings to shifted XF86keysyms like XF86AudioPause for issue
        #781.
      Move parsing key definitions to class WMKey.
      Reuse WMKey in KProgram.
      Enforce a limit of 8 mouse pointer buttons, as more is impossible.
      Add constructors to WMKey.
      Consistently use keyCodeToKeySym.
      Dissolve the WM_KEY macros.
      Move all keybinding initializations to its own C++ file.
      Correct versions and date.
      Drop ycollections.
      Succinct.
      Improve pager icon sizes conditional structure.
      Remove smart pointers from misc.cc.
      Restore mstring strncpy's.
      Improve readability.
      Restore unsigned char array in yarray.
      Replace max by min.
      Let icesh accept UTF-8 strings in properties.
      Support locales with three letter language codes.
      Remove silly casts.
      Restore simple arrays and avoid mallocs.
      Retstore the previous fontmacro's, because e.g. the InputFont no longer
        was bold.
      Let icewmbg also support the AVIF image format.
      Remove the default 1px black border on the right and bottom sides of the
        QuickSwitch window when Look is flat for issue ice-wm/icewm#174.
      Support OpenBSD tar in --install list for issue ice-wm/icewm#179.
      Both scrollbars need to be able to process the same key event.
      Cleanup the listing of installable themes for issue ice-wm/icewm#179.
      Revert "When undoing an arrange or showing the desktop, focus the last
        focused window instead of the topmost window." for issue #788.
      fix fi.po to fix the build.
      Don't call XKeysymToKeycode several times per key grab, but cache it.
        Create YKeycodeMap and getKeycodeMap.
      Drop grabVKey and fixupPreferences. Move unshift to WMKey grab.
      Support grabbing two keys simultaneously by a single keybinding definition
        when both keys are bound to the same keysym.
      Increase max backgrounds to 8000.
      Increase toolbar height when icons are taller for issue ice-wm/icewm#178.
      Drop a NOTE.
      Make 4 graph widths themable for issue ice-wm/icewm#178.
      Revert "Remove the default 1px black border of the QuickSwitch for issue
        ice-wm/icewm#174." This reverts commit
        e7511806257cdee92585a21a4a794e19e33478dd.
      Revert "Don't draw a border on QuickSwitch when Look=flat for issue #736."
        This reverts commit 11c0b34db6b24f5fbd9815d359e0b5ef1360517f.
      Mark support for global modality as done.
      Add ColorQuickSwitchBorder themable preference for issue #736.
      Never use CurrentTime, but always use last event time when setting the
        input focus to a window.
      Fix compilation error for fdomenu.cc undefined msglang when no I18N.
      Include locale include files last in fdomenu.cc, because they contain
        macro's.
      Restore support for NanoSVG in the CMake build.
      Update the about copyright to 2025.
      Update potfiles.
      Restore support for C++11 in fdomenu.cc.
      Check for __GNUC__ at least 5 for codecvt dependency.

Baurzhan Muftakhidinov <[email protected]> (2):
      Translated using Weblate (Kazakh)
      Translated using Weblate (Kazakh)

David Medina <[email protected]> (2):
      Translated using Weblate (Catalan)
      Translated using Weblate (Catalan)

Ferdinand Galko <[email protected]> (2):
      Translated using Weblate (Slovak)
      Translated using Weblate (Slovak)

Luna  Jernberg <[email protected]> (2):
      Translated using Weblate (Swedish)
      Translated using Weblate (Swedish)

Marina J. Donis <[email protected]> (2):
      Translated using Weblate (Spanish)
      Translated using Weblate (Spanish)

Alessio Adamo <[email protected]> (1):
      Translated using Weblate (Italian)

Aleš Kastner <[email protected]> (1):
      Translated using Weblate (Czech)

Dmitriy Khanzhin <[email protected]> (1):
      Translated using Weblate (Russian)

Ettore Atalan <[email protected]> (1):
      Translated using Weblate (German)

Hugo Carvalho <[email protected]> (1):
      Translated using Weblate (Portuguese)

Mehmet Akif 9oglu <[email protected]> (1):
      Translated using Weblate (Turkish)

Rantala <[email protected]> (1):
      Translated using Weblate (Finnish)

Temuri Doghonadze <[email protected]> (1):
      Translated using Weblate (Georgian)

Virinas code <[email protected]> (1):
      Translated using Weblate (French)

Yasuhiko Kamata <[email protected]> (1):
      Translated using Weblate (Japanese)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants