[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#72714] [PATCH] home: services: Add 'home-sway-service-type'.
From: |
pelzflorian (Florian Pelz) |
Subject: |
[bug#72714] [PATCH] home: services: Add 'home-sway-service-type'. |
Date: |
Tue, 08 Oct 2024 18:39:13 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hello Arnaud. Please excuse the long delay.
Arnaud Daby-Seesaram <ds-ac@nanein.fr> writes:
> "pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:
>> I am not sure if program-file or scheme-file should be preferred.
>
> I think that in our use case, program-file is better, because it does
> not require to call Guile explicitly in the Sway configuration (all we
> care about is that the serialised script "behaves like a menu program").
Not sure, because program-file calls guile with --no-auto-compile.
Maybe someone else has an opinion. Also it does not really matter.
>>>> Another more thing. I try (bar (sway-bar)), but it prints an empty bar
>>>> configuration to .config/sway/config. In patch 6, you added
>>>> no-serialization. Did this break it?
>[…]
>> (bar (sway-bar
>> (position 'top)))
>>
>> is fine. Not sure what defaults are best.
>
> Yes, this is arbitrary in my code. Rationale behind my choice:
>
> At first, I wanted to make the default value match that of the default
> Sway configuration file. However, this would force some fields to be
> mandatory (namely status-command, colors and position). As users may
> not want to specify these fields in their Sway configuration,
> I preferred to make everything optional.
I agree to better keep the sway-bar record simple. Maybe a more
complete sway-bar should be the default value for bar rather than
optional, because it is what upstream does, although then I would
disagree with Hilton (?) and actually I prefer no bar.
>> Arnaud Daby-Seesaram <ds-ac@nanein.fr> writes:
>>>>> (receive (from to pid)
>>>>> ((@@ (ice-9 popen) open-process) OPEN_BOTH wmenu)
>>>>
>>>> Better use @ instead of @@.
>>> Unfortunately, `open-process' is not exported in `(ice-9 popen)', so I
>>> kept @@.
>>>
>>
>> Not sure if exported open-pipe* would be better. open-process is
>> checked in guile tests, but not exported, that is right. But maybe a
>> red flag not to use it.
>
> I first tried to use (open-pipe wmenu OPEN_BOTH). However, I needed
> to close the port to wmenu before reading its output. I do not know how
> to do that with `open-pipe'.
>
>
> Best,
In vain I tried rewriting code to use open-pipe* until I looked at the
source <https://codeberg.org/adnano/wmenu/src/tag/0.1.9/wmenu.c>:
> static void read_items(struct menu *menu) {
> char buf[sizeof menu->input];
> while (fgets(buf, sizeof buf, stdin)) {
> char *p = strchr(buf, '\n');
> if (p) {
> *p = '\0';
> }
> menu_add_item(menu, strdup(buf), false);
> }
> }
Well, I guess the port must be closed or wmenu does not leave the while
loop. No other way. But perhaps use pipeline from (ice-9 popen), which
is public, unlike open-process.
diff --git a/home-configuration.scm b/home-configuration.scm
index b961f84..c7eed63 100644
--- a/home-configuration.scm
+++ b/home-configuration.scm
@@ -41,10 +41,12 @@
(scheme-file
"sway-menu.scm"
#~(begin
- (use-modules (ice-9 receive)
+ (use-modules (ice-9 popen)
+ (ice-9 receive)
(ice-9 rdelim)
(ice-9 ftw)
- (guix build utils))
+ (guix build utils)
+ (srfi srfi-1))
(define (directory->files dir)
(define (executable-file? f)
@@ -62,15 +64,15 @@
"/.guix-home/profile/bin"))
(wmenu #$(file-append wmenu "/bin/wmenu"))
(swaymsg #$(file-append sway "/bin/swaymsg")))
- (receive (from to pid)
- ((@@ (ice-9 popen) open-process) OPEN_BOTH wmenu)
+ (receive (from to pids)
+ (pipeline `((,wmenu)))
(for-each
(lambda (c) (format to "~a~%" c))
(directory->files path))
(close to)
(let ((choice (read-line from)))
(close from)
- (waitpid pid)
+ (waitpid (first pids))
(execl swaymsg swaymsg "exec"
;(string-append path "/" choice)
choice)))))))
Could you send v8?
Regards,
Florian
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., (continued)
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/02
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/02
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/03
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/03
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/04
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/05
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/06
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/06
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/06
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/06
- [bug#72714] [PATCH] home: services: Add 'home-sway-service-type'.,
pelzflorian (Florian Pelz) <=
- [bug#72714] [PATCH v8] home: services: Add 'home-sway-service-type'., Arnaud Daby-Seesaram, 2024/10/08
- bug#72714: [PATCH v8] home: services: Add 'home-sway-service-type'., pelzflorian (Florian Pelz), 2024/10/12