// 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 import ( "strconv" ) type UserID int func (uid UserID) isValid() bool { return uid >= 0 } type UserState int const ( UserOffline UserState = iota UserLingering UserOnline UserActive UserClosing ) // GetUsers returns a list of all users who currently have login // sessions. func GetUsers() ([]UserID, error) { strs, err := get_files_in_directory("/run/systemd/users/") if err != nil { return nil, err } var users []UserID for _, uid_str := range strs { uid, err := strconv.Atoi(uid_str) if err != nil { continue } users = append(users, UserID(uid)) } return users, nil } func (uid UserID) IsOnSeat(seat SeatName, requireActive bool) bool func (uid UserID) GetState() (UserState, error) // primary session func (uid UserID) GetDisplay() (SessionName, error) func (uid UserID) GetSessions(requireActive bool) ([]SessionName, error) func (uid UserID) GetSeats(requireActive bool) ([]SeatName, error)