* 發布第2.2.5版;

* 修復縮微窗口顏色異常的缺陷;
        * 調整縮微窗口最大寬度;
        * 調整配色方案。
This commit is contained in:
gsm 2023-06-14 00:43:54 +08:00
parent 329418bbe5
commit 21a9399f9d
12 changed files with 50 additions and 33 deletions

View File

@ -9,6 +9,12 @@
* <http://www.gnu.org/licenses/>。 * <http://www.gnu.org/licenses/>。
**************************************************************************/ **************************************************************************/
2023年 06月 14日 星期三 00:40:39 CST gsm <406643764@qq.com>
* 發布第2.2.5版;
* 修復縮微窗口顏色異常的缺陷;
* 調整縮微窗口最大寬度;
* 調整配色方案。
2023年 06月 13日 星期二 16:04:07 CST gsm <406643764@qq.com> 2023年 06月 13日 星期二 16:04:07 CST gsm <406643764@qq.com>
* 發布第2.2.4版; * 發布第2.2.4版;
* 修復在堆疊模式和預覽模式下缺失標題欄按鈕的缺陷; * 修復在堆疊模式和預覽模式下缺失標題欄按鈕的缺陷;

5
NEWS
View File

@ -9,6 +9,11 @@
* <http://www.gnu.org/licenses/>。 * <http://www.gnu.org/licenses/>。
* ************************************************************************/ * ************************************************************************/
第2.2.5版:
* 修復縮微窗口顏色異常的缺陷;
* 調整縮微窗口最大寬度;
* 調整配色方案。
第2.2.4版: 第2.2.4版:
* 修復在堆疊模式和預覽模式下缺失標題欄按鈕的缺陷; * 修復在堆疊模式和預覽模式下缺失標題欄按鈕的缺陷;
* 調整文字對齊方式、與構件的間距; * 調整文字對齊方式、與構件的間距;

3
TODO
View File

@ -9,6 +9,9 @@
* <http://www.gnu.org/licenses/>。 * <http://www.gnu.org/licenses/>。
* ************************************************************************/ * ************************************************************************/
第2.2.5版的下一步的開發計劃:
* 支持EWMH的_NET_WM_*NAME應用程序窗口特性。
第2.2.4版的下一步的開發計劃: 第2.2.4版的下一步的開發計劃:
* 支持EWMH的_NET_WM_*NAME應用程序窗口特性 * 支持EWMH的_NET_WM_*NAME應用程序窗口特性
* 對外觀進行微調。 * 對外觀進行微調。

View File

@ -12,7 +12,7 @@
./" program. Otherwise, see <http://www.gnu.org/licenses/>. ./" program. Otherwise, see <http://www.gnu.org/licenses/>.
./" ************************************************* ***************************/ ./" ************************************************* ***************************/
.TH gwm 1 June 2023 "gwm 2.2.4" gwm .TH gwm 1 June 2023 "gwm 2.2.5" gwm
. .
.SH NAME .SH NAME
gwm \- gwm (gsm's window manager), is an X11-based dynamic window manager written in C language. gwm \- gwm (gsm's window manager), is an X11-based dynamic window manager written in C language.

View File

@ -9,7 +9,7 @@
./" <http://www.gnu.org/licenses/>。 ./" <http://www.gnu.org/licenses/>。
./" ************************************************************************/ ./" ************************************************************************/
.TH gwm 1 2023年6月 "gwm 2.2.4" gwm .TH gwm 1 2023年6月 "gwm 2.2.5" gwm
. .
.SH 名称 .SH 名称
.B .B

View File

@ -8,7 +8,7 @@
./" 你應該已經收到一份附隨此程序的GNU通用公共許可證副本。否則請參閱 ./" 你應該已經收到一份附隨此程序的GNU通用公共許可證副本。否則請參閱
./" <http://www.gnu.org/licenses/>。 ./" <http://www.gnu.org/licenses/>。
./" ************************************************************************/ ./" ************************************************************************/
.TH gwm 1 2023年6月 "gwm 2.2.4" gwm .TH gwm 1 2023年6月 "gwm 2.2.5" gwm
. .
.SH 名稱 .SH 名稱
gwm \- gwmgsm's window manager是一個用C語言編寫的基於X11的動態窗口管理器。 gwm \- gwmgsm's window manager是一個用C語言編寫的基於X11的動態窗口管理器。

View File

@ -5,7 +5,7 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gwm 2.2.4\n" "Project-Id-Version: gwm 2.2.5\n"
"Report-Msgid-Bugs-To: 406643764@qq.com\n" "Report-Msgid-Bugs-To: 406643764@qq.com\n"
"POT-Creation-Date: 2023-06-13 16:05+0800\n" "POT-Creation-Date: 2023-06-13 16:05+0800\n"
"PO-Revision-Date: 2023-05-05 11:26+0800\n" "PO-Revision-Date: 2023-05-05 11:26+0800\n"

View File

@ -6,7 +6,7 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gwm 2.2.4\n" "Project-Id-Version: gwm 2.2.5\n"
"Report-Msgid-Bugs-To: 406643764@qq.com\n" "Report-Msgid-Bugs-To: 406643764@qq.com\n"
"POT-Creation-Date: 2023-06-13 16:05+0800\n" "POT-Creation-Date: 2023-06-13 16:05+0800\n"
"PO-Revision-Date: 2023-05-05 09:56+0800\n" "PO-Revision-Date: 2023-05-05 09:56+0800\n"

View File

@ -290,7 +290,7 @@ static void config_widget_size(WM *wm)
c->win_gap=c->border_width*2; c->win_gap=c->border_width*2;
c->status_area_width_max=c->font_size[TASKBAR_FONT]*30; c->status_area_width_max=c->font_size[TASKBAR_FONT]*30;
c->taskbar_button_width=get_font_height_by_pad(wm, TASKBAR_FONT)/0.618+0.5; c->taskbar_button_width=get_font_height_by_pad(wm, TASKBAR_FONT)/0.618+0.5;
c->icon_win_width_max=c->font_size[TASKBAR_FONT]*10; c->icon_win_width_max=c->font_size[TASKBAR_FONT]*15;
c->icon_gap=c->font_size[TASKBAR_FONT]/2.0+0.5; c->icon_gap=c->font_size[TASKBAR_FONT]/2.0+0.5;
c->act_center_item_width=c->font_size[ACT_CENTER_FONT]*8; c->act_center_item_width=c->font_size[ACT_CENTER_FONT]*8;
c->run_cmd_entry_width=c->font_size[ACT_CENTER_FONT]*16; c->run_cmd_entry_width=c->font_size[ACT_CENTER_FONT]*16;
@ -327,10 +327,10 @@ static void config_cursor_shape(WM *wm)
*/ */
static void config_widget_color_for_dark(WM *wm) static void config_widget_color_for_dark(WM *wm)
{ {
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_BORDER_COLOR, "grey31"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_BORDER_COLOR, "grey11");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, CURRENT_BORDER_COLOR, "grey11"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, CURRENT_BORDER_COLOR, "grey31");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_TITLEBAR_COLOR, "grey31"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_TITLEBAR_COLOR, "grey11");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, CURRENT_TITLEBAR_COLOR, "grey11"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, CURRENT_TITLEBAR_COLOR, "grey31");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTERED_NORMAL_BUTTON_COLOR, "DarkOrange"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTERED_NORMAL_BUTTON_COLOR, "DarkOrange");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTERED_CLOSE_BUTTON_COLOR, "red"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTERED_CLOSE_BUTTON_COLOR, "red");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_BUTTON_COLOR, "grey21"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, NORMAL_BUTTON_COLOR, "grey21");
@ -338,7 +338,7 @@ static void config_widget_color_for_dark(WM *wm)
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ACT_CENTER_COLOR, "grey31"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ACT_CENTER_COLOR, "grey31");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, TASKBAR_COLOR, "grey21"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, TASKBAR_COLOR, "grey21");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTRY_COLOR, "white"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ENTRY_COLOR, "white");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, HINT_WIN_COLOR, "grey91"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, HINT_WIN_COLOR, "grey81");
SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ROOT_WIN_COLOR, "black"); SET_WIDGET_COLOR_NAME(wm, DARK_THEME, ROOT_WIN_COLOR, "black");
} }
@ -395,13 +395,13 @@ static void config_widget_color(WM *wm)
*/ */
static void config_text_color_for_dark(WM *wm) static void config_text_color_for_dark(WM *wm)
{ {
SET_TEXT_COLOR_NAME(wm, DARK_THEME, NORMAL_TITLEBAR_TEXT_COLOR, "grey61"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, NORMAL_TITLEBAR_TEXT_COLOR, "grey71");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, CURRENT_TITLEBAR_TEXT_COLOR, "LightGreen"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, CURRENT_TITLEBAR_TEXT_COLOR, "LightGreen");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, TASKBAR_TEXT_COLOR, "white"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, TASKBAR_TEXT_COLOR, "white");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, CLASS_TEXT_COLOR, "RosyBrown"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, CLASS_TEXT_COLOR, "RosyBrown");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, ACT_CENTER_ITEM_TEXT_COLOR, "white"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, ACT_CENTER_ITEM_TEXT_COLOR, "white");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, ENTRY_TEXT_COLOR, "black"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, ENTRY_TEXT_COLOR, "black");
SET_TEXT_COLOR_NAME(wm, DARK_THEME, HINT_TEXT_COLOR, "grey41"); SET_TEXT_COLOR_NAME(wm, DARK_THEME, HINT_TEXT_COLOR, "SkyBlue4");
} }
/* 功能:爲默認顏色主題設置文字顏色。 /* 功能:爲默認顏色主題設置文字顏色。

View File

@ -56,17 +56,15 @@ void draw_string(WM *wm, Drawable d, const char *str, const String_format *f)
} }
XftDraw *draw=XftDrawCreate(wm->display, d, wm->visual, wm->colormap); XftDraw *draw=XftDrawCreate(wm->display, d, wm->visual, wm->colormap);
const char *es=""; XftDrawStringUtf8(draw, &f->fg, font, sx, sy, (const FcChar8 *)str, n);
if(f->trunc && sw+2*pad>w) if(f->trunc && sw+2*pad>w)
{ {
const char *es="";
int ew, en=strlen(es); int ew, en=strlen(es);
get_string_size(wm, font, es, &ew, NULL); get_string_size(wm, font, es, &ew, NULL);
XftDrawStringUtf8(draw, &f->fg, font, sx, sy, (const FcChar8 *)str, n);
XClearArea(wm->display, d, x+w-ew, 0, ew, h, False); XClearArea(wm->display, d, x+w-ew, 0, ew, h, False);
XftDrawStringUtf8(draw, &TEXT_COLOR(wm, HINT), font, x+w-ew, sy, (const FcChar8 *)es, en); XftDrawStringUtf8(draw, &TEXT_COLOR(wm, HINT), font, x+w-ew, sy, (const FcChar8 *)es, en);
} }
else
XftDrawStringUtf8(draw, &f->fg, font, sx, sy, (const FcChar8 *)str, n);
XftDrawDestroy(draw); XftDrawDestroy(draw);
} }

View File

@ -40,6 +40,8 @@ static FILE *open_index_theme(const char *base_dir, const char *theme);
static size_t get_spec_char_num(const char *str, int ch); static size_t get_spec_char_num(const char *str, int ch);
static char **get_parent_themes(const char *base_dir, const char *theme); static char **get_parent_themes(const char *base_dir, const char *theme);
static bool is_accessible(const char *filename); static bool is_accessible(const char *filename);
static bool have_same_class_icon_client(WM *wm, Client *c);
void draw_image(WM *wm, Imlib_Image image, Drawable d, int x, int y, int w, int h) void draw_image(WM *wm, Imlib_Image image, Drawable d, int x, int y, int w, int h)
{ {
@ -383,17 +385,15 @@ static bool is_accessible(const char *filename)
return !stat(filename, &buf); return !stat(filename, &buf);
} }
static bool have_same_class_icon_client(WM *wm, Client *c);
void iconify(WM *wm, Client *c) void iconify(WM *wm, Client *c)
{ {
c->icon->area_type=c->area_type==ICONIFY_AREA ? wm->cfg->default_area_type : c->area_type; Icon *i=c->icon;
update_win_bg(wm, i->win, WIDGET_COLOR(wm, TASKBAR), None);
i->area_type=c->area_type==ICONIFY_AREA ? wm->cfg->default_area_type : c->area_type;
c->area_type=ICONIFY_AREA; c->area_type=ICONIFY_AREA;
c->icon->title_text=get_text_prop(wm, c->win, XA_WM_ICON_NAME);
if(!c->icon->title_text)
c->icon->title_text=copy_string(c->title_text);
update_icon_area(wm); update_icon_area(wm);
XMapWindow(wm->display, c->icon->win); XMapWindow(wm->display, i->win);
XUnmapWindow(wm->display, c->frame); XUnmapWindow(wm->display, c->frame);
if(c == DESKTOP(wm)->cur_focus_client) if(c == DESKTOP(wm)->cur_focus_client)
{ {
@ -405,8 +405,11 @@ void iconify(WM *wm, Client *c)
void create_icon(WM *wm, Client *c) void create_icon(WM *wm, Client *c)
{ {
Icon *i=c->icon=malloc_s(sizeof(Icon)); Icon *i=c->icon=malloc_s(sizeof(Icon));
i->x=0, i->y=0, i->w=i->h=wm->taskbar->h, i->title_text=NULL; i->x=i->y=0, i->w=i->h=wm->taskbar->h;
i->win=XCreateSimpleWindow(wm->display, wm->taskbar->icon_area, i->x, i->y, i->title_text=get_text_prop(wm, c->win, XA_WM_ICON_NAME);
if(!i->title_text)
i->title_text=copy_string(c->title_text);
i->win=XCreateSimpleWindow(wm->display, wm->taskbar->icon_area, 0, 0,
i->w, i->h, 0, 0, WIDGET_COLOR(wm, TASKBAR)); i->w, i->h, 0, 0, WIDGET_COLOR(wm, TASKBAR));
XSelectInput(wm->display, c->icon->win, ICON_WIN_EVENT_MASK); XSelectInput(wm->display, c->icon->win, ICON_WIN_EVENT_MASK);
set_icon_image(wm, c); set_icon_image(wm, c);
@ -459,15 +462,18 @@ void deiconify(WM *wm, Client *c)
void del_icon(WM *wm, Client *c) void del_icon(WM *wm, Client *c)
{ {
XDestroyWindow(wm->display, c->icon->win);
c->area_type=c->icon->area_type;
if(c->icon->image) if(c->icon->image)
{ {
imlib_context_set_image(c->icon->image); imlib_context_set_image(c->icon->image);
imlib_free_image(); imlib_free_image();
} }
vfree(c->icon->title_text, c->icon, NULL); if(c->area_type == ICONIFY_AREA)
update_icon_area(wm); {
XDestroyWindow(wm->display, c->icon->win);
c->area_type=c->icon->area_type;
vfree(c->icon->title_text, c->icon, NULL);
update_icon_area(wm);
}
} }
void iconify_all_clients(WM *wm) void iconify_all_clients(WM *wm)

View File

@ -132,9 +132,8 @@ void update_client_icon_win(WM *wm, Window win)
if(i->show_text) if(i->show_text)
{ {
String_format f={{wm->taskbar->h, 0, i->w-wm->taskbar->h, i->h}, String_format f={{wm->taskbar->h, 0, i->w-wm->taskbar->h, i->h},
CENTER_LEFT, true, true, false, 0, c==CUR_FOC_CLI(wm) ? CENTER, true, false, false, 0,
TEXT_COLOR(wm, CURRENT_TITLEBAR) TEXT_COLOR(wm, TASKBAR), TASKBAR_FONT};
: TEXT_COLOR(wm, NORMAL_TITLEBAR), TITLEBAR_FONT};
draw_string(wm, i->win, i->title_text, &f); draw_string(wm, i->win, i->title_text, &f);
} }
} }