!CrUOgmZrUHLkbkWvae:matrix.org

Linux

891 Members
Talk about the GNU/HURD/Linux operating system and related stuff | be sensible, have nice discussions :) | oh, and https://dontasktoask.com96 Servers

Load older messages


SenderMessageTime
25 Oct 2020
@tauoverpi:feneas.orgLevy (Elara)because it's nice when you don't need to link in a massive lib of bugs17:41:42
@tauoverpi:feneas.orgLevy (Elara)same for speaking X directly17:41:48
@tauoverpi:feneas.orgLevy (Elara)no XCB/Xlib trying to pretend everything is sync17:42:10
@aer:matrix.orgaer
En respuesta a @tauoverpi:feneas.org
same for speaking X directly
How do you do this?
21:40:41
@jkarlson:kapsi.fiEmil Karlsonit's a network protocol effectively, just connect and write bytes21:44:44
@jkarlson:kapsi.fiEmil Karlsonoccasionally also read some21:46:43
@jkarlson:kapsi.fiEmil KarlsonI guess there are also extensions that use some backdoors for performance21:47:00
@artifth:feneas.orgArtifthMit-shm21:49:34
@artifth:feneas.orgArtifthAnd all the direct rendering crap21:49:48
@artifth:feneas.orgArtifthWhich negates all benefits of network client-server model 21:50:19
@wolf/king:matrix.orgwolf changed their display name from wolf to wolf🐺🐾.22:36:21
@wolf/king:matrix.orgwolf changed their profile picture.22:41:01
@wolf/king:matrix.orgwolf changed their display name from wolf🐺🐾 to wolf.23:36:14
@wolf/king:matrix.orgwolf removed their profile picture.23:36:23
@wolf/king:matrix.orgwolfd23:43:20
26 Oct 2020
@schijtepruisen:matrix.orgZoomzer joined the room.00:40:42
@honbunpun216:matrix.orghonbunpun joined the room.03:08:34
@pmer986:matrix.orgpmer986 joined the room.07:34:32
@dambuster88:matrix.orgDambuster joined the room.09:35:21
@eskorte:matrix.org@eskorte:matrix.org left the room.11:25:40
@aki-dragon1020:matrix.orgAkihiroDragon changed their display name from aki-dragon1020 to AkihiroDragon.16:01:12
@aki-dragon1020:matrix.orgAkihiroDragon set a profile picture.16:01:58
@tauoverpi:privacytools.ioLevy[P]
In reply to @aer:matrix.org
How do you do this?

effectively

    const text = @embedFile("/home/tau/.Xauthority");
    var sock = try std.net.connectUnixSocket("/tmp/.X11-unix/X0");
    defer sock.close();

    var buffer: [1024]u8 = undefined;
    var fbs = std.io.fixedBufferStream(&buffer);
    var ser = std.io.serializer(.Little, .Byte, fbs.writer());

    _ = std.mem.readIntSliceBig(u16, text[0..]);
    const x = std.mem.readIntSliceBig(u16, text[2..]);
    const address = text[4 .. 4 + x];
    const y = std.mem.readIntSliceBig(u16, text[4 + x ..]);
    const display = text[6 + x .. 6 + x + y];
    const z = std.mem.readIntSliceBig(u16, text[6 + x + y ..]);
    const name = text[8 + x + y .. 8 + x + y + z];
    const w = std.mem.readIntSliceBig(u16, text[8 + x + y + z ..]);
    const data = text[10 + x + y + z .. 10 + x + y + z + w];

    const header: XConnectHeader = .{
        .order = .little,
        .name = name,
        .data = data,
    };

    try ser.serialize(header);

    _ = try sock.write(fbs.getWritten());
    const len = try sock.read(buffer[0 .. @sizeOf(XConnectReply) + @sizeOf(XConnectSetup)]);

where

const XConnectHeader = struct {
    order: Order,
    major: u16 = 11,
    minor: u16 = 0,
    name: []const u8,
    data: []const u8,

    pub const Order = enum(u8) {
        little = 'l',
        big = 'B',
    }
}
16:12:17
@tauoverpi:privacytools.ioLevy[P]and after that you just read what could be 2000+ objects from the response16:13:28
@tauoverpi:privacytools.ioLevy[P]rest of communication looks similar16:14:58
@tauoverpi:privacytools.ioLevy[P]a more developed version that implements a large chunk can be found here https://github.com/skvamme/ex11 (erlang)16:15:40
@aer:matrix.orgaerBut this is a connection to X16:24:30
@aer:matrix.orgaer I interpreted it as "using X drawing primitives" 16:25:00
@aer:matrix.orgaerNo xlib/xcb16:25:08
@tauoverpi:privacytools.ioLevy[P]
In reply to @aer:matrix.org
I interpreted it as "using X drawing primitives"
which you would by sending the correct request
16:37:49

There are no newer messages yet.


Back to Room List