Re: to enable all profiles at login time
Gottfried [2023-04-20T13:28:05+0200]: > [[PGP Signed Part:Undecided]] > Hi, > > thanks for help. > > it works, Great news! > Near the volume icon there appear two icons, both are flameshot. > I didn’t see those icons earlier, because they are in grey colour > without anything on them, so they don’t stand out. > > I don’t know why two instead of one, but it doesn’t matter. > It works, as you described, and that’s the most important. Perhaps you can right-click on one of these icons to get a menu. Normally, you should see an element like Quit on that menu. - Sergiu > thanks very much > > Kind regards > > Gottfried > > > Am 20.04.23 um 12:20 schrieb Sergiu Ivanov: >> Hi Gottfried, >> Gottfried [2023-04-20T12:11:16+0200]: >>> [[PGP Signed Part:Undecided]] >>> Hi, >>> >>> I installed flameshot, but it doesn’t open. >>> I tried it beforehand with guix shell flameshot and it worked not >>> completely, but somehow. >>> But now, after installation it doesn’t open at all. >> When run without any command line arguments, Flameshot installs >> a tray >> icon, near the volume icon and the Network Manager icon in my case. >> To make a screenshot, I click on the icon, which dims the screen and >> allows me to draw a rectangle to show the region I want to capture. >> I have just discovered that you can run the "flameshot gui" command, >> which has the same effect as clicking on the tray icon. Maybe you could >> try this option if you don't see the tray icon appear. >> >>> Do you have guix system or are you on an other distro? >> Yes, I run Guix System (and EXWM as the window manager). >> - >> Sergiu >> >>> Am 17.04.23 um 20:32 schrieb Sergiu Ivanov: Hi Gottfried, I have nothing to add about your main question but : Gottfried [2023-04-17T14:45:28+0200]: > How do you create this screenshot with the red arrow? I use Flameshot, which comes in the package aptly named flameshot. This program lets you choose the part of the screen to capture, and allows you to add some basic graphics, e.g. arrows, text, shapes, etc. GIMP is good, and I also use it for screenshots from time to time, but Flameshot is often much faster to use. - Sergiu >>
Re: to enable all profiles at login time
Hi, thanks for help. it works, When run without any command line arguments, Flameshot installs a tray icon, near the volume icon and the Network Manager icon in my case. To make a screenshot, I click on the icon, which dims the screen and allows me to draw a rectangle to show the region I want to capture. I have just discovered that you can run the "flameshot gui" command, which has the same effect as clicking on the tray icon. Maybe you could try this option if you don't see the tray icon appear. Near the volume icon there appear two icons, both are flameshot. I didn’t see those icons earlier, because they are in grey colour without anything on them, so they don’t stand out. I don’t know why two instead of one, but it doesn’t matter. It works, as you described, and that’s the most important. thanks very much Kind regards Gottfried Am 20.04.23 um 12:20 schrieb Sergiu Ivanov: Hi Gottfried, Gottfried [2023-04-20T12:11:16+0200]: [[PGP Signed Part:Undecided]] Hi, I installed flameshot, but it doesn’t open. I tried it beforehand with guix shell flameshot and it worked not completely, but somehow. But now, after installation it doesn’t open at all. When run without any command line arguments, Flameshot installs a tray icon, near the volume icon and the Network Manager icon in my case. To make a screenshot, I click on the icon, which dims the screen and allows me to draw a rectangle to show the region I want to capture. I have just discovered that you can run the "flameshot gui" command, which has the same effect as clicking on the tray icon. Maybe you could try this option if you don't see the tray icon appear. Do you have guix system or are you on an other distro? Yes, I run Guix System (and EXWM as the window manager). - Sergiu Am 17.04.23 um 20:32 schrieb Sergiu Ivanov: Hi Gottfried, I have nothing to add about your main question but : Gottfried [2023-04-17T14:45:28+0200]: How do you create this screenshot with the red arrow? I use Flameshot, which comes in the package aptly named flameshot. This program lets you choose the part of the screen to capture, and allows you to add some basic graphics, e.g. arrows, text, shapes, etc. GIMP is good, and I also use it for screenshots from time to time, but Flameshot is often much faster to use. - Sergiu -- OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi Gottfried, Gottfried [2023-04-20T12:11:16+0200]: > [[PGP Signed Part:Undecided]] > Hi, > > I installed flameshot, but it doesn’t open. > I tried it beforehand with guix shell flameshot and it worked not > completely, but somehow. > But now, after installation it doesn’t open at all. When run without any command line arguments, Flameshot installs a tray icon, near the volume icon and the Network Manager icon in my case. To make a screenshot, I click on the icon, which dims the screen and allows me to draw a rectangle to show the region I want to capture. I have just discovered that you can run the "flameshot gui" command, which has the same effect as clicking on the tray icon. Maybe you could try this option if you don't see the tray icon appear. > Do you have guix system or are you on an other distro? Yes, I run Guix System (and EXWM as the window manager). - Sergiu > Am 17.04.23 um 20:32 schrieb Sergiu Ivanov: >> Hi Gottfried, >> I have nothing to add about your main question but : >> Gottfried [2023-04-17T14:45:28+0200]: >>> How do you create this screenshot with the red arrow? >> I use Flameshot, which comes in the package aptly named flameshot. >> This program lets you choose the part of the screen to capture, and >> allows you to add some basic graphics, e.g. arrows, text, shapes, etc. >> GIMP is good, and I also use it for screenshots from time to time, >> but >> Flameshot is often much faster to use. >> - >> Sergiu
Re: to enable all profiles at login time
Hi, I installed flameshot, but it doesn’t open. I tried it beforehand with guix shell flameshot and it worked not completely, but somehow. But now, after installation it doesn’t open at all. Do you have guix system or are you on an other distro? Am 17.04.23 um 20:32 schrieb Sergiu Ivanov: Hi Gottfried, I have nothing to add about your main question but : Gottfried [2023-04-17T14:45:28+0200]: How do you create this screenshot with the red arrow? I use Flameshot, which comes in the package aptly named flameshot. This program lets you choose the part of the screen to capture, and allows you to add some basic graphics, e.g. arrows, text, shapes, etc. GIMP is good, and I also use it for screenshots from time to time, but Flameshot is often much faster to use. - Sergiu -- Kind regards Gottfried Guix System, MATE desktop OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi, Am 19.04.23 um 18:10 schrieb Gottfried: but when starting MATE Desktop all my profiles are not enabled. graphical sessions environment is not controlled by .bash_profile (or .profile) If sddm is used, this statement is false. Does source that file (if bash is the users shell) and therefore it influenced the environment variables of all applications started the graphical environment. Gottfried, what display-manager do you use? Maybe this command can tell you: $ ps $(ps -p $(pidof Xorg) -o ppid=) Martin
Re: to enable all profiles at login time
Hi, your email address is still blocked through my email-provider. So I don’t get it. I am working on "Guix System" , not on a foreign distro. So I don’t know if your suggestion I can use. -- Kind regards Gottfried Message: 1 Date: Mon, 17 Apr 2023 19:25:57 +0200 From: Giovanni Biscuolo To: Gottfried , help-guix@gnu.org Subject: Re: to enable all profiles at login time Message-ID: <87mt36o1y2@xelera.eu> Content-Type: text/plain; charset="utf-8" Hi Gottfried I guess you are on a foreign distro Gottfried writes: [...] but when starting MATE Desktop all my profiles are not enabled. graphical sessions environment is not controlled by .bash_profile (or .profile) If your distro works like Debian [1], try to add this to your ~/.xsessionrc: if [ -f ~/.bash_profile ]; then . ~/.bash_profile fi Details here: https://wiki.debian.org/Xsession#User_configuration [...] Happy hacking! Gio' -- Giovanni Biscuolo Xelera IT Infrastructures -- next part -- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 849 bytes Desc: not available URL: <https://lists.gnu.org/archive/html/help-guix/attachments/20230417/0a961fe9/attachment.sig> OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi, thanks a lot for help. Now it works, I can open the packages through my terminal. And then you can choose to either stay at the setup I suggested or e.g. try using X session startup files as others suggested (which btw seems like a neat solution) What do you mean by trying X session, startup files as others suggested? How can I do it? Kind regards Gottfried Am 17.04.23 um 22:15 schrieb Wojtek Kosior: No, I put libreoffice in a separate profile, so in the terminal it is not found: gfp@Tuxedo ~$ libreoffice -bash: libreoffice: Kommando nicht gefunden. gfp@Tuxedo ~$ frescobaldi -bash: frescobaldi: Kommando nicht gefunden. gfp@Tuxedo ~$ lilypond -bash: lilypond: Kommando nicht gefunden. Also other packages from different profiles are not found. I see the problem now. The profile paths on your system are not like "/home/gfp/Projekte/Libreoffice" but rather like "/home/gfp/Projekte/Libreoffice/guix-profil". So we need to add "/guix-profil" to each profile path. You can try replacing profile=$i line with profile=$i/guix-profil In your `.bash_profile`. Once you do this it'll (hopefully!) work :) And then you can choose to either stay at the setup I suggested or e.g. try using X session startup files as others suggested (which btw seems like a neat solution) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Mon, 17 Apr 2023 14:55:10 + Gottfried wrote: Hi, thanks for help Then you're all set. It should be working now 😄 Try closing the terminal and opening it again. Are the commands from your profiles (e.g. `libreoffice`) available immediately, without the need to run any manual `guix` commands? They should be No, I put libreoffice in a separate profile, so in the terminal it is not found: gfp@Tuxedo ~$ libreoffice -bash: libreoffice: Kommando nicht gefunden. gfp@Tuxedo ~$ frescobaldi -bash: frescobaldi: Kommando nicht gefunden. gfp@Tuxedo ~$ lilypond -bash: lilypond: Kommando nicht gefunden. Also other packages from different profiles are not found. - But I have a symbol of libreoffice on my desktop and if I klick on it, it will open libreoffice (an older version). The symbol didn’t disappear after uninstalling libreoffice from my default profile. So may be I didn’t understand everything yet, what I have to do. - I have to open each profile with guix shell -p ~/Projekte/e.g.: Icecat/guix-profil Kind regards Gottfried -- OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
> No, I put libreoffice in a separate profile, > so in the terminal it is not found: > > gfp@Tuxedo ~$ libreoffice > -bash: libreoffice: Kommando nicht gefunden. > gfp@Tuxedo ~$ frescobaldi > -bash: frescobaldi: Kommando nicht gefunden. > gfp@Tuxedo ~$ lilypond > -bash: lilypond: Kommando nicht gefunden. > > Also other packages from different profiles are not found. I see the problem now. The profile paths on your system are not like "/home/gfp/Projekte/Libreoffice" but rather like "/home/gfp/Projekte/Libreoffice/guix-profil". So we need to add "/guix-profil" to each profile path. You can try replacing profile=$i line with profile=$i/guix-profil In your `.bash_profile`. Once you do this it'll (hopefully!) work :) And then you can choose to either stay at the setup I suggested or e.g. try using X session startup files as others suggested (which btw seems like a neat solution) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Mon, 17 Apr 2023 14:55:10 + Gottfried wrote: > Hi, > thanks for help > > > > Then you're all set. It should be working now 😄 > > > > Try closing the terminal and opening it again. Are the commands from > > your profiles (e.g. `libreoffice`) available immediately, without the > > need to run any manual `guix` commands? They should be > > No, I put libreoffice in a separate profile, > so in the terminal it is not found: > > gfp@Tuxedo ~$ libreoffice > -bash: libreoffice: Kommando nicht gefunden. > gfp@Tuxedo ~$ frescobaldi > -bash: frescobaldi: Kommando nicht gefunden. > gfp@Tuxedo ~$ lilypond > -bash: lilypond: Kommando nicht gefunden. > > Also other packages from different profiles are not found. > > - > But I have a symbol of libreoffice on my desktop and if I klick on it, > it will open libreoffice (an older version). > The symbol didn’t disappear after uninstalling libreoffice from my > default profile. > > > So may be I didn’t understand everything yet, what I have to do. > - > > I have to open each profile with > guix shell -p ~/Projekte/e.g.: Icecat/guix-profil > > Kind regards > > Gottfried pgpDV6bLJt47V.pgp Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi Gottfried, I have nothing to add about your main question but : Gottfried [2023-04-17T14:45:28+0200]: > How do you create this screenshot with the red arrow? I use Flameshot, which comes in the package aptly named flameshot. This program lets you choose the part of the screen to capture, and allows you to add some basic graphics, e.g. arrows, text, shapes, etc. GIMP is good, and I also use it for screenshots from time to time, but Flameshot is often much faster to use. - Sergiu
Re: to enable all profiles at login time
Hi Gottfried I guess you are on a foreign distro Gottfried writes: [...] > but when starting MATE Desktop all my profiles are not enabled. graphical sessions environment is not controlled by .bash_profile (or .profile) If your distro works like Debian [1], try to add this to your ~/.xsessionrc: if [ -f ~/.bash_profile ]; then . ~/.bash_profile fi Details here: https://wiki.debian.org/Xsession#User_configuration [...] Happy hacking! Gio' -- Giovanni Biscuolo Xelera IT Infrastructures signature.asc Description: PGP signature
Re: to enable all profiles at login time
Hi, thanks for help Then you're all set. It should be working now 😄 Try closing the terminal and opening it again. Are the commands from your profiles (e.g. `libreoffice`) available immediately, without the need to run any manual `guix` commands? They should be No, I put libreoffice in a separate profile, so in the terminal it is not found: gfp@Tuxedo ~$ libreoffice -bash: libreoffice: Kommando nicht gefunden. gfp@Tuxedo ~$ frescobaldi -bash: frescobaldi: Kommando nicht gefunden. gfp@Tuxedo ~$ lilypond -bash: lilypond: Kommando nicht gefunden. Also other packages from different profiles are not found. - But I have a symbol of libreoffice on my desktop and if I klick on it, it will open libreoffice (an older version). The symbol didn’t disappear after uninstalling libreoffice from my default profile. So may be I didn’t understand everything yet, what I have to do. - I have to open each profile with guix shell -p ~/Projekte/e.g.: Icecat/guix-profil Kind regards Gottfried OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi, 5. is there also a possibility to enable all my profiles when I log in to my MATE desktop? So that all applications (including terminal emulators, regardless of their configuration) open with them already enabled? There's no such possibility I know of :/ There is a way and I think it may even be standardized. On my non-guix distro I use sddm as display-manager. On login, it executes /usr/share/sddm/scripts/Xsession as my user. It contains: 9 case $SHELL in 10 */bash) 11 [ -z "$BASH" ] && exec $SHELL $0 "$@" 12 set +o posix 13 [ -f /etc/profile ] && . /etc/profile 14 if [ -f $HOME/.bash_profile ]; then 15 . $HOME/.bash_profile 16 elif [ -f $HOME/.bash_login ]; then 17 . $HOME/.bash_login 18 elif [ -f $HOME/.profile ]; then 19 . $HOME/.profile 20 fi ... 41 */fish) 42 xsess_tmp=`mktemp /tmp/xsess-env-XX` 43 $SHELL --login -c "/bin/sh -c 'export -p' > $xsess_tmp" 44 . $xsess_tmp 45 rm -f $xsess_tmp 46 ;; 47 *) # Plain sh, ksh, and anything we do not know. 48 [ -f /etc/profile ] && . /etc/profile 49 [ -f $HOME/.profile ] && . $HOME/.profile So it does try to find shell specific config files (for those that it knows about). You need to know what display-manager (the program where you log in to your user) you use and look at its documentation to see what files it may source before it logs you in. In that case, you don't need to launch bash as login shell in your terminal, because all the profiles are activated when you login. Martin
Re: to enable all profiles at login time
> >> [[ -n "$SSH_CLIENT" ]] && source /etc/profile > >> > >> # Don't do anything else. > >> return > >> fi > >> > >> # Source the system-wide file. > >> source /etc/bashrc > >> > >> # Adjust the prompt depending on whether we're in 'guix environment'. > >> if [ -n "$GUIX_ENVIRONMENT" ] > >> then > >> PS1='\u@\h \w [env]\$ ' > >> else > >> PS1='\u@\h \w\$ ' > >> fi > >> alias ls='ls -p --color=auto' > >> alias ll='ls -l' > >> alias grep='grep --color=auto' > >> > >> - > >>> change the configuration of one's terminal emulator to start bash > >>>> with `-l` > >> > >> 5. > >> Where do I have to add "-l" in /.bashrc? > >> > >> > >> Kind regards > >> > >> Gottfried > >> > >> > >> > >> > >> > >> Am 16.04.23 um 22:18 schrieb Wojtek Kosior: > >>> Hi Gottfried, > >>> > >>> I see 3 potential problems. > >>> > >>> 1. > >>> The snippet you addet to .bashrc refers to a variable named > >>> "GUIX_EXTRA_PROFILES". Is this variable defined somewhere? Is seems it > >>> isn't. It should be assigned the path to the directory holding your > >>> profiles so you could for example add a > >>> > >>> GUIX_EXTRA_PROFILES=/path/to/directory/with/my/guix/profiles > >>> > >>> line before the `for` loop. Of course, replacing the > >>> "/path/to/directory/with/my/guix/profiles" with the appropriate path > >>> for your system. > >>> > >>> 2. > >>> Why is `basename` being used here? Consider the following example: > >>> > >>> - "GUIX_EXTRA_PROFILES" is set to /home/user/my-extra-guix-stuff > >>> - you have 1 extra Guix profile under > >>> "/home/user/my-extra-guix-stuff/music" > >>> - the profile mentioned above has its `profile` script under > >>> "/home/user/my-extra-guix-stuff/music/etc/profile" > >>> > >>> Now, let's look at what the > >>> > >>> profile=$i/$(basename "$i") > >>> > >>> line does. This line is inside a `for` loop, in each iteration the > >>> variable "i" holds the path to one of the profiles under > >>> "/home/user/my-extra-guix-stuff". In one iteration "i" is going to hold > >>> the string "/home/user/my-extra-guix-stuff/music". The `basename "$i"` > >>> command therefore outputs just "music". So the line we're analyzing > >>> assigns the string "/home/user/my-extra-guix-stuff/music/music" to > >>> variable called "profile". Is this what we wanted? The next line is > >>> going to check for the existence of file > >>> "/home/user/my-extra-guix-stuff/music/music/etc/profile" but it should > >>> instead check for the existence of > >>> "/home/user/my-extra-guix-stuff/music/etc/profile". So you might want > >>> to e.g. replace the line > >>> > >>> profile=$i/$(basename "$i") > >>> > >>> with just > >>> > >>> profile=$i > >>> > >>> 3. > >>> You edited "~/.bash_profile" which is indeed known to be read by bash. > >>> > >>> However, this is not that simple. Bash has 3 possible modes of running: > >>> non-interactive shell, interactive shell and (interactive) login shell. > >>> The "login shell" mode is meant to be used when, well, bash is spawned > >>> in a terminal upon user login. "~/.bash_profile" is *only* read by bash > >>> in this mode and not in the other 2. In interactive shell mode, bash > >>> reads "~/.bashrc" *instead*. > >>> > >>> When you, for example, execute a `bash` command inside an > >>> already-running shell, the child bash shell that spawns is not going to > >>> consider itself a login shell but rather a mere interactive shell. To > >>> make bash think is is a login shell, you can e.g. start it with a `-l` > >>> flag, like `bash -l`. > >>> > >>> The problem is, most terminal emulators by default don't start bash > >>> this way. The 2 solutions I've been using are to either > >>> - change the configuration of one's terminal emulator to start bash > >>> with `-l` > >>> - or make the ".bashrc" script check if current interactive shell was > >>> spawned by a teminal emulator process and if yes, have it activate the > >>> Guix profiles. > >>> > >>> The 1st solution is the proper one, the 2nd one is just a workaround > >>> for terminal emulators that are not configurable enough :) > >>> > >>> > >>> Wojtek > >>> > >>> > >>> -- (sig_start) > >>> website: https://koszko.org/koszko.html > >>> PGP: https://koszko.org/key.gpg > >>> fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A > >>> > >>> ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ > >>> c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== > >>> ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? > >>> U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= > >>> -- (sig_end) > >>> > >>> > >>> On Sun, 16 Apr 2023 13:09:00 + > >>> Gottfried wrote: > >>> > >>>> Hi, > >>>> > >>>> according to the cookbook > >>>> I added > >>>> > >>>> for i in $GUIX_EXTRA_PROFILES/*; do > >>>> profile=$i/$(basename "$i") > >>>> if [ -f "$profile"/etc/profile ]; then > >>>>GUIX_PROFILE="$profile" > >>>>. "$GUIX_PROFILE"/etc/profile > >>>> fi > >>>> unset profile > >>>> done > >>>> --- > >>>> into my .bash_profile file > >>>> in order to enable all profiles at login time: > >>>> > >>>> My .bash_profile file looks now like that: > >>>> > >>>> # Honor per-interactive-shell startup file > >>>> if [ -f ~/.bashrc ]; then . ~/.bashrc; fi > >>>> > >>>> for i in $GUIX_EXTRA_PROFILES/*; do > >>>> profile=$i/$(basename "$i") > >>>> if [ -f "$profile"/etc/profile ]; then > >>>>GUIX_PROFILE="$profile" > >>>>. "$GUIX_PROFILE"/etc/profile > >>>> fi > >>>> unset profile > >>>> done > >>>> --- > >>>> > >>>> but when starting MATE Desktop all my profiles are not enabled. > >>>> > >>>> Could somebody help because probably the two entries in my .bash_profile > >>>> got a mistake. > >>>> > >>> > >>> > >> > > > > > pgpnfpq3sm3DM.pgp Description: OpenPGP digital signature
Re: to enable all profiles at login time
script check if current interactive shell was spawned by a teminal emulator process and if yes, have it activate the Guix profiles. The 1st solution is the proper one, the 2nd one is just a workaround for terminal emulators that are not configurable enough :) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Sun, 16 Apr 2023 13:09:00 + Gottfried wrote: Hi, according to the cookbook I added for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- into my .bash_profile file in order to enable all profiles at login time: My .bash_profile file looks now like that: # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- but when starting MATE Desktop all my profiles are not enabled. Could somebody help because probably the two entries in my .bash_profile got a mistake. -- OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
x27;s terminal emulator to start bash > >>with `-l` > > 5. > Where do I have to add "-l" in /.bashrc? > > > Kind regards > > Gottfried > > > > > > Am 16.04.23 um 22:18 schrieb Wojtek Kosior: > > Hi Gottfried, > > > > I see 3 potential problems. > > > > 1. > > The snippet you addet to .bashrc refers to a variable named > > "GUIX_EXTRA_PROFILES". Is this variable defined somewhere? Is seems it > > isn't. It should be assigned the path to the directory holding your > > profiles so you could for example add a > > > > GUIX_EXTRA_PROFILES=/path/to/directory/with/my/guix/profiles > > > > line before the `for` loop. Of course, replacing the > > "/path/to/directory/with/my/guix/profiles" with the appropriate path > > for your system. > > > > 2. > > Why is `basename` being used here? Consider the following example: > > > > - "GUIX_EXTRA_PROFILES" is set to /home/user/my-extra-guix-stuff > > - you have 1 extra Guix profile under > >"/home/user/my-extra-guix-stuff/music" > > - the profile mentioned above has its `profile` script under > >"/home/user/my-extra-guix-stuff/music/etc/profile" > > > > Now, let's look at what the > > > > profile=$i/$(basename "$i") > > > > line does. This line is inside a `for` loop, in each iteration the > > variable "i" holds the path to one of the profiles under > > "/home/user/my-extra-guix-stuff". In one iteration "i" is going to hold > > the string "/home/user/my-extra-guix-stuff/music". The `basename "$i"` > > command therefore outputs just "music". So the line we're analyzing > > assigns the string "/home/user/my-extra-guix-stuff/music/music" to > > variable called "profile". Is this what we wanted? The next line is > > going to check for the existence of file > > "/home/user/my-extra-guix-stuff/music/music/etc/profile" but it should > > instead check for the existence of > > "/home/user/my-extra-guix-stuff/music/etc/profile". So you might want > > to e.g. replace the line > > > > profile=$i/$(basename "$i") > > > > with just > > > > profile=$i > > > > 3. > > You edited "~/.bash_profile" which is indeed known to be read by bash. > > > > However, this is not that simple. Bash has 3 possible modes of running: > > non-interactive shell, interactive shell and (interactive) login shell. > > The "login shell" mode is meant to be used when, well, bash is spawned > > in a terminal upon user login. "~/.bash_profile" is *only* read by bash > > in this mode and not in the other 2. In interactive shell mode, bash > > reads "~/.bashrc" *instead*. > > > > When you, for example, execute a `bash` command inside an > > already-running shell, the child bash shell that spawns is not going to > > consider itself a login shell but rather a mere interactive shell. To > > make bash think is is a login shell, you can e.g. start it with a `-l` > > flag, like `bash -l`. > > > > The problem is, most terminal emulators by default don't start bash > > this way. The 2 solutions I've been using are to either > > - change the configuration of one's terminal emulator to start bash > >with `-l` > > - or make the ".bashrc" script check if current interactive shell was > >spawned by a teminal emulator process and if yes, have it activate the > >Guix profiles. > > > > The 1st solution is the proper one, the 2nd one is just a workaround > > for terminal emulators that are not configurable enough :) > > > > > > Wojtek > > > > > > -- (sig_start) > > website: https://koszko.org/koszko.html > > PGP: https://koszko.org/key.gpg > > fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A > > > > ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ > > c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== > > ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? > > U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= > > -- (sig_end) > > > > > > On Sun, 16 Apr 2023 13:09:00 + > > Gottfried wrote: > > > >> Hi, > >> > >> according to the cookbook > >> I added > >> > >> for i in $GUIX_EXTRA_PROFILES/*; do > >> profile=$i/$(basename "$i") > >> if [ -f "$profile"/etc/profile ]; then > >> GUIX_PROFILE="$profile" > >> . "$GUIX_PROFILE"/etc/profile > >> fi > >> unset profile > >> done > >> --- > >> into my .bash_profile file > >> in order to enable all profiles at login time: > >> > >> My .bash_profile file looks now like that: > >> > >> # Honor per-interactive-shell startup file > >> if [ -f ~/.bashrc ]; then . ~/.bashrc; fi > >> > >> for i in $GUIX_EXTRA_PROFILES/*; do > >> profile=$i/$(basename "$i") > >> if [ -f "$profile"/etc/profile ]; then > >> GUIX_PROFILE="$profile" > >> . "$GUIX_PROFILE"/etc/profile > >> fi > >> unset profile > >> done > >> --- > >> > >> but when starting MATE Desktop all my profiles are not enabled. > >> > >> Could somebody help because probably the two entries in my .bash_profile > >> got a mistake. > >> > > > > > pgp8JO8TkFkZl.pgp Description: OpenPGP digital signature
Re: to enable all profiles at login time
ell was spawned by a teminal emulator process and if yes, have it activate the Guix profiles. The 1st solution is the proper one, the 2nd one is just a workaround for terminal emulators that are not configurable enough :) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Sun, 16 Apr 2023 13:09:00 + Gottfried wrote: Hi, according to the cookbook I added for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- into my .bash_profile file in order to enable all profiles at login time: My .bash_profile file looks now like that: # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- but when starting MATE Desktop all my profiles are not enabled. Could somebody help because probably the two entries in my .bash_profile got a mistake. -- OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature
Re: to enable all profiles at login time
Hi Gottfried, I see 3 potential problems. 1. The snippet you addet to .bashrc refers to a variable named "GUIX_EXTRA_PROFILES". Is this variable defined somewhere? Is seems it isn't. It should be assigned the path to the directory holding your profiles so you could for example add a GUIX_EXTRA_PROFILES=/path/to/directory/with/my/guix/profiles line before the `for` loop. Of course, replacing the "/path/to/directory/with/my/guix/profiles" with the appropriate path for your system. 2. Why is `basename` being used here? Consider the following example: - "GUIX_EXTRA_PROFILES" is set to /home/user/my-extra-guix-stuff - you have 1 extra Guix profile under "/home/user/my-extra-guix-stuff/music" - the profile mentioned above has its `profile` script under "/home/user/my-extra-guix-stuff/music/etc/profile" Now, let's look at what the profile=$i/$(basename "$i") line does. This line is inside a `for` loop, in each iteration the variable "i" holds the path to one of the profiles under "/home/user/my-extra-guix-stuff". In one iteration "i" is going to hold the string "/home/user/my-extra-guix-stuff/music". The `basename "$i"` command therefore outputs just "music". So the line we're analyzing assigns the string "/home/user/my-extra-guix-stuff/music/music" to variable called "profile". Is this what we wanted? The next line is going to check for the existence of file "/home/user/my-extra-guix-stuff/music/music/etc/profile" but it should instead check for the existence of "/home/user/my-extra-guix-stuff/music/etc/profile". So you might want to e.g. replace the line profile=$i/$(basename "$i") with just profile=$i 3. You edited "~/.bash_profile" which is indeed known to be read by bash. However, this is not that simple. Bash has 3 possible modes of running: non-interactive shell, interactive shell and (interactive) login shell. The "login shell" mode is meant to be used when, well, bash is spawned in a terminal upon user login. "~/.bash_profile" is *only* read by bash in this mode and not in the other 2. In interactive shell mode, bash reads "~/.bashrc" *instead*. When you, for example, execute a `bash` command inside an already-running shell, the child bash shell that spawns is not going to consider itself a login shell but rather a mere interactive shell. To make bash think is is a login shell, you can e.g. start it with a `-l` flag, like `bash -l`. The problem is, most terminal emulators by default don't start bash this way. The 2 solutions I've been using are to either - change the configuration of one's terminal emulator to start bash with `-l` - or make the ".bashrc" script check if current interactive shell was spawned by a teminal emulator process and if yes, have it activate the Guix profiles. The 1st solution is the proper one, the 2nd one is just a workaround for terminal emulators that are not configurable enough :) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Sun, 16 Apr 2023 13:09:00 + Gottfried wrote: > Hi, > > according to the cookbook > I added > > for i in $GUIX_EXTRA_PROFILES/*; do >profile=$i/$(basename "$i") >if [ -f "$profile"/etc/profile ]; then > GUIX_PROFILE="$profile" > . "$GUIX_PROFILE"/etc/profile >fi >unset profile > done > --- > into my .bash_profile file > in order to enable all profiles at login time: > > My .bash_profile file looks now like that: > > # Honor per-interactive-shell startup file > if [ -f ~/.bashrc ]; then . ~/.bashrc; fi > > for i in $GUIX_EXTRA_PROFILES/*; do >profile=$i/$(basename "$i") >if [ -f "$profile"/etc/profile ]; then > GUIX_PROFILE="$profile" > . "$GUIX_PROFILE"/etc/profile >fi >unset profile > done > --- > > but when starting MATE Desktop all my profiles are not enabled. > > Could somebody help because probably the two entries in my .bash_profile > got a mistake. > pgplfaXm4dBYK.pgp Description: OpenPGP digital signature
to enable all profiles at login time
Hi, according to the cookbook I added for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- into my .bash_profile file in order to enable all profiles at login time: My .bash_profile file looks now like that: # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi for i in $GUIX_EXTRA_PROFILES/*; do profile=$i/$(basename "$i") if [ -f "$profile"/etc/profile ]; then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile fi unset profile done --- but when starting MATE Desktop all my profiles are not enabled. Could somebody help because probably the two entries in my .bash_profile got a mistake. -- Kind regards Gottfried OpenPGP_0x61FAF349C9FB7F94.asc Description: OpenPGP public key OpenPGP_signature Description: OpenPGP digital signature