// Copyright (C) 2016 Luke Shumaker // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package sd_login type Session string type SessionState int const ( SessionOnline SessionState = iota SessionActive SessionClosing ) func GetSessions() ([]Session, error) { strs, err := get_files_in_directory("/run/systemd/sessions/") if err != nil { return nil, err } sessions := make([]Session, len(strs)) for i := range strs { sessions[i] = Session(strs[i]) } return sessions, nil } func (sess Session) IsActive() bool { state, err := sess.GetState() return err == nil && state == SessionActive } func (sess Session) IsRemote() bool func (sess Session) GetState() (SessionState, error) func (sess Session) GetUser() (User, error) func (sess Session) GetSeat() (Seat, error) // PAM func (sess Session) GetService() (string, error) // tty, x11, wayland, mir, unspecified func (sess Session) GetType() (string, error) // user, greeter, lock-screen func (sess Session) GetClass() (string, error) // GNOME, KDE, systemd-console func (sess Session) GetDesktop() (string, error) // X11 DISPLAY func (sess Session) GetDisplay() (string, error) func (sess Session) GetRemoteHost() (string, error) // PAM func (sess Session) GetRemoteUser() (string, error) func (sess Session) GetTTY() (string, error) func (sess Session) GetVT() (uint, error)