3#include "di/container/queue/priority_queue.h"
4#include "di/function/compare_backwards.h"
5#include "di/reflect/prelude.h"
6#include "dius/steady_clock.h"
21constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<ClipboardMode>) {
23 return di::make_enumerators<
"ClipboardMode">(
55 dius::SteadyClock::TimePoint reception = dius::SteadyClock::now()) -> bool;
57 dius::SteadyClock::TimePoint reception = dius::SteadyClock::now()) -> bool;
59 dius::SteadyClock::TimePoint reception = dius::SteadyClock::now());
60 [[nodiscard]]
auto get_replies(dius::SteadyClock::TimePoint reception = dius::SteadyClock::now())
64 void expire(dius::SteadyClock::TimePoint reception);
66 enum class ClipboardReadAction {
70 RequestSystemReadLocal,
73 enum class ClipboardWriteAction {
83 dius::SteadyClock::TimePoint reception;
84 Identifier identifier;
86 auto operator==(Request
const&)
const ->
bool =
default;
87 auto operator<=>(Request
const&)
const =
default;
90 struct SelectionState {
91 di::Vector<byte> data;
92 di::PriorityQueue<Request, di::Vector<Request>, di::CompareBackwards> requests;
93 bool system_working {
false };
99 di::Vector<Reply> m_replies;
Clipboard(ClipboardMode mode, Feature features)
Definition clipboard.cpp:8
static constexpr auto request_timeout
Definition clipboard.h:35
void got_clipboard_response(terminal::SelectionType type, di::Vector< byte > data, dius::SteadyClock::TimePoint reception=dius::SteadyClock::now())
Definition clipboard.cpp:72
auto get_replies(dius::SteadyClock::TimePoint reception=dius::SteadyClock::now()) -> di::Vector< Reply >
Definition clipboard.cpp:100
auto request_clipboard(terminal::SelectionType type, Identifier const &identifier, dius::SteadyClock::TimePoint reception=dius::SteadyClock::now()) -> bool
Definition clipboard.cpp:33
auto set_clipboard(terminal::SelectionType type, di::Vector< byte > data, dius::SteadyClock::TimePoint reception=dius::SteadyClock::now()) -> bool
Definition clipboard.cpp:10
SelectionType
Represents the type of selection being modifed by an OSC 52 sequence.
Definition osc_52.h:8
@ Max
Definition osc_52.h:20
@ Selection
Primary selection clipboard.
Definition osc_52.h:10
Definition clipboard.h:10
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< ClipboardMode >)
Definition clipboard.h:21
Feature
Definition features.h:8
@ Clipboard
Supports setting the clipboard (OSC 52).
Definition features.h:21
@ None
Definition features.h:9
ClipboardMode
Clipboard modes.
Definition clipboard.h:12
@ Local
Read and write to internal clipboard.
Definition clipboard.h:16
@ SystemWriteLocalRead
Write to system clipboard but read from internal clipboard.
Definition clipboard.h:14
@ System
Attempt to read and write the system clipboard.
Definition clipboard.h:13
@ Disabled
Disallow read/writing the clipboard.
Definition clipboard.h:18
@ SystemWriteNoRead
Write to system clipboard but disallow reading clipboard.
Definition clipboard.h:15
@ LocalWriteNoRead
Write to internal clipboard but disallow reading clipboard.
Definition clipboard.h:17
Definition clipboard.h:37
auto operator==(Identifier const &) const -> bool=default
u64 pane_id
Definition clipboard.h:40
u64 session_id
Definition clipboard.h:38
u64 tab_id
Definition clipboard.h:39
auto operator<=>(Identifier const &) const =default
Definition clipboard.h:46
Identifier identifier
Definition clipboard.h:47
di::Vector< byte > data
Definition clipboard.h:49
terminal::SelectionType type
Definition clipboard.h:48