Hi,

thank you again for your reply and explanation. Despite the different
focus, I am still looking forward to try out your additions.

Regarding my videoinfo patch I submitted them using git to the mailing
list. What is the best way forward here?

Since its just a single file and no deep changes maybe the effort is no too
much... Would you be so kind/able to review them or should I reach out to
Daniel for this?
Since I am new to the grub process I am not sure how to get the changes in.

Thank you and best
Markus


Zhang Boyang <zhangboyang...@gmail.com> schrieb am Sa., 10. Dez. 2022,
12:32:

> Hi,
>
> On 2022/12/6 22:17, Markus Scholz wrote:
> > Hi Zhang,
> >
> > now I need to apologize for my very late reply.. sorry!
> > I saw that you also went ahead as you said with committing the highdpi
> patches.
> >
> > Anyways, regarding the high DPI question:
> > until now we have mostly focused on different screen resolutions in our
> customer offerings and simply chose the font
> > size based on visual testing. So we did not attempt to solve this
> "mathematically".
> >
> > E.g. right now use:
> > - x_res >= 1024; bootmenu font ubuntu regular 20 (large theme)
> > - x_res == 1204; bootmenu font ubuntu regular 17 (medium theme)
> > - x_res < 1024 & unknown ; bootmenu font ubuntu regular 15 (small theme)
> >
> > I don’t know if this helpful for you but that’s the current state we are
> using to keep
> > the text readable given different resolutions. Of course, for the
> different fonts/themes
> > (small, medium, large) the screens still look different i.e. the user
> experience is not consistent.
> > Maybe using your highDPI patch it will become much easier to
> > make the appearance consistent and more appealing across different
> screen resolutions.
> >
>
> Thanks for explaining your solution. My font scaling patches can't give
> user consistent experience, because it only accept integer scaling factors.
>
> By the way, Debian CDs use a fixed 800x600 resolution as far as I know,
> and the user experience is consistent. However, its appearance is blurry
> and this doesn't work on buggy firmwares which do not allow to switch to
> 800x600 resolution.
>
> > Note that we exclusively use gfxmode for our application, avoiding text
> mode.
> > We believe that, for our application, this gives a much more polished
> and mature look&feel.
> >
>
> Unfortunately my patches only work on gfxterm and there is no support
> for gfxmenu yet (at least for now).
>
> Nevertheless, I think it's good to have both my patches and your
> patches, because I think we are focusing on different things.
>
> Best Regards,
> Zhang Boyang
>
>
> > Also thank you for your recommendation for the patch submission.
> > I will attempt to send another reply to this thread with the help of git
> patch asap.
> >
> > Best
> > Markus
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: grub-devel-bounces+scholz=novelsense....@gnu.org
> <grub-devel-bounces+scholz=novelsense....@gnu.org> Im Auftrag von Zhang
> Boyang
> > Gesendet: Montag, 7. November 2022 08:56
> > An: Markus Scholz <sch...@novelsense.com>; grub-devel@gnu.org
> > Cc: phco...@gmail.com; pmen...@molgen.mpg.de; 'Daniel Kiper' <
> dki...@net-space.pl>
> > Betreff: Re: AW: Adding --set to videoinfo to retrieve current video
> resolution
> >
> > Hi,
> >
> > Sorry for late reply... I think my patch is almost independent of
> Markus's, and it would be good to have both. However, I think there are
> some point we can share opinions. I'd like to ask your opinions of the
> mechanism of choosing font size automatically. In my patch (preliminary),
> it scales Unifont(16x16) M times on a N x 1080p screen, with M =
> pow(2,ceil(log2(N))), e.g. 2x when (1080p, 2160p], 4x when (2160p, 4320p],
> 8x when (4320p, 8640p]. This approach seems not good enough, and it might
> not suitable for custom themes. What's your opinion on this from your
> perspective? I will probably go back to work on my HiDPI patch after few
> weeks.
> >
> > By the way, if I understand correctly, you patch seems reversed, and
> your mail client seems corrupted your patch. You might find "git
> format-patch" and "git send-email" useful :)
> >
> > Best Regards,
> > Zhang Boyang
> >
> >
> > On 2022/10/24 19:23, Markus Scholz wrote:
> >> Hi all,
> >>
> >> * I checked the links by Daniel (thanks for providing).
> >> * As I understand it Zhangs patches aim to add a high dpi scaling
> >> feature for the fonts
> >> * In contrast, the patch I submitted (albeit having a similar
> >> use-case) adds the possibility for grub "scripts" / config files to
> >> access & act upon the currently used display resolution
> >> * for me both things would have their merit and independent use-cases
> >>
> >> What is your opinion on having both features?
> >>
> >> Besides, I am willing to help progress both features - if someone can
> >> guide me /give a hint how to proceed best?
> >>
> >> Thank you
> >> Markus
> >>
> >>
> >> -----Ursprüngliche Nachricht-----
> >> Von: Daniel Kiper <dki...@net-space.pl>
> >> Gesendet: Donnerstag, 20. Oktober 2022 19:36
> >> An: Markus Scholz <sch...@novelsense.com>
> >> Cc: grub-devel@gnu.org; phco...@gmail.com; pmen...@molgen.mpg.de;
> >> zhangboyang...@gmail.com
> >> Betreff: Re: Adding --set to videoinfo to retrieve current video
> >> resolution
> >>
> >> Adding Paul, Vladimir, and Zhang...
> >>
> >> On Wed, Oct 12, 2022 at 03:36:13PM +0200, Markus Scholz wrote:
> >>> Dear Grub Developers,
> >>>
> >>> recently we faced the problem the author in this old thread faced:
> >>> - https://lists.gnu.org/archive/html/grub-devel/2012-10/msg00009.html
> >>>
> >>> Ie. our theme wouldn't display properly due to different screen
> >> resolutions.
> >>> Hence, I wanted to change specifically the font size of our theme
> >>> given the current resolution.
> >>> While the videoinfo module provides info about the current resolution
> >>> I wasn't able to discover any way to get the info from the booted
> >>> grub.
> >>>
> >>> Following the aforementioned thread, I therefore patched the
> >>> videoinfo mod to add the ability of a -set switch just like commands
> >>> like "smbinfo" or "search" have.
> >>>
> >>> Ie. the documentation of the videoinfo call could change as follows:
> >>>
> >>> Command: videoinfo [--set var | [WxH]xD]
> >>>
> >>>       Retrieve available video modes. If --set is given, assign the
> >>> currently active resolution to var.
> >>>       If --set is not provided the available video modes are listed.
> >>>       If resolution is given, show only matching modes.
> >>>
> >>> Attached is my patch proposal for the module; I probably made a lot
> >>> mistakes wrt.
> >>> coding style and guidelines - please bear with me.
> >>>
> >>> I would be grateful regarding feedback what I could do / how I could
> >>> improve the patch to make it part of grub? If it possible at all with
> >>> this
> >> approach?
> >>
> >> I think fix for similar problem has been proposed here [1] and I
> >> commented it here [2]. Sadly it ended in limbo. Could you work with
> >> Zhang on this issue?
> >>
> >> Daniel
> >>
> >> [1]
> >> https://lists.gnu.org/archive/html/grub-devel/2022-06/msg00143.html
> >> [2]
> >> https://lists.gnu.org/archive/html/grub-devel/2022-07/msg00027.html
> >>
> >>> Thank you for your reply & best,
> >>> Markus
> >>>
> >>> ---
> >>>
> >>> --- grub-mod/grub-core/commands/videoinfo.c 2022-10-12
> >>> 13:30:54.992451000 +0000
> >>> +++ grub/grub-core/commands/videoinfo.c     2022-10-12
> >> 13:31:37.715512000 +0000
> >>> @@ -30,7 +30,6 @@ GRUB_MOD_LICENSE ("GPLv3+");  struct hook_ctx  {
> >>>      unsigned height, width, depth;
> >>> -  unsigned char set_variable;
> >>>      struct grub_video_mode_info *current_mode;  };
> >>>
> >>> @@ -39,9 +38,6 @@ hook (const struct grub_video_mode_info  {
> >>>      struct hook_ctx *ctx = hook_arg;
> >>>
> >>> -  if (ctx->set_variable) /* if variable should be set don't print
> >>> all modes */
> >>> -    return 0;
> >>> -
> >>>      if (ctx->height && ctx->width && (info->width != ctx->width ||
> >>> info->height != ctx->height))
> >>>        return 0;
> >>>
> >>> @@ -136,40 +132,31 @@ grub_cmd_videoinfo (grub_command_t cmd _
> >>>      grub_video_adapter_t adapter;
> >>>      grub_video_driver_id_t id;
> >>>      struct hook_ctx ctx;
> >>> -
> >>> -  ctx.height = ctx.width = ctx.depth = ctx.set_variable = 0;
> >>> -
> >>> +
> >>> +  ctx.height = ctx.width = ctx.depth = 0;
> >>>      if (argc)
> >>>        {
> >>> -      if (argc == 2 && grub_memcmp(args[0], "--set", sizeof ("--set")
> -
> >> 1)
> >>> == 0 )
> >>> -  ctx.set_variable = 1;
> >>> -      else
> >>> -        {
> >>>          const char *ptr;
> >>>          ptr = args[0];
> >>>          ctx.width = grub_strtoul (ptr, &ptr, 0);
> >>>          if (grub_errno)
> >>> -  return grub_errno;
> >>> +   return grub_errno;
> >>>          if (*ptr != 'x')
> >>> -  return grub_error (GRUB_ERR_BAD_ARGUMENT,
> >>> -        N_("invalid video mode specification `%s'"),
> >>> -        args[0]);
> >>> +   return grub_error (GRUB_ERR_BAD_ARGUMENT,
> >>> +                      N_("invalid video mode specification `%s'"),
> >>> +                      args[0]);
> >>>          ptr++;
> >>>          ctx.height = grub_strtoul (ptr, &ptr, 0);
> >>>          if (grub_errno)
> >>> -  return grub_errno;
> >>> +   return grub_errno;
> >>>          if (*ptr == 'x')
> >>> -  {
> >>> -    ptr++;
> >>> -    ctx.depth = grub_strtoul (ptr, &ptr, 0);
> >>> -    if (grub_errno)
> >>> -      return grub_errno;
> >>> -  }
> >>> -        }
> >>> -
> >>> +   {
> >>> +     ptr++;
> >>> +     ctx.depth = grub_strtoul (ptr, &ptr, 0);
> >>> +     if (grub_errno)
> >>> +       return grub_errno;
> >>> +   }
> >>>        }
> >>> -
> >>> -
> >>>
> >>>    #ifdef GRUB_MACHINE_PCBIOS
> >>>      if (grub_strcmp (cmd->name, "vbeinfo") == 0) @@ -177,23 +164,20
> >>> @@ grub_cmd_videoinfo (grub_command_t cmd _  #endif
> >>>
> >>>      id = grub_video_get_driver_id ();
> >>> -  if (!ctx.set_variable)
> >>> -    {
> >>> -grub_puts_ (N_("List of supported video modes:")); -grub_puts_
> >>> (N_("Legend: mask/position=red/green/blue/reserved"));
> >>> -    }
> >>> -
> >>> +
> >>> +  grub_puts_ (N_("List of supported video modes:"));  grub_puts_
> >>> + (N_("Legend: mask/position=red/green/blue/reserved"));
> >>> +
> >>>      FOR_VIDEO_ADAPTERS (adapter)
> >>>      {
> >>>        struct grub_video_mode_info info;
> >>>        struct grub_video_edid_info edid_info;
> >>> -    if (!ctx.set_variable)
> >>> -  grub_printf_ (N_("Adapter `%s':\n"), adapter->name);
> >>> +
> >>> +    grub_printf_ (N_("Adapter `%s':\n"), adapter->name);
> >>>
> >>>        if (!adapter->iterate)
> >>>          {
> >>> -        if (!ctx.set_variable)
> >>> -    grub_puts_ (N_("  No info available"));
> >>> +   grub_puts_ (N_("  No info available"));
> >>>     continue;
> >>>          }
> >>>
> >>> @@ -202,18 +186,7 @@ grub_puts_ (N_("Legend: mask/position=re
> >>>        if (adapter->id == id)
> >>>          {
> >>>     if (grub_video_get_info (&info) == GRUB_ERR_NONE)
> >>> -    {
> >>> -      ctx.current_mode = &info;
> >>> -      if (ctx.set_variable)
> >>> -        {
> >>> -    /* set grub env var to current mode */
> >>> -    char screen_wxh[20];
> >>> -    unsigned int width = info.width;
> >>> -    unsigned int height = info.height;
> >>> -    grub_snprintf (screen_wxh, 20, "%ux%u", width, height);
> >>> -    grub_env_set (args[1], screen_wxh);
> >>> -        }
> >>> -    }
> >>> +     ctx.current_mode = &info;
> >>>     else
> >>>       /* Don't worry about errors.  */
> >>>       grub_errno = GRUB_ERR_NONE;
> >>> @@ -263,26 +236,19 @@ GRUB_MOD_INIT(videoinfo)
> >>>                            /* TRANSLATORS: "x" has to be entered in,
> >>>                               like an identifier, so please don't
> >>>                               use better Unicode codepoints.  */
> >>> -                          N_("[--set var | [WxH]xD]"),
> >>> -                          N_("Retrieve available video modes. "
> >>> -             "--set is given, assign the currently"
> >>> -             "active resolution to var. If --set "
> >>> -             "is not provided the available video "
> >>> -             "modes are listed. If resolution is "
> >>> -             "given, show only matching modes."));
> >>> -
> >>> +                          N_("[WxH[xD]]"),
> >>> +                          N_("List available video modes. If "
> >>> +                                "resolution is given show only modes"
> >>> +                                " matching it."));
> >>>    #ifdef GRUB_MACHINE_PCBIOS
> >>>      cmd_vbe = grub_register_command ("vbeinfo", grub_cmd_videoinfo,
> >>>                                /* TRANSLATORS: "x" has to be entered
> in,
> >>>                                   like an identifier, so please don't
> >>>                                   use better Unicode codepoints.  */
> >>> -                              N_("[--set var | [WxH]xD]"),
> >>> -           N_("Retrieve available video modes. "
> >>> -           "--set is given, assign the currently"
> >>> -           "active resolution to var. If --set "
> >>> -           "is not provided the available video "
> >>> -           "modes are listed. If resolution is "
> >>> -           "given, show only matching modes."));
> >>> +                              N_("[WxH[xD]]"),
> >>> +                              N_("List available video modes. If "
> >>> +                                 "resolution is given show only modes"
> >>> +                                 " matching it."));
> >>>    #endif
> >>>    }
> >>
> >
> > _______________________________________________
> > Grub-devel mailing list
> > Grub-devel@gnu.org
> > https://lists.gnu.org/mailman/listinfo/grub-devel
> >
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to