This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux:lxdm_login_theming_setup [2013/08/23 23:19] clee231 Updated Scripts to account for changes to workstation setup |
linux:lxdm_login_theming_setup [2021/05/02 21:36] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== LXDM Login Theming Setup ====== | ||
+ | |||
====== Introduction ====== | ====== Introduction ====== | ||
The ArchLinux Workstations are themed with either the ACM Logo or LUG logo. They are set to alternate between workstations. | The ArchLinux Workstations are themed with either the ACM Logo or LUG logo. They are set to alternate between workstations. | ||
- | I(clee231)(Chase Lee) have written a script to determine and switch the logos based on hostname. | + | ====== Setup ====== |
- | Currently, the script is setup to run once before logging in the user as root. This means that there needs to be at least one login for the script to run. | + | <WRAP center round info 60%> |
+ | Setup the [[linux:acm_custom_repo|ACM custom repo]] on the workstation first | ||
+ | </WRAP> | ||
- | ====== Setup ====== | + | Install themes with this command and follow the post install instructions |
+ | <code|bash> | ||
+ | pacman -S acm-lug-lxdm-themes | ||
+ | </code> | ||
+ | |||
+ | Unpack {{:acm-themes.tar.gz|this archive with the ACM and LUG themes}} into /usr/share/lxdm/themes | ||
- | This is setup by two files: | + | This is setup by several files: |
- | * /etc/lxdm/PreLogin | + | * /etc/lxdm/LoginReady |
+ | * /etc/lxdm/PreLogin (unused) | ||
+ | * /etc/lxdm/PostLogin | ||
+ | * /etc/lxdm/PostLogout | ||
+ | * /etc/lxdm/PreReboot (unused) | ||
+ | * /etc/lxdm/PreShutdown (unused) | ||
+ | * /etc/lxdm/lxdm.conf | ||
* /etc/lxdm/SetLogo | * /etc/lxdm/SetLogo | ||
- | ** PreLogin ** - This calls the SetLogo script. Executed by LXDM as root. | + | The directory also contains the Xsession file, which should not be edited manually |
- | ** SetLogo ** - Contains a set of all six workstation hostnames, and detects which theme to use. | + | ** LoginReady ** - This is executed as root when LXDM is ready to show the screen. |
+ | |||
+ | ** PreLogin ** - Executed by LXDM as root. | ||
+ | |||
+ | ** SetLogo ** - Contains the sed regex for the link and IP, the 'even' and 'odd' themes settings, and detects which theme to use. | ||
====== Scripts ====== | ====== Scripts ====== | ||
- | Up to date as of **August 23, 2013**. | + | Up to date as of **September 3, 2017**. |
- | ==== /etc/lxdm/PreLogin | (Executed as root) ==== | + | |
+ | ==== /etc/lxdm/LoginReady | (Executed as root) ==== | ||
<code bash> | <code bash> | ||
#!/bin/sh | #!/bin/sh | ||
- | # | + | /etc/lxdm/SetLogo |
- | # Note: this is a sample and will not be run as is. | + | #/usr/bin/xsetroot -solid black |
+ | /usr/bin/mount 172.29.0.6:/acm-home /home | ||
+ | /usr/bin/mount 172.29.0.7:/pkgs-64 /var/cache/pacman/pkg | ||
+ | /usr/bin/localectl set-keymap us | ||
+ | </code> | ||
+ | |||
+ | ==== /etc/lxdm/PostLogin | (Executed as logged-in user) ==== | ||
+ | <code bash> | ||
#!/bin/sh | #!/bin/sh | ||
- | # | + | xset dpms 0 0 0 |
- | # Note: this is a sample and will not be run as is. | + | |
- | #loltask > /dev/null & | + | |
- | #mount -B /opt/Steam /home/$USER/Steam | + | |
- | mount -B /opt/Steamlocal $HOME/.local/share/Steam | + | |
- | if [ "$?" -ne "0" ] | + | |
- | then | + | |
- | mkdir -p $HOME/.local/share/Stean | + | |
- | mount -B /opt/Steamlocal $HOME/.local/share/Steam | + | |
- | fi | + | |
- | chown -R $USER:users $HOME/.local/share/Steam | + | |
- | /bin/bash /etc/lxdm/SetLogo | + | |
</code> | </code> | ||
- | ==== /etc/lxdm/SetLogo | (Inherently run as root be previous script.) ==== | + | ==== /etc/lxdm/PostLogout | (Executed as logged-in user) ==== |
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
- | # Author: Chase Lee (clee231) | ||
- | # Date: August 23, 2013 | ||
- | # Version: 1.02 | ||
- | # Description: Determines and sets the login theming based on hostname. | ||
- | # Dependencies: | ||
- | # - Hostname (GNU inetutils >= 1.9.1) | ||
- | # - Sed (sed >= 4.2.2) | ||
- | # - Bash (GNU Bash >= 4.2) (;-P) | ||
- | CURRENT_HOSTNAME=`hostname` | + | #umount $HOME/.local/share/Steam |
- | # As of August 23, 2013, there resides 6 workstations in the ACM/LUG office. | + | xsetroot -solid black |
- | ACM_HOSTNAMES=( defiant.acm.cs miranda.acm.cs sovereign.acm.cs ) | + | |
- | LUG_HOSTNAMES=( constitution.acm.cs galaxy.acm.cs intrepid.acm.cs ) | + | |
- | function contains() { | + | ##Reset guest directory |
- | local n=$# | + | sudo -n /usr/bin/guestd $USER |
- | local value=${!n} | + | |
- | for ((i=1;i < $#;i++)) { | + | |
- | if [ "${!i}" == "${value}" ]; then | + | |
- | echo "y" | + | |
- | return 0 | + | |
- | fi | + | |
- | } | + | |
- | echo "n" | + | |
- | return 1 | + | |
- | } | + | |
- | if [ $(contains "${ACM_HOSTNAMES[@]}" "${CURRENT_HOSTNAME}") == "y" ] | + | test -x /usr/bin/pax11publish && /usr/bin/pax11publish -r |
- | then | + | # Terminate current user session |
- | # echo "This is an ACM Logo." | + | #killall --user $USER -TERM |
- | sed -i -e 's/^theme=.*/theme=acm/' /etc/lxdm/lxdm.conf | + | #/usr/bin/loginctl terminate-session $XDG_SESSION_ID |
- | elif [ $(contains "${LUG_HOSTNAMES[@]}" "${CURRENT_HOSTNAME}") == "y" ] | + | xset dpms 300 330 360 |
+ | #if ! pgrep lxdm-greeter >> /dev/null | ||
+ | #then | ||
+ | # /usr/bin/systemctl restart lxdm | ||
+ | #fi | ||
+ | </code> | ||
+ | |||
+ | ==== /etc/lxdm/SetLogo | (Inherently run as root be previous script.) ==== | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # Authors: Chase Lee (clee231), Walter Dworak (walter) | ||
+ | # Date: September 15, 2014 | ||
+ | # Version: 1.03 | ||
+ | # Description: Determines and sets the login theming based on modulus 2 op on last segment of IPv4 address. | ||
+ | # Dependencies: | ||
+ | # - Awk (Awk >= 4.1.0) | ||
+ | # - Bash (GNU Bash >= 4.2) (;-P) | ||
+ | |||
+ | # As of July 16, 2013, there resides 6 workstations in the ACM/LUG office. | ||
+ | _EVEN_THEME="acm" | ||
+ | _ODD_THEME="lug" | ||
+ | _IP="$(ip addr | awk '/inet/ && /enp/{sub(/\/.*$/,"",$2); print $2}' | cut -d'.' -f4)" | ||
+ | _REMAIN=$(expr $_IP % 2) | ||
+ | if [ $_REMAIN -eq 0 ] | ||
then | then | ||
- | # echo "This is an LUG Logo." | + | echo "This is an ACM Logo." |
- | sed -i -e 's/^theme=.*/theme=lug/' /etc/lxdm/lxdm.conf | + | sed -i -e 's/^theme=.*/theme='$_EVEN_THEME'/' /etc/lxdm/lxdm.conf |
+ | else | ||
+ | echo "This is an LUG Logo." | ||
+ | sed -i -e 's/^theme=.*/theme='$_ODD_THEME'/' /etc/lxdm/lxdm.conf | ||
fi | fi | ||
</code> | </code> |