WMNBUD2PGH4XJP7UJNQXULQ475EIQUPEDPZOVU4AT2ALU3FHKFEQC FU2WC4UK4Q5M3K3TSKML2HVBNQFJST4DJ2HCOOD4UW5K3RFV6OSAC MU7VGXA6DNB7JL5L237EQ4RV3ERC3HT6HTK4JJB7YJBOALXVIQIAC M4ZMV4ICABF3KJGNXYHW47Y7BZDUUKIU4K3EQBBDOFBGFEEHYDPQC 4XZATWRQIRK75HLKR4CHOGRQCSVSYB2W6BR5AQRLRRFJKDDIEODQC GDGXDTOLKG5RWSGDJCWTDYIRWE2R55UKUVRLDL33KTGJCRXHH3SQC 3LD373HUEDIOTZZP7RWTC2DQ3I2XIUXIDKXDHPZ6U2B72MBUJB6AC YI5DEBVFYKBKLMLDKR6BZPGF7OEXS4DX7W32PVPJDOMAUX4EIM3QC D3UVBUCXGJOJYSD7QW2KTDQTNMVUYMAOBPN2OGNLM7IZWFOVMG3QC XDDA5JPEY3VNHPK32G7GYRFNHF5K5JOIL7QBPK6F7GSR5MNRMAJQC 64STJYAKOVLMNC4VO4OGWNQ4J4LBIETANLDKON2NDPJV7ZEWTDLQC WYVKSPRLSTAQDVP3JAQHRDMOSOXSBFALXNANKYXSDHRIWFADKZMAC Q3BFKMS4YCHJ66QGNXGPCBEL5HOL5VXNJNR7MZEY4TPO2XH2C4KAC EMEGEGSGKVPZCIPCOYJ47YRTVZG4HPEQBANVEV77663UMCI5V36QC 6US7XFRJWUNIUZHKTODZDU3DX6WO5K3J2G3ECIQYSVBDII3DXGWAC X4Q25YFYZHXT6GTWNT5OCUNT66WM4RWKF6VRVUBD3BSQLQOFEPBQC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC 7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC FUZEZTLBNTVGUNLBGFLMVZOHLGMMHFPQD7USP4JYMGGVXBL2EUBQC DGJFEKNKYTSZNU4VGJXLHBOQGRGKYQVDN6IHN25DPKPDEGYQBBAQC 7QP2Q5MUDMETQEZD2FRAVIFPIFNURQDKWJ32LJCK3XJU56BCPFFAC TOFCZFUYVBVEBHMKVG6G5MKCAEF2QCQ4GKMKGQUSJRLGLDZEJF4QC IIWDZCVWWDAJITIXQXCFIAF7Z46DTFV2FYCUYMS4P7JMP34A6BUQC 4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC XXOC2AY53ZWML6TVPKX6BHGKZJNRET4IWRSTCVMJQJZMK3MFD3TQC PSWOY2CD6NWN6INAVZIYXLLSDQU5USAF3PATAL7FYRHEVHQ77XFQC BFWKVWAIUKHCZVRA62GW6QZUEUKQLW365HUWIVKTEIPJNJSOZBAQC HFIKAPN3TBMDVBDG7SZLX4ZJMSFFDGINTO6C2SKO5IVYUILGCQEQC VCNLR5X75OAXVKPZQHF5RUZ7BONBUC6RPGO2NZEUD3FZ7TEVL66AC T65KVJWUY3RYRWBFG5DP4V4NID4VO3MM6IOFYPM2IJKR6NCD7YDQC VAXA3WURYP2FVVI5HUGJDF66SUQLZNWRRTIIV526XQVPIDZMVFXQC SP45PRAMJKF52GEK4TQU6PQQ3AY3KRXCUDGQNUN65UOBA4R6VL6QC 7EY3YPO43GHF3LWNI3UZKMMT65UO6DK4LA2X2UC25PAA77KVGSIQC KP7Q7NW257U3YLYPR3TVNTN4YZCBCDLON5NDDZ425CMVJMCAQBCQC 2MNQBTVRKKCIBBLZY42PNL5VS5R62LFYKZ2GMCZM6CEEA6PGEKZQC O3TIITAWQBJXO45JGUYX2N4JITKH4SEHV62AN5OG6GXQHDXVCR7QC CFCIJBASG4L5JQUZ57IKRUV45CFAS65CRWGURGI5UHVGEKAJYOUQC UCSTVE5NIAIQ3NJL5YLDFDKDPOCJS6NMAGABSWG67RGCPH47JQEQC V24HNYFIMA4SECR4AVQJ2AIVEWOK5XJDMCNFGGGSIT6L2DEFBGJAC 2OPRUCF6X32U4MLIW3I5LSKCXWJNVDIZJDZQK7W2XNNIEGXC2UVQC Z5Z7GRJMSKQLA2VWSHTK5ZLKUMFHUOYESH3X4SAXAEDZ2NSWAWLAC PLJJLNS7E2UXW2YARGBSV6IHZEBGL5EW354IMMHPDATY5DQD77DAC ZO37G4TIN3ISIX5QZNMNSXNCXOW3AUUIJEHXAIMSBLSNEV3OE3IQC AVOU4HCKZUPX5K6TVRJWVZI5LQRT2XESSVCPIDJ5GIQWGP3J5J5QC VZP5KLKVB635ERG2G57KPTUMTPE3BYKBVQCWMFW6GDZ3H5QU74FAC HRPYY7AN45VGEMP4HK7VYJEWRRLE5TFKDIZR3AM5RRJ2AI34G3QQC PJYEVNHWOKY53NR2C2PT6RTRACRSKPSPDFTTLTEOYN3ICAIIN45AC J7X4HM2XFWYAEAYYXGTUKHNBZ4JZX64BZW5WUYAHEUPXYPWFUMRAC 24ZMBWYLMODPBAVLT4XNOSETHQXVLXNASYXUIGG2435IT7WIZC5AC AEOM6GBTSH3NGIN365GS5L2PAUUSXSMDPMYTGJPL7UDMHDWLYXSQC HWS332I73ETH3YIIOCQO7WB7VPQICME6GGXFJ7EUWDH5O3KA27QQC QPIH44BS3UQOFH7SUW5JGWQ7EK6CGTPVBB57PKRU7EOK6PLVTQAQC HH5I4HSPYNDRQHIOTASMU5BGFD754OUI4ZGRZQHUE5SM6OTJTEWQC LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC MJC3HT2VAXQTX53MRPT3PA3LMNNCI4STEOLLPT4KSSPPDGOAHUXQC WWL35N23TZ2UPTMLXTVLR5KKFWA3H4MHQ5VXZDADRBS22I4A5F5QC LJJH53FPOX3RP5PCHNORRMTUSV4DXYYP2A47X6VDZ5KZI6T2DEOAC VJ3BNHJ4Z4DSKGGQMEJTSSHGI3NLK54HTP5GBT4FFRGS2TTVKKFAC ZKVTQNVGM7FEFXJJPM33PJBJUPVDDBISMTA5BFFQKVBHOLNOTWEAC FAGFMJELLBID6PONKHW7CKVRTZLEFAQQRF4FSE3LBCERN2ONFC6QC YPBR3SBNUKK6FRVP2R23PJ3GTVACFNIHGRNGOWK3IQM4UIA4JGYAC 6XZPXDROIJ6BDFKLBQDHMJIEFQUCOCZ7VRK2AJMVJ5QYTLJFPFLAC BJTFRPISAH2XAAVR5XVG4EU5E5HU5RX3YOSV4TYZ2GP2ZAXZC2JAC YQQETCXBXPPLXBU3UPUIIKB3JZCHRFSW7PPP2DR436WVIXNXFUHAC QAPSVUOF7DV6R2PSLKLZUKC5TMB62ZYOUZ2NA6CHFOU6PSTJULWAC 7HUMD4TAMWWBQDOZYCMWQXR66G3IU5WU3IVKTPCSMETSB6VREWTAC SCBBNYN2ZEI2UBCW5C5QXQLLQGEWY4DWM2UHGTRZ7B653AONDQKAC CKVVVLSLXV4EJB5P6QOZZOGG2PXJSN523ODZSGVW33GBHGCYKFLQC XGXZF5T7UFWJQES25XVBJZ4BN53SJ3SXZH3YUB2JUYVPN2PDRPJAC VJ6T4L76LPIIV25GCFWUSFZXEFIBQ2EMRU2WHF3YFJHXSAMHNO5AC L4CIAHCUYOG3JCS34ZEPOR4EBHR3NYWHMKQFNYH3X4BQFV6LPR2AC CLFRYF7CROZDF4776NYUZXZ46ZJNH3AEITGA3DOCLZ2QEMMUPOLQC static void chvt(const Arg *arg);static void cleanup(void);static void cleanupkeyboard(struct wl_listener *listener, void *data);static void cleanupmon(struct wl_listener *listener, void *data);static void closemon(Monitor *m);static void commitlayersurfacenotify(struct wl_listener *listener, void *data);static void commitnotify(struct wl_listener *listener, void *data);static void createidleinhibitor(struct wl_listener *listener, void *data);static void createkeyboard(struct wlr_keyboard *keyboard);
layersurface->scene_layer = wlr_scene_layer_surface_v1_create(layers[wlr_layer_surface->pending.layer], wlr_layer_surface);layersurface->scene = wlr_layer_surface->surface->data =layersurface->scene_layer->node;
voiddragicondestroy(struct wl_listener *listener, void *data){struct wlr_drag_icon *icon = data;wlr_scene_node_destroy(icon->data);// Focus enter isn't sent during drag, so refocus the focused node.focusclient(selclient(), 1);motionnotify(0);}
clock_gettime(CLOCK_MONOTONIC, &now);/* Render if no XDG clients have an outstanding resize and are visible on* this monitor. *//* Checking m->un_map for every client is not optimal but works */wl_list_for_each(c, &clients, link) {if ((c->resize && m->un_map) || (c->type == XDGShell&& (c->surface.xdg->pending.geometry.width !=c->surface.xdg->current.geometry.width|| c->surface.xdg->pending.geometry.height !=c->surface.xdg->current.geometry.height))) {/* Lie */wlr_surface_send_frame_done(client_surface(c), &now);skip = 1;}}
}voidrequeststartdrag(struct wl_listener *listener, void *data){struct wlr_seat_request_start_drag_event *event = data;if (wlr_seat_validate_pointer_grab_serial(seat, event->origin,event->serial))wlr_seat_start_pointer_drag(seat, event->drag, event->serial);elsewlr_data_source_destroy(event->drag->source);
}voidstartdrag(struct wl_listener *listener, void *data){struct wlr_drag *drag = data;if (!drag->icon)return;drag->icon->data = wlr_scene_subsurface_tree_create(layers[LyrNoFocus], drag->icon->surface);motionnotify(0);wl_signal_add(&drag->icon->events.destroy, &drag_icon_destroy);
for (i = 0; i < LENGTH(focus_order); i++) {if ((node = wlr_scene_node_at(layers[focus_order[i]], x, y, nx, ny))) {if (node->type == WLR_SCENE_NODE_SURFACE)surface = wlr_scene_surface_from_node(node)->surface;/* Walk the tree to find a node that knows the client */for (pnode = node; pnode && !c; pnode = pnode->parent)c = pnode->data;if (c && c->type == LayerShell) {c = NULL;l = pnode->data;}
}Keyboard *kb = device->data = ecalloc(1, sizeof(*kb));createidleinhibitor(struct wl_listener *listener, void *data){struct wlr_idle_inhibitor_v1 *idle_inhibitor = data;wl_signal_add(&idle_inhibitor->events.destroy, &idle_inhibitor_destroy);wlr_idle_set_enabled(idle, seat, 0);
voidstatic void chvt(const Arg *arg);static void cleanup(void);static void cleanupkeyboard(struct wl_listener *listener, void *data);static void cleanupmon(struct wl_listener *listener, void *data);static void closemon(Monitor *m);static void commitlayersurfacenotify(struct wl_listener *listener, void *data);static void commitnotify(struct wl_listener *listener, void *data);static void createkeyboard(struct wlr_keyboard *keyboard);static void createidleinhibitor(struct wl_listener *listener, void *data);