desktop

package
v0.0.0-...-0175fa8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2018 License: GPL-3.0, LGPL-3.0 Imports: 24 Imported by: 2

README

Desktop

Java desktop functions. Have you tried to find user default Download folder using java? If so, you would find this library very helpful.

Example Desktop Folders

package main

import (
  "github.com/axet/desktop/go"
)

func main() {
  fmt.Println("Home:", desktop.GetHomeFolder())
  fmt.Println("Documents:" desktop.GetDocumentsFolder())
  fmt.Println("AppFolder:" desktop.GetAppDataFolder())
  fmt.Println("Desktop:" desktop.GetDesktopFolder())
  fmt.Println("Downloads:" desktop.GetDownloadsFolder())
}

Example Sys Tray Icon

(aka Notification Area Icons or Status Bar icons)

Full example:

package main

import (
	"fmt"
	"image"
	"os"

	"github.com/axet/desktop/go"
)

type SysTest struct {
	s *desktop.DesktopSysTray
}

func (m *SysTest) Click(mn *desktop.Menu) {
	fmt.Println("m", mn.Name)
}

func (m *SysTest) ClickBox(mn *desktop.Menu) {
	fmt.Println(mn.Name)
	mn.State = !mn.State
	m.s.Update()
}

func main() {
	m := SysTest{desktop.DesktopSysTrayNew()}

	file, err := os.Open("icon.png")
	if err != nil {
		panic(err)
	}
	icon, _, err := image.Decode(file)
	if err != nil {
		panic(err)
	}

	menu := []desktop.Menu{
		desktop.Menu{Icon: icon, Type: desktop.MenuItem, Enabled: true, Name: "test1", Action: m.Click},
		desktop.Menu{Type: desktop.MenuSeparator},
		desktop.Menu{Icon: icon, Type: desktop.MenuItem, Enabled: true, Name: "test2", Menu: []desktop.Menu{
			desktop.Menu{Type: desktop.MenuItem, Enabled: true, Name: "test21", Action: m.Click},
			desktop.Menu{Type: desktop.MenuItem, Enabled: true, Name: "test22", Action: m.Click},
		}},
		desktop.Menu{Type: desktop.MenuItem, Enabled: false, Name: "test3", Action: m.Click},
		desktop.Menu{Type: desktop.MenuCheckBox, Enabled: true, Name: "test4", State: true, Action: m.ClickBox},
		desktop.Menu{Type: desktop.MenuSeparator},
		desktop.Menu{Icon: icon, Type: desktop.MenuItem, Enabled: true, Name: "test5", Action: m.Click},
	}

	m.s.SetIcon(icon)
	m.s.SetTitle("go menu hoho!")
	m.s.SetMenu(menu)
	m.s.Show()

	desktop.Main()
}

Documentation

Index

Constants

View Source
const (
	MenuItem      = 1
	MenuSeparator = 2
	MenuCheckBox  = 3
)
View Source
const (
	APP_INDICATOR_CATEGORY_APPLICATION_STATUS = 0
	APP_INDICATOR_CATEGORY_COMMUNICATIONS     = 1
	APP_INDICATOR_CATEGORY_SYSTEM_SERVICES    = 2
	APP_INDICATOR_CATEGORY_HARDWARE           = 3
	APP_INDICATOR_CATEGORY_OTHER              = 4

	APP_INDICATOR_STATUS_PASSIVE   = 0
	APP_INDICATOR_STATUS_ACTIVE    = 1
	APP_INDICATOR_STATUS_ATTENTION = 2
)
View Source
const (
	GTK_ORIENTATION_HORIZONTAL  = 0
	GTK_ORIENTATION_VERTICAL    = 1
	GTK_ICON_SIZE_INVALID       = 0
	GTK_ICON_SIZE_MENU          = 1
	GTK_ICON_SIZE_SMALL_TOOLBAR = 2
	GTK_ICON_SIZE_LARGE_TOOLBAR = 3
	GTK_ICON_SIZE_BUTTON        = 4
	GTK_ICON_SIZE_DND           = 5
	GTK_ICON_SIZE_DIALOG        = 6

	GTK_WINDOW_TOPLEVEL = 0
	GTK_WINDOW_POPUP    = 1

	GTK_WIN_POS_NONE   = 0
	GTK_WIN_POS_CENTER = 1
	GTK_WIN_POS_MOUSE  = 2

	GDK_HINT_POS      = 0
	GDK_HINT_MIN_SIZE = 1
	GDK_HINT_MAX_SIZE = 2

	GDK_FOCUS_CHANGE_MASK = 1 << 14
)
View Source
const (
	RTLD_LAZY    = 0x0001
	RTLD_NOW     = 0x0002
	RTLD_GLOBAL  = 0x0100
	RTLD_LOCAL   = 0x0000
	RTLD_NOSHARE = 0x1000
	RTLD_EXE     = 0x2000
	RTLD_SCRIPT  = 0x4000

	RTLD_DEFAULT = 0
)
View Source
const DEFAULTS_FILE string = "/etc/xdg/user-dirs.defaults"
View Source
const ROOT_FILE string = "/etc/xdg/user-dirs.conf"

Variables

View Source
var APPINDICATOR = true
View Source
var Bool2Int = map[bool]int{
	// contains filtered or unexported fields
}
View Source
var GTK = true
View Source
var NULL = Arg(0)
View Source
var SpaceIcon image.Image = image.NewRGBA(image.Rect(0, 0, 1, 1))
View Source
var USER_FILE string = expand("~/.config/user-dirs.dirs")

Functions

func Arg

func Arg(d interface{}) unsafe.Pointer

func BrowserOpenURI

func BrowserOpenURI(s string)

func DecodeImageString

func DecodeImageString(s string) image.Image

func GetAppDataFolder

func GetAppDataFolder() string

Config folder

  • osx: /Users/user/Library/Application Support
  • windows: C:\Users\user\AppData\Local
  • linux: /home/user/.config

func GetDesktopFolder

func GetDesktopFolder() string

Desktop folder

  • osx: /Users/user/Desktop
  • windows: C:\Users\user\Desktop
  • linux: /home/user/Desktop

func GetDocumentsFolder

func GetDocumentsFolder() string

Documents folder

  • osx: /Users/user/Documents
  • windows: C:\Users\user\Documents
  • linux: /home/user/Documents

func GetDownloadsFolder

func GetDownloadsFolder() string

Downloads folder

  • osx: /Users/user/Downloads
  • windows: C:\Users\user\Downloads
  • linux: /home/user/Desktop

func GetHomeFolder

func GetHomeFolder() string

Home folder

  • osx: /Users/user
  • windows: C:\Users\user
  • linux: /home/user

func GtkMessageLoopDec

func GtkMessageLoopDec()

func GtkMessageLoopInc

func GtkMessageLoopInc()

func GtkMessageLoopInvoke

func GtkMessageLoopInvoke(fn *GSourceFunc)

func Main

func Main()

func TempFile

func TempFile(dir, prefix string, suffix string) (f *os.File, err error)

Types

type AppIndicator

type AppIndicator unsafe.Pointer

type AppIndicatorClassStruct

type AppIndicatorClassStruct struct {
	// contains filtered or unexported fields
}

type AppIndicatorFallback

type AppIndicatorFallback func() GtkWidget

func (*AppIndicatorFallback) Close

func (m *AppIndicatorFallback) Close(app AppIndicator)

func (*AppIndicatorFallback) Set

func (m *AppIndicatorFallback) Set(app AppIndicator)

type AppIndicatorInstanceStruct

type AppIndicatorInstanceStruct struct {
	// contains filtered or unexported fields
}

type DesktopFolders

type DesktopFolders struct {
	// contains filtered or unexported fields
}

type DesktopSysTray

type DesktopSysTray struct {
	Listeners map[DesktopSysTrayListener]bool
	Title     string
	Menu      []Menu
	WebPopup  *WebPopup
	// contains filtered or unexported fields
}

func DesktopSysTrayNew

func DesktopSysTrayNew() *DesktopSysTray

func (*DesktopSysTray) AddListener

func (m *DesktopSysTray) AddListener(l DesktopSysTrayListener)

func (*DesktopSysTray) Close

func (m *DesktopSysTray) Close()

func (*DesktopSysTray) Hide

func (m *DesktopSysTray) Hide()

func (*DesktopSysTray) RemoveListener

func (m *DesktopSysTray) RemoveListener(l DesktopSysTrayListener)

func (*DesktopSysTray) SetIcon

func (m *DesktopSysTray) SetIcon(icon image.Image)

func (*DesktopSysTray) SetMenu

func (m *DesktopSysTray) SetMenu(menu []Menu)

func (*DesktopSysTray) SetTitle

func (m *DesktopSysTray) SetTitle(title string)

func (*DesktopSysTray) SetWebPopup

func (m *DesktopSysTray) SetWebPopup(w WebPopup)

func (*DesktopSysTray) Show

func (m *DesktopSysTray) Show()

func (*DesktopSysTray) Update

func (m *DesktopSysTray) Update()

type DesktopSysTrayAppIndicator

type DesktopSysTrayAppIndicator struct {
	*DesktopSysTrayGtk

	App AppIndicator

	IconSet *GtkIconSet

	ShowInvokeVar    *GSourceFunc
	HideInvokeVar    *GSourceFunc
	UpdateInvokeVar  *GSourceFunc
	SetIconInvokeVar *GSourceFunc

	FallbackVar AppIndicatorFallback
}

func DesktopSysTrayAppIndicatorNew

func DesktopSysTrayAppIndicatorNew(m *DesktopSysTray) *DesktopSysTrayAppIndicator

func (*DesktopSysTrayAppIndicator) UpdateIcon

func (os *DesktopSysTrayAppIndicator) UpdateIcon()

type DesktopSysTrayGtk

type DesktopSysTrayGtk struct {
	M             *DesktopSysTray
	Icon          image.Image
	GtkStatusIcon GtkWidget
	GtkMenu       GtkWidget

	// WebPopup
	WebWnd     GtkWidget
	WebView    GtkWidget
	WebCurrent *WebPopup
	HidePop    *GSourceFunc
	Pol        *GSourceFunc

	IconActivate *GSourceFunc
	IconPopup    *GSourceFunc

	ShowInvokeVar    *GSourceFunc
	HideInvokeVar    *GSourceFunc
	UpdateInvokeVar  *GSourceFunc
	SetIconInvokeVar *GSourceFunc

	GSourceFuncs []*GSourceFunc
}

func DesktopSysTrayGtkNew

func DesktopSysTrayGtkNew(m *DesktopSysTray) *DesktopSysTrayGtk

func (*DesktopSysTrayGtk) CreateGStatusIcon

func (os *DesktopSysTrayGtk) CreateGStatusIcon() GtkWidget

func (*DesktopSysTrayGtk) CreateMenuItem

func (os *DesktopSysTrayGtk) CreateMenuItem(item *Menu) GtkWidget

func (*DesktopSysTrayGtk) CreateSubMenu

func (os *DesktopSysTrayGtk) CreateSubMenu(mm []Menu) GtkWidget

func (*DesktopSysTrayGtk) CreateWebMenu

func (os *DesktopSysTrayGtk) CreateWebMenu() GtkWidget

func (*DesktopSysTrayGtk) ShowWebPopup

func (os *DesktopSysTrayGtk) ShowWebPopup()

func (*DesktopSysTrayGtk) UpdateMenus

func (os *DesktopSysTrayGtk) UpdateMenus()

type DesktopSysTrayListener

type DesktopSysTrayListener interface {
	MouseLeftClick()

	MouseLeftDoubleClick()
}

type GBytes

type GBytes unsafe.Pointer

type GIcon

type GIcon unsafe.Pointer

func ConvertMenuImage

func ConvertMenuImage(icon image.Image) GIcon

type GMainContext

type GMainContext unsafe.Pointer

type GMainLoop

type GMainLoop unsafe.Pointer

type GObject

type GObject unsafe.Pointer

type GObjectClassStruct

type GObjectClassStruct struct {
	// contains filtered or unexported fields
}

type GObjectStruct

type GObjectStruct struct {
	// contains filtered or unexported fields
}

type GPointer

type GPointer unsafe.Pointer

type GSourceFunc

type GSourceFunc struct {
	// contains filtered or unexported fields
}

func GSourceFuncNew

func GSourceFuncNew(f interface{}) *GSourceFunc

func (*GSourceFunc) Arg

func (m *GSourceFunc) Arg() unsafe.Pointer

func (*GSourceFunc) Close

func (m *GSourceFunc) Close()

type GTypeClassStruct

type GTypeClassStruct struct {
	// contains filtered or unexported fields
}

type GTypeInstanceStruct

type GTypeInstanceStruct struct {
	// contains filtered or unexported fields
}

type GUID

type GUID struct {
	// contains filtered or unexported fields
}

func GUIDNew

func GUIDNew(s string) GUID

format: "374DE290-123F-4565-9164-39C4925E467B"

func (GUID) String

func (m GUID) String() string

type GtkIconSet

type GtkIconSet struct {
	Path string
	// contains filtered or unexported fields
}

func GtkIconSetNew

func GtkIconSetNew() *GtkIconSet

func (*GtkIconSet) Add

func (m *GtkIconSet) Add(icon image.Image) string

func (*GtkIconSet) Close

func (m *GtkIconSet) Close()

type GtkMessageLoop

type GtkMessageLoop struct {
	Count    int
	Lock     *sync.Cond
	MainLoop GMainLoop
	Context  GMainContext
}

func GtkMessageLoopNew

func GtkMessageLoopNew() *GtkMessageLoop

func GtkMessageLoopThreadsNew

func GtkMessageLoopThreadsNew() *GtkMessageLoop

func (*GtkMessageLoop) Close

func (m *GtkMessageLoop) Close()

func (*GtkMessageLoop) Init

func (m *GtkMessageLoop) Init()

func (*GtkMessageLoop) Main

func (m *GtkMessageLoop) Main()

type GtkStatusIcon

type GtkStatusIcon unsafe.Pointer

type GtkWidget

type GtkWidget unsafe.Pointer
type Menu struct {
	Menu    []Menu
	Action  MenuAction
	State   bool
	Type    int
	Enabled bool
	Name    string
	Icon    image.Image
}
type MenuAction func(*Menu)

type RunErr

type RunErr struct {
	Cmd string
	Out string
	// contains filtered or unexported fields
}

func Run

func Run(args ...string) *RunErr

func Shell

func Shell(s string) *RunErr

func (*RunErr) Error

func (m *RunErr) Error() string

type WebPopup

type WebPopup struct {
	Width   int             // window width
	Height  int             // window height
	Html    string          // html menu
	Url     string          // url loaded menu
	Handler WebPopupHandler // web mouse clicks handler
}

func (WebPopup) Size

func (m WebPopup) Size() (int, int)

type WebPopupHandler

type WebPopupHandler func(url string) bool

true url handled

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL