this post was submitted on 07 Mar 2024
6 points (100.0% liked)

linuxmemes

21263 readers
992 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS
     
    you are viewing a single comment's thread
    view the rest of the comments
    [–] waitmarks@lemmy.world 0 points 8 months ago (1 children)

    can you give examples of some? Not trying to bd sarcastic, i do just want to see what alternatives are doing.

    [–] zephr_c@lemm.ee 0 points 8 months ago (2 children)

    Sure, that seems pretty reasonable. Here's the init script for sddm:

    #!/usr/bin/openrc-run
    
    supervisor=supervise-daemon
    command="/usr/bin/sddm"
    
    depend() {
        need localmount
    
        after bootmisc consolefont modules netmount
        after ypbind autofs openvpn gpm lircmd
        after quota keymaps
        before alsasound
        want logind
        use xfs
    
        provide xdm display-manager
    }
    

    That's it. That's the whole thing.

    That's a pretty simple one though, so here's Alsa. It's a more complex one:

    code

    #!/usr/bin/openrc-run
    # Copyright 1999-2019 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2
    
    alsastatedir=/var/lib/alsa
    alsascrdir=/etc/alsa.d
    alsahomedir=/run/alsasound
    
    extra_commands="save restore"
    
    depend() {
    	need localmount
    	after bootmisc modules isapnp coldplug hotplug
    }
    
    restore() {
    	ebegin "Restoring Mixer Levels"
    
    	checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
    
    	if [ ! -r "${alsastatedir}/asound.state" ] ; then
    		ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
    		eend 0
    		return 0
    	fi
    
    	local cards="$(sed -n -e 's/^ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"
    	local CARDNUM
    	for cardnum in ${cards}; do
    		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
    		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
    		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
    		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
    		alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
    			|| ewarn "Errors while restoring defaults, ignoring"
    	done
    
    	for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
    		[ -e "${ossfile}" ] || continue
    		# We use cat because I'm not sure if cp works properly on /proc
    		local procfile=${ossfile##${alsastatedir}/oss}
    		procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
    		if [ -e /proc/asound/"${procfile}"/oss ] ; then
    		    cat "${ossfile}" > /proc/asound/"${procfile}"/oss 
    		fi
    	done
    
    	eend 0
    }
    
    save() {
    	ebegin "Storing ALSA Mixer Levels"
    
    	checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
    
    	mkdir -p "${alsastatedir}"
    	if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
    		eerror "Error saving levels."
    		eend 1
    		return 1
    	fi
    
    	for ossfile in /proc/asound/card*/pcm*/oss; do
    		[ -e "${ossfile}" ] || continue
    		local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
    		device="$(echo "${device}" | sed -e 's,/,_,g')"
    		mkdir -p "${alsastatedir}/oss/"
    		cp "${ossfile}" "${alsastatedir}/oss/${device}"
    	done
    
    	eend 0
    }
    
    start() {
    	if [ "${RESTORE_ON_START}" = "yes" ]; then
    		restore
    	fi
    
    	return 0
    }
    
    stop() {
    	if [ "${SAVE_ON_STOP}" = "yes" ]; then
    		save
    	fi
    	return 0
    }
    

    That's definitely longer than a systemd service, but you'd have to write an awful lot of them to be more code than all of systemd. Overall the entire /etc/init.d folder on my PC where all the init scripts even for the stuff I'm not using are stored is a grand total of 147.7 KiB. Not exactly an unmanageable amount of code, in my humble opinion.

    [–] waitmarks@lemmy.world 1 points 8 months ago (1 children)

    Its certainly easier to read than most old init scripts and I can see why some distros and openbsd would pick it over systemd for more control. I'm not likely to pick a distro that uses it anytime soon, but i can see why some do.

    [–] zephr_c@lemm.ee 1 points 8 months ago

    That's totally fair. I'm not some weird evangelist or anything. I just like options and think OpenRC is kinda neat. There's nothing wrong with systemd, and honestly it's more work using other options. Not for the actual init system, but for some of the other stuff systemd does. I've had to learn cron, and that has been... interesting. It feels like all of the documentation around cron just assumes you already know how cron works. I'm still not sure if I'm doing it right, but I've had a good time and my computer works, and really that's good enough for me.

    [–] _cnt0@sh.itjust.works -1 points 8 months ago

    Almost looks like something taken from ASL linux.