GTK 4.10 port, with bug fixes#87
Open
borkra wants to merge 85 commits into
Open
Conversation
…, refactor helpers
…nd leak suppressions
- Move the 'configured port is no longer available' warning out of build_port_model() - Show warning after gtk_window_present() instead of during dropdown construction - Make missing_port_out a required non-NULL parameter with g_return_val_if_fail - This fixes the close button on the alert dialog not responding when port is unavailable
Owner
|
Thanks a lot.
I will review this!
I will be in touch.
…On Thu, 2026-05-14 at 06:17 -0700, Boris Krasnovskiy wrote:
This includes following major changes:
* Complete GTK 4.1 port
* Restructuring to move all UI definition out of C code into GTK
builder ui files
* Fixed a lot of cut & paste and file transfer issues, with proper
queuing large data sets
* UI changes:Added disable shortcuts menu item to disable keyboard
shrotcuts, this enables proper operation with curses based
applications without gtkterm shortcuts overwriting curses
controls.Send file transfer menu into 2: "Send Raw file" and "Execute
script", this clarifies the behavior and removes ambiguity.Send raw
file just dumps raw data set into the terminal.Execute script, reads
file line by line applies auto cr-lf if chosen and does all other
things expected from text based execution.
I am using this all day long every day and do not see any more issues
for a month or so. So I guess good enough to commit.
#48
#13
#77
#38
And maybe others
You can view, comment on, or merge this pull request online
at: #87
Commit Summary * d4fcb57 device_monitor: handle suspend/resume via
system sleep notifications
* deb5d75 Port to GTK4
* f52099a Fix taskbar icon and suppress terminal commit signal
during view switch
* 08f91b9 Use automatic memory management and fix logging ownership
* 1364db1 interface: fix window title update to use explicit memory
management
* fae52da Fix ESC clear screen: trigger on user keypress only, not
received serial data
* 6a1ab10 Fix file transfer cancel, dialog UX, font quoting, and
code cleanup
* 396e036 Save and restore window size on startup/exit
* 0dcac55 interface: add disable hotkeys toggle action with
save/restore
* f0cbdfc macros: replace key event dispatch with shortcut
controller
* e6912ae interface: add keyboard shortcuts help window
* 8f4d267 interface: add menu accelerators in UI, remove disable-
hotkeys action, refactor helpers
* b46de75 serial: replace modem-signal polling with an event-driven
thread
* 77dbaf9 macros: refactor dialog rows to use a UI template
* d180726 search: guard against null terminal reference; move key-
press controller to UI file
* a751ddb config: fix color save format and tidy variable
declarations
* e59a71f port config: skip reconfiguration when settings are
unchanged
* b5a5d17 device_monitor: remove redundant initial device presence
check
* 5d80d46 interface: restore disable-hotkeys toggle; load
accelerators from UI file at runtime
* befad2d fix mixed declarations and code
* 9fae5ce terminal config: initialize background color button on
dialog open
* 54655d2 buffer: convert buffer helpers to GLib equivalents
* b04d39a gtkterm: fix duplicate buffer cleanup
* 168ea44 devtools: add leak detection workflow
* 3be0e11 gtkterm: release font caches on shutdown
* 9b8c439 build: remove legacy tty support header and duplicate
build option
* ae922fa config: replace singleton config with on-demand
load/save; remove legacy wrappers
* 91ba8db memory: add cleanup functions for macros, logging and
interface; expand leak suppressions
* 33cf315 build: ignore *.log and *.txt artifacts
* d6e7c4d gtkterm: persist and restore window geometry across
sessions
* 974bb4b config: make config path private; simplify file path
handling; clean up API
* 76b26f7 ui: add formatted message helper; replace
alloc+format+show patterns
* 5fc64e3 Replace standard size types with GLib size types
* 0a4b2b4 Fix I/O channel resource leak when starting file transfer
* c8ece99 Move window sizing into main window setup and load
default config at startup
* 56eb834 Consolidate title bar and status bar updates into a
single function
* 7a32b75 Replace complex list view with simpler list box in config
selector
* 2eec01d Use native terminal context-menu property instead of
manual right-click handler
* 43564cf Replace dynamic accelerator registration with a static
table at startup
* c9f4c03 macros: fix add button, signal connections, and shortcut
key handling
* cd97474 build: enable strict compiler warnings and errors
* 8d24bb6 cmdline: pre-scan for config option; move config
initialisation before GTK starts
* 3829ffb Fix unused parameter compiler warnings
* 59eb079 interface: fix warnings, use designated initialisers,
disable macros when hotkeys off
* 9892856 buffer: remove unused callback unregistration functions
* e979bff data: move keyboard accelerators out of menu XML
* 97cc1a9 gitignore: stop ignoring *.txt files
* b7472db Fix for-loop variable declarations for C89 compatibility
* 4bbb84e port config dialog: use precise types and consolidate
port lifecycle management
* 9e246f8 search, files, macros: replace generic widget pointers
with precise types
* 0ea2aa7 config: unify input validation and make configuration
verification internal
* 392a0b5 Simplify port and baud rate dropdown configuration
* 4f3e6a0 Remove redundant save confirmation and overwrite prompt
for default config
* b47a0cf Move About dialog into UI file
* efb0054 refactor: consolidate terminal settings and simplify font
storage
* 370226b cleanup: remove configuration header wrapper and prune
stale includes
* 056027d config: fix font always initialized to default value
* f8e726e Rename hotkeys to shortcuts for GTK4 consistency
* b35b6d4 Minor optimizations and cleanup
* fadcc15 perf: batch terminal feed calls in hex display to one per
line
* e6f89d5 perf: remove duplicate modem-status poll timer
* a97003a perf: remove unnecessary zero-fill on buffer clear
* 2065e4f perf: use static output buffer to avoid per-call stack
allocation
* 82e046a perf: replace per-call log flush with buffered 4 KB
threshold
* 118323d refactor: remove dead data array from interface
* aa1a9b9 fix: skip allocation for non-error message types
* 4ebc898 refactor: use standard key file boolean getter
* 45d0edb refactor: simplify macro serialization to use a single
array
* d72adcd interface: cancel pending status message timeout before
replacing it
* 00e1b51 macros: cache expanded macro length to avoid recomputing
on each keypress
* 2516cce buffer/interface: remove shared global column position
coupling
* 5a2a941 config: use standard home directory lookup instead of
environment variable
* d993ae0 interface: switch hex history to a queue data structure
* 84a78df perf: use static buffers in frequently-called paths
* 48f3685 config: remove redundant configuration validation and
default helpers
* 4c221f8 files: fix file transfer stalling after 4 KB
* 8bf69f5 serial: add non-blocking transmit queue with file send
support
* d69eb1d serial: fix modem signal state tracking across port
reopen
* a4420d9 Fix: defer port-unavailable warning until after dialog
presented
File Changes
(66 files)
* M .gitignore (1)
* A .vscode/c_cpp_properties.json (15)
* M README.md (16)
* A asan_suppressions.txt (59)
* A data/about_dialog.ui.in (22)
* M data/config_terminal_dialog.ui (264)
* A data/file_transfer_dialog.ui (35)
* M data/gresource.xml (17)
* M data/gtkterm.desktop.in (1)
* A data/macro_row.ui (24)
* A data/macros_dialog.ui (139)
* A data/main_window.ui (451)
* M data/meson.build (37)
* A data/port_config_dialog.ui (444)
* A data/save_config_dialog.ui (87)
* A data/search_bar.ui (41)
* A data/select_config_dialog.ui (100)
* A data/shortcuts_window.ui (111)
* M meson.build (20)
* A meson_options.txt (6)
* M po/POTFILES.in (8)
* M po/meson.build (2)
* A src/.gtktermrc (31)
* D src/auto_config.h (23)
* M src/baud.c (6)
* M src/baudrates.c (44)
* M src/buffer.c (86)
* M src/buffer.h (10)
* M src/cmdline.c (126)
* M src/cmdline.h (8)
* A src/config_dialog.c (167)
* A src/config_dialog.h (10)
* A src/config_file.c (483)
* A src/config_file.h (42)
* M src/device_monitor.c (96)
* M src/device_monitor.h (1)
* M src/files.c (503)
* M src/files.h (11)
* M src/gtkterm.c (77)
* D src/i18n.c (166)
* D src/i18n.h (25)
* M src/interface.c (1448)
* M src/interface.h (32)
* M src/logging.c (174)
* M src/logging.h (11)
* M src/macros.c (648)
* M src/macros.h (21)
* M src/meson.build (51)
* D src/parsecfg.c (1585)
* D src/parsecfg.h (120)
* A src/port_config_dialog.c (286)
* A src/port_config_dialog.h (9)
* A src/port_list.c (252)
* A src/port_list.h (21)
* M src/search.c (160)
* M src/serial.c (383)
* M src/serial.h (14)
* M src/term_config.c (1806)
* M src/term_config.h (26)
* A src/terminal_config.c (117)
* A src/terminal_config.h (9)
* A src/txqueue.c (402)
* A src/txqueue.h (76)
* M src/user_signals.c (4)
* M src/user_signals.h (6)
* A tools/leak-check.sh (291)
Patch Links: * https://github.com/wvdakker/gtkterm/pull/87.patch
* https://github.com/wvdakker/gtkterm/pull/87.diff
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you are subscribed to this
thread.Message ID: ***@***.***>
|
- Add Actions=new-window to the desktop file (shown when app is not running) - Register app.new-window GAction in gtkterm.c so GNOME Shell shows it in the dash context menu while an instance is live (Shell reads GActions via D-Bus rather than the desktop file when the app is running) - Switch to G_APPLICATION_NON_UNIQUE so each spawned instance starts as an independent process rather than re-activating the existing one
The conflict happens because <linux/termios.h> and <sys/ioctl.h> both define struct winsize and struct termio. Since <linux/termios.h> already provides everything needed (termios2, TCGETS2, TCSETS2, BOTHER, CBAUD), the only thing <sys/ioctl.h> is used for here is the ioctl() prototype.
- Moved configuration detection into meson - Fixed multiple serial port issues with krenel 7.x and older glibc 2.39 and other that does nto support termios2 - Added docker container that enables testing old glibc - new kernel combination, and no-systemd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This includes following major changes:
I am using this all day long every day and do not see any more issues for a month or so. So I guess good enough to commit.
#48
#13
#77
#38
And maybe others