Merge branch 'master' into bindings

This commit is contained in:
Daniel Eklöf 2020-03-09 18:49:44 +01:00
commit fc7b3b2d85
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 40 additions and 22 deletions

View file

@ -135,10 +135,13 @@ main(int argc, char *const *argv)
} else {
bool connected = false;
const char *xdg_session_id = getenv("XDG_SESSION_ID");
const char *xdg_runtime = getenv("XDG_RUNTIME_DIR");
if (xdg_runtime != NULL) {
snprintf(addr.sun_path, sizeof(addr.sun_path), "%s/foot.sock", xdg_runtime);
if (xdg_session_id == NULL)
xdg_session_id = "<no-session>";
snprintf(addr.sun_path, sizeof(addr.sun_path), "%s/foot-%s.sock", xdg_runtime, xdg_session_id);
if (connect(fd, (const struct sockaddr *)&addr, sizeof(addr)) == 0)
connected = true;
else

View file

@ -413,6 +413,12 @@ parse_section_csd(const char *key, const char *value, struct config *conf,
conf->csd.color.close_set = true;
conf->csd.color.close = color;
}
else {
LOG_WARN("%s:%u: invalid key: %s", path, lineno, key);
return false;
}
return true;
}
@ -561,12 +567,16 @@ err:
static char *
get_server_socket_path(void)
{
const char *xdg_session_id = getenv("XDG_SESSION_ID");
const char *xdg_runtime = getenv("XDG_RUNTIME_DIR");
if (xdg_runtime == NULL)
return strdup("/tmp/foot.sock");
char *path = malloc(strlen(xdg_runtime) + 1 + strlen("foot.sock") + 1);
sprintf(path, "%s/foot.sock", xdg_runtime);
if (xdg_session_id == NULL)
xdg_session_id = "<no-session>";
char *path = malloc(strlen(xdg_runtime) + 1 + strlen("foot-.sock") + strlen(xdg_session_id) + 1);
sprintf(path, "%s/foot-%s.sock", xdg_runtime, xdg_session_id);
return path;
}

View file

@ -1,7 +1,7 @@
[Desktop Entry]
Type=Application
Exec=foot --server
Icon=terminal
Icon=utilities-terminal
Terminal=false
Categories=System;TerminalEmulator;

View file

@ -1,7 +1,7 @@
[Desktop Entry]
Type=Application
Exec=foot
Icon=terminal
Icon=utilities-terminal
Terminal=false
Categories=System;TerminalEmulator;

View file

@ -1,8 +1,10 @@
#!/usr/bin/env python3
import argparse
import enum
import shutil
import fcntl
import struct
import sys
import termios
class ColorVariant(enum.IntEnum):
@ -25,9 +27,11 @@ def main():
opts = parser.parse_args()
out = opts.out if opts.out is not None else sys.stdout
term_size = shutil.get_terminal_size()
lines = term_size.lines
cols = term_size.columns
lines, cols, _, _ = struct.unpack(
'HHHH',
fcntl.ioctl(sys.stdout.fileno(),
termios.TIOCGWINSZ,
struct.pack('HHHH', 0, 0, 0, 0)))
# Number of characters to write to screen
count = 256 * 1024**1

View file

@ -770,15 +770,15 @@ term_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl,
if ((term->window = wayl_win_init(term)) == NULL)
goto err;
/* Let the Wayland backend know we exist */
tll_push_back(wayl->terms, term);
wayl_roundtrip(term->wl);
term_set_window_title(term, "foot");
/* Load fonts */
if (!term_font_dpi_changed(term))
goto err;
term_set_window_title(term, "foot");
/* Let the Wayland backend know we exist */
tll_push_back(wayl->terms, term);
/* Start the slave/client */
if ((term->slave = slave_spawn(term->ptmx, argc, term->cwd, argv, term_env, conf->shell, login_shell)) == -1)
goto err;

View file

@ -727,6 +727,11 @@ wayl_init(const struct config *conf, struct fdm *fdm)
wayl->fdm = fdm;
wayl->kbd.repeat.fd = -1;
if (!fdm_hook_add(fdm, &fdm_hook, wayl, FDM_HOOK_PRIORITY_LOW)) {
LOG_ERR("failed to add FDM hook");
goto out;
}
wayl->display = wl_display_connect(NULL);
if (wayl->display == NULL) {
LOG_ERR("failed to connect to wayland; no compositor running?");
@ -775,9 +780,10 @@ wayl_init(const struct config *conf, struct fdm *fdm)
if (wayl->primary_selection_device_manager == NULL)
LOG_WARN("no primary selection available");
if (conf->presentation_timings && wayl->presentation == NULL)
LOG_WARN("presentation time interface not implemented by compositor; "
"timings will not be available");
if (conf->presentation_timings && wayl->presentation == NULL) {
LOG_ERR("presentation time interface not implemented by compositor");
goto out;
}
tll_foreach(wayl->monitors, it) {
LOG_INFO(
@ -851,11 +857,6 @@ wayl_init(const struct config *conf, struct fdm *fdm)
goto out;
}
if (!fdm_hook_add(fdm, &fdm_hook, wayl, FDM_HOOK_PRIORITY_LOW)) {
LOG_ERR("failed to add FDM hook");
goto out;
}
return wayl;
out: