BilibiliDown icon indicating copy to clipboard operation
BilibiliDown copied to clipboard

Linux 系统下按钮字体锯齿严重,建议添加抗锯齿设置。

Open blickers opened this issue 1 year ago • 4 comments

我已经确认

  • 使用的当前版本为最新版本
  • issue区没有类似的情况(有的话请直接去该问题讨论)

问题描述 可能作者没有在 Linux 系统下测试过这个软件。根据我在 Ubuntu 22.04 下的测试,软件 UI 按钮的字体没有启用抗锯齿,看起来非常难看。建议增加抗锯齿代码。

问题出在 src/nicelee/ui/item/MJButton.java 这个文件里,解决的办法如下:

增加 import java.awt.Graphics2D; import java.awt.RenderingHints;

public void paint(Graphics g, JComponent c) 修改为 public void paint(Graphics2D g, JComponent c)

另外在 FontMetrics fm = g.getFontMetrics(); 这一行后面增加一行: g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

可以完美解决 Linux 下按钮字体锯齿严重,看起来很丑陋的问题,请求作者修正。

另外软件 UI 其实不用自己设置顶部标题栏、关闭、最小化按钮等,交给操作系统去处理。否则这些 UI 元素不跟随操作系统主题,与操作系统主题格格不入,很难看,特别是在 macOS 和 Linux (调用系统 gtk 主题)下。建议作者考虑去掉这些元素。

相关信息

  • 当前系统(windows/linux等):Ubuntu 22.04
  • java版本:openjdk-11-jdk:amd64 11.0.15+10-0ubuntu0.22.04.1

blickers avatar Aug 04 '22 08:08 blickers

关于软件在 macOS 和 Linux 下窗口标题栏、最小化、关闭按钮及颜色的问题,见图片(已选择调用系统主题,只有tab页面内部颜色、按钮、字体等会跟随系统主题变化,tab外的部分如软件边框、标题栏等不变): 1

建议交给操作系统处理软件边框、标题栏和和最小化、关闭按钮。

blickers avatar Aug 04 '22 09:08 blickers

首先得承认,界面这一块确实很挫。


Linux 系统下按钮字体锯齿严重

这个可以改


不用自己设置顶部标题栏、关闭、最小化按钮等

这个是有历史原因的,如果要把操作|配置|关于菜单移到顶部,只能自定义标题栏。
menu2titlebar

我并不觉得自定义标题栏有什么不好,它的风格确实和MacOS不搭,但没有到需要回退的地步。
如果你实在需要,可以将主类从nicelee.ui.FrameMain改为nicelee.ui.FrameMain_v3_4看看效果
(当然功能可能随着版本迭代已经出现问题)。

java -Dfile.encoding=utf-8 -cp INeedBiliAV.jar nicelee.ui.FrameMain_v3_4

我可以恢复对nicelee.ui.FrameMain_v3_4的功能支持,但不会为此再做更多。


调用系统主题,只有部分跟随系统主题变化...

  • 首先,经测试在Ubuntu22.04 open-jdk11深色模式下,程序显示基本上和浅色模式没啥区别。
    dark-mode2 我认为程序显示在深色/浅色模式下一样是符合预期的。
    上面部分适配的情况应该是配置或者代码做了改动,或者说Java Swing的这部分实现可能是针对Mac??

  • 另外,这实际上是一个新的需求,即适配深色模式Dark mode。
    我可以说,即使是不自定义button、标题栏,全都交给系统,仍然有地方需要适配。
    同时,那也只是换种丑法。
    你可以将试试配置bilibili.button.style = default,看看长得咋样。
    我认为这会有一个较大的工作量,大到我宁愿推倒重来。我不会再用Swing,亦或者JavaFX;如果再要写多平台界面,我会选择electron,或者做个本地服务器+前端,通过浏览器操作。
    我不会为此做更多改动

nICEnnnnnnnLee avatar Aug 05 '22 05:08 nICEnnnnnnnLee

可能是各人喜好吧,你把 UI 弄得太“花俏”了,那些背景图片,看得眼花。 我一顿修改,把默认界面还原成一般软件常见的朴素样子,感觉看起来顺眼很多。让 UI 主题默认跟随系统主题变化,它能自己适应白天模式和暗夜模式,看截图: 0-2 0 1-2 1 2

blickers avatar Aug 08 '22 11:08 blickers

我直接改了 FrameMain.java 和其他一些文件,并没有使用 FrameMain_v3_4.java

关于配置文件路径、下载保存路径,我觉得也很有问题,没有考虑到不同操作系统的处理,建议增加一些代码,判断操作系统类型,按不同操作系统,调用不同的默认路径。

比如,Linux 系统下,默认 app.config 应该保存到 /etc/BilibiliDown 下,user.config 应该保存到 ~/.config/BilibiliDown 下,默认下载目录为 ~/Downloads

macOS 系统下,app.config 保存到 /Library/'Application Support'/BilibiliDown 下, user.config 应该保存到 ~/Library/'Application Support'/BilibiliDown 下,,默认下载目录为 ~/Downloads

Windows 下也不建议将默认下载路径设置为当前路径下的 ./download

还有一个问题是 Linux、macOS 下制作 jar 包的 package.sh 用的是 Windows 换行符,在 Linux/macOS 下会出问题。建议用 dos2unix 处理一下,换上去,更新掉源码库里的原文件。

blickers avatar Aug 08 '22 12:08 blickers

由于长期没有状态更新,该问题自动关闭。如有需要可重新打开。

github-actions[bot] avatar Sep 07 '22 15:09 github-actions[bot]