Documentation
¶
Index ¶
- func NewObjectComparer[T any](f func(T, T) int) glib.CompareDataFunc
- type App
- type Confirmation
- type Info
- type MainWindow
- type MullvadPage
- type OfflinePage
- type Page
- type PageRow
- func (row *PageRow) Icon() *gtk.Image
- func (row *PageRow) Page() *adw.ViewStackPage
- func (row *PageRow) Row() *adw.ActionRow
- func (row *PageRow) SetIcon(icon gio.Iconner)
- func (row *PageRow) SetIconName(name string)
- func (row *PageRow) SetSubtitle(subtitle string)
- func (row *PageRow) SetTitle(title string)
- type PeerPage
- type PreferencesDialog
- type Prompt
- type PromptResponse
- type Select
- type SelectOption
- type SelfPage
- func (page *SelfPage) Actions() gio.ActionGrouper
- func (page *SelfPage) Init(row *PageRow)
- func (page *SelfPage) Update(status tsutil.Status) bool
- func (page *SelfPage) UpdateFiles(status *tsutil.FileStatus) bool
- func (page *SelfPage) UpdateIPN(status *tsutil.IPNStatus) bool
- func (page *SelfPage) Widget() gtk.Widgetter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewObjectComparer ¶ added in v0.14.0
func NewObjectComparer[T any](f func(T, T) int) glib.CompareDataFunc
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
App is the main type for the app, containing all of the state necessary to run it.
type Confirmation ¶
func (Confirmation) Show ¶
func (d Confirmation) Show(a *App, res func(bool))
type MainWindow ¶
type MainWindow struct {
MainWindow *adw.ApplicationWindow
ToastOverlay *adw.ToastOverlay
SplitView *adw.NavigationSplitView
StatusSwitch *gtk.Switch
MainMenuButton *gtk.MenuButton
PeersList *gtk.ListBox
PeersStack *adw.ViewStack
WorkSpinner *adw.Spinner
ProfileDropDown *gtk.DropDown
PageMenuButton *gtk.MenuButton
// contains filtered or unexported fields
}
func NewMainWindow ¶
func NewMainWindow(app *App) *MainWindow
func (*MainWindow) Update ¶ added in v0.17.0
func (win *MainWindow) Update(status tsutil.Status)
type MullvadPage ¶ added in v0.12.0
type MullvadPage struct {
Page *adw.StatusPage
LocationList *gtk.ListBox
// contains filtered or unexported fields
}
func NewMullvadPage ¶ added in v0.12.0
func NewMullvadPage(a *App, status *tsutil.IPNStatus) *MullvadPage
func (*MullvadPage) Actions ¶ added in v0.17.5
func (page *MullvadPage) Actions() gio.ActionGrouper
func (*MullvadPage) Init ¶ added in v0.12.0
func (page *MullvadPage) Init(row *PageRow)
func (*MullvadPage) Widget ¶ added in v0.17.0
func (page *MullvadPage) Widget() gtk.Widgetter
type OfflinePage ¶ added in v0.18.0
type OfflinePage struct {
Page *adw.StatusPage
NeedsAuthGroup *adw.PreferencesGroup
// contains filtered or unexported fields
}
func NewOfflinePage ¶ added in v0.18.0
func NewOfflinePage(app *App) *OfflinePage
func (*OfflinePage) Actions ¶ added in v0.18.0
func (page *OfflinePage) Actions() gio.ActionGrouper
func (*OfflinePage) Init ¶ added in v0.18.0
func (page *OfflinePage) Init(row *PageRow)
func (*OfflinePage) Update ¶ added in v0.18.0
func (page *OfflinePage) Update(status tsutil.Status) bool
func (*OfflinePage) Widget ¶ added in v0.18.0
func (page *OfflinePage) Widget() gtk.Widgetter
type Page ¶ added in v0.12.0
type Page interface {
Widget() gtk.Widgetter
Actions() gio.ActionGrouper
Init(*PageRow)
Update(tsutil.Status) bool
}
Page represents the UI for a single page of the app. This usually corresponds to information about a specific peer in the tailnet.
type PageRow ¶ added in v0.17.0
type PageRow struct {
// contains filtered or unexported fields
}
func NewPageRow ¶ added in v0.17.0
func NewPageRow(page *adw.ViewStackPage) *PageRow
func (*PageRow) Page ¶ added in v0.17.0
func (row *PageRow) Page() *adw.ViewStackPage
func (*PageRow) SetIconName ¶ added in v0.17.0
func (*PageRow) SetSubtitle ¶ added in v0.17.0
type PeerPage ¶
type PeerPage struct {
Page *adw.StatusPage
IPList *gtk.ListBox
AdvertisedRoutesGroup *adw.PreferencesGroup
AdvertisedRoutesList *gtk.ListBox
UDPRow *adw.ActionRow
UDP *gtk.Image
IPv4Row *adw.ActionRow
IPv4Icon *gtk.Image
IPv4Addr *gtk.Label
IPv6Row *adw.ActionRow
IPv6Icon *gtk.Image
IPv6Addr *gtk.Label
UPnPRow *adw.ActionRow
UPnP *gtk.Image
PMPRow *adw.ActionRow
PMP *gtk.Image
PCPRow *adw.ActionRow
PCP *gtk.Image
HairPinningRow *adw.ActionRow
HairPinning *gtk.Image
PreferredDERPRow *adw.ActionRow
PreferredDERP *gtk.Label
DERPLatencies *adw.ExpanderRow
MiscGroup *adw.PreferencesGroup
ExitNodeRow *adw.SwitchRow
OnlineRow *adw.ActionRow
Online *gtk.Image
LastSeenRow *adw.ActionRow
LastSeen *gtk.Label
CreatedRow *adw.ActionRow
Created *gtk.Label
LastHandshakeRow *adw.ActionRow
LastHandshake *gtk.Label
RxBytesRow *adw.ActionRow
RxBytes *gtk.Label
TxBytesRow *adw.ActionRow
TxBytes *gtk.Label
SendFileBurron *adw.ButtonRow
SendDirButton *adw.ButtonRow
DropTarget *gtk.DropTarget
// contains filtered or unexported fields
}
func NewPeerPage ¶
func (*PeerPage) Actions ¶ added in v0.17.5
func (page *PeerPage) Actions() gio.ActionGrouper
type PreferencesDialog ¶ added in v0.17.0
type PreferencesDialog struct {
PreferencesDialog *adw.PreferencesDialog
UseTrayIconRow *adw.SwitchRow
PollingIntervalRow *adw.SpinRow
PollingIntervalAdjustment *gtk.Adjustment
}
func NewPreferencesDialog ¶ added in v0.17.0
func NewPreferencesDialog() *PreferencesDialog
type Prompt ¶
type Prompt struct {
Heading string
Body string
Placeholder string
Purpose gtk.InputPurpose
Responses []PromptResponse
}
type PromptResponse ¶ added in v0.13.0
type PromptResponse struct {
ID string
Label string
Appearance adw.ResponseAppearance
Default bool
}
type Select ¶ added in v0.16.0
type Select[T any] struct { Heading string Body string Options []SelectOption[T] Multiple bool }
func (Select[T]) Show ¶ added in v0.16.0
func (d Select[T]) Show(a *App, res func([]SelectOption[T]))
type SelectOption ¶ added in v0.16.0
type SelfPage ¶ added in v0.12.0
type SelfPage struct {
Page *adw.StatusPage
IPList *gtk.ListBox
OptionsGroup *adw.PreferencesGroup
AdvertiseExitNodeRow *adw.SwitchRow
AllowLANAccessRow *adw.SwitchRow
AcceptRoutesRow *adw.SwitchRow
AdvertisedRoutesList *gtk.ListBox
AdvertiseRouteButton *gtk.Button
NetCheckGroup *adw.PreferencesGroup
NetCheckButton *gtk.Button
LastNetCheckRow *adw.ActionRow
LastNetCheck *gtk.Label
UDPRow *adw.ActionRow
UDP *gtk.Image
IPv4Row *adw.ActionRow
IPv4Icon *gtk.Image
IPv4Addr *gtk.Label
IPv6Row *adw.ActionRow
IPv6Icon *gtk.Image
IPv6Addr *gtk.Label
UPnPRow *adw.ActionRow
UPnP *gtk.Image
PMPRow *adw.ActionRow
PMP *gtk.Image
PCPRow *adw.ActionRow
PCP *gtk.Image
CaptivePortalRow *adw.ActionRow
CaptivePortal *gtk.Image
PreferredDERPRow *adw.ActionRow
PreferredDERP *gtk.Label
DERPLatencies *adw.ExpanderRow
FilesList *gtk.ListBox
// contains filtered or unexported fields
}
func (*SelfPage) Actions ¶ added in v0.17.5
func (page *SelfPage) Actions() gio.ActionGrouper
func (*SelfPage) UpdateFiles ¶ added in v0.18.0
func (page *SelfPage) UpdateFiles(status *tsutil.FileStatus) bool
Click to show internal directories.
Click to hide internal directories.